mirror of
https://github.com/openssl/openssl.git
synced 2024-12-09 05:51:54 +08:00
util/perl/OpenSSL/config.pm: Prefer POSIX::uname() over piping the command
POSIX::uname() has the advantage to work on non-POSIX systems as well, such as the Windows command prompt and VMS. Reviewed-by: Tim Hudson <tjh@openssl.org> (Merged from https://github.com/openssl/openssl/pull/11230)
This commit is contained in:
parent
33d5b4a68a
commit
69aa579e6d
@ -15,6 +15,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use Getopt::Std;
|
use Getopt::Std;
|
||||||
use File::Basename;
|
use File::Basename;
|
||||||
|
use POSIX;
|
||||||
|
|
||||||
# These control our behavior.
|
# These control our behavior.
|
||||||
my $DRYRUN;
|
my $DRYRUN;
|
||||||
@ -95,6 +96,19 @@ my $simple_guess_patterns = [
|
|||||||
[ 'Darwin:.*Power', 'ppc-apple-darwin' ],
|
[ 'Darwin:.*Power', 'ppc-apple-darwin' ],
|
||||||
[ 'Darwin:.*x86_64', 'x86_64-apple-darwin' ],
|
[ 'Darwin:.*x86_64', 'x86_64-apple-darwin' ],
|
||||||
[ 'Darwin:', 'i686-apple-darwin' ],
|
[ 'Darwin:', 'i686-apple-darwin' ],
|
||||||
|
|
||||||
|
# Windows values found by looking at Perl 5's win32/win32.c
|
||||||
|
[ 'Windows NT:.*:amd64', 'VC-WIN64A' ],
|
||||||
|
[ 'Windows NT:.*:ia64', 'VC-WIN64I' ],
|
||||||
|
[ 'Windows NT:.*:x86', 'VC-WIN32' ],
|
||||||
|
|
||||||
|
# VMS values found by observation on existing machinery. Unfortunately,
|
||||||
|
# the machine part is a bit... overdone. It seems, though, that 'Alpha'
|
||||||
|
# exists in that part, making it distinguishable from Itanium. It will
|
||||||
|
# be interesting to see what we'll get in the upcoming x86_64 port...
|
||||||
|
[ 'OpenVMS:.*:.*:.*:.*Alpha*', 'vms-alpha' ],
|
||||||
|
[ 'OpenVMS:', 'vms-ia64' ],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# More complex cases that require run-time code.
|
# More complex cases that require run-time code.
|
||||||
@ -215,25 +229,6 @@ EOF
|
|||||||
$WAIT = 0 if $opt_w;
|
$WAIT = 0 if $opt_w;
|
||||||
}
|
}
|
||||||
|
|
||||||
# call uname with specified arg, return result.
|
|
||||||
sub uname {
|
|
||||||
my $arg = shift;
|
|
||||||
open UNAME, "uname $arg 2>/dev/null|" or return "unknown";
|
|
||||||
my $line = <UNAME>;
|
|
||||||
close UNAME;
|
|
||||||
$line =~ s/[\r\n]+$//;
|
|
||||||
return "unknown" if $line eq '';
|
|
||||||
return $line;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set machine type, release, etc., variables.
|
|
||||||
sub get_machine_etc {
|
|
||||||
$MACHINE = $ENV{MACHINE} // uname('-m');
|
|
||||||
$RELEASE = $ENV{RELEASE} // uname('-r');
|
|
||||||
$SYSTEM = $ENV{SYSTEM} // uname("-s");
|
|
||||||
$VERSION = uname('-v');
|
|
||||||
}
|
|
||||||
|
|
||||||
# Expand variable references in a string.
|
# Expand variable references in a string.
|
||||||
sub expand {
|
sub expand {
|
||||||
my $var = shift;
|
my $var = shift;
|
||||||
@ -282,6 +277,9 @@ sub get_sco_type {
|
|||||||
|
|
||||||
# Return the cputype-vendor-osversion
|
# Return the cputype-vendor-osversion
|
||||||
sub guess_system {
|
sub guess_system {
|
||||||
|
($SYSTEM, undef, $RELEASE, $VERSION, $MACHINE) = POSIX::uname();
|
||||||
|
my $sys = "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}";
|
||||||
|
|
||||||
# Special-cases for ISC, SCO, Unixware
|
# Special-cases for ISC, SCO, Unixware
|
||||||
my $REL = is_sco_uname();
|
my $REL = is_sco_uname();
|
||||||
if ( $REL ne "" ) {
|
if ( $REL ne "" ) {
|
||||||
@ -290,7 +288,6 @@ sub guess_system {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Now pattern-match
|
# Now pattern-match
|
||||||
my $sys = "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}";
|
|
||||||
|
|
||||||
# Simple cases
|
# Simple cases
|
||||||
foreach my $tuple ( @$simple_guess_patterns ) {
|
foreach my $tuple ( @$simple_guess_patterns ) {
|
||||||
|
Loading…
Reference in New Issue
Block a user