Sitelet https://github.com/nodejs/node/pull/65545
Skip to content

test: set type=none on IBM i for empty source - #65545

Open
abmusse wants to merge 1 commit into
nodejs:mainfrom
abmusse:ibmi-clang
Open

test: set type=none on IBM i for empty source#65545
abmusse wants to merge 1 commit into
nodejs:mainfrom
abmusse:ibmi-clang

Conversation

@abmusse

@abmusse abmusse commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

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

@abmusse
abmusse requested review from richardlau and sxa August 25, 2026 14:06
@abmusse abmusse self-assigned this Aug 25, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/gyp

@nodejs-github-bot nodejs-github-bot added addons Issues and PRs related to native addons. needs-ci PRs that need a full CI run. test Issues and PRs related to the tests. labels Aug 25, 2026
@abmusse abmusse added the ibm i Issues and PRs related to the IBM i platform. label Aug 25, 2026
@abmusse abmusse changed the title test/addons: set type=none on IBM i for ... test: set type=none on IBM i for empty source Aug 25, 2026
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>
@codecov

codecov Bot commented Aug 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.14%. Comparing base (d996610) to head (9b112f3).
⚠️ Report is 223 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #65545      +/-   ##
==========================================
- Coverage   90.30%   90.14%   -0.17%     
==========================================
  Files         751      751              
  Lines      249116   253635    +4519     
  Branches    47043    47787     +744     
==========================================
+ Hits       224974   228636    +3662     
- Misses      15509    16263     +754     
- Partials     8633     8736     +103     

see 182 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sxa sxa added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

addons Issues and PRs related to native addons. ibm i Issues and PRs related to the IBM i platform. needs-ci PRs that need a full CI run. request-ci Add this label to start a Jenkins CI on a PR. test Issues and PRs related to the tests.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants