all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Philip McGrath <philip@philipmcgrath.com>
To: 57050@debbugs.gnu.org,
	Liliana Marie Prikler <liliana.prikler@ist.tugraz.at>
Subject: [bug#57050] [PATCH 3/6] gnu: chez-scheme: Fix use of "/bin/sh".
Date: Tue, 09 Aug 2022 16:25:54 -0400	[thread overview]
Message-ID: <10947119.NyiUUSuA9g@avalon> (raw)
In-Reply-To: <77d198cb202f2fa77ec8b54bc26a3d2e3836792c.camel@ist.tugraz.at>

[-- Attachment #1: Type: text/plain, Size: 6464 bytes --]

Hi,

On Monday, August 8, 2022 4:53:42 AM EDT Liliana Marie Prikler wrote:
> Am Montag, dem 08.08.2022 um 02:10 -0400 schrieb Philip McGrath:
> > +diff --git a/c/prim5.c b/c/prim5.c
> > +index 5a07893..926d68d 100644
> > +--- a/c/prim5.c
> > ++++ b/c/prim5.c
> > +@@ -746,6 +746,22 @@ static ptr s_process(char *s, IBOOL stderrp) {
> > +
> > +     INT tofds[2], fromfds[2], errfds[2];
> > +     struct sigaction act, oint_act;
> > ++    /* BEGIN PATCH for Guix */
> > ++#if defined(GUIX_RKTIO_BIN_SH)
> > ++# define GUIX_AS_a_STR_HELPER(x) #x
> > ++# define GUIX_AS_a_STR(x) GUIX_AS_a_STR_HELPER(x)
> > ++    /* A level of indirection makes `#` work as needed: */
> > ++    struct stat guix_stat_buf;
> > ++    char *guix_sh =
> > ++      (0 == stat(GUIX_AS_a_STR(GUIX_RKTIO_BIN_SH), &guix_stat_buf))
> > ++      ? GUIX_AS_a_STR(GUIX_RKTIO_BIN_SH)
> > ++      : "/bin/sh";
> > ++# undef GUIX_AS_a_STR
> > ++# undef GUIX_AS_a_STR_HELPER
> > ++#else /* GUIX_RKTIO_BIN_SH */
> > ++    char *guix_sh = "/bin/sh";
> > ++#endif
> > ++    /* END PATCH for Guix */
> 
> /* BEGIN PATCH for Guix */ and /* END PATCH for Guix */ is in my humble
> opinion superfluous (though apparently also present in the already
> exsting patch, whose author might disagree).

My goal here originally was making it clear in `guix build --source` exactly 
what we'd changed from upstream. (That's less relevant for the patches with 
"backport" in the name, which have all been merged upstream.) It certainly is 
debatable, given that "guix" is mentioned in the variable/macro names, but, 
given that it's currently there, I'm not inclined to change the status quo.

> Also, I think this could easily be submitted upstream if you named it
> RKTIO_SHELL and rktio_shell respectively, with the default to
> "/bin/sh".  Then, we'd simply have to -DRKTIO_SHELL=/path/to/bin/sh in
> our #:make-flags.
> 

I'm not strongly opposed to sending these patches upstream. The main reason I 
haven't, and also the reason that, were I a Racket committer (which I'm not), 
I'd be slightly hesitant to merge them, is that I can't think of a 
circumstance other than Guix for which these patches would be useful: even Nix 
apparently provides "/bin/sh" and "/bin/env" in build containers.

If the patches are indeed specific to Guix, they haven't been a burden to 
maintain—this is the only time they've been changed at all—and keeping them 
ourselves gives us maximum flexibility to change them if we do want to for any 
reason.

In any case, even if we do upstream them, we'd still need the patches until 
8.7.

> 
> As for absorbing racket-specific patches into chez-scheme itself, I'm
> not too sure if I agree with that approach.  Maybe a different prefix
> rather than RKTIO should be used here – one that fits chez.
> 

I can understand the hesitation, but I think on balance these are not "Racket-
specific patches". First, just in case this wasn't clear, the issue affects both 
variants of Chez Scheme: see the end of this email for an example. More 
generally, any programming language that provides a way to run shell commands 
will need to deal with this issue: that includes libc's `system` function (I 
haven't looked at what we do there), and it also came up with SML/NJ: https://
lists.gnu.org/archive/html/help-guix/2021-11/msg00036.html

For the packages that are developed in the main Racket Git repository, I would 
be loathe to use more than one preprocessor macro for this purpose. While at 
the moment it works nicely for us to control all of the intermediate build 
steps explicitly as Guix packages, many build modes handle some of those steps 
automatically, and it would be very unpleasant to have to configure with three 
different flags, potentially in both CPPFLAGS and CPPFLAGS_FOR_BUILD.

The question, then, comes down to upstream Chez Scheme, and to me the benefits 
of using the same macro for these two very closely related projects far 
outweighs the downside. (For one metric of their interrelationship, over 10% 
of the commits to upstream Chez since it became free software in 2016 have 
come from Racket contributors—though this metric badly undercounts the c. 
375,000 lines of code developed by Dybvig et al. since 1984.)

I guess another possibility would be to call the macro something like 
GUIX_BIN_SH. That would make sense if we intended to adopt this approach more 
broadly, as I suggested in the email linked above about SML/NJ, but I think 
we'd need some consensus in that case to reserve  a concise name that wouldn't 
conflict with other uses in Guix.

-Philip

--8<---------------cut here---------------start------------->8---
philip@avalon:~$ guix shell --container chez-scheme -- scheme
Chez Scheme Version 9.5.8
Copyright 1984-2022 Cisco Systems, Inc.

> (get-string-all (car (process "echo $BASH")))
"/bin/sh\n"
> 
philip@avalon:~$ guix shell --container chez-scheme-for-racket -- scheme
Chez Scheme Version 9.5.7.6
Copyright 1984-2021 Cisco Systems, Inc.

> (get-string-all (car (process "echo $BASH")))
"/bin/sh\n"
> 
philip@avalon:~$
philip@avalon:~$ guix time-machine --url=https://gitlab.com/philip1/guix-patches --commit=5e5e8f491c7cbee3ef7a21437a52675dd47d186e --disable-
authentication -- shell --container chez-scheme -- scheme
Updating channel 'guix' from Git repository at 'https://gitlab.com/philip1/
guix-patches'...
guix time-machine: warning: channel authentication disabled
Computing Guix derivation for 'x86_64-linux'... -
Chez Scheme Version 9.5.8
Copyright 1984-2022 Cisco Systems, Inc.

> (get-string-all (car (process "echo $BASH")))
"/gnu/store/chfwin3a4qp1znnpsjbmydr2jbzk0d6y-bash-minimal-5.1.8/bin/sh\n"
> 
philip@avalon:~$ guix time-machine --url=https://gitlab.com/philip1/guix-patches --commit=5e5e8f491c7cbee3ef7a21437a52675dd47d186e --disable-
authentication -- shell --container chez-scheme-for-racket -- scheme
Updating channel 'guix' from Git repository at 'https://gitlab.com/philip1/
guix-patches'...
guix time-machine: warning: channel authentication disabled
Computing Guix derivation for 'x86_64-linux'... -
Chez Scheme Version 9.5.7.6
Copyright 1984-2021 Cisco Systems, Inc.

> (get-string-all (car (process "echo $BASH")))
"/gnu/store/chfwin3a4qp1znnpsjbmydr2jbzk0d6y-bash-minimal-5.1.8/bin/sh\n"
> 
--8<---------------cut here---------------end--------------->8---

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2022-08-09 20:27 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-08  6:06 [bug#57050] [PATCH 0/6] gnu: Update Racket to 8.6. Add Zuo Philip McGrath
2022-08-08  6:10 ` [bug#57050] [PATCH 1/6] gnu: stex: Update to 1.2.2-2.afa6075 Philip McGrath
2022-08-08  6:10 ` [bug#57050] [PATCH 2/6] gnu: stex: Fix read-only gifs and math directories Philip McGrath
2022-08-08  6:10 ` [bug#57050] [PATCH 3/6] gnu: chez-scheme: Fix use of "/bin/sh" Philip McGrath
2022-08-08  8:53   ` Liliana Marie Prikler
2022-08-09 20:25     ` Philip McGrath [this message]
2022-08-09 21:24       ` Maxime Devos
2022-08-09 21:38         ` ( via Guix-patches via
2022-08-09 21:58           ` Philip McGrath
2022-08-09 22:09             ` ( via Guix-patches via
2022-08-10 11:46             ` Maxime Devos
2022-08-08  6:10 ` [bug#57050] [PATCH 4/6] gnu: Update Racket to 8.6. Add Zuo Philip McGrath
2022-08-08  9:01   ` Liliana Marie Prikler
2022-08-09 20:56     ` Philip McGrath
2022-08-10  7:34       ` Liliana Marie Prikler
2022-08-08  6:10 ` [bug#57050] [PATCH 5/6] gnu: racket: Use Racket CS on all systems Philip McGrath
2022-08-08  9:10   ` Liliana Marie Prikler
2022-08-08  6:10 ` [bug#57050] [PATCH 6/6] gnu: chez-scheme-for-racket: Suport " Philip McGrath
2022-08-08  9:15   ` Liliana Marie Prikler
2022-08-10 15:30 ` [bug#57050] [PATCH 0/6] gnu: Update Racket to 8.6. Add Zuo Thiago Jung Bauermann via Guix-patches via
2022-08-11  4:00   ` Philip McGrath
2022-08-11 11:08     ` [bug#57050] [PATCH v2 00/13] " Philip McGrath
2022-08-11 11:08       ` [bug#57050] [PATCH v2 01/13] gnu: stex: Update to 1.2.2-2.afa6075 Philip McGrath
2022-08-11 11:08       ` [bug#57050] [PATCH v2 02/13] gnu: stex: Fix read-only gifs and math directories Philip McGrath
2022-08-11 11:13         ` Liliana Marie Prikler
2022-08-11 11:08       ` [bug#57050] [PATCH v2 03/13] gnu: chez-scheme: Fix use of "/bin/sh" Philip McGrath
2022-08-11 11:08       ` [bug#57050] [PATCH v2 04/13] gnu: Add Zuo Philip McGrath
2022-08-11 11:31         ` Liliana Marie Prikler
2022-08-11 14:00           ` Philip McGrath
2022-08-11 15:34             ` Liliana Marie Prikler
2022-08-11 23:32               ` Philip McGrath
2022-08-16 14:47             ` Maxime Devos
2022-08-23  1:40               ` Philip McGrath
2022-08-23  9:11                 ` Maxime Devos
2022-08-23 23:24                   ` Philip McGrath
2022-08-23  9:20                 ` Maxime Devos
2022-08-24  0:27                   ` Philip McGrath
2022-08-24  5:42                     ` Liliana Marie Prikler
2022-08-24  5:47                       ` Philip McGrath
2022-08-25  8:54                     ` [bug#57050] [PATCH v3 00/14] gnu: Update Racket to 8.6. " Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 01/14] gnu: stex: Update to 1.2.2-2.afa6075 Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 02/14] gnu: stex: Fix read-only gifs and math directories Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 03/14] etc: teams: Add racket team Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 04/14] etc: teams: Add entry for Philip McGrath Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 05/14] gnu: racket: Adjust patch for "/bin/sh" in rktio Philip McGrath
2022-08-25  9:09                         ` Liliana Marie Prikler
2022-08-25 19:16                           ` Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 06/14] gnu: chez-scheme: Fix use of "/bin/sh" Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 07/14] gnu: Add Zuo Philip McGrath
2022-08-25  9:12                         ` Liliana Marie Prikler
2022-08-25 10:30                         ` Efraim Flashner
2022-08-25 20:04                           ` Philip McGrath
2022-08-26 12:01                             ` Liliana Marie Prikler
2022-08-27 18:08                               ` Philip McGrath
2022-08-27 18:58                                 ` Liliana Marie Prikler
2022-08-27 19:54                                   ` Philip McGrath
2022-08-27 21:18                                     ` Liliana Marie Prikler
2022-08-27 21:28                                       ` Philip McGrath
2022-08-27 22:26                                         ` Liliana Marie Prikler
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 08/14] gnu: racket: Update to 8.6 Philip McGrath
2022-08-25  9:14                         ` Liliana Marie Prikler
2022-08-25 10:39                         ` Efraim Flashner
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 09/14] gnu: chez-scheme: Make bootfiles regular inputs Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 10/14] gnu: chez-scheme-for-racket: Support cross-compilation Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 11/14] gnu: racket: Support cross-compiling the VM packages Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 12/14] gnu: chez-scheme-for-racket: Suport all systems Philip McGrath
2022-08-25  9:24                         ` Liliana Marie Prikler
2022-08-25 10:50                           ` Efraim Flashner
2022-08-25 20:17                             ` Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 13/14] gnu: racket-vm-bc: Add workaround for ppc64le Philip McGrath
2022-08-25  8:54                       ` [bug#57050] [PATCH v3 14/14] gnu: racket: Use Racket CS on all systems Philip McGrath
2022-08-25  9:17                         ` Liliana Marie Prikler
2022-08-26 21:15                       ` [bug#57050] [PATCH v3 00/14] gnu: Update Racket to 8.6. Add Zuo Thiago Jung Bauermann via Guix-patches via
2022-08-27 18:55                     ` [bug#57050] [PATCH v4 " Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 01/14] gnu: stex: Update to 1.2.2-2.afa6075 Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 02/14] gnu: stex: Fix read-only gifs and math directories Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 03/14] etc: teams: Add racket team Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 04/14] etc: teams: Add entry for Philip McGrath Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 05/14] gnu: racket: Adjust patch for "/bin/sh" in rktio Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 06/14] gnu: chez-scheme: Fix use of "/bin/sh" Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 07/14] gnu: Add Zuo Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 08/14] gnu: racket: Update to 8.6 Philip McGrath
2022-08-27 19:21                         ` Liliana Marie Prikler
2022-08-27 20:30                           ` Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 09/14] gnu: chez-scheme: Make bootfiles regular inputs Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 10/14] gnu: chez-scheme-for-racket: Support cross-compilation Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 11/14] gnu: racket: Support cross-compiling the VM packages Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 12/14] gnu: chez-scheme-for-racket: Support all systems Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 13/14] gnu: racket-vm-bc: Add workaround for ppc64le Philip McGrath
2022-08-27 18:55                       ` [bug#57050] [PATCH v4 14/14] gnu: racket: Use Racket CS on all systems Philip McGrath
2022-09-04 20:53                       ` bug#57050: [PATCH 0/6] gnu: Update Racket to 8.6. Add Zuo Ludovic Courtès
2022-08-11 11:08       ` [bug#57050] [PATCH v2 05/13] gnu: racket: Update to 8.6 Philip McGrath
2022-08-11 11:44         ` Liliana Marie Prikler
2022-08-11 22:40           ` Philip McGrath
2022-08-12  6:34             ` Liliana Marie Prikler
2022-08-22  8:41         ` Efraim Flashner
2022-08-22 18:56           ` Philip McGrath
2022-08-11 11:08       ` [bug#57050] [PATCH v2 06/13] gnu: chez-scheme: Bootfiles should not be native inputs Philip McGrath
2022-08-11 11:47         ` Liliana Marie Prikler
2022-08-11 22:45           ` Philip McGrath
2022-08-12  4:21             ` Liliana Marie Prikler
2022-08-11 11:08       ` [bug#57050] [PATCH v2 07/13] gnu: chez-scheme-for-racket: Support cross-compilation Philip McGrath
2022-08-11 11:56         ` Liliana Marie Prikler
2022-08-11 22:49           ` Philip McGrath
2022-08-11 11:08       ` [bug#57050] [PATCH v2 08/13] gnu: racket: Support cross-compiling the VM packages Philip McGrath
2022-08-11 11:58         ` Liliana Marie Prikler
2022-08-11 23:23           ` Philip McGrath
2022-08-11 11:08       ` [bug#57050] [PATCH v2 09/13] gnu: chez-scheme-for-racket: Suport all systems Philip McGrath
2022-08-11 12:02         ` Liliana Marie Prikler
2022-08-11 23:25           ` Philip McGrath
2022-08-11 11:08       ` [bug#57050] [PATCH v2 10/13] gnu: racket-vm-bc: Add workaround for ppc64le Philip McGrath
2022-08-11 11:08       ` [bug#57050] [PATCH v2 11/13] gnu: racket: Use Racket CS on all systems Philip McGrath
2022-08-11 12:03         ` Liliana Marie Prikler
2022-08-11 11:08       ` [bug#57050] [PATCH v2 12/13] etc: teams: Add racket team Philip McGrath
2022-08-11 12:11         ` Liliana Marie Prikler
2022-08-11 11:08       ` [bug#57050] [PATCH v2 13/13] etc: teams: Add entry for Philip McGrath Philip McGrath
2022-08-13 17:43       ` [bug#57050] [PATCH v2 00/13] gnu: Update Racket to 8.6. Add Zuo Thiago Jung Bauermann via Guix-patches via
2022-08-15  5:47       ` [bug#57050] [RFC PATCH] gnu: racket-vm-cs: Avoid 'configure' bug with '--enable-racket' Philip McGrath
2022-08-15  6:12         ` Philip McGrath
2022-08-15 19:54       ` [bug#57050] [RFC PATCH v2] gnu: racket: Backport fix for powerpc64le Philip McGrath
2022-08-19  0:51         ` Thiago Jung Bauermann via Guix-patches via
2022-08-19 10:10           ` Maxime Devos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=10947119.NyiUUSuA9g@avalon \
    --to=philip@philipmcgrath.com \
    --cc=57050@debbugs.gnu.org \
    --cc=liliana.prikler@ist.tugraz.at \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.