build(gateway): skip fixupPhase to kill 'patchelf: wrong ELF type' noise

dontPatchELF only disabled the patchELF sub-phase; fixupPhase's
shrinkELF step still emits the same error on the prebuilt .node addons
and .o/.a object files in node_modules. Skip the entire fixupPhase
(dontFixup = true) for the gateway — node is the external interpreter
and .node addons are self-contained dlopen prebuilts, so Nix RPATH
patching/stripping is neither needed nor wanted.
This commit is contained in:
asepharyana
2026-08-15 22:20:56 +07:00
parent c04c410fad
commit 17a4fbd73d
+10 -8
View File
@@ -175,14 +175,16 @@ WRAPPER
# do NOT let stdenv run its own cmake configure phase on the source.
dontUseCmakeConfigure = true;
# The gateway bundles native node_modules (.node addons, plus .o/.a
# object files left in prebuilt dirs). stdenv's fixupPhase runs
# `patchELF` over $out and chokes on the non-ET_DYN ELF files,
# emitting hundreds of harmless "patchelf: wrong ELF type" lines.
# The real binary is node (external, already RPATH-fixed) and the
# .node addons are self-contained prebuilts loaded via dlopen, so
# Nix's RPATH patching is neither needed nor wanted here.
dontPatchELF = true;
# The gateway bundles native node_modules (.node addons plus .o/.a
# object files left in prebuilt dirs). stdenv's fixupPhase walks
# $out/node_modules and runs patchELF + shrinkELF over every ELF it
# finds, choking on the non-ET_DYN files (.o/.a) and the prebuilt
# .node addons — emitting hundreds of harmless "patchelf: wrong ELF
# type" lines per build. The real binary is node (external, already
# RPATH-fixed in its own derivation) and the .node addons are
# self-contained prebuilts loaded via dlopen, so Nix's fixup pass is
# neither needed nor wanted here. Skip it entirely.
dontFixup = true;
buildPhase = pnpmInstall + ''
echo "=== Building native voice deps ==="