Stefan wrote:
Hi Jacob!

the dejagnu(1) launcher now first walks the PATH returned by `getconf PATH` (and then the user's $PATH) for an "sh" in search of a POSIX shell.

Does this also fix your problem?

Kind of. The getconf tool is missing in Guix, not only during the bootstrapping I'm trying. Actually it is part of glibc, but the glibc tools are usually not in PATH. If getconf is missing, the dejagnu script prints an annoying error message, which can be ignored:

# LANG=C_LANG dejagnu --version
dejagnu-1.6.3-checkout/dejagnu: line 76: getconf: command not found
dejagnu auxiliary launcher (DejaGnu) 1.6.4-git

Maybe change that line to suppress the error message:

SysPATH=`getconf PATH 2> /dev/null`

The change from the traditional GNU assumption that /bin/sh is a Bourne shell to walking the PATH in search of POSIX sh is justified as POSIX conformance; POSIX says that getconf(1) exists, so I will call this either a system configuration issue or a bug in Guix. The error will /not/ be suppressed---it could be the key to recognizing an issue if the tool is run on a non-POSIX or pre-POSIX system. (In which case, there might actually /not/ be a POSIX awk or sh anywhere to be found.)

However, the path returned from getconf—if made available—is /bin:/usr/bin. But in a Guix build environment, for example when building and testing binutils, there is no /bin available and neither a /usr. So even if the getconf is provided during build, its result is a lie. But that's not the problem of dejagnu at all.

The fact that the GNU system does not strictly follow POSIX on this is the reason that the launcher also searches the user's PATH. (I also seem to remember an off-hand remark somewhere that "/usr" is supposed to be a symlink back to "/" in the GNU system.) According to POSIX, we should be able to just do "PATH=`getconf PATH`" and forget about it, with all system utilities now available, but I already know that will not be reliable on the GNU system. POSIX specifies that getconf(1) returns information according to the execution environment; perhaps glibc should be able to get at least some configuration strings from a file /etc/conf.posix listing system variables and their values?


-- Jacob


Reply via email to