hyper-cmd-utils: fix runtime w/ glibc-2.42

Same issue as with hypershell, `sodium-native.node` wrongly requests an
executable stack and is dlopened into a process with a non-executable
stack.

No smoke-test as install-check here since this beautiful piece of
software returns a non-zero exit code on `--help` 🤡
This commit is contained in:
Maximilian Bosch
2026-01-03 20:39:41 +01:00
parent 26bd98ad1d
commit f921dc5522
@@ -3,6 +3,7 @@
lib,
fetchurl,
fetchFromGitHub,
patchelfUnstable,
}:
buildNpmPackage {
@@ -30,6 +31,23 @@ buildNpmPackage {
})
];
nativeBuildInputs = [
patchelfUnstable # --clear-execstack is only available on 0.18
];
postInstall = ''
# glibc 2.41+ refuses to make the stack executable if it isn't executable,
# but a library loaded via `dlopen()` mandates it.
# According to https://github.com/holepunchto/sodium-native/issues/214
# this isn't necessary in this case.
while IFS= read -r -d ''' file; do
# Skip PEs with the same name
if patchelf --print-rpath "$file" &>/dev/null; then
patchelf "$file" --clear-execstack
fi
done < <(find $out/lib/node_modules -name 'sodium-native.node' -print0)
'';
meta = {
description = "HyperCmd Utils";
homepage = "https://github.com/holepunchto/hyper-cmd-utils";