mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-10-23 20:59:55 +00:00
[SV 62173] Fix archive tests for non-GNU systems
Original patch from Dmitry Goncharov <dgoncharov@users.sf.net> Fix the ar flags to match the default values in make. If the U option is supported, add it to the end not the beginning, since ARFLAGS now starts with a "-". * tests/test_driver.pl: Add defaults for global variables. (get_osname): Preserve $osname if it's set from $^O * tests/scripts/features/archive: Set the default arflags. If "U" is available add it to the end of the flags.
This commit is contained in:
parent
9755d4c09c
commit
88ceff8b2f
2 changed files with 12 additions and 10 deletions
|
@ -35,16 +35,17 @@ my $ar = get_config('AR') || 'ar';
|
||||||
my $redir = '2>&1';
|
my $redir = '2>&1';
|
||||||
$redir = '' if $osname eq 'VMS';
|
$redir = '' if $osname eq 'VMS';
|
||||||
|
|
||||||
my $arflags = 'rv';
|
# This is the value from src/default.c
|
||||||
|
my $arflags = $ostype eq 'aix' ? '-Xany -rv' : '-rv';
|
||||||
my $arvar = "AR=$ar";
|
my $arvar = "AR=$ar";
|
||||||
|
|
||||||
# Newer versions of binutils can be built with --enable-deterministic-archives
|
# Newer versions of binutils can be built with --enable-deterministic-archives
|
||||||
# which forces all timestamps (among other things) to always be 0, defeating
|
# which forces all timestamps (among other things) to always be 0, defeating
|
||||||
# GNU make's archive support. See if ar supports the U option to disable it.
|
# GNU make's archive support. See if ar supports the U option to disable it.
|
||||||
unlink('libxx.a');
|
unlink('libxx.a');
|
||||||
$_ = `$ar U$arflags libxx.a a1.o $redir`;
|
$_ = `$ar ${arflags}U libxx.a a1.o $redir`;
|
||||||
if ($? == 0) {
|
if ($? == 0) {
|
||||||
$arflags = 'Urv';
|
$arflags = "${arflags}U";
|
||||||
$arvar = "$arvar ARFLAGS=$arflags";
|
$arvar = "$arvar ARFLAGS=$arflags";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,10 @@ $tests_run = 0;
|
||||||
# The number of tests in this category that have passed
|
# The number of tests in this category that have passed
|
||||||
$tests_passed = 0;
|
$tests_passed = 0;
|
||||||
|
|
||||||
|
$port_type = undef;
|
||||||
|
$osname = undef;
|
||||||
|
$vos = undef;
|
||||||
|
$pathsep = undef;
|
||||||
|
|
||||||
# Yeesh. This whole test environment is such a hack!
|
# Yeesh. This whole test environment is such a hack!
|
||||||
$test_passed = 1;
|
$test_passed = 1;
|
||||||
|
@ -331,6 +335,8 @@ sub get_osname
|
||||||
{
|
{
|
||||||
# Set up an initial value. In perl5 we can do it the easy way.
|
# Set up an initial value. In perl5 we can do it the easy way.
|
||||||
$osname = defined($^O) ? $^O : '';
|
$osname = defined($^O) ? $^O : '';
|
||||||
|
$vos = 0;
|
||||||
|
$pathsep = "/";
|
||||||
|
|
||||||
# find the type of the port. We do this up front to have a single
|
# find the type of the port. We do this up front to have a single
|
||||||
# point of change if it needs to be tweaked.
|
# point of change if it needs to be tweaked.
|
||||||
|
@ -366,10 +372,7 @@ sub get_osname
|
||||||
$port_type = 'UNIX';
|
$port_type = 'UNIX';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($osname eq 'VMS')
|
if ($osname eq 'VMS') {
|
||||||
{
|
|
||||||
$vos = 0;
|
|
||||||
$pathsep = "/";
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,7 +402,7 @@ sub get_osname
|
||||||
$vos = 1;
|
$vos = 1;
|
||||||
$pathsep = ">";
|
$pathsep = ">";
|
||||||
|
|
||||||
} else {
|
} elsif ($osname eq '') {
|
||||||
# the following is regrettably gnarly, but it seems to be the only way
|
# the following is regrettably gnarly, but it seems to be the only way
|
||||||
# to not get ugly error messages if uname can't be found.
|
# to not get ugly error messages if uname can't be found.
|
||||||
# Hmmm, BSD/OS 2.0's uname -a is excessively verbose. Let's try it
|
# Hmmm, BSD/OS 2.0's uname -a is excessively verbose. Let's try it
|
||||||
|
@ -414,8 +417,6 @@ sub get_osname
|
||||||
$osname = "(something posixy)";
|
$osname = "(something posixy)";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$vos = 0;
|
|
||||||
$pathsep = "/";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $short_filenames) {
|
if (! $short_filenames) {
|
||||||
|
|
Loading…
Reference in a new issue