From: Nicholas Clark Date: Sat, 13 Oct 2001 00:07:31 +0000 (+0100) Subject: Re: default module version for h2xs (was Re: [PATCH] Re: What sort of Makefile.PL... X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=3e6e4ea82051ddca64991170b80a80549242e4b5;p=p5sagit%2Fp5-mst-13.2.git Re: default module version for h2xs (was Re: [PATCH] Re: What sort of Makefile.PL should h2xs write?) Message-ID: <20011013000731.D67535@plum.flirble.org> p4raw-id: //depot/perl@12432 --- diff --git a/lib/h2xs.t b/lib/h2xs.t index 1b26c89..8ec241a 100644 --- a/lib/h2xs.t +++ b/lib/h2xs.t @@ -5,7 +5,9 @@ # hence are not checked. File existence is checked with -e though. # This test depends on File::Path::rmtree() to clean up with. # - pvhp - +# +# We are now checking that the correct use $version; is present in +# Makefile.PL and $module.pm BEGIN { chdir 't' if -d 't'; @INC = '../lib'; @@ -38,9 +40,14 @@ if ($^O eq 'MacOS') { # not already be found in the t/ subdirectory for perl. my $name = 'h2xst'; my $header = "$name.h"; +my $thisversion = sprintf "%vd", $^V; my @tests = ( -"-f -n $name", <<"EOXSFILES", +"-f -n $name", $], <<"EOXSFILES", +Defaulting to backwards compatibility with perl $thisversion +If you intend this module to be compatible with earlier perl versions, please +specify a minimum perl version with the -b option. + Writing $name/$name.pm Writing $name/$name.xs Writing $name/fallback.c @@ -52,7 +59,43 @@ Writing $name/Changes Writing $name/MANIFEST EOXSFILES -"\"-X\" -f -n $name", <<"EONOXSFILES", +"-f -n $name -b $thisversion", $], <<"EOXSFILES", +Writing $name/$name.pm +Writing $name/$name.xs +Writing $name/fallback.c +Writing $name/fallback.xs +Writing $name/Makefile.PL +Writing $name/README +Writing $name/t/1.t +Writing $name/Changes +Writing $name/MANIFEST +EOXSFILES + +"-f -n $name -b 5.6.1", "5.006001", <<"EOXSFILES", +Writing $name/$name.pm +Writing $name/$name.xs +Writing $name/fallback.c +Writing $name/fallback.xs +Writing $name/Makefile.PL +Writing $name/README +Writing $name/t/1.t +Writing $name/Changes +Writing $name/MANIFEST +EOXSFILES + +"-f -n $name -b 5.5.3", "5.00503", <<"EOXSFILES", +Writing $name/$name.pm +Writing $name/$name.xs +Writing $name/fallback.c +Writing $name/fallback.xs +Writing $name/Makefile.PL +Writing $name/README +Writing $name/t/1.t +Writing $name/Changes +Writing $name/MANIFEST +EOXSFILES + +"\"-X\" -f -n $name -b $thisversion", $], <<"EONOXSFILES", Writing $name/$name.pm Writing $name/Makefile.PL Writing $name/README @@ -61,7 +104,7 @@ Writing $name/Changes Writing $name/MANIFEST EONOXSFILES -"-f -n $name $header", <<"EOXSFILES", +"-f -n $name $header -b $thisversion", $], <<"EOXSFILES", Writing $name/$name.pm Writing $name/$name.xs Writing $name/fallback.c @@ -75,10 +118,11 @@ EOXSFILES ); my $total_tests = 3; # opening, closing and deleting the header file. -for (my $i = $#tests; $i > 0; $i-=2) { +for (my $i = $#tests; $i > 0; $i-=3) { # 1 test for running it, 1 test for the expected result, and 1 for each file + # plus 1 to open and 1 to check for the use in $name.pm and Makefile.PL # use the () to force list context and hence count the number of matches. - $total_tests += 2 + (() = $tests[$i] =~ /(Writing)/sg); + $total_tests += 6 + (() = $tests[$i] =~ /(Writing)/sg); } plan tests => $total_tests; @@ -90,7 +134,7 @@ print HEADER <
&1 dupe: # does it run? @@ -109,9 +153,7 @@ while (my ($args, $expectation) = splice @tests, 0, 2) { # Was the output the list of files that were expected? ok ($result, $expectation, "running $prog"); - $expectation =~ s/Writing //; # remove leader - foreach (split(/Writing /,$expectation)) { - chomp; # remove \n + foreach ($expectation =~ /Writing\s+(\S+)/gm) { if ($^O eq 'MacOS') { $_ = ':' . join(':',split(/\//,$_)); $_ =~ s/$name:t:1.t/$name:t\/1.t/; # is this an h2xs bug? @@ -119,6 +161,18 @@ while (my ($args, $expectation) = splice @tests, 0, 2) { ok (-e $_, 1, "$_ missing"); } + foreach my $leaf ("$name.pm", 'Makefile.PL') { + my $file = ($^O eq 'MacOS') ? ":$name:$leaf" : "$name/$leaf"; + if (ok (open (FILE, $file), 1, "open $file")) { + my $match = qr/use $version;/; + my $found; + while () { + last if $found = /$match/; + } + ok ($found, 1, "looking for /$match/ in $file"); + close FILE or die "close $file: $!"; + } + } # clean up rmtree($name); } diff --git a/utils/h2xs.PL b/utils/h2xs.PL index b8b91e8..100d6b1 100644 --- a/utils/h2xs.PL +++ b/utils/h2xs.PL @@ -126,7 +126,8 @@ For versions < 5.6.0, the changes are. - no 'use warnings' Specifying a compatibility version higher than the version of perl you -are using to run h2xs will have no effect. +are using to run h2xs will have no effect. If unspecified h2xs will default +to compatibility with the version of perl you are using to run h2xs. =item B<-c>, B<--omit-constant> @@ -551,8 +552,20 @@ if( $opt_b ){ usage "You must provide the backwards compatibility version in X.Y.Z form. " . "(i.e. 5.5.0)\n"; my ($maj,$min,$sub) = split(/\./,$opt_b,3); - $compat_version = sprintf("%d.%03d%02d",$maj,$min,$sub); -} + if ($maj < 5 || ($maj == 5 && $min < 6)) { + $compat_version = sprintf("%d.%03d%02d",$maj,$min,$sub); + } else { + $compat_version = sprintf("%d.%03d%03d",$maj,$min,$sub); + } +} else { + my ($maj,$min,$sub) = $compat_version =~ /(\d+)\.(\d\d\d)(\d\d\d?)/; + warn sprintf <<'EOF', $maj,$min,$sub; +Defaulting to backwards compatibility with perl %d.%d.%d +If you intend this module to be compatible with earlier perl versions, please +specify a minimum perl version with the -b option. + +EOF +} if( $opt_v ){ $TEMPLATE_VERSION = $opt_v;