diff options
Diffstat (limited to 'Master/texmf-dist/scripts/texlive/tlmgr.pl')
-rwxr-xr-x | Master/texmf-dist/scripts/texlive/tlmgr.pl | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/Master/texmf-dist/scripts/texlive/tlmgr.pl b/Master/texmf-dist/scripts/texlive/tlmgr.pl index e7117c23c62..b26cf4733bb 100755 --- a/Master/texmf-dist/scripts/texlive/tlmgr.pl +++ b/Master/texmf-dist/scripts/texlive/tlmgr.pl @@ -51,7 +51,11 @@ BEGIN { $Master =~ s!\\!/!g; $Master =~ s![^/]*$!../../..! unless ($Master =~ s!/texmf-dist/scripts/texlive/tlmgr\.pl$!!i); - $bindir = "$Master/bin/win32"; + if (tl_w32()) { + $bindir = "$Master/bin/win32"; + } else { + $bindir = "$Master/bin/win64"; + } $kpsewhichname = "kpsewhich.exe"; # path already set by wrapper batchfile } else { @@ -96,7 +100,7 @@ use TeXLive::TLWinGoo; use TeXLive::TLDownload; use TeXLive::TLConfFile; use TeXLive::TLCrypto; -TeXLive::TLUtils->import(qw(member info give_ctan_mirror win32 dirname +TeXLive::TLUtils->import(qw(member info give_ctan_mirror wndws tl_win32 tl_win64 dirname mkdirhier copy debug tlcmp repository_to_array)); use TeXLive::TLPaper; @@ -520,7 +524,7 @@ sub main { # and on Windows our Config.pm can apparently interfere, so always # skip it there. Or if users have NOPERLDOC set in the environment. my @noperldoc = (); - if (win32() || $ENV{"NOPERLDOC"}) { + if (wndws() || $ENV{"NOPERLDOC"}) { @noperldoc = ("-noperldoc", "1"); } else { if (!TeXLive::TLUtils::which("perldoc")) { @@ -843,7 +847,8 @@ sub do_cmd_and_check { if ($opts{"dry-run"}) { $ret = $F_OK; $out = ""; - } elsif (win32() && (! -r "$Master/bin/win32/luatex.dll")) { + } elsif ((tl_w32() && (! -r "$Master/bin/win32/luatex.dll")) || + (tl_w64() && (! -r "$Master/bin/win64/luatex.dll"))) { # deal with the case where only scheme-infrastructure is installed # on Windows, thus no luatex.dll is available and the wrapper cannot be started tlwarn("Cannot run wrapper due to missing luatex.dll\n"); @@ -1013,7 +1018,7 @@ sub handle_execute_actions { if ($regenerate_language) { for my $ext ("dat", "def", "dat.lua") { my $lang = "language.$ext"; - if (! TeXLive::TLUtils::win32()) { + if (! TeXLive::TLUtils::wndws()) { # Use full path for external command, except on Windows. $lang = "$TEXMFSYSVAR/tex/generic/config/$lang"; } @@ -1502,7 +1507,7 @@ sub action_path { } init_local_db(); my $winadminmode = 0; - if (win32()) { + if (wndws()) { # # for w32 we do system wide vs user setting detection as follows: # - if --w32mode is NOT given, @@ -1561,9 +1566,9 @@ sub action_path { } my $ret = $F_OK; if ($what =~ m/^add$/i) { - if (win32()) { + if (wndws()) { $ret |= TeXLive::TLUtils::w32_add_to_path( - $localtlpdb->root . "/bin/win32", + $localtlpdb->root . tl_w32() ? "/bin/win32" : "/bin/win64", $winadminmode); # ignore this return value, since broadcase_env might return # nothing in case of errors, and there is no way around it. @@ -1576,9 +1581,9 @@ sub action_path { $localtlpdb->option("sys_info")); } } elsif ($what =~ m/^remove$/i) { - if (win32()) { + if (wndws()) { $ret |= TeXLive::TLUtils::w32_remove_from_path( - $localtlpdb->root . "/bin/win32", + $localtlpdb->root . tl_w32() ? "/bin/win32" : "/bin/win64", $winadminmode); # ignore this return value, since broadcase_env might return # nothing in case of errors, and there is no way around it. @@ -3291,7 +3296,7 @@ sub action_update { } $updated{$pkg} = 1; next; - } elsif (win32() && ($pkg =~ m/$CriticalPackagesRegexp/)) { + } elsif (wndws() && ($pkg =~ m/$CriticalPackagesRegexp/)) { # we pretend that the update happened # in order to calculate file changes properly $updated{$pkg} = 1; @@ -3410,7 +3415,7 @@ sub action_update { # TODO logpackage("failed update: $pkg ($rev -> $mediarevstr)"); tlwarn("$prg: Installation of new version of $pkg failed, trying to unwind.\n"); - if (win32()) { + if (wndws()) { # w32 is notorious for not releasing a file immediately # we experienced permission denied errors my $newname = $unwind_package; @@ -3557,7 +3562,7 @@ sub action_update { my @found_pkgs = $localtlpdb->find_file($k); if ($#found_pkgs >= 0) { my $bad_file = 1; - if (win32()) { + if (wndws()) { # on w32 the packages have not been removed already, # so we check that the only package listed in @found_pkgs # is the one we are working on ($pkg) @@ -3583,7 +3588,7 @@ sub action_update { } } - if (!win32()) { + if (!wndws()) { for my $f (@infra_files_to_be_removed) { # TODO actually unlink the stuff #unlink("$Master/$f"); @@ -3614,7 +3619,7 @@ sub action_update { } # infra update and tlmgr restart on w32 is done by the updater batch script - if (win32() && $opts{'self'} && !$opts{"list"} && @critical) { + if (wndws() && $opts{'self'} && !$opts{"list"} && @critical) { info("$prg: Preparing TeX Live infrastructure update...\n"); for my $f (@infra_files_to_be_removed) { debug("file scheduled for removal $f\n"); @@ -3629,7 +3634,7 @@ sub action_update { } # only when we are not dry-running we restart the program - if (!win32() && $restart_tlmgr && !$opts{"dry-run"} && !$opts{"list"}) { + if (!wndws() && $restart_tlmgr && !$opts{"dry-run"} && !$opts{"list"}) { info("$prg: Restarting to complete update ...\n"); debug("restarting tlmgr @::SAVEDARGV\n"); # cleanup temp files before re-exec-ing tlmgr @@ -4760,11 +4765,11 @@ sub action_option { # ignore generate_update which is no longer used or needed. next if ($o eq "generate_updmap"); # ignore some things which are w32 specific - next if ($o eq "desktop_integration" && !win32()); - next if ($o eq "file_assocs" && !win32()); - next if ($o eq "w32_multi_user" && !win32()); + next if ($o eq "desktop_integration" && !wndws()); + next if ($o eq "file_assocs" && !wndws()); + next if ($o eq "w32_multi_user" && !wndws()); # - if (win32()) { + if (wndws()) { next if ($o =~ m/^sys_/); } if (defined $TLPDBOptions{$o}) { @@ -4828,7 +4833,7 @@ sub action_option { # when running w32 do not allow that a non-admin users sets # this from false to true my $do_it = 0; - if (win32()) { + if (wndws()) { if (admin()) { $do_it = 1; } else { @@ -5315,7 +5320,7 @@ Error message from creating MainWindow: # Return zero if successful, nonzero if failure. # sub uninstall_texlive { - if (win32()) { + if (wndws()) { printf STDERR "Please use \"Add/Remove Programs\" from the Control Panel " . "to uninstall TeX Live!\n"; return ($F_ERROR); @@ -6156,7 +6161,7 @@ sub action_postaction { tlwarn("$prg: action postaction needs as second argument one from 'shortcut', 'fileassoc', 'script'\n"); return; } - if (win32()) { + if (wndws()) { if ($opts{"w32mode"}) { if ($opts{"w32mode"} eq "user") { if (TeXLive::TLWinGoo::admin()) { @@ -6191,7 +6196,7 @@ sub action_postaction { @todo = $localtlpdb->expand_dependencies("-only-arch", $localtlpdb, @todo); } if ($type =~ m/^shortcut$/i) { - if (!win32()) { + if (!wndws()) { tlwarn("$prg: action postaction shortcut only works on windows.\n"); return; } @@ -6205,7 +6210,7 @@ sub action_postaction { } } } elsif ($type =~ m/^fileassoc$/i) { - if (!win32()) { + if (!wndws()) { tlwarn("$prg: action postaction fileassoc only works on windows.\n"); return; } @@ -6919,7 +6924,7 @@ sub init_local_db { # - if we are on Windows, it does not start with Drive:[\/] if (! ( $location =~ m!^(https?|ftp)://!i || $location =~ m!$TeXLive::TLUtils::SshURIRegex!i || - (win32() && (!(-e $location) || ($location =~ m!^.:[\\/]!) ) ) ) ) { + (wndws() && (!(-e $location) || ($location =~ m!^.:[\\/]!) ) ) ) ) { # seems to be a local path, try to normalize it my $testloc = abs_path($location); # however, if we were given a url, that will get "normalized" to the |