summaryrefslogtreecommitdiff
path: root/Master/tlpkg/TeXLive
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2022-04-18 05:56:03 +0000
committerNorbert Preining <preining@logic.at>2022-04-18 05:56:03 +0000
commitdaa265a214b9e12e2a9bab636398c2dd699f7cd4 (patch)
tree5f5d6b6110b6006ad4085ccea50d96f685367b6c /Master/tlpkg/TeXLive
parentf6880ca55f0acfd2dac16f951b36ef7d3e1108b6 (diff)
work on win64 support
git-svn-id: svn://tug.org/texlive/trunk@63066 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/TeXLive')
-rw-r--r--Master/tlpkg/TeXLive/TLConfig.pm5
-rw-r--r--Master/tlpkg/TeXLive/TLPDB.pm6
-rw-r--r--Master/tlpkg/TeXLive/TLPSRC.pm9
-rw-r--r--Master/tlpkg/TeXLive/TLUtils.pm50
-rw-r--r--Master/tlpkg/TeXLive/TLWinGoo.pm1
5 files changed, 62 insertions, 9 deletions
diff --git a/Master/tlpkg/TeXLive/TLConfig.pm b/Master/tlpkg/TeXLive/TLConfig.pm
index 8308c6efeb8..9d513811395 100644
--- a/Master/tlpkg/TeXLive/TLConfig.pm
+++ b/Master/tlpkg/TeXLive/TLConfig.pm
@@ -120,7 +120,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)$)';
}
@@ -367,7 +368,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::InstallExtraRequiredPackages>
diff --git a/Master/tlpkg/TeXLive/TLPDB.pm b/Master/tlpkg/TeXLive/TLPDB.pm
index be818fccaed..108e041e1eb 100644
--- a/Master/tlpkg/TeXLive/TLPDB.pm
+++ b/Master/tlpkg/TeXLive/TLPDB.pm
@@ -881,6 +881,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 0a1146386ac..360064b0598 100644
--- a/Master/tlpkg/TeXLive/TLPSRC.pm
+++ b/Master/tlpkg/TeXLive/TLPSRC.pm
@@ -162,7 +162,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";
@@ -494,13 +494,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");
}
}
@@ -537,7 +540,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 4751574b681..bcea1f2a882 100644
--- a/Master/tlpkg/TeXLive/TLUtils.pm
+++ b/Master/tlpkg/TeXLive/TLUtils.pm
@@ -27,6 +27,8 @@ C<TeXLive::TLUtils> - TeX Live infrastructure miscellany
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();
@@ -260,7 +262,7 @@ BEGIN {
@EXPORT = qw(setup_programs download_file process_logging_options
tldie tlwarn info log debug ddebug dddebug debug
debug_hash_str 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;
@@ -299,6 +301,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";
@@ -523,7 +526,8 @@ sub platform_desc {
'sparc-linux' => 'GNU/Linux on Sparc',
'sparc-solaris' => 'Solaris on Sparc',
'universal-darwin' => 'MacOSX current (10.14-) on ARM/x86_64',
- 'win32' => 'Windows',
+ 'win32' => 'Windows 32bit',
+ 'win64' => 'Windows 64bit',
'x86_64-cygwin' => 'Cygwin on x86_64',
'x86_64-darwinlegacy' => 'MacOSX legacy (10.6-) on x86_64',
'x86_64-dragonfly' => 'DragonFlyBSD on x86_64',
@@ -545,9 +549,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
@@ -563,6 +602,9 @@ sub win32 {
}
+
+
+
=item C<unix>
Return C<1> if platform is UNIX and C<0> otherwise.
@@ -570,7 +612,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 94c7877ebb7..5996697336c 100644
--- a/Master/tlpkg/TeXLive/TLWinGoo.pm
+++ b/Master/tlpkg/TeXLive/TLWinGoo.pm
@@ -1167,6 +1167,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;