X-Git-Url: https://perl5.git.perl.org/metaconfig.git/blobdiff_plain/cf8c45ecb2344caa8854aab3ba2ee8dcba77e2f8..f53c5a6751ddf64e39bd6470fc4a02f1ed50510a:/U/mkglossary diff --git a/U/mkglossary b/U/mkglossary index bc2be6a..0d7288e 100755 --- a/U/mkglossary +++ b/U/mkglossary @@ -1,22 +1,32 @@ -#!/usr/local/bin/perl -w +#!/usr/bin/perl + +use strict; +use warnings; + use File::Basename; # WARNING: This is site-specific. Change to the location # where you have installed dist-3.0PL70. -@std_units = glob('/u/vieraat/vieraat/jhi/Perl/lib/dist/U/*.U'); -$PWD = '/u/vieraat/vieraat/jhi/pp4/perl'; -# @std_units = glob('/opt/dist/lib/U/*.U'); -# $PWD = '/export/home/doughera/src/perl/p4perl'; +my @std_units = glob ("/pro/3gl/CPAN/lib/dist/U/*.U"); +my $PWD = "/pro/3gl/CPAN/perl"; -chdir U if -d './U'; -@perl_units = glob("$PWD/U/*/*.U"); -push(@perl_units, @std_units); +-d "U" and chdir "U"; +my @perl_units = glob ("$PWD/U/*/*.U"); +push (@perl_units, @std_units); # Get the list of config.sh symbols. Be sure this is up to date! # (I run the U/mksample script first to be sure.) -open(WANTED, "sort $PWD/Porting/config.sh|") || die "$0: open $PWD/Wanted: $!\n"; +open my $wanted, "< $PWD/Porting/config.sh" or die "$0: open $PWD/Wanted: $!\n"; +my @WANTED = map { $_->[0] } + sort { $a->[1] cmp $b->[1] } + map { [ $_, lc $_ ] } <$wanted>; +close $wanted; print <<'EOM'; + +!!!!!!! DO NOT EDIT THIS FILE !!!!!!! +This file is built by metaconfig. + This file contains a description of all the shell variables whose value is determined by the Configure script. Variables intended for use in C programs (e.g. I_UNISTD) are already described in config_h.SH. [`configpm' @@ -25,129 +35,167 @@ the formatting regular.] EOM -foreach $file (@perl_units) { - open(FH, "<$file") || die "$0: open $file: $!"; - my $base = basename($file); - $Loc = $file, next if $base eq 'Loc.U' and not defined $Loc; - while () { - if (/^\?S:\w+[ \t:]/ .. /^\?S:.$/) { - if (/^\?S:.$/) { - ($var) = ((shift @var) =~ /^(\w+)/); - unless (exists $expl{$var}) { - $expl{$var} = [ @var, "\n" ]; - $file{$var} = $base; - } - @var = (); - } else { - s/^\?S://; # Remove leading ?S: markers. - s/^\s+/\t/; # Ensure all lines begin with tabs. - push @var, $_; - } +my ($Loc, %expl, %file, %predef); +foreach my $file (@perl_units) { + open my $fh, "< $file" or die "$0: open $file: $!"; + my $base = basename ($file); + $Loc = $file, next if $base eq "Loc.U" and not defined $Loc; + my @var; + while (<$fh>) { + if (m/^\?S:\w+[ \t:]/ .. m/^\?S:\.$/) { + s/[ \t]+$//; + if (m/^\?S:.$/) { + my ($var) = ((shift @var) =~ /^(\w+)/); + unless (exists $expl{$var}) { + $expl{$var} = [ @var, "\n" ]; + $file{$var} = $base; + } + @var = (); + } + else { + s/^\?S://; # Remove leading ?S: markers. + s/^\s+(?=.)/\t/; # Ensure all lines begin with tabs. + push @var, $_; + } + } } + close $fh or die "$0: close $file: $!"; } - close(FH) || die "$0: close $file: $!"; -} -die "$0: Couldn't locate Loc.U: $!" unless defined $Loc; +defined $Loc or die "$0: Couldn't locate Loc.U: $!"; -open(FH, "<$Loc") || die "$0: open $Loc: $!"; -while () { - if (/^\?(\w+):\1$/) { - $var = $1; - $expl{$var} = 1; - $file{$var} = 'Loc.U'; +open my $fh, "< $Loc" or die "$0: open $Loc: $!"; +while (<$fh>) { + m/^\?(\w+):\1$/ and ($expl{$1}, $file{$1}) = (1, "Loc.U"); + } +close $fh or die "$0: close $Loc: $!"; + +{ local $/ = "\n\n"; + for () { + m/^(\w+)/; + $predef{$1} = $_; + } } -} -close(FH) || die "$0: close $Loc: $!"; -symbol: while (defined($var = )) { - chomp $var; - next symbol if $var =~ /^#/; # Skip comments - next symbol if $var =~ /^$/; - ($var, $val) = split(/=/, $var, 2); - $gotit = 0; +for (@WANTED) { + chomp; + m/^#/ and next; # Skip comments + m/^:/ and next; # Skip comments + m/^$/ and next; # Skip empty sections + my ($var, $val) = split /=/, $_, 2; if (exists $expl{$var}) { - if ($file{$var} eq 'Loc.U') { - print "$var (Loc.U):\n"; - if ($val eq "''") { - # If we didn't have d_portable, this info might be - # useful, but it still won't help with non-standard - # stuff if perl is built on one system but installed - # on others (this is common with Linux distributions, - # for example). - print <