X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=configpm;h=b8fea156740a1f1c7f8cc1a47e09821ba73120a5;hb=9e5bbba0de25c01ae9355c7a97e237602a37e9f3;hp=1fb9c3e09c8a9e6d0301e7301fbbd0b6a18d57e6;hpb=d2d98f31b0d4b556ddadee260502d51e6877de96;p=p5sagit%2Fp5-mst-13.2.git diff --git a/configpm b/configpm index 1fb9c3e..b8fea15 100755 --- a/configpm +++ b/configpm @@ -34,6 +34,7 @@ sub usage { die < '', # --cross=PLATFORM - crosscompiling for PLATFORM 'glossary' => 1, # --no-glossary - no glossary file inclusion, # for compactness + 'chdir' => '', # --chdir=dir - change directory before writing files ); sub opts { @@ -85,6 +87,10 @@ sub opts { my %Opts = opts(); +if ($Opts{chdir}) { + chdir $Opts{chdir} or die "$0: could not chdir $Opts{chdir}: $!" +} + my ($Config_SH, $Config_PM, $Config_heavy, $Config_POD); my $Glossary = 'Porting/Glossary'; @@ -116,6 +122,45 @@ package Config; use strict; # use warnings; Pulls in Carp # use vars pulls in Carp + +sub _V { + my ($bincompat, $non_bincompat, $date, @patches) = Internals::V(); + + my $opts = join ' ', sort split ' ', "$bincompat $non_bincompat"; + + # wrap at 76 columns. + + $opts =~ s/(?=.{53})(.{1,53}) /$1\n /mg; + + print Config::myconfig(); + if ($^O eq 'VMS') { + print "\nCharacteristics of this PERLSHR image: \n"; + } else { + print "\nCharacteristics of this binary (from libperl): \n"; + } + + print " Compile-time options: $opts\n"; + + if (@patches) { + print " Locally applied patches:\n"; + print "\t$_\n" foreach @patches; + } + + print " Built under $^O\n"; + + print " $date\n" if defined $date; + + my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV; + push @env, "CYGWIN=\"$ENV{CYGWIN}\"" if $^O eq 'cygwin'; + + if (@env) { + print " \%ENV:\n"; + print " $_\n" foreach @env; + } + print " \@INC:\n"; + print " $_\n" foreach @INC; +} + ENDOFBEG my $myver = sprintf "%vd", $^V; @@ -124,6 +169,10 @@ $config_txt .= sprintf <<'ENDOFBEG', ($myver) x 3; # 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. +# for a description of the variables, please have a look at the +# Glossary file, as written in the Porting folder, or use the url: +# http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/Glossary + package Config; use strict; # use warnings; Pulls in Carp @@ -458,7 +507,19 @@ my $summary_expanded; sub myconfig { return $summary_expanded if $summary_expanded; ($summary_expanded = $summary) =~ s{\$(\w+)} - { my $c = $Config::Config{$1}; defined($c) ? $c : 'undef' }ge; + { + my $c; + if ($1 eq 'git_ancestor_line') { + if ($Config::Config{git_ancestor}) { + $c= "\n Ancestor: $Config::Config{git_ancestor}"; + } else { + $c= ""; + } + } else { + $c = $Config::Config{$1}; + } + defined($c) ? $c : 'undef' + }ge; $summary_expanded; } @@ -535,6 +596,15 @@ foreach my $prefix (qw(libs libswanted)) { $heavy_txt .= "EOVIRTUAL\n"; +$heavy_txt .= <<'ENDOFGIT'; +eval { + # do not have hairy conniptions if this isnt available + require 'Config_git.pl'; + $Config_SH_expanded .= $Config::Git_Data; + 1; +} or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n"; +ENDOFGIT + $heavy_txt .= $fetch_string; $config_txt .= <<'ENDOFEND'; @@ -751,6 +821,10 @@ Values stored in config.sh as 'undef' are returned as undefined values. The perl C function can be used to check if a named variable exists. +For a description of the variables, please have a look at the +Glossary file, as written in the Porting folder, or use the url: +http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/Glossary + =over 4 =item myconfig() @@ -832,6 +906,8 @@ some of the variables described below, or may have extraneous variables specific to that particular port. See the port specific documentation in such cases. +=cut + ENDOFTAIL if ($Opts{glossary}) { @@ -848,12 +924,16 @@ sub process { print CONFIG_POD <. The variable is a +structured string that looks something like this: + + git_commit_id='ea0c2dbd5f5ac6845ecc7ec6696415bf8e27bd52' + git_describe='GitLive-blead-1076-gea0c2db' + git_branch='smartmatch' + git_uncommitted_changes='' + git_commit_id_title='Commit id:' + git_commit_date='2009-05-09 17:47:31 +0200' + +Its format is not guaranteed not to change over time. + =head1 NOTE This module contains a good example of how to use tie to implement a