Subject: Re: [bug#57050] [PATCH 3/6] gnu: chez-scheme: Fix use of "/bin/sh".

From: Maxime Devos <[email-masked]>
Date: Wed, 10 Aug 2022 13:46:39 +0200

On 09-08-2022 23:58, Philip McGrath wrote:

> On Tuesday, August 9, 2022 5:38:56 PM EDT ( wrote:
>> On Tue Aug 9, 2022 at 10:24 PM BST, Maxime Devos wrote:
>>> In the glibc headers, there's some (POSIX?) standard macro that points
>>> at "/gnu/store/.../bin/sh" (I don't recall the name), any reason we
>>> aren't using that macro?  That would be Guix-independent. I'm not sure
>>> if a /gnu/store/... prefix is included, but if not, maybe we could try
>>> overriding it with -D...="/gnu/store/...", or failing that, add a
>>> post-unpack substitute* replacing [the macro name] ->
>>> "/gnu/store/.../bin/sh".
>> I believe you might be referring to <paths.h>, which defines _PATH_BSHELL.
>>
>> It's not standard C <https://en.cppreference.com/w/c/header> nor POSIX
>> <https://pubs.opengroup.org/onlinepubs/9699919799/idx/head.html> though.
>>
>>      -- (

Looking at the "paths.h" header, it appears to be a BSDism. Not really standard but still better than a Guix-ism.

> I'd love to be wrong, but I also can't find such a macro. In the glibc source
> tree, "stdlib/system.c" defines a stub implementation that always fails with
> ENOSYS, and "sysdeps/posix/system.c" contains:
>
>      #define	SHELL_PATH	"/bin/sh"	/* Path of the shell.  */
>      #define	SHELL_NAME	"sh"	/* Name to give it.  */
>
> Concretely, I think Guix's glibc currently uses /bin/sh dynamically: in my
> Chez example above, if you replace `process` with `system` (which uses libc's
> `system`), the result is always "/bin/sh\n".

If so, that's a bug.  I do not know what result you are referring to.

Anyway, the Guix package definition of glibc substitutes _PATH_BSHELL 
and SHELL_PATH, so unless there's a bug, it doesn't depend on /bin/sh.

Greetings,
Maxime.