If we get to the bottom of the big switch in config.guess without having a guess, we try two things, in this order:
- Compiling and running a C program that knows about a bunch of really old systems that did not have a uname command. - A specific test for Apollo systems, which doesn’t require a C compiler, but does expect certain environment variables to be set. I *think* it is inappropriate to run the C program in any case where a uname command is available, but we are doing it unconditionally. This means, if you try to run config.guess on a system that *does* have uname, *doesn’t* have a C compiler, and is unrecognized because it’s too *new* for your copy of config.guess, the revised diagnostic mode from the previous patch will tell you to install a C compiler even though that won’t help. Address this by, first, moving the Apollo check above the C program and having it succeed only if the expected environment variables are in fact set, and second, compiling and running the C program only if all four of $UNAME_MACHINE, $UNAME_SYSTEM, $UNAME_RELEASE, $UNAME_VERSION are equal to “unknown”. Note that the test for unknown:unknown:unknown:unknown cannot be combined with the big switch because some cases of the big switch can fall through to this point without setting $GUESS. --- config.guess | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/config.guess b/config.guess index d28bbe4..41b8a45 100755 --- a/config.guess +++ b/config.guess @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2024-05-12' +timestamp='2024-05-13' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -1602,8 +1602,18 @@ if test "x$GUESS" != x; then fi # No uname command or uname output not recognized. -set_cc_for_build -cat > "$dummy.c" <<EOF + +# Apollos put the system type in the environment. +test -d /usr/apollo && + test x"$ISP" != x && + test x"$SYSTYPE" != x && + { echo "$ISP-apollo-$SYSTYPE"; exit; } + +# If there was no uname command, maybe the C compiler can help us. +if test x:"$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" = \ + x:unknown:unknown:unknown:unknown; then + set_cc_for_build + cat > "$dummy.c" <<EOF #include <stdio.h> #ifdef _SEQUENT_ #include <sys/types.h> @@ -1731,12 +1741,10 @@ main () return 1; } EOF - -$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && + SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. -test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } +fi # no uname echo >&2 "$0: unable to guess system type @@ -1825,6 +1833,7 @@ EOF command_uname=`(command -v uname) 2>/dev/null || echo not found` if [ x"$command_uname" = "xnot found" ]; then echo "command -v uname = not found" + echo else echo "command -v uname = $command_uname" cat <<EOF @@ -1833,6 +1842,7 @@ uname -m = `"$command_uname" -m` uname -r = `"$command_uname" -r` uname -s = `"$command_uname" -s` uname -v = `"$command_uname" -v` + EOF fi -- 2.43.2