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.

Reply via email to