diff options
author | Nicholas Clark <nick@ccl4.org> | 2006-03-13 23:13:23 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2006-03-13 23:13:23 +0000 |
commit | 1d230ada0b2ff8ef3af3370141f10c3315abf450 (patch) | |
tree | ee6f8edb0dcbf5985b0ccd66f180211d864738aa /installperl | |
parent | 4d20abadde4f672afab51524d4ff00c7c65bbed7 (diff) | |
download | perl-1d230ada0b2ff8ef3af3370141f10c3315abf450.tar.gz |
Somewhat less shaky relocatable @INC support. You can install things
to the current location of the perl tree, move it, install more things,
move it again, lather rinse repeat.
Configure with -Duserelocatableinc
p4raw-id: //depot/perl@27491
Diffstat (limited to 'installperl')
-rwxr-xr-x | installperl | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/installperl b/installperl index 2f59f4563a..919fc648bd 100755 --- a/installperl +++ b/installperl @@ -7,6 +7,31 @@ BEGIN { $ENV{PERL5LIB} = 'lib'; } +BEGIN { + use Config; + if ($Config{userelocatableinc}) { + # This might be a considered a hack. Need to get information about the + # configuration from Config.pm *before* Config.pm expands any .../ + # prefixes. + # + # So we set $^X to pretend that we're the already installed perl, so + # Config.pm doesits ... expansion off that location. + + my $location = $Config{initialinstalllocation}; + die <<'OS' unless defined $location; +$Config{initialinstalllocation} is not defined - can't install a relocatable +perl without this. +OS + $^X = "$location/perl"; + # And then remove all trace of ever having loaded Config.pm, so that + # it will reload with the revised $^X + undef %Config::; + delete $INC{"Config.pm"}; + delete $INC{"Config_heavy.pl"}; + # You never saw us. We weren't here. + } +} + use strict; my ($Is_VMS, $Is_W32, $Is_OS2, $Is_Cygwin, $Is_Darwin, $nonono, $dostrip, $versiononly, $silent, $verbose, $force, |