X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=configpm;h=4f301c38fa5464bb4d4501fa1a405faea7ca7e4b;hb=91451e42347a75e822ac69341556a66aff081878;hp=d0947d0490c82d14c198e548e2d0c8758a73c656;hpb=15297a7d24155f38a9759bfd3db39e6dd6630142;p=p5sagit%2Fp5-mst-13.2.git diff --git a/configpm b/configpm index d0947d0..4f301c3 100755 --- a/configpm +++ b/configpm @@ -213,21 +213,24 @@ close CONFIG_SH; print CONFIG @non_v, "\n"; # copy config summary format from the myconfig.SH script -print CONFIG "my \$summary = <<'!END!';\n"; +print CONFIG "our \$summary : unique = <<'!END!';\n"; open(MYCONFIG,") && !/^Summary of/; do { print CONFIG $_ } until !defined($_ = ) || /^\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", <<'EOT'; -my $summary_expanded = 0; +my $summary_expanded; sub myconfig { - return $summary if $summary_expanded; - $summary =~ s{\$(\w+)} + return $summary_expanded if $summary_expanded; + ($summary_expanded = $summary) =~ s{\$(\w+)} { my $c = $Config{$1}; defined($c) ? $c : 'undef' }ge; - $summary_expanded = 1; - $summary; + $summary_expanded; } our $Config_SH : unique = <<'!END!'; @@ -331,13 +334,18 @@ sub config_re { sub config_vars { foreach (@_) { - if (/\W/) { - my @matches = config_re($_); - print map "$_\n", @matches ? @matches : "$_: not found"; + my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft, + my $prfx = $notag ? '': "$qry="; # prefix for print + my $lnend = $lncont ? ' ' : ";\n"; # ending for print + + if ($qry =~ /\W/) { + my @matches = config_re($qry); + 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{$_}) ? $Config{$_} : 'UNKNOWN'; + my $v = (exists $Config{$qry}) ? $Config{$qry} : 'UNKNOWN'; $v = 'undef' unless defined $v; - print "$_='$v';\n"; + print "${prfx}'${v}'$lnend"; } } } @@ -432,8 +440,8 @@ Config - access Perl configuration information =head1 SYNOPSIS use Config; - if ($Config{'cc'} =~ /gcc/) { - print "built by gcc\n"; + if ($Config{usethreads}) { + print "has thread support\n" } use Config qw(myconfig config_sh config_vars config_re);