diff options
author | Norbert Preining <preining@logic.at> | 2019-12-10 06:17:16 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2019-12-10 06:17:16 +0000 |
commit | f201f6cfe15e09e8d152c6b4d8f7c7cb1bb0f7c7 (patch) | |
tree | 035bcbef184362709842a6faa0fb2f7be7cad947 /Master/tlpkg | |
parent | 47761d79211f68fab08d6fff4b3d857b85e9dba3 (diff) |
work on win64 support
git-svn-id: svn://tug.org/texlive/trunk@53075 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg')
-rw-r--r-- | Master/tlpkg/TeXLive/TLConfig.pm | 5 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLPDB.pm | 6 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLPSRC.pm | 9 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLUtils.pm | 50 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLWinGoo.pm | 1 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tl-compare-tlpdbs | 4 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tl-update-4ht | 3 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tl-update-bindir | 1 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tl-update-install-pkg | 5 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tl-update-nsis | 6 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tl-update-tlcritical | 2 | ||||
-rw-r--r-- | Master/tlpkg/installer/install-menu-perltk.pl | 2 | ||||
-rw-r--r-- | Master/tlpkg/installer/install-menu-text.pl | 4 | ||||
-rwxr-xr-x | Master/tlpkg/installer/tl-cmd.bat | 1 | ||||
-rw-r--r-- | Master/tlpkg/installer/tl-tray-menu.ini | 2 | ||||
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 10 |
16 files changed, 90 insertions, 21 deletions
diff --git a/Master/tlpkg/TeXLive/TLConfig.pm b/Master/tlpkg/TeXLive/TLConfig.pm index 8b7f76122b4..09472f8bd78 100644 --- a/Master/tlpkg/TeXLive/TLConfig.pm +++ b/Master/tlpkg/TeXLive/TLConfig.pm @@ -110,7 +110,8 @@ our @CriticalPackagesList = qw/texlive.infra/; our $CriticalPackagesRegexp = '^(texlive\.infra)'; if ($^O =~ /^MSWin/i) { push (@CriticalPackagesList, "tlperl.win32"); - $CriticalPackagesRegexp = '^(texlive\.infra|tlperl\.win32$)'; + push (@CriticalPackagesList, "tlperl.win64"); + $CriticalPackagesRegexp = '^(texlive\.infra|tlperl\.win(32|64)$)'; } # @@ -345,7 +346,7 @@ C<systems/texlive/tlnet/>. =item C<@TeXLive::TLConfig::CriticalPackagesRegexp> A list of all those packages which we do not update regularly since they -are too central, currently texlive.infra and (for Windows) tlperl.win32. +are too central, currently texlive.infra and (for Windows) tlperl.win(32|64). =item C<$TeXLive::TLConfig::RelocTree> diff --git a/Master/tlpkg/TeXLive/TLPDB.pm b/Master/tlpkg/TeXLive/TLPDB.pm index 5ff686d5a78..30a6138b33e 100644 --- a/Master/tlpkg/TeXLive/TLPDB.pm +++ b/Master/tlpkg/TeXLive/TLPDB.pm @@ -918,6 +918,12 @@ sub expand_dependencies { if (grep(/^win32$/,@archs)) { $install{$p_dep} = 0; } + } elsif ($p_dep =~ m/^(.*)\.win64$/) { + # a win32 package should *only* be installed if we are installing + # the win64 arch + if (grep(/^win64$/,@archs)) { + $install{$p_dep} = 0; + } } else { $install{$p_dep} = 0 unless $only_arch; } diff --git a/Master/tlpkg/TeXLive/TLPSRC.pm b/Master/tlpkg/TeXLive/TLPSRC.pm index 985abbb73ef..cdef5c3c41a 100644 --- a/Master/tlpkg/TeXLive/TLPSRC.pm +++ b/Master/tlpkg/TeXLive/TLPSRC.pm @@ -129,7 +129,7 @@ sub from_file { # - normal texlive specific packages: ^texlive.*\..*$ # - configuration texlive specific packages: ^00texlive.*\..*$ if ($line =~ /^name\s/) { - $line =~ /^name\s+([-\w]+(\.win32)?|(00)?texlive\..*)$/; + $line =~ /^name\s+([-\w]+(\.win(32|64))?|(00)?texlive\..*)$/; $foundnametag && die "$srcfile:$lineno: second name directive not allowed: $line" . "(have $name)\n"; @@ -423,13 +423,16 @@ sub make_tlpobj { if ($finalp =~ m! bin/win32/!) { @todoarchs = qw/win32/; } + if ($finalp =~ m! bin/win64/!) { + @todoarchs = qw/win64/; + } # now @todoarchs contains only those archs for which we want # to match the pattern foreach my $arch (@todoarchs) { # get only those files matching the pattern my @archfiles = $tltree->get_matching_files('bin',$finalp, $pkgname, $arch); if (!@archfiles) { - if (($arch ne "win32") || defined($::tlpsrc_pattern_warn_win)) { + if ((($arch ne "win32") && ($arch ne "win64")) || defined($::tlpsrc_pattern_warn_win)) { tlwarn("$self->{name} ($arch): no hit on binpattern $finalp\n"); } } @@ -466,7 +469,7 @@ sub make_tlpobj { # get only those files matching the pattern my @archfiles = $tltree->get_matching_files('bin', $finalp, $pkgname, $arch); if (!@archfiles) { - if (($arch ne "win32") || defined($::tlpsrc_pattern_warn_win)) { + if ((($arch ne "win32") && ($arch ne "win64")) || defined($::tlpsrc_pattern_warn_win)) { tlwarn("$self->{name} ($arch): no hit on negative binpattern $finalp\n") unless $::tlpsrc_pattern_no_warn_negative; # see comments in libexec/place script. diff --git a/Master/tlpkg/TeXLive/TLUtils.pm b/Master/tlpkg/TeXLive/TLUtils.pm index f2a5b1ce093..f1ed9cca1f0 100644 --- a/Master/tlpkg/TeXLive/TLUtils.pm +++ b/Master/tlpkg/TeXLive/TLUtils.pm @@ -25,6 +25,8 @@ C<TeXLive::TLUtils> - utilities used in TeX Live infrastructure TeXLive::TLUtils::platform(); TeXLive::TLUtils::platform_name($canonical_host); TeXLive::TLUtils::platform_desc($platform); + TeXLive::TLUtils::win32_32(); + TeXLive::TLUtils::win32_64(); TeXLive::TLUtils::win32(); TeXLive::TLUtils::unix(); @@ -217,7 +219,7 @@ BEGIN { ); @EXPORT = qw(setup_programs download_file process_logging_options tldie tlwarn info log debug ddebug dddebug debug_hash - win32 xchdir xsystem run_cmd system_pipe sort_archs); + win32 win32_32 win32_64 xchdir xsystem run_cmd system_pipe sort_archs); } use Cwd; @@ -251,6 +253,7 @@ sub platform { unless (defined $::_platform_) { if ($^O =~ /^MSWin/i) { $::_platform_ = "win32"; + # TODO make sure we check how to detect win64!!! } else { my $config_guess = "$::installerdir/tlpkg/installer/config.guess"; @@ -409,7 +412,8 @@ sub platform_desc { 'sparc-linux' => 'GNU/Linux on Sparc', 'sparc-solaris' => 'Solaris on Sparc', 'universal-darwin' => 'MacOSX universal binaries', - 'win32' => 'Windows', + 'win32' => 'Windows 32bit', + 'win64' => 'Windows 64bit', 'x86_64-cygwin' => 'Cygwin on x86_64', 'x86_64-darwin' => 'MacOSX current (10.12-) on x86_64', 'x86_64-darwinlegacy' => 'MacOSX legacy (10.6-) on x86_64', @@ -431,9 +435,44 @@ sub platform_desc { } +=item C<win32_32> + +Return C<1> if platform is Windows32 and C<0> otherwise. The test is +currently based on the value of Perl's C<$^O> variable. + +=cut + +sub win32_32 { + if ($^O =~ /^MSWin/i) { + # TODO check 32bit + return 1; + } else { + return 0; + } + # the following needs config.guess, which is quite bad ... + # return (&platform eq "win32")? 1:0; +} +=item C<win32_64> + +Return C<1> if platform is Windows64 and C<0> otherwise. The test is +currently based on the value of Perl's C<$^O> variable. + +=cut + +sub win32_64 { + if ($^O =~ /^MSWin/i) { + # TODO check 64bit + return 1; + } else { + return 0; + } + # the following needs config.guess, which is quite bad ... + # return (&platform eq "win32")? 1:0; +} + =item C<win32> -Return C<1> if platform is Windows and C<0> otherwise. The test is +Return C<1> if platform is Windows32 or 64 and C<0> otherwise. The test is currently based on the value of Perl's C<$^O> variable. =cut @@ -449,6 +488,9 @@ sub win32 { } + + + =item C<unix> Return C<1> if platform is UNIX and C<0> otherwise. @@ -456,7 +498,7 @@ Return C<1> if platform is UNIX and C<0> otherwise. =cut sub unix { - return (&platform eq "win32")? 0:1; + return (&platform eq "win32" || &platform eq "win64" )? 0:1; } diff --git a/Master/tlpkg/TeXLive/TLWinGoo.pm b/Master/tlpkg/TeXLive/TLWinGoo.pm index 232a4099e1a..7daf81090b4 100644 --- a/Master/tlpkg/TeXLive/TLWinGoo.pm +++ b/Master/tlpkg/TeXLive/TLWinGoo.pm @@ -1197,6 +1197,7 @@ sub create_uninstaller { my $td = $td_fw; $td =~ s!/!\\!g; + # TODO win64 support!!! my $tdmain = `"$td\\bin\\win32\\kpsewhich" -var-value=TEXMFMAIN`; $tdmain =~ s!/!\\!g; chomp $tdmain; diff --git a/Master/tlpkg/bin/tl-compare-tlpdbs b/Master/tlpkg/bin/tl-compare-tlpdbs index 4632280e9fb..5b1b99ea9f2 100755 --- a/Master/tlpkg/bin/tl-compare-tlpdbs +++ b/Master/tlpkg/bin/tl-compare-tlpdbs @@ -20,7 +20,7 @@ use Pod::Usage; # packages ignored unless --all is given # see @critical_pkg_list in tl-update-containers -my @add_ignored_packs = qw/texlive.infra tlperl.win32/; +my @add_ignored_packs = qw/texlive.infra tlperl.win32 tlperl.win64/; our ($mydir, $vc_id); my $opt_version = 0; @@ -116,7 +116,7 @@ tl-compare-tlpdbs [I<option>]... <TLPDB1> [<TLPDB2>] =item B<--all> -Also compare packages C<texlive.infra> and C<tlperl.win32>, which are +Also compare packages C<texlive.infra> and C<tlperl.win(32|64)>, which are ignored by default. =item B<--help> diff --git a/Master/tlpkg/bin/tl-update-4ht b/Master/tlpkg/bin/tl-update-4ht index ae774316009..8436845aa83 100755 --- a/Master/tlpkg/bin/tl-update-4ht +++ b/Master/tlpkg/bin/tl-update-4ht @@ -27,6 +27,7 @@ for s in ht htcontext htmex httexi; do # diff -u1 $tm/bin/win32 bin/win32/ | fgrep -v "Only in /home" >/tmp/u; v /tmp/u #tex4ht, t4ht +diff -u1 $tm/bin/win64 bin/win64/ | fgrep -v "Only in /home" >/tmp/u; v /tmp/u #tex4ht, t4ht #\cp -pf bin/win32/* /home/texlive/karl/Master/bin/win32/ # diff -u1 .. src | fgrep -v "Only in .." >/tmp/u; v /tmp/u @@ -66,7 +67,7 @@ comm -13 /tmp/now /tmp/new >/tmp/c; wc -l /tmp/c #(cd $tm/texmf-dist/tex4ht/ && svn add `cat /tmp/c`) # check results: -svn status .. $tm/bin/win32 \ +svn status .. $tm/bin/win32 $tm/bin/win64 \ $tm/texmf-dist/tex/generic/tex4ht \ $tm/texmf-dist/tex4ht \ $tm/texmf-dist/scripts/tex4ht diff --git a/Master/tlpkg/bin/tl-update-bindir b/Master/tlpkg/bin/tl-update-bindir index a2c75df31fd..dc599200c89 100755 --- a/Master/tlpkg/bin/tl-update-bindir +++ b/Master/tlpkg/bin/tl-update-bindir @@ -178,6 +178,7 @@ for tlplat in $tlplats; do sparc-solaris) default_bin_loc=$download_loc $grab http://dl.contextgarden.net/build/texlive/$tlplat.tar.xz;; + win64) win32) # default_bin_loc=$tmpdir/tl.$tlplat.zip # $grab http://members2.jcom.home.ne.jp/wt1357ak/tl2009w32-02.zip;; diff --git a/Master/tlpkg/bin/tl-update-install-pkg b/Master/tlpkg/bin/tl-update-install-pkg index 24397828909..d8dff53062d 100755 --- a/Master/tlpkg/bin/tl-update-install-pkg +++ b/Master/tlpkg/bin/tl-update-install-pkg @@ -156,7 +156,7 @@ if ($opt_texlivedocs) { my %tlpbin = %{$tlpinst->binfiles}; for my $a (keys %tlpbin) { - next if ($a =~ m/win32/); + next if ($a =~ m/win(32|64)/); push (@unix, @{$tlpbin{$a}}); } @@ -165,6 +165,9 @@ push (@win32, @unix); if (defined $tlpbin{"win32"}) { push (@win32, @{$tlpbin{"win32"}}); } +if (defined $tlpbin{"win64"}) { + push (@win32, @{$tlpbin{"win64"}}); +} # main. diff --git a/Master/tlpkg/bin/tl-update-nsis b/Master/tlpkg/bin/tl-update-nsis index 0b121f48228..3490924190e 100755 --- a/Master/tlpkg/bin/tl-update-nsis +++ b/Master/tlpkg/bin/tl-update-nsis @@ -41,10 +41,11 @@ sub main { my $texliveinfra = $tlpdb->get_package("texlive.infra"); my $texliveinfraw32 = $tlpdb->get_package("texlive.infra.win32"); - # + my $texliveinfraw64 = $tlpdb->get_package("texlive.infra.win64"); my @allfiles = (); push(@allfiles, $texliveinfra->all_files); push(@allfiles, $texliveinfraw32->all_files) if defined $texliveinfraw32; + push(@allfiles, $texliveinfraw64->all_files) if defined $texliveinfraw64; # create the tlpobj files, and directory if necessary. my $tlpobjdir = "$InfraLocation/tlpobj"; @@ -53,7 +54,7 @@ sub main { &TeXLive::TLUtils::mkdirhier($abs_tlpobjdir); } my $rev = 0; # get the highest rev of all our packages - for my $p ($texliveinfra, $texliveinfraw32) { + for my $p ($texliveinfra, $texliveinfraw32, $texliveinfraw64) { if (defined $p) { if ($p->revision > $rev) { $rev = $p->revision; @@ -133,6 +134,7 @@ EOF print " File $mm\\$dd\\$f\n"; } } + # TODO win64 SUPPORT print " ExecWait \'\"\$INSTDIR\\bin\\win32\\tlmgr.bat\" _include_tlpobj"; for my $p ($texliveinfra, $texliveinfraw32) { if (defined $p) { diff --git a/Master/tlpkg/bin/tl-update-tlcritical b/Master/tlpkg/bin/tl-update-tlcritical index a5e2a6f128f..ce0031495e6 100755 --- a/Master/tlpkg/bin/tl-update-tlcritical +++ b/Master/tlpkg/bin/tl-update-tlcritical @@ -82,7 +82,7 @@ if $opt_do_containers; then # update normal containers. echo "$0: running tl-update-containers (for critical packages)..." tl-update-containers -location $tlcrit $recreate -all \ - 00texlive.installation 00texlive.config texlive.infra tlperl.win32 \ + 00texlive.installation 00texlive.config texlive.infra tlperl.win32 tlperl.win64 \ $moredis else # this is an option so that if the repository already contains diff --git a/Master/tlpkg/installer/install-menu-perltk.pl b/Master/tlpkg/installer/install-menu-perltk.pl index 3a3aca2f8b9..09ebd661051 100644 --- a/Master/tlpkg/installer/install-menu-perltk.pl +++ b/Master/tlpkg/installer/install-menu-perltk.pl @@ -1160,7 +1160,7 @@ sub callback_select_collection { } sub callback_select_systems() { - if ($vars{"binary_win32"}) { + if ($vars{"binary_win32"} || $vars{"binary_win64"}) { $vars{"collection-wintools"} = 1; } else { $vars{"collection-wintools"} = 0; diff --git a/Master/tlpkg/installer/install-menu-text.pl b/Master/tlpkg/installer/install-menu-text.pl index bef093d075c..f933ea91b47 100644 --- a/Master/tlpkg/installer/install-menu-text.pl +++ b/Master/tlpkg/installer/install-menu-text.pl @@ -327,7 +327,7 @@ sub binary_menu { print "Unknown command: $answer\n\n"; } } - if ($vars{"binary_win32"}) { + if ($vars{"binary_win32"} || $vars{"binary_win64"}) { $vars{"collection-wintools"} = 1; } else { $vars{"collection-wintools"} = 0; @@ -375,7 +375,7 @@ sub scheme_menu { select_scheme($vars{'selected_scheme'}); - if ($vars{"binary_win32"}) { + if ($vars{"binary_win32"} || $vars{"binary_win64"}) { $vars{"collection-wintools"} = 1; } else { $vars{"collection-wintools"} = 0; diff --git a/Master/tlpkg/installer/tl-cmd.bat b/Master/tlpkg/installer/tl-cmd.bat index 747d3088239..bc9fdc372c4 100755 --- a/Master/tlpkg/installer/tl-cmd.bat +++ b/Master/tlpkg/installer/tl-cmd.bat @@ -8,6 +8,7 @@ rem Public domain @echo off setlocal enableextensions +rem TODO need to fix for win64 !!!! rem Add bin dir to beginning of PATH only if it is not already there for /f "tokens=1,2 delims=;" %%I in ("%~dp0..\..\bin\win32;%PATH%") do if not "%%~fI"=="%%~fJ" set "PATH=%%~fI;%PATH%" diff --git a/Master/tlpkg/installer/tl-tray-menu.ini b/Master/tlpkg/installer/tl-tray-menu.ini index dcf38226604..1f5f14664be 100644 --- a/Master/tlpkg/installer/tl-tray-menu.ini +++ b/Master/tlpkg/installer/tl-tray-menu.ini @@ -25,4 +25,4 @@ ;Your own choice of portable editor: ;&My editor=..\my_editor\my_editor.exe Notepad="%windir%\system32\notepad.exe" -&Command Prompt=cmd /k "title TeX Live"
\ No newline at end of file +&Command Prompt=cmd /k "title TeX Live" diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 7ccafce2c64..946232ad858 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -3975,7 +3975,7 @@ sub doscripts { my $platdir = "$TOPDEST/bin/$p"; &xmkdir ($platdir); # - if ($p ne "win32") { + if (($p ne "win32") && ($p ne "win64")) { my $linktarget = "../../$DEST_TREE/scripts/$package/$s"; &SYSTEM ("ln -s $linktarget $platdir/$linkname"); # @@ -5805,6 +5805,7 @@ sub POSTbiber { # biber uses different platform names. my %tl_platform = ( "MSWIN32" => "win32", + "MSWIN64" => "win64", "amd64-freebsd" => "amd64-freebsd", "cygwin32" => "i386-cygwin", "cygwin64" => "x86_64-cygwin", @@ -5956,7 +5957,9 @@ sub POSTcontext { # Build linked_scripts dir. The executables are cherry-picked from # ConTeXt's stubs directory. my $w32_bindir = "$TOPDEST/bin/win32"; + my $w64_bindir = "$TOPDEST/bin/win64"; &xmkdir ($w32_bindir); + &xmkdir ($w64_bindir); # my $pkg_subdir = "stubs/unix"; # where hans keeps them &xchdir ("$DEST/scripts/$package/$pkg_subdir"); @@ -5967,11 +5970,13 @@ sub POSTcontext { &bindirs_symlink ($exec); &build_scripts_copy ($exec, $pkg_subdir); &SYSTEM ("$CP ../mswin/$exec.exe $w32_bindir/"); + &SYSTEM ("$CP ../mswin/$exec.exe $w64_bindir/"); push (@exec, $exec); } # mtxrun on Windows needs more than just the .exe. &xchdir ("../mswin"); &SYSTEM ("$CP mtxrun.dll mtxrun.lua $w32_bindir/"); + &SYSTEM ("$CP mtxrun.dll mtxrun.lua $w64_bindir/"); print "still POST$package - man pages\n"; &xchdir ("$DEST/doc/$package/scripts"); @@ -6011,6 +6016,7 @@ sub bindirs_symlink { chomp (my @platforms = `cd $Master/bin && ls`); for my $p (@platforms) { next if $p eq "win32"; # windows handled separately + next if $p eq "win64"; # windows handled separately my $platdir = "$TOPDEST/bin/$p"; &xmkdir ($platdir); &SYSTEM ("ln -s $linktarget $platdir/$linkname"); @@ -6488,6 +6494,7 @@ sub POSTmptopdf { # commonalities doesn't make sense. Sigh. print "POST$package - user-level executables\n"; my $w32_bindir = "$TOPDEST/bin/win32"; + my $w64_bindir = "$TOPDEST/bin/win64"; &xmkdir ($w32_bindir); # my $pkg_subdir = "perl"; # where hans keeps it @@ -6505,6 +6512,7 @@ sub POSTmptopdf { my $build_tldir = "texk/texlive"; my $w32_wrapper = "$Build/$build_tldir/w32_wrapper/runscript.exe"; &SYSTEM ("$CP $w32_wrapper $w32_bindir/mptopdf.exe"); + &SYSTEM ("$CP $w32_wrapper $w64_bindir/mptopdf.exe"); # print "still POST$package - man page\n"; &xchdir ("$DEST/doc/context/scripts/mkii"); |