|
From: | Philip McGrath |
Subject: | [bug#49946] [PATCH 08/31] gnu: node: Patch /usr/bin/env in node-gyp. |
Date: | Wed, 29 Sep 2021 00:45:56 -0400 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 |
On 9/27/21 6:11 AM, Maxime Devos wrote:
Philip McGrath schreef op zo 26-09-2021 om 18:02 [-0400]:Looking at `gnu-build-system`, it seems that the `'patch-shebangs` phase only operates on files installed in the "/bin" and "/sbin" subdirectories of the package's outputs. That restriction doesn't make sense to me in general: for instance, what about "/libexec"?'libexec' is included on core-updates{,-frozen}. I believe the idea of the restriction is to avoid patching too much. E.g., "autoconf" has a file share/autoconf/build-aux/config.guess with a #!/bin/sh shebang. It should not be patched, otherwise tarballs created with "make dist" would include a store path and hence be Guix-specific and architecture-specific.
That makes some sense. I would have thought checking that the file is executable would catch most such cases, but, if this works for `gnu-build-system`, great.
As I look at potentially making a patch, another thing that seems odd is that `(gnu packages node)` exports node@10.24.0 as `node` (via `define-public`), but node@14.16.0 as `node-lts`. Normally, if I saw that there were packages `node` and `node-lts`, I'd assume that `node-lts` was *older*. It's especially confusing because, at the command line, `guix install node` refers to what in Scheme you have to write as `node-lts`.
I wonder if it was a mistake, and should have used `define` rather than `define-public`, since this code:
``` ;; This should be the latest version of node that still builds without ;; depending on llhttp. (define-public node-bootstrap (hidden-package node)) ``` seems to be trying to hide the older node.It looks like `node` has only a few dependents, and it seems like at least several of them only used it because it had the more obvious name. The `node-build-system` uses `node-lts` as the `(default-node)`.
Would it make sense to change the names? Or just to remove the `define-public` of `node`?
-Philip
[Prev in Thread] | Current Thread | [Next in Thread] |