From 9b112f3f974bcad41a1f2c923631344ea47c4d48 Mon Sep 17 00:00:00 2001 From: Abdirahim Musse <33973272+abmusse@users.noreply.github.com> Date: Wed, 19 Aug 2026 07:03:28 -0500 Subject: [PATCH] test: set type=none on IBM i for empty source addon targets. openssl-binding, openssl-get-ssl-ctx, openssl-providers, and zlib-binding all exclude their sources on IBM i because the platform ships OpenSSL and zlib as system libraries. The binding.gyp condition leaves the target with no sources but still of type 'loadable_module', which causes gyp to generate a full solink_module COPY rule in the generated Makefile. With gcc-12, the compiler exits 1 on empty input so gmake stops at the link step and build_addons.py skips the addon non fatally. With clang-21, the compiler exits 0 on empty input and writes no output file. The linker driver then runs llvm-nm internally as a post-link step to generate the .exp symbol export file, finds no output and aborts with: llvm-nm: error: a.out: No such file or directory See: https://ci.nodejs.org/job/node-test-commit-ibmi/nodes=ibmi74-ppc64/2438/console The fix is to declare the target as type 'none' when on IBM i. The gyp make generator produces only a touch-stamp rule for 'none' targets no solink_module, no COPY, no .node output is ever expected. build_addons.py sees exit 0 and run-ci continues. Test build with this fix: https://ci.nodejs.org/job/node-test-commit-ibmi/nodes=ibmi74-ppc64/2437/console Signed-off-by: Abdirahim Musse <33973272+abmusse@users.noreply.github.com> --- test/addons/openssl-binding/binding.gyp | 3 +++ test/addons/openssl-get-ssl-ctx/binding.gyp | 3 +++ test/addons/openssl-providers/binding.gyp | 3 +++ test/addons/zlib-binding/binding.gyp | 3 +++ 4 files changed, 12 insertions(+) diff --git a/test/addons/openssl-binding/binding.gyp b/test/addons/openssl-binding/binding.gyp index e1dc611d78ed..9d2f9bfd34fb 100644 --- a/test/addons/openssl-binding/binding.gyp +++ b/test/addons/openssl-binding/binding.gyp @@ -12,6 +12,9 @@ 'aix_variant_name': '