From 37d75e59ddd5fe08ecd0395b8a62f59b7947ae28 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 28 Nov 2008 01:21:05 +0000 Subject: * install-tl (BEGIN): do not chdir to `dirname $0` (aka $Master); instead, just set $::installerdir to it. * tlpkg/installer/install-menu-text.pl (input_dirname): new fn, factoring out directory processing code. Transform relative paths to absolute. (directories_menu): call it. git-svn-id: svn://tug.org/texlive/trunk@11446 c570f23f-e606-0410-a88d-b1316a301751 --- Master/install-tl | 32 +++++---------- Master/tlpkg/installer/install-menu-text.pl | 62 +++++++++++++++++------------ 2 files changed, 47 insertions(+), 47 deletions(-) (limited to 'Master') diff --git a/Master/install-tl b/Master/install-tl index 8831c97e401..5c4161e2e76 100755 --- a/Master/install-tl +++ b/Master/install-tl @@ -26,34 +26,26 @@ $::installerrevision = $1; # taken from 00texlive.config: release, $tlpdb->config_release; our $texlive_release; -my $localpath; BEGIN { $^W = 1; - my $me=$0; - $me=~s!\\!/!g if $^O=~/^MSWin(32|64)$/i; - if ($me=~m!/!) { - ($localpath=$me)=~s!(.*)/.*$!$1!; - # we have to chdir to the Master ... - chdir($localpath); + my $Master; + my $me = $0; + $me =~ s!\\!/!g if $^O =~ /^MSWin(32|64)$/i; + if ($me =~ m!/!) { + ($Master = $me) =~ s!(.*)/[^/]*$!$1!; } else { - $localpath = '.'; - } - $::installerdir='.'; - # Windows: The installer uses a minimal subset of Perl. In order - # to avoid conflicts with other versions of Perl already installed on - # the system, we simply ignore them. The installer has to execute - # $::installerdir/tlpkg/bin/perl.exe and should not rely on any other - # Perl executable. The batchfile wrapper takes care of this. - #if ($^O=~/^MSWin(32|64)$/i) { - # @INC="$::installerdir/tlpkg/installer/perllib"; - #} + $Master = "."; + } + $::installerdir = $Master; # All platforms: add the installer modules unshift (@INC, "$::installerdir/tlpkg"); } +use Cwd 'abs_path'; use Getopt::Long qw(:config no_autoabbrev); +use Pod::Usage; use TeXLive::TLUtils qw(platform platform_desc which getenv win32 unix info log debug tlwarn ddebug @@ -65,8 +57,6 @@ use TeXLive::TLPOBJ; use TeXLive::TLPDB; use TeXLive::TLConfig; use TeXLive::TLPostActions; -use Pod::Usage; -use Cwd 'abs_path'; if (win32) { require TeXLive::TLWinGoo; @@ -173,7 +163,7 @@ $::alternative_selector = 0; # continue with the installation # note, we are in the installer directory. if (-r "installation.profile") { - print "ABORTED INSTALLATION FOUND: $localpath/installation.profile\n"; + print "ABORTED INSTALLATION FOUND: installation.profile\n"; print "Do you want to continue with the exact same settings as before (y/N): "; my $answer = ; if ($answer =~ m/^y(es)?$/i) { diff --git a/Master/tlpkg/installer/install-menu-text.pl b/Master/tlpkg/installer/install-menu-text.pl index 68fc8071d8f..86e8fd32de7 100755 --- a/Master/tlpkg/installer/install-menu-text.pl +++ b/Master/tlpkg/installer/install-menu-text.pl @@ -432,7 +432,7 @@ sub language_menu { } } - + sub directories_menu { my %command=( 'self' => \&directories_menu, @@ -476,63 +476,53 @@ EOF print " Note: ~ will expand to \$HOME (or to %USERPROFILE% on Windows)\n"; } - other_options qw (R Q); + other_options qw(R Q); my $answer = prompt 'Enter command'; + my $dir; + my $home = getenv('HOME'); $home = getenv('USERPROFILE') if (win32); $home ||= '~'; if ("\u$answer" eq '1') { print "New value for $maindir [$vars{$maindir}]: "; - chomp($answer=); - $vars{$maindir}="$answer" if (length $answer); - $vars{$maindir}=~s@\\@/@g if (win32); - $vars{$maindir} =~ s/^~/$home/; + $answer = &input_dirname (); + $vars{$maindir} = $answer if $answer ne ""; if ($vars{$maindir}=~/^(.*)\/$texlive_release$/) { $vars{'TEXMFLOCAL'}="$1/texmf-local"; $vars{'TEXMFSYSVAR'}="$1/$texlive_release/texmf-var"; $vars{'TEXMFSYSCONFIG'}="$1/$texlive_release/texmf-config"; - $vars{'TEXDIRW'} = $vars{'TEXDIR'} unless $vars{'from_dvd'}; - return $command{'self'}; } elsif ($vars{$maindir}=~/^(.*)$/) { $vars{'TEXMFLOCAL'}="$1/texmf-local"; $vars{'TEXMFSYSVAR'}="$1/texmf-var"; $vars{'TEXMFSYSCONFIG'}="$1/texmf-config"; - $vars{'TEXDIRW'} = $vars{'TEXDIR'} unless $vars{'from_dvd'}; - return $command{'self'}; } + $vars{'TEXDIRW'} = $vars{'TEXDIR'} unless $vars{'from_dvd'}; + return $command{'self'}; } elsif ("\u$answer" eq '2') { print "New value for TEXMFLOCAL [$vars{'TEXMFLOCAL'}]: "; - chomp($answer=); - $vars{'TEXMFLOCAL'}="$answer" if (length $answer); - $vars{'TEXMFLOCAL'}=~s@\\@/@g if (win32); - $vars{'TEXMFLOCAL'} =~ s/^~/$home/; + $answer = &input_dirname (); + $vars{'TEXMFLOCAL'} = $answer if $answer ne ""; return $command{'self'}; } elsif ("\u$answer" eq '3') { print "New value for TEXMFSYSVAR [$vars{'TEXMFSYSVAR'}]: "; - chomp($answer=); - $vars{'TEXMFSYSVAR'}="$answer" if (length $answer); - $vars{'TEXMFSYSVAR'}=~s@\\@/@g if (win32); - $vars{'TEXMFSYSVAR'} =~ s/^~/$home/; + $answer = &input_dirname (); + $vars{'TEXMFSYSVAR'} = $answer if $answer ne ""; return $command{'self'}; } elsif ("\u$answer" eq '4') { print "New value for TEXMFSYSCONFIG [$vars{'TEXMFSYSCONFIG'}]: "; - chomp($answer=); - $vars{'TEXMFSYSCONFIG'}="$answer" if (length $answer); - $vars{'TEXMFSYSCONFIG'}=~s@\\@/@g if (win32); - $vars{'TEXMFSYSCONFIG'} =~ s/^~/$home/; + $answer = &input_dirname (); + $vars{'TEXMFSYSCONFIG'} = $answer if $answer ne ""; return $command{'self'}; } elsif ("\u$answer" eq '5') { print "New value for TEXMFHOME [$vars{'TEXMFHOME'}]: "; - chomp($answer=); - $vars{'TEXMFHOME'}="$answer" if (length $answer); - $vars{'TEXMFHOME'}=~s@\\@/@g if (win32); + $answer = &input_dirname (); + $vars{'TEXMFHOME'} = $answer if $answer ne ""; return $command{'self'}; - } if (defined $command{"\u$answer"}) { @@ -543,6 +533,26 @@ EOF } } + +# Helper function to read a directory name and clean it up. +# +sub input_dirname +{ + chomp (my $answer = ); + return "" if $answer eq ""; + + $answer =~ s!\\!/!g if win32(); # switch to forward slashes + $answer =~ s/^~/$home/; # $home expansion + + # relative paths are unlikely to work in texmf.cnf, et al., + # and don't have any apparent practical use. Convert to absolute. + if (! File::Spec->file_name_is_absolute($answer)) { + $answer = Cwd::abs_path($answer); + } + return $answer; +} + + $vars{'page'}=0; sub html2text { -- cgit v1.2.3