summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
Diffstat (limited to 'Master')
-rw-r--r--Master/tlpkg/installer/platform.pl49
1 files changed, 49 insertions, 0 deletions
diff --git a/Master/tlpkg/installer/platform.pl b/Master/tlpkg/installer/platform.pl
new file mode 100644
index 00000000000..08f4369da00
--- /dev/null
+++ b/Master/tlpkg/installer/platform.pl
@@ -0,0 +1,49 @@
+
+
+print platform($ARGV[0]), "\n";
+
+sub platform {
+ my $config_guess = shift;
+ unless (defined $::_platform_) {
+ if ($^O=~/^MSWin(32|64)$/i) {
+ $::_platform_="win32";
+ } else {
+ if (!defined($config_guess)) {
+ printf STDERR "first argument must be path to config.guess\n";
+ exit 1;
+ }
+ my @OSs = qw(aix cygwin darwin freebsd hpux irix linux netbsd
+ openbsd solaris);
+
+ # We cannot rely on #! in config.guess but have to call /bin/sh
+ # explicitly because sometimes the 'noexec' flag is set in
+ # /etc/fstab for ISO9660 file systems.
+ chomp (my $guessed_platform = `/bin/sh $config_guess`);
+
+ # For example, if the disc or reader has hardware problems.
+ die "$0: could not run $config_guess, cannot proceed, sorry"
+ if ! $guessed_platform;
+
+ $guessed_platform =~ s/^x86_64-(.*)-freebsd/amd64-$1-freebsd/;
+ my $CPU; # CPU type as reported by config.guess.
+ my $OS; # O/S type as reported by config.guess.
+ ($CPU = $guessed_platform) =~ s/(.*?)-.*/$1/;
+ $CPU =~ s/^alpha(.*)/alpha/; # alphaev56 or whatever
+ $CPU =~ s/powerpc64/powerpc/; # we don't distinguish on ppc64
+ for my $os (@OSs) {
+ $OS = $os if $guessed_platform =~ /$os/;
+ }
+ if ($OS eq "darwin") {
+ $CPU = "universal"; # TL provides universal binaries
+ } elsif ($CPU =~ /^i.86$/) {
+ $CPU =~ s/i.86/i386/;
+ }
+ unless (defined $OS) {
+ ($OS = $guessed_platform) =~ s/.*-(.*)/$1/;
+ }
+ $::_platform_ = "$CPU-$OS";
+ }
+ }
+ return $::_platform_;
+}
+