This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add $VERSION to B::Op_private
authorDavid Mitchell <davem@iabyn.com>
Fri, 19 Sep 2014 09:51:15 +0000 (10:51 +0100)
committerDavid Mitchell <davem@iabyn.com>
Fri, 19 Sep 2014 11:58:29 +0000 (12:58 +0100)
Since this is an auto-generated .pm file, set $VERSION to the perl
version (i.e. 5.mmmnnn), the same trick that Config.pm does.

Since regen scripts are usually executed by a different perl, and the
current perl may not be built yet, don't rely on $]; instead get the
info from patchlevel.h. Add a new sub for this purpose, perl_version(),
to regen/regen_lib.pl. (I feel that such a routine should already exist
somewhere, but I couldn't find such a beastie.)

lib/B/Op_private.pm
regen/opcode.pl
regen/regen_lib.pl

index f7948d3..6c77420 100644 (file)
@@ -109,6 +109,9 @@ package B::Op_private;
 
 our %bits;
 
+
+our $VERSION = "5.021004";
+
 $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
 $bits{$_}{4} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
 $bits{$_}{2} = 'OPpENTERSUB_HASTARG' for qw(entersub rv2cv);
index ee71935..38c235f 100755 (executable)
@@ -490,6 +490,8 @@ EOF
     # remove podcheck.t-defeating leading char
     $header =~ s/^\@//gm;
     print $fh $header;
+    my $v = (::perl_version())[3];
+    print $fh qq{\nour \$VERSION = "$v";\n\n};
 
     # for each flag/bit combination, find the ops which use it
     my %combos;
index b64e0b0..463b5cd 100644 (file)
@@ -224,4 +224,24 @@ sub wrap {
     Text::Wrap::wrap(@_);
 }
 
+# return the perl version as defined in patchlevel.h.
+# (we may be being run by another perl, so $] won't be right)
+# return e.g. (5, 14, 3, "5.014003")
+
+sub perl_version {
+    my $plh = 'patchlevel.h';
+    open my $fh, "<", $plh or die "can't open '$plh': $!\n";
+    my ($v1,$v2,$v3);
+    while (<$fh>) {
+        $v1 = $1 if /PERL_REVISION\s+(\d+)/;
+        $v2 = $1 if /PERL_VERSION\s+(\d+)/;
+        $v3 = $1 if /PERL_SUBVERSION\s+(\d+)/;
+    }
+    die "can't locate PERL_REVISION in '$plh'"   unless defined $v1;
+    die "can't locate PERL_VERSION in '$plh'"    unless defined $v2;
+    die "can't locate PERL_SUBVERSION in '$plh'" unless defined $v3;
+    return ($v1,$v2,$v3, sprintf("%d.%03d%03d", $v1, $v2, $v3));
+}
+
+
 1;