Hello! Jelle Licht <jli...@fsfe.org> skribis:
> It seems that the patch-shebang functionality does not deal gracefully > with symlinks: it just overwrites them! > > After struggling somewhat with getting the recently packaged node 6.0.0 > to behave, I found out that `patch-shebang' in (guix build > gnu-build-system) does not work properly on symlinks. There’s ‘patch-shebangs’ (plural) in this file, but it explicitly touches only regular files (see ‘list-of-files’). However, ‘patch-source-shebangs’ indeed overwrites symlinks. Is it the one that’s causing problems? > To illustrate, in this specific case, there was an executable > script included with the node tarball, namely > `lib/node-modules/npm/bin/npm-cli.js' with an env-based shebang: > `/usr/bin/env node'. > > As the `node' executable will only be available after the `install' > phase of the build system, it is not patched before hand. During the > `install' phase, a symlink is created from `bin/npm' to > `lib/node-modules/npm/bin/npm-cli.js' (in the store output directory > this time, of course). Then the `patch-shebangs' phase finds this > symlink and proceeds to patch it. Instead of transparently following the > symlink and patching the `npm-cli.js' script, the `npm' symlink is > overwritten with a shebang-patched copy of `npm-cli.js'. I don’t think ‘patch-shebangs’ is to blame; could it be ‘patch-source-shebangs’? Thanks! Ludo’.