Change 23664 by [EMAIL PROTECTED] on 2004/12/21 18:03:02
Integrate:
[ 23531]
Wrap some long lines
[ 23535]
Test the currently working virtual %Config entries
[ 23536]
Make $Config{libs_nolargefiles} and
$Config{libswanted_nolargefiles} work. (For the first time)
[ 23537]
The first entry in the virtual config.sh is special cased. So
test it.
[ 23538]
Add an exists test for the things we loop over
[ 23541]
Cheat. (Add a leading newline, and so remove all the special
casing for "if we're at the start of $Config_SH")
[ 23542]
Generate the virtual entries at Config.pm build time, as they
don't change. This lets us get rid of the entire "fetch_virtual"
baggage, and makes the config_re lookup work for the virtual
entries.
[ 23543]
Fix Win32 breakage caused by changes 23535/23542.
[ 23544]
Make configpm and the generated Config.pm strict and warnings
clean.
[ 23545]
The change to the internal representation introduced a bug whereby
the key returned by FIRSTKEY had an erroneous leading newline.
EXISTS was also buggy.
[ 23554]
Put Config.pm on a diet. 3K rather than 32K
configpm now generates 2 files, a small Config.pm containing the
commonly used functions and values, which AUTOLOADs a
Config_heavy.pl containing anything else needed.
The "common" values in the small Config.pm may need some
tweaking, based on real world data.
[ 23555]
Hateful cAsE iNsEnSiTiVe file systems
[ 23557]
Subject: [PATCH] Re: getting Config.pm on a diet
From: "Craig A. Berry" <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>
Date: Sat, 27 Nov 2004 15:31:17 -0600
[ 23558]
Generate the precached %Config entries based on some empirical
data, rather than just guesswork.
[ 23561]
Need to stub the public functions to keep some existing code
working.
No need to keep $Config_SH around in memory when we can easily
re-create it.
[ 23562]
The byteorder code doesn't need to be in Config.pm if byteorder
isn't actually a frequently looked up value.
[ 23563]
Given that there is a pre-built cache, no need for @v_fast
[ 23564]
Skip generating all the code to deal with "" strings in config.sh
if there aren't any. '' only code is much simpler.
[ 23583]
Subject: [PATCH] add -I../lib to VMS build to find Config_heavy.pl
Date: Wed, 01 Dec 2004 07:24:45 -0600
From: "Craig A. Berry" <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>
[ 23601]
Subject: [PATCH] configure.com: no more CONFIG=true
From: "Craig A. Berry" <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>
Date: Thu, 02 Dec 2004 15:23:06 -0600
[ 23610]
Check that @INC entries and %Config path entries are consistent.
[ 23613]
Tests for Config.pm much better now - toDONE
[ 23616]
Fix typo from change 23554 which screwed up Windows smokes
[ 23618]
Fix another Win32 breakage caused by change 23554
[ 23634]
Evade using @ in the 1 liner with some perl 1 syntax.
[ 23638]
Fix Win32 breakage caused by change 23610
Simply skip the offending tests on Win32. There is no sense in testing
that $Config dir entries appear in @INC because the $Config entries
relate to where perl.exe will be installed (as per INST_DRV/INST_TOP in
win32/Makefile), whereas @INC entries are dynamic, based on where
perlXX.dll is currently located.
Affected files ...
... //depot/maint-5.8/perl/Makefile.SH#42 integrate
... //depot/maint-5.8/perl/configpm#15 integrate
... //depot/maint-5.8/perl/configure.com#28 integrate
... //depot/maint-5.8/perl/lib/Config.t#8 integrate
... //depot/maint-5.8/perl/pod/perltodo.pod#11 integrate
... //depot/maint-5.8/perl/t/win32/system.t#2 integrate
... //depot/maint-5.8/perl/vms/descrip_mms.template#32 integrate
... //depot/maint-5.8/perl/win32/Makefile#41 integrate
... //depot/maint-5.8/perl/win32/makefile.mk#48 integrate
Differences ...
==== //depot/maint-5.8/perl/Makefile.SH#42 (text) ====
Index: perl/Makefile.SH
--- perl/Makefile.SH#41~23578~ Tue Nov 30 08:56:12 2004
+++ perl/Makefile.SH Tue Dec 21 10:03:02 2004
@@ -311,7 +311,8 @@
CCCMDSRC = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $<`
-private = preplibrary lib/Config.pm lib/ExtUtils/Miniperl.pm
+CONFIGPM = lib/Config.pm lib/Config_heavy.pl
+private = preplibrary $(CONFIGPM) lib/ExtUtils/Miniperl.pm
# Files to be built with variable substitution before miniperl
# is available.
@@ -384,10 +385,10 @@
cd x2p; $(MAKE) compile;
cd pod; $(MAKE) compile;
-translators: miniperl$(EXE_EXT) lib/Config.pm FORCE
+translators: miniperl$(EXE_EXT) $(CONFIGPM) FORCE
@echo " "; echo " Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE)
all
-utilities: miniperl$(EXE_EXT) lib/Config.pm $(plextract) lib/lib.pm FORCE
+utilities: miniperl$(EXE_EXT) $(CONFIGPM) $(plextract) lib/lib.pm FORCE
@echo " "; echo " Making utilities"; cd utils; $(LDLIBPTH)
$(MAKE) all
@@ -740,7 +741,7 @@
# We need to autosplit in two steps because VOS can't handle so many args
#
.PHONY: preplibrary
-preplibrary: miniperl$(EXE_EXT) lib/Config.pm lib/lib.pm $(PREPLIBRARY_LIBPERL)
+preplibrary: miniperl$(EXE_EXT) $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL)
@sh ./makedir lib/auto
@echo " AutoSplitting perl library"
$(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \
@@ -752,11 +753,11 @@
# Take care to avoid modifying lib/Config.pm without reason
# (If trying to create a new port and having problems with the configpm script,
# try 'make minitest' and/or commenting out the tests at the end of configpm.)
-lib/Config.pm: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary
- $(LDLIBPTH) ./miniperl -Ilib configpm configpm.tmp
- sh mv-if-diff configpm.tmp $@
+$(CONFIGPM): config.sh miniperl$(EXE_EXT) configpm Porting/Glossary
+ $(LDLIBPTH) ./miniperl -Ilib configpm --heavy=lib/Config_heavy.pl
configpm.tmp
+ sh mv-if-diff configpm.tmp lib/Config.pm
-lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl
lib/Config.pm
+lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl
$(CONFIGPM)
$(LDLIBPTH) ./miniperl minimod.pl > minimod.tmp
sh mv-if-diff minimod.tmp $@
-touch lib/ExtUtils/Miniperl.pm
@@ -764,18 +765,18 @@
lib/re.pm: ext/re/re.pm
cp ext/re/re.pm ext/re/re.tmp && sh mv-if-diff ext/re/re.tmp lib/re.pm
-$(plextract): miniperl$(EXE_EXT) lib/Config.pm x2p/s2p
+$(plextract): miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p
@-rm -f $@
- $(LDLIBPTH) ./miniperl -Ilib [EMAIL PROTECTED]
+ $(LDLIBPTH) ./miniperl -I`pwd`/lib [EMAIL PROTECTED]
-x2p/s2p: miniperl$(EXE_EXT) lib/Config.pm x2p/s2p.PL
+x2p/s2p: miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p.PL
cd x2p; $(LDLIBPTH) $(MAKE) s2p
-lib/lib.pm: miniperl$(EXE_EXT) lib/Config.pm
+lib/lib.pm: miniperl$(EXE_EXT) $(CONFIGPM)
@-rm -f $@
$(LDLIBPTH) ./miniperl -Ilib lib/lib_pm.PL
-$(unidatafiles): miniperl$(EXE_EXT) lib/Config.pm lib/unicore/mktables
+$(unidatafiles): miniperl$(EXE_EXT) $(CONFIGPM) lib/unicore/mktables
cd lib/unicore && $(LDLIBPTH) ../../miniperl -I../../lib mktables -w
extra.pods: miniperl$(EXE_EXT)
==== //depot/maint-5.8/perl/configpm#15 (xtext) ====
Index: perl/configpm
--- perl/configpm#14~23303~ Thu Sep 9 22:25:22 2004
+++ perl/configpm Tue Dec 21 10:03:02 2004
@@ -1,13 +1,18 @@
#!./miniperl -w
+use strict;
+use vars qw(%Config $Config_SH_expanded);
-# commonly used names to put first (and hence lookup fastest)
-my %Common = map {($_,$_)}
- qw(archname osname osvers prefix libs libpth
- dynamic_ext static_ext dlsrc so
- cc ccflags cppflags
- privlibexp archlibexp installprivlib installarchlib
- sharpbang startsh shsharp
- );
+my $how_many_common = 22;
+
+# commonly used names to precache (and hence lookup fastest)
+my %Common;
+
+while ($how_many_common--) {
+ $_ = <DATA>;
+ chomp;
+ /^(\S+):\s*(\d+)$/ or die "Malformed line '$_'";
+ $Common{$1} = $1;
+}
# names of things which may need to have slashes changed to double-colons
my %Extensions = map {($_,$_)}
@@ -15,9 +20,10 @@
# allowed opts as well as specifies default and initial values
my %Allowed_Opts = (
- 'cross' => '', # --cross=PALTFORM - crosscompiling for PLATFORM
- 'glossary' => 1, # --no-glossary - no glossary file inclusion,
+ 'cross' => '', # --cross=PLATFORM - crosscompiling for PLATFORM
+ 'glossary' => 1, # --no-glossary - no glossary file inclusion,
# for compactness
+ 'heavy' => '', # pathname of the Config_heavy.pl file
);
sub opts {
@@ -42,7 +48,7 @@
my %Opts = opts();
-my $Config_PM;
+my ($Config_PM, $Config_heavy);
my $Glossary = $ARGV[1] || 'Porting/Glossary';
if ($Opts{cross}) {
@@ -54,9 +60,27 @@
else {
$Config_PM = $ARGV[0] || 'lib/Config.pm';
}
-
+if ($Opts{heavy}) {
+ $Config_heavy = $Opts{heavy};
+}
+else {
+ ($Config_heavy = $Config_PM) =~ s!\.pm$!_heavy.pl!;
+ die "Can't automatically determine name for Config_heavy.pl from
'$Config_PM'"
+ if $Config_heavy eq $Config_PM;
+}
open CONFIG, ">$Config_PM" or die "Can't open $Config_PM: $!\n";
+open CONFIG_HEAVY, ">$Config_heavy" or die "Can't open $Config_heavy: $!\n";
+
+print CONFIG_HEAVY <<'ENDOFBEG';
+# This file was created by configpm when Perl was built. Any changes
+# made to this file will be lost the next time perl is built.
+
+package Config;
+use strict;
+# use warnings; Pulls in Carp
+# use vars pulls in Carp
+ENDOFBEG
my $myver = sprintf "v%vd", $^V;
@@ -65,19 +89,33 @@
# made to this file will be lost the next time perl is built.
package Config;
[EMAIL PROTECTED] = qw(%%Config);
[EMAIL PROTECTED] = qw(myconfig config_sh config_vars config_re);
+use strict;
+# use warnings; Pulls in Carp
+# use vars pulls in Carp
[EMAIL PROTECTED]::EXPORT = qw(%%Config);
[EMAIL PROTECTED]::EXPORT_OK = qw(myconfig config_sh config_vars config_re);
+
+# Need to stub all the functions to make code such as print Config::config_sh
+# keep working
+
+sub myconfig;
+sub config_sh;
+sub config_vars;
+sub config_re;
+
+my %%Export_Cache = map {($_ => 1)} (@Config::EXPORT, @Config::EXPORT_OK);
-my %%Export_Cache = map {($_ => 1)} (@EXPORT, @EXPORT_OK);
+our %%Config;
# Define our own import method to avoid pulling in the full Exporter:
sub import {
my $pkg = shift;
- @_ = @EXPORT unless @_;
+ @_ = @Config::EXPORT unless @_;
my @funcs = grep $_ ne '%%Config', @_;
my $export_Config = @funcs < @_ ? 1 : 0;
+ no strict 'refs';
my $callpkg = caller(0);
foreach my $func (@funcs) {
die sprintf qq{"%%s" is not exported by the %%s module\n},
@@ -100,67 +138,16 @@
my @non_v = ();
-my @v_fast = ();
-my %v_fast = ();
my @v_others = ();
my $in_v = 0;
my %Data = ();
-# This is somewhat grim, but I want the code for parsing config.sh here and
-# now so that I can expand $Config{ivsize} and $Config{ivtype}
-
-my $fetch_string = <<'EOT';
-# Search for it in the big string
-sub fetch_string {
- my($self, $key) = @_;
-
- my $quote_type = "'";
- my $marker = "$key=";
-
- # Check for the common case, ' delimited
- my $start = index($Config_SH, "\n$marker$quote_type");
- # If that failed, check for " delimited
- if ($start == -1) {
- $quote_type = '"';
- $start = index($Config_SH, "\n$marker$quote_type");
- }
- return undef if ( ($start == -1) && # in case it's first
- (substr($Config_SH, 0, length($marker)) ne $marker) );
- if ($start == -1) {
- # It's the very first thing we found. Skip $start forward
- # and figure out the quote mark after the =.
- $start = length($marker) + 1;
- $quote_type = substr($Config_SH, $start - 1, 1);
- }
- else {
- $start += length($marker) + 2;
- }
-
- my $value = substr($Config_SH, $start,
- index($Config_SH, "$quote_type\n", $start) - $start);
-
- # If we had a double-quote, we'd better eval it so escape
- # sequences and such can be interpolated. Since the incoming
- # value is supposed to follow shell rules and not perl rules,
- # we escape any perl variable markers
- if ($quote_type eq '"') {
- $value =~ s/\$/\\\$/g;
- $value =~ s/\@/\\\@/g;
- eval "\$value = \"$value\"";
- }
-
- # So we can say "if $Config{'foo'}".
- $value = undef if $value eq 'undef';
- $self->{$key} = $value; # cache it
-}
-EOT
-
-eval $fetch_string;
-die if $@;
-
-open(CONFIG_SH, 'config.sh') || die "Can't open config.sh: $!";
-while (<CONFIG_SH>) {
+my %seen_quotes;
+{
+ my ($name, $val);
+ open(CONFIG_SH, 'config.sh') || die "Can't open config.sh: $!";
+ while (<CONFIG_SH>) {
next if m:^#!/bin/sh:;
# Catch PERL_CONFIG_SH=true and PERL_VERSION=n line from Configure.
@@ -185,7 +172,7 @@
push(@non_v, "#$_"); # not a name='value' line
next;
}
- $quote = $2;
+ my $quote = $2;
if ($in_v) {
$val .= $_;
}
@@ -200,19 +187,88 @@
$val =~ s/$quote\n?\z//;
my $line = "$name=$quote$val$quote\n";
- if (!$Common{$name}){
- push(@v_others, $line);
+ push(@v_others, $line);
+ $seen_quotes{$quote}++;
+ }
+ close CONFIG_SH;
+}
+
+# This is somewhat grim, but I want the code for parsing config.sh here and
+# now so that I can expand $Config{ivsize} and $Config{ivtype}
+
+my $fetch_string = <<'EOT';
+
+# Search for it in the big string
+sub fetch_string {
+ my($self, $key) = @_;
+
+EOT
+
+if ($seen_quotes{'"'}) {
+ # We need the full ' and " code
+ $fetch_string .= <<'EOT';
+ my $quote_type = "'";
+ my $marker = "$key=";
+
+ # Check for the common case, ' delimited
+ my $start = index($Config_SH_expanded, "\n$marker$quote_type");
+ # If that failed, check for " delimited
+ if ($start == -1) {
+ $quote_type = '"';
+ $start = index($Config_SH_expanded, "\n$marker$quote_type");
}
- else {
- push(@v_fast, $line);
- $v_fast{$name} = "'$name' => $quote$val$quote";
+EOT
+} else {
+ $fetch_string .= <<'EOT';
+ # We only have ' delimted.
+ my $start = index($Config_SH_expanded, "\n$key=\'");
+EOT
+}
+$fetch_string .= <<'EOT';
+ # Start can never be -1 now, as we've rigged the long string we're
+ # searching with an initial dummy newline.
+ return undef if $start == -1;
+
+ $start += length($key) + 3;
+
+EOT
+if (!$seen_quotes{'"'}) {
+ # Don't need the full ' and " code, or the eval expansion.
+ $fetch_string .= <<'EOT';
+ my $value = substr($Config_SH_expanded, $start,
+ index($Config_SH_expanded, "'\n", $start)
+ - $start);
+EOT
+} else {
+ $fetch_string .= <<'EOT';
+ my $value = substr($Config_SH_expanded, $start,
+ index($Config_SH_expanded, "$quote_type\n", $start)
+ - $start);
+
+ # If we had a double-quote, we'd better eval it so escape
+ # sequences and such can be interpolated. Since the incoming
+ # value is supposed to follow shell rules and not perl rules,
+ # we escape any perl variable markers
+ if ($quote_type eq '"') {
+ $value =~ s/\$/\\\$/g;
+ $value =~ s/\@/\\\@/g;
+ eval "\$value = \"$value\"";
}
+EOT
}
-close CONFIG_SH;
+$fetch_string .= <<'EOT';
+ # So we can say "if $Config{'foo'}".
+ $value = undef if $value eq 'undef';
+ $self->{$key} = $value; # cache it
+}
+EOT
+
+eval $fetch_string;
+die if $@;
# Calculation for the keys for byteorder
# This is somewhat grim, but I need to run fetch_string here.
-our $Config_SH = join "\n", @v_fast, @v_others;
+our $Config_SH_expanded = join "\n", '', @v_others;
my $t = fetch_string ({}, 'ivtype');
my $s = fetch_string ({}, 'ivsize');
@@ -229,35 +285,36 @@
my $list = join ',', reverse(2..$s);
my $format = 'a'x$s;
$byteorder_code = <<"EOT";
+
my \$i = 0;
foreach my \$c ($list) { \$i |= ord(\$c); \$i <<= 8 }
\$i |= ord(1);
-my \$byteorder = join('', unpack('$format', pack('$f', \$i)));
+our \$byteorder = join('', unpack('$format', pack('$f', \$i)));
EOT
} else {
- $byteorder_code = "my \$byteorder = '?'x$s;\n";
+ $byteorder_code = "our \$byteorder = '?'x$s;\n";
}
-print CONFIG @non_v, "\n";
+print CONFIG_HEAVY @non_v, "\n";
# copy config summary format from the myconfig.SH script
-print CONFIG "our \$summary : unique = <<'!END!';\n";
+print CONFIG_HEAVY "our \$summary : unique = <<'!END!';\n";
open(MYCONFIG,"<myconfig.SH") || die "open myconfig.SH failed: $!";
1 while defined($_ = <MYCONFIG>) && !/^Summary of/;
-do { print CONFIG $_ } until !defined($_ = <MYCONFIG>) || /^\s*$/;
+do { print CONFIG_HEAVY $_ } until !defined($_ = <MYCONFIG>) || /^\s*$/;
close(MYCONFIG);
# NB. as $summary is unique, we need to copy it in a lexical variable
# before expanding it, because may have been made readonly if a perl
# interpreter has been cloned.
-print CONFIG "\n!END!\n", $byteorder_code, <<'EOT';
+print CONFIG_HEAVY "\n!END!\n", <<'EOT';
my $summary_expanded;
sub myconfig {
return $summary_expanded if $summary_expanded;
($summary_expanded = $summary) =~ s{\$(\w+)}
- { my $c = $Config{$1}; defined($c) ? $c : 'undef' }ge;
+ { my $c = $Config::Config{$1}; defined($c) ? $c : 'undef' }ge;
$summary_expanded;
}
@@ -265,91 +322,109 @@
$_ = <<'!END!';
EOT
-print CONFIG join("", @v_fast, sort @v_others);
-
-print CONFIG <<'EOT';
-!END!
-s/(byteorder=)(['"]).*?\2/$1$2$byteorder$2/m;
-our $Config_SH : unique = $_;
-EOT
+print CONFIG_HEAVY join('', sort @v_others), "!END!\n";
-print CONFIG $fetch_string;
+# Only need the dynamic byteorder code in Config.pm if 'byteorder' is one of
+# the precached keys
+if ($Common{byteorder}) {
+ print CONFIG $byteorder_code;
+} else {
+ print CONFIG_HEAVY $byteorder_code;
+}
-print CONFIG <<'ENDOFEND';
+print CONFIG_HEAVY <<'EOT';
+s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m;
-sub fetch_virtual {
- my($self, $key) = @_;
+my $config_sh_len = length $_;
- my $value;
+our $Config_SH_expanded : unique = "\n$_" . << 'EOVIRTUAL';
+EOT
- if ($key =~ /^((?:cc|ld)flags|libs(?:wanted)?)_nolargefiles/) {
- # These are purely virtual, they do not exist, but need to
- # be computed on demand for largefile-incapable extensions.
- my $new_key = "${1}_uselargefiles";
- $value = $Config{$1};
- my $withlargefiles = $Config{$new_key};
- if ($new_key =~ /^(?:cc|ld)flags_/) {
- $value =~ s/\Q$withlargefiles\E\b//;
- } elsif ($new_key =~ /^libs/) {
- my @lflibswanted = split(' ', $Config{libswanted_uselargefiles});
- if (@lflibswanted) {
- my %lflibswanted;
- @[EMAIL PROTECTED] = ();
- if ($new_key =~ /^libs_/) {
- my @libs = grep { /^-l(.+)/ &&
- not exists $lflibswanted{$1} }
- split(' ', $Config{libs});
- $Config{libs} = join(' ', @libs);
- } elsif ($new_key =~ /^libswanted_/) {
- my @libswanted = grep { not exists $lflibswanted{$_} }
- split(' ', $Config{libswanted});
- $Config{libswanted} = join(' ', @libswanted);
- }
- }
+foreach my $prefix (qw(ccflags ldflags)) {
+ my $value = fetch_string ({}, $prefix);
+ my $withlargefiles = fetch_string ({}, $prefix . "_uselargefiles");
+ $value =~ s/\Q$withlargefiles\E\b//;
+ print CONFIG_HEAVY "${prefix}_nolargefiles='$value'\n";
+}
+
+foreach my $prefix (qw(libs libswanted)) {
+ my $value = fetch_string ({}, $prefix);
+ my @lflibswanted
+ = split(' ', fetch_string ({}, 'libswanted_uselargefiles'));
+ if (@lflibswanted) {
+ my %lflibswanted;
+ @[EMAIL PROTECTED] = ();
+ if ($prefix eq 'libs') {
+ my @libs = grep { /^-l(.+)/ &&
+ not exists $lflibswanted{$1} }
+ split(' ', fetch_string ({}, 'libs'));
+ $value = join(' ', @libs);
+ } else {
+ my @libswanted = grep { not exists $lflibswanted{$_} }
+ split(' ', fetch_string ({}, 'libswanted'));
+ $value = join(' ', @libswanted);
}
}
-
- $self->{$key} = $value;
+ print CONFIG_HEAVY "${prefix}_nolargefiles='$value'\n";
}
-sub FETCH {
+print CONFIG_HEAVY "EOVIRTUAL\n";
+
+print CONFIG_HEAVY $fetch_string;
+
+print CONFIG <<'ENDOFEND';
+
+sub FETCH {
my($self, $key) = @_;
# check for cached value (which may be undef so we use exists not defined)
return $self->{$key} if exists $self->{$key};
- $self->fetch_string($key);
- return $self->{$key} if exists $self->{$key};
- $self->fetch_virtual($key);
-
- # Might not exist, in which undef is correct.
- return $self->{$key};
+ return $self->fetch_string($key);
}
-
+ENDOFEND
+
+print CONFIG_HEAVY <<'ENDOFEND';
+
my $prevpos = 0;
sub FIRSTKEY {
$prevpos = 0;
- substr($Config_SH, 0, index($Config_SH, '=') );
+ substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 );
}
sub NEXTKEY {
+ENDOFEND
+if ($seen_quotes{'"'}) {
+print CONFIG_HEAVY <<'ENDOFEND';
# Find out how the current key's quoted so we can skip to its end.
- my $quote = substr($Config_SH, index($Config_SH, "=", $prevpos)+1, 1);
- my $pos = index($Config_SH, qq($quote\n), $prevpos) + 2;
- my $len = index($Config_SH, "=", $pos) - $pos;
+ my $quote = substr($Config_SH_expanded,
+ index($Config_SH_expanded, "=", $prevpos)+1, 1);
+ my $pos = index($Config_SH_expanded, qq($quote\n), $prevpos) + 2;
+ENDOFEND
+} else {
+ # Just ' quotes, so it's much easier.
+print CONFIG_HEAVY <<'ENDOFEND';
+ my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2;
+ENDOFEND
+}
+print CONFIG_HEAVY <<'ENDOFEND';
+ my $len = index($Config_SH_expanded, "=", $pos) - $pos;
$prevpos = $pos;
- $len > 0 ? substr($Config_SH, $pos, $len) : undef;
+ $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef;
}
-sub EXISTS {
+sub EXISTS {
return 1 if exists($_[0]->{$_[1]});
- return(index($Config_SH, "\n$_[1]='") != -1 or
- substr($Config_SH, 0, length($_[1])+2) eq "$_[1]='" or
- index($Config_SH, "\n$_[1]=\"") != -1 or
- substr($Config_SH, 0, length($_[1])+2) eq "$_[1]=\"" or
- $_[1] =~ /^(?:(?:cc|ld)flags|libs(?:wanted)?)_nolargefiles$/
+ return(index($Config_SH_expanded, "\n$_[1]='") != -1
+ENDOFEND
+if ($seen_quotes{'"'}) {
+print CONFIG_HEAVY <<'ENDOFEND';
+ or index($Config_SH_expanded, "\n$_[1]=\"") != -1
+ENDOFEND
+}
+print CONFIG_HEAVY <<'ENDOFEND';
);
}
@@ -359,12 +434,13 @@
sub config_sh {
- $Config_SH
+ substr $Config_SH_expanded, 1, $config_sh_len;
}
sub config_re {
my $re = shift;
- return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/, $Config_SH;
+ return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/,
+ $Config_SH_expanded;
}
sub config_vars {
@@ -382,22 +458,30 @@
print map "$_$lnend", @matches ? @matches : "$qry: not found"
if !$notag;
print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not
found" if $notag;
} else {
- my $v = (exists $Config{$qry}) ? $Config{$qry} : 'UNKNOWN';
+ my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry}
+ : 'UNKNOWN';
$v = 'undef' unless defined $v;
print "${prfx}'${v}'$lnend";
}
}
}
+# Called by the real AUTOLOAD
+sub launcher {
+ undef &AUTOLOAD;
+ goto \&$Config::AUTOLOAD;
+}
+
+1;
ENDOFEND
if ($^O eq 'os2') {
print CONFIG <<'ENDOFSET';
my %preconfig;
if ($OS2::is_aout) {
- my ($value, $v) = $Config_SH =~ m/^used_aout='(.*)'\s*$/m;
+ my ($value, $v) = $Config_SH_expanded =~ m/^used_aout='(.*)'\s*$/m;
for (split ' ', $value) {
- ($v) = $Config_SH =~ m/^aout_$_='(.*)'\s*$/m;
+ ($v) = $Config_SH_expanded =~ m/^aout_$_='(.*)'\s*$/m;
$preconfig{$_} = $v eq 'undef' ? undef : $v;
}
}
@@ -423,17 +507,38 @@
ENDOFSET
}
-my $fast_config = join '', map { " $_,\n" }
- sort values (%v_fast), 'byteorder => $byteorder' ;
+foreach my $key (keys %Common) {
+ my $value = fetch_string ({}, $key);
+ # Is it safe on the LHS of => ?
+ my $qkey = $key =~ /^[A-Za-z_][A-Za-z0-9_]*$/ ? $key : "'$key'";
+ if (defined $value) {
+ # Quote things for a '' string
+ $value =~ s!\\!\\\\!g;
+ $value =~ s!'!\\'!g;
+ $value = "'$value'";
+ } else {
+ $value = "undef";
+ }
+ $Common{$key} = "$qkey => $value";
+}
+
+if ($Common{byteorder}) {
+ $Common{byteorder} = 'byteorder => $byteorder';
+}
+my $fast_config = join '', map { " $_,\n" } sort values %Common;
print CONFIG sprintf <<'ENDOFTIE', $fast_config;
-# avoid Config..Exporter..UNIVERSAL search for DESTROY then AUTOLOAD
sub DESTROY { }
+sub AUTOLOAD {
+ require 'Config_heavy.pl';
+ goto \&launcher;
+ die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
+}
+
tie %%Config, 'Config', {
-%s
-};
+%s};
1;
ENDOFTIE
@@ -561,8 +666,8 @@
if ($Opts{glossary}) {
open(GLOS, "<$Glossary") or die "Can't open $Glossary: $!";
}
-%seen = ();
-$text = 0;
+my %seen = ();
+my $text = 0;
$/ = '';
sub process {
@@ -637,6 +742,7 @@
ENDOFTAIL
+close(CONFIG_HEAVY);
close(CONFIG);
close(GLOS);
close(CONFIG_POD);
@@ -688,3 +794,106 @@
exit 0;
+# Popularity of various entries in %Config, based on a large build and test
+# run of code in the Fotango build system:
+__DATA__
+path_sep: 8490
+d_readlink: 7101
+d_symlink: 7101
+archlibexp: 4318
+sitearchexp: 4305
+sitelibexp: 4305
+privlibexp: 4163
+ldlibpthname: 4041
+libpth: 2134
+archname: 1591
+exe_ext: 1256
+scriptdir: 1155
+version: 1116
+useithreads: 1002
+osvers: 982
+osname: 851
+inc_version_list: 783
+dont_use_nlink: 779
+intsize: 759
+usevendorprefix: 642
+dlsrc: 624
+cc: 541
+lib_ext: 520
+so: 512
+ld: 501
+ccdlflags: 500
+ldflags: 495
+obj_ext: 495
+cccdlflags: 493
+lddlflags: 493
+ar: 492
+dlext: 492
+libc: 492
+ranlib: 492
+full_ar: 491
+vendorarchexp: 491
+vendorlibexp: 491
+installman1dir: 489
+installman3dir: 489
+installsitebin: 489
+installsiteman1dir: 489
+installsiteman3dir: 489
+installvendorman1dir: 489
+installvendorman3dir: 489
+d_flexfnam: 474
+eunicefix: 360
+d_link: 347
+installsitearch: 344
+installscript: 341
+installprivlib: 337
+binexp: 336
+installarchlib: 336
+installprefixexp: 336
+installsitelib: 336
+installstyle: 336
+installvendorarch: 336
+installvendorbin: 336
+installvendorlib: 336
+man1ext: 336
+man3ext: 336
+sh: 336
+siteprefixexp: 336
+installbin: 335
+usedl: 332
+ccflags: 285
+startperl: 232
+optimize: 231
+usemymalloc: 229
+cpprun: 228
+sharpbang: 228
+perllibs: 225
+usesfio: 224
+usethreads: 220
+perlpath: 218
+extensions: 217
+usesocks: 208
+shellflags: 198
+make: 191
+d_pwage: 189
+d_pwchange: 189
+d_pwclass: 189
+d_pwcomment: 189
+d_pwexpire: 189
+d_pwgecos: 189
+d_pwpasswd: 189
+d_pwquota: 189
+gccversion: 189
+libs: 186
+useshrplib: 186
+cppflags: 185
+ptrsize: 185
+shrpenv: 185
+static_ext: 185
+use5005threads: 185
+uselargefiles: 185
+alignbytes: 184
+byteorder: 184
+ccversion: 184
+config_args: 184
+cppminus: 184
==== //depot/maint-5.8/perl/configure.com#28 (text) ====
Index: perl/configure.com
--- perl/configure.com#27~23578~ Tue Nov 30 08:56:12 2004
+++ perl/configure.com Tue Dec 21 10:03:02 2004
@@ -1353,6 +1353,18 @@
$Close_patch:
$ CLOSE CONFIG
$ ENDIF
+$!
+$ IF F$SEARCH("[-].patch") .NES. ""
+$ THEN
+$ SET NOON
+$ OPEN/READ PATCH [-].patch
+$ READ PATCH line
+$ CLOSE PATCH
+$ tmp = F$EDIT(line,"COLLAPSE")
+$ SET ON
+$ IF tmp .GT. perl_patchlevel then perl_patchlevel = tmp
+$ ENDIF
+$!
$ version_patchlevel_string = "version ''patchlevel' subversion ''subversion'"
$ IF got_perl_patchlevel .AND. perl_patchlevel .NES. "0"
$ THEN
@@ -5244,7 +5256,6 @@
$ WC "# Configuration by : " + cf_by
$ WC "# Target system : " + myuname
$ WC ""
-$ WC "CONFIG='true'"
$ WC "Makefile_SH='" + Makefile_SH + "'"
$ WC "Mcc='" + Mcc + "'"
$ WC "PERL_REVISION='" + revision + "'"
@@ -5253,6 +5264,8 @@
$ WC "PERL_API_REVISION='" + api_revision + "'"
$ WC "PERL_API_VERSION='" + api_version + "'"
$ WC "PERL_API_SUBVERSION='" + api_subversion + "'"
+$ WC "PERL_PATCHLEVEL='" + perl_patchlevel + "'"
+$ WC "PERL_CONFIG_SH='true'"
$ WC "_a='" + lib_ext + "'"
$ WC "_exe='" + exe_ext + "'"
$ WC "_o='" + obj_ext + "'"
@@ -5978,7 +5991,6 @@
$ WC "vms_prefix='" + vms_prefix + "'" ! VMS specific
$ WC "vms_ver='" + vms_ver + "'" ! VMS specific
$ WC "voidflags='15'"
-$ WC "PERL_CONFIG_SH='true'"
$!
$! ## The UNIXy POSIXy reentrantey thingys ##
$! See "Appendix B, Version-Dependency Tables" in the C RTL
==== //depot/maint-5.8/perl/lib/Config.t#8 (text) ====
Index: perl/lib/Config.t
--- perl/lib/Config.t#7~23303~ Thu Sep 9 22:25:22 2004
+++ perl/lib/Config.t Tue Dec 21 10:03:02 2004
@@ -14,7 +14,17 @@
ok(keys %Config > 500, "Config has more than 500 entries");
-ok(each %Config);
+my ($first) = Config::config_sh() =~ /^(\S+)=/m;
+die "Can't find first entry in Config::config_sh()" unless defined $first;
+print "# First entry is '$first'\n";
+
+# It happens that the we know what the first key should be. This is somewhat
+# cheating, but there was briefly a bug where the key got a bonus newline.
+my ($first_each) = each %Config;
+is($first_each, $first, "First key from each is correct");
+ok(exists($Config{$first_each}), "First key exists");
+ok(!exists($Config{"\n$first"}),
+ "Check that first key with prepended newline isn't falsely existing");
is($Config{PERL_REVISION}, 5, "PERL_REVISION is 5");
@@ -38,13 +48,16 @@
ok(!exists $Config{d_bork}, "has no d_bork");
-like($Config{ivsize}, qr/^(4|8)$/, "ivsize is 4 or 8 (it is
$Config{ivsize})");
+like($Config{ivsize}, qr/^(4|8)$/, "ivsize is 4 or 8 (it is $Config{ivsize})");
# byteorder is virtual, but it has rules.
-like($Config{byteorder}, qr/^(1234|4321|12345678|87654321)$/, "byteorder is
1234 or 4321 or 12345678 or 87654321 (it is $Config{byteorder})");
+like($Config{byteorder}, qr/^(1234|4321|12345678|87654321)$/,
+ "byteorder is 1234 or 4321 or 12345678 or 87654321 "
+ . "(it is $Config{byteorder})");
-is(length $Config{byteorder}, $Config{ivsize}, "byteorder is as long as ivsize
(which is $Config{ivsize})");
+is(length $Config{byteorder}, $Config{ivsize},
+ "byteorder is as long as ivsize (which is $Config{ivsize})");
# ccflags_nolargefiles is virtual, too.
@@ -100,7 +113,8 @@
my $out7 = $$out;
$out->clear;
-Config::config_vars(':PERL_API_REVISION.*'); # regex, non-tagged multi-line
answer
+# regex, non-tagged multi-line answer
+Config::config_vars(':PERL_API_REVISION.*');
my $out8 = $$out;
$out->clear;
@@ -201,10 +215,53 @@
is($Config{sig_name_init} =~ tr/,/,/, $Config{sig_size}, "sig_name_init size");
# Test the troublesome virtual stuff
-foreach my $pain (qw(byteorder)) {
- # No config var is named with anything that is a regexp metachar"
- my @result = Config::config_re($pain);
+my @virtual = qw(byteorder ccflags_nolargefiles ldflags_nolargefiles
+ libs_nolargefiles libswanted_nolargefiles);
+
+# Also test that the first entry in config.sh is found correctly. There was
+# special casing code for this
+
+foreach my $pain ($first, @virtual) {
+ # No config var is named with anything that is a regexp metachar
+ ok(exists $Config{$pain}, "\$config('$pain') exists");
+
+ my @result = $Config{$pain};
+ is (scalar @result, 1, "single result for \$config('$pain')");
+
+ @result = Config::config_re($pain);
is (scalar @result, 1, "single result for config_re('$pain')");
- like ($result[0], qr/^$pain=(['"])$Config{$pain}\1$/, # grr '
- "which is the expected result for $pain");
+ like ($result[0], qr/^$pain=(['"])\Q$Config{$pain}\E\1$/, # grr '
+ "which is the expected result for $pain");
+}
+
+# Check that config entries appear correctly in @INC
+# TestInit.pm has probably already messed with our @INC
+# This little bit of evil is to avoid a @ in the program, in case it confuses
+# shell 1 liners. Perl 1 rules.
+my ($path, $ver, @orig_inc)
+ = split /\n/,
+ runperl (nolib=>1,
+ prog=>'print qq{$^X\n$]\n}; print qq{$_\n} while $_ = shift INC');
+
+die "This perl is $] at $^X; other perl is $ver (at $path) "
+ . '- failed to find this perl' unless $] eq $ver;
+
+my %orig_inc;
[EMAIL PROTECTED]@orig_inc} = ();
+
+my $failed;
+# This is the order that directories are pushed onto @INC in perl.c:
+foreach my $lib (qw(applibexp archlibexp privlibexp sitearchexp sitelibexp
+ vendorarchexp vendorlibexp vendorlib_stem)) {
+ my $dir = $Config{$lib};
+ SKIP: {
+ skip "lib $lib not in [EMAIL PROTECTED] on Win32" if $^O eq 'MSWin32';
+ skip "lib $lib not defined" unless defined $dir;
+ skip "lib $lib not set" unless length $dir;
+ # So we expect to find it in @INC
+
+ ok (exists $orig_inc{$dir}, "Expect $lib '$dir' to be in [EMAIL
PROTECTED]")
+ or $failed++;
+ }
}
+_diag ('@INC is:', @orig_inc) if $failed;
==== //depot/maint-5.8/perl/pod/perltodo.pod#11 (text) ====
Index: perl/pod/perltodo.pod
--- perl/pod/perltodo.pod#10~23503~ Tue Nov 16 13:28:30 2004
+++ perl/pod/perltodo.pod Tue Dec 21 10:03:02 2004
@@ -194,10 +194,6 @@
A test suite for the B module would be nice.
-=head2 Improve tests for Config.pm
-
-Config.pm doesn't appear to be well tested.
-
=head2 common test code for timed bailout
Write portable self destruct code for tests to stop them burning CPU in
==== //depot/maint-5.8/perl/t/win32/system.t#2 (text) ====
Index: perl/t/win32/system.t
--- perl/t/win32/system.t#1~17645~ Fri Jul 19 12:29:57 2002
+++ perl/t/win32/system.t Tue Dec 21 10:03:02 2004
@@ -2,7 +2,9 @@
BEGIN {
chdir 't' if -d 't';
- @INC = '../lib';
+ # We need '../../lib' as well as '../lib' because parts of Config are
+ # delay-loaded, after we've chdir()'ed into $testdir.
+ @INC = ('../lib', '../../lib');
# XXX this could be further munged to enable some parts on other
# platforms
unless ($^O =~ /^MSWin/) {
==== //depot/maint-5.8/perl/vms/descrip_mms.template#32 (text) ====
Index: perl/vms/descrip_mms.template
--- perl/vms/descrip_mms.template#31~23573~ Tue Nov 30 07:16:05 2004
+++ perl/vms/descrip_mms.template Tue Dec 21 10:03:02 2004
@@ -329,7 +329,7 @@
unidatadirs = lib/unicore/To lib/unicore/lib
# Modules which must be installed before we can build extensions
-LIBPREREQ = $(ARCHDIR)Config.pm [.lib.VMS]Filespec.pm [.lib]DynaLoader.pm
[.lib]XSLoader.pm [.lib]lib.pm [.lib.ExtUtils]XSSymSet.pm $(ARCHDIR)vmspipe.com
[.lib]re.pm unidatafiles.ts
+LIBPREREQ = $(ARCHDIR)Config.pm $(ARCHDIR)Config_heavy.pl
[.lib.VMS]Filespec.pm [.lib]DynaLoader.pm [.lib]XSLoader.pm [.lib]lib.pm
[.lib.ExtUtils]XSSymSet.pm $(ARCHDIR)vmspipe.com [.lib]re.pm unidatafiles.ts
utils1 = [.lib.pod]perldoc.com [.lib.ExtUtils]Miniperl.pm [.utils]c2ph.com
[.utils]h2ph.com
utils2 = [.utils]h2xs.com [.utils]libnetcfg.com [.lib]perlbug.com
[.lib]perlcc.com [.utils]dprofpp.com
@@ -471,6 +471,10 @@
Create/Directory $(ARCHDIR)
Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHDIR)
+$(ARCHDIR)Config_heavy.pl : [.lib]Config_heavy.pl
+ Create/Directory $(ARCHDIR)
+ Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHDIR)
+
[.lib]Config.pm : config.h $(MINIPERL_EXE)
$(MINIPERL) ConfigPM.
@@ -522,68 +526,68 @@
[.lib.pod]perldoc.com : [.utils]perldoc.PL $(ARCHDIR)Config.pm
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.utils]perldoc.com [.lib.pod]
[.lib.ExtUtils]Miniperl.pm : Minimod.PL miniperlmain.c $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE) >$(MMS$TARGET)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE) >$(MMS$TARGET)
[.utils]perlivp.com : [.utils]perlivp.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]cpan.com : [.utils]cpan.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]prove.com : [.utils]prove.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]c2ph.com : [.utils]c2ph.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]dprofpp.com : [.utils]dprofpp.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]enc2xs.com : [.utils]enc2xs.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]h2ph.com : [.utils]h2ph.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]h2xs.com : [.utils]h2xs.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]instmodsh.com : [.utils]instmodsh.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]libnetcfg.com : [.utils]libnetcfg.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.lib]perlbug.com : [.utils]perlbug.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.utils]perlbug.com [.lib]
[.lib]perlcc.com : [.utils]perlcc.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.utils]perlcc.com [.lib]
[.utils]piconv.com : [.utils]piconv.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]pl2pm.com : [.utils]pl2pm.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.lib]splain.com : [.utils]splain.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.utils]splain.com [.lib]
[.x2p]find2perl.com : [.x2p]find2perl.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.x2p]s2p.com : [.x2p]s2p.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
[.utils]xsubpp.com : [.utils]xsubpp.PL $(ARCHDIR)Config.pm
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
# Rename catches problem with some DECC versions in which object file is
# placed in current default dir, not same one as source file.
@@ -616,37 +620,37 @@
[.lib.pod]pod2html.com : [.pod]pod2html.PL $(ARCHDIR)Config.pm
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.pod]pod2html.com [.lib.pod]
[.lib.pod]pod2latex.com : [.pod]pod2latex.PL $(ARCHDIR)Config.pm
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.pod]pod2latex.com [.lib.pod]
[.lib.pod]pod2man.com : [.pod]pod2man.PL $(ARCHDIR)Config.pm
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.pod]pod2man.com [.lib.pod]
[.lib.pod]pod2text.com : [.pod]pod2text.PL $(ARCHDIR)Config.pm
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.pod]pod2text.com [.lib.pod]
[.lib.pod]podchecker.com : [.pod]podchecker.PL $(ARCHDIR)Config.pm
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.pod]podchecker.com [.lib.pod]
[.lib.pod]pod2usage.com : [.pod]pod2usage.PL $(ARCHDIR)Config.pm
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.pod]pod2usage.com [.lib.pod]
[.lib.pod]podselect.com : [.pod]podselect.PL $(ARCHDIR)Config.pm
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
- $(MINIPERL) $(MMS$SOURCE)
+ $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
Copy/NoConfirm/Log [.pod]podselect.com [.lib.pod]
preplibrary : $(MINIPERL_EXE) $(LIBPREREQ)
@@ -1301,6 +1305,7 @@
Backup/Log/Verify [.lib.auto...]*.*;/Exclude=(*.al,*.ix)
'archroot'/New_Version
Delete/Log/NoConfirm [.lib.auto...]*.*;*/exclude=(*.al,*.ix,*.dir)
Delete/Log/NoConfirm [.lib]Config.pm;*
+ Delete/Log/NoConfirm [.lib]Config_heavy.pl;*
Copy/Log/NoConfirm *$(E);,[.x2p]$(DBG)a2p$(E); $(ARCHDIR)
Delete/Log/NoConfirm Perl*$(E);*,[.x2p]$(DBG)a2p$(E);*
@ QUALIFIERS := $(MMSQUALIFIERS)
@@ -1637,6 +1642,8 @@
- If F$Search("[.Lib]XSLoader.pm;-1").nes."" Then Purge/NoConfirm/Log
[.Lib]XSLoader.pm
- If F$Search("[.Lib]Config.pm;-1").nes."" Then Purge/NoConfirm/Log
[.Lib]Config.pm
- If F$Search("$(ARCHDIR)Config.pm;-1").nes."" Then Purge/NoConfirm/Log
$(ARCHDIR)Config.pm
+ - If F$Search("[.Lib]Config_heavy.pl;-1").nes."" Then
Purge/NoConfirm/Log [.Lib]Config_heavy.pl
+ - If F$Search("$(ARCHDIR)Config_heavy.pl;-1").nes."" Then
Purge/NoConfirm/Log $(ARCHDIR)Config_heavy.pl
- If F$Search("[.lib.ExtUtils]Miniperl.pm").nes."" Then
Purge/NoConfirm/Log [.lib.ExtUtils]Miniperl.pm
- If F$Search("[.lib.ExtUtils]XSSymSet.pm").nes."" Then
Purge/NoConfirm/Log [.lib.ExtUtils]XSSymSet.pm
- If F$Search("[.Lib.VMS]*.*;-1").nes."" Then Purge/NoConfirm/Log
[.Lib.VMS]*.*
@@ -1687,11 +1694,13 @@
- If F$Search("[.Lib]DynaLoader.pm").nes."" Then Delete/NoConfirm/Log
[.Lib]DynaLoader.pm;*
- If F$Search("[.Lib]XSLoader.pm").nes."" Then Delete/NoConfirm/Log
[.Lib]XSLoader.pm;*
- If F$Search("[.Lib]Config.pm").nes."" Then Delete/NoConfirm/Log
[.Lib]Config.pm;*
+ - If F$Search("[.Lib]Config_heavy.pl").nes."" Then Delete/NoConfirm/Log
[.Lib]Config_heavy.pl;*
- If F$Search("[.Lib]*.com").nes."" Then Delete/NoConfirm/Log
[.Lib]*.com;*
- If F$Search("[.pod]*.com").nes."" Then Delete/NoConfirm/Log
[.pod]*.com;*
- If F$Search("[.utils]*.com").nes."" Then Delete/NoConfirm/Log
[.utils]*.com;*
- If F$Search("[.x2p]*.com").nes."" Then Delete/NoConfirm/Log
[.x2p]*.com;*
- If F$Search("$(ARCHDIR)Config.pm").nes."" Then Delete/NoConfirm/Log
$(ARCHDIR)Config.pm;*
+ - If F$Search("$(ARCHDIR)Config_heavy.pl").nes."" Then
Delete/NoConfirm/Log $(ARCHDIR)Config_heavy.pl;*
- If F$Search("[.lib.ExtUtils]Miniperl.pm").nes."" Then
Delete/NoConfirm/Log [.lib.ExtUtils]Miniperl.pm;*
- If F$Search("[.lib.ExtUtils]XSSymSet.pm").nes."" Then
Delete/NoConfirm/Log [.lib.ExtUtils]XSSymSet.pm;*
- If F$Search("[.lib.pod]*.pod").nes."" Then Delete/NoConfirm/Log
[.lib.pod]*.pod;*
==== //depot/maint-5.8/perl/win32/Makefile#41 (text) ====
Index: perl/win32/Makefile
--- perl/win32/Makefile#40~23573~ Tue Nov 30 07:16:05 2004
+++ perl/win32/Makefile Tue Dec 21 10:03:02 2004
@@ -470,7 +470,7 @@
PERLEXE = ..\perl.exe
WPERLEXE = ..\wperl.exe
GLOBEXE = ..\perlglob.exe
-CONFIGPM = ..\lib\Config.pm
+CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
MINIMOD = ..\lib\ExtUtils\Miniperl.pm
X2P = ..\x2p\a2p.exe
==== //depot/maint-5.8/perl/win32/makefile.mk#48 (text) ====
Index: perl/win32/makefile.mk
--- perl/win32/makefile.mk#47~23573~ Tue Nov 30 07:16:05 2004
+++ perl/win32/makefile.mk Tue Dec 21 10:03:02 2004
@@ -603,7 +603,7 @@
PERLEXE = ..\perl.exe
WPERLEXE = ..\wperl.exe
GLOBEXE = ..\perlglob.exe
-CONFIGPM = ..\lib\Config.pm
+CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
MINIMOD = ..\lib\ExtUtils\Miniperl.pm
X2P = ..\x2p\a2p.exe
End of Patch.