The output now varies based on which of three different situations is detected:
1. If config.guess’s embedded timestamp is more than three years old, we instruct the user to update it from Savannah, and we don’t say anything else. 2. If we tried to use a C compiler but none was found (not just in the mips:linux case), we tell the user to try installing a C compiler, and we don’t say anything else. 3. Only if neither of those is true will we print detailed diagnostics and suggest contacting [email protected] for assistance. We still recommend checking for a newer config.guess first. The diagnostic dump for this case is slightly revised: it includes the current date as well as the config.guess timestamp, and I added a report on whether ‘uname’ and four different common names for a C compiler were available from $PATH. It should also hopefully be clearer why uname -m/-r/-s/-v is being printed twice. This won’t help the people who try to build tarballs from 2000 on a CPU architecture that didn’t exist in 2000, but I hope it will help the people twenty years from now who try to build tarballs from 2025 on a CPU architecture that didn’t exist in 2025. --- config.guess | 112 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 76 insertions(+), 36 deletions(-) diff --git a/config.guess b/config.guess index 0ec3a83..d28bbe4 100755 --- a/config.guess +++ b/config.guess @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2024-04-04' +timestamp='2024-05-12' # 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 @@ -1738,47 +1738,73 @@ $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } -echo "$0: unable to guess system type" >&2 +echo >&2 "$0: unable to guess system type -case $UNAME_MACHINE:$UNAME_SYSTEM in - mips:Linux | mips64:Linux) - # If we got here on MIPS GNU/Linux, output extra information. - cat >&2 <<EOF - -NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize -the system type. Please install a C compiler and try again. -EOF - ;; -esac - -cat >&2 <<EOF - -This script (version $timestamp), has failed to recognize the -operating system you are using. If your script is old, overwrite *all* -copies of config.guess and config.sub with the latest versions from: +config.guess has failed to recognize the operating system you are using." +where_to_get_new_scripts=" https://git.savannah.gnu.org/cgit/config.git/plain/config.guess -and https://git.savannah.gnu.org/cgit/config.git/plain/config.sub -EOF +" +# Is this script more than a few years old? +today=`date +%Y-%m-%d` our_year=`echo $timestamp | sed 's,-.*,,'` -thisyear=`date +%Y` -# shellcheck disable=SC2003 -script_age=`expr "$thisyear" - "$our_year"` -if test "$script_age" -lt 3 ; then - cat >&2 <<EOF +thisyear=`echo $today | sed 's,-.*,,'` -If $0 has already been updated, send the following data and any -information you think might be pertinent to [email protected] to -provide the necessary information to handle your system. +script_age=`expr "$thisyear" - "$our_year"` +if test "$script_age" -gt 3 ; then + cat >&2 <<EOF +This was probably because it has not been updated since $timestamp. +(Today is $today, $script_age years later.) + +Please find *all* copies of config.guess and config.sub within +the source tree of the program you were trying to build, and replace +them with the latest versions, found at these URLs: +$where_to_get_new_scripts +Then try to build your program again. + +EOF + exit 1 +fi + +# Did we try to run a C compiler and fail? +if [ -n "$tmp" ] && [ "$CC_FOR_BUILD" = no_compiler_found ]; then + cat >&2 <<\EOF +This may have been because it could not find a C compiler. +Please install a C compiler, ensure it is accessible via $PATH, and try again. + +If you got this message while trying to build a C compiler, you might +not have realized that most C compilers are written in compiled +languages, therefore you must already have a compiler for the +appropriate language to build them! You should be able to get a +pre-built compiler for *some* language from the same place you got the +operating system. + +EOF + exit 1 +fi + +# Might be a genuinely unrecognized system. +cat >&2 <<EOF +Before you do anything else, find *all* copies of config.guess and +config.sub within the source tree of the program you were trying to +build, and replace them with the latest versions, found at these URLs: +$where_to_get_new_scripts +Then try to build your program again. + +If you already did that and it didn't help, please contact +<[email protected]> for assistance. Please include all of +the following diagnostic information, plus anything else you think +might be relevant. config.guess timestamp = $timestamp +attempted build date = $today -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` +UNAME_MACHINE = $UNAME_MACHINE +UNAME_RELEASE = $UNAME_RELEASE +UNAME_SYSTEM = $UNAME_SYSTEM +UNAME_VERSION = $UNAME_VERSION /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` @@ -1790,13 +1816,27 @@ hostinfo = `(hostinfo) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -UNAME_MACHINE = "$UNAME_MACHINE" -UNAME_RELEASE = "$UNAME_RELEASE" -UNAME_SYSTEM = "$UNAME_SYSTEM" -UNAME_VERSION = "$UNAME_VERSION" +command -v cc = `(command -v cc) 2>/dev/null || echo not found` +command -v gcc = `(command -v gcc) 2>/dev/null || echo not found` +command -v c89 = `(command -v c89) 2>/dev/null || echo not found` +command -v c99 = `(command -v c99) 2>/dev/null || echo not found` +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" +else + echo "command -v uname = $command_uname" + cat <<EOF + +uname -m = `"$command_uname" -m` +uname -r = `"$command_uname" -r` +uname -s = `"$command_uname" -s` +uname -v = `"$command_uname" -v` EOF fi + exit 1 # Local variables: -- 2.43.2
