Skip to content

QVAC-25104 fix: rebuild the six npm-runtime addons against fabric 0.16.1 - #4574

Merged
jpgaribotti merged 2 commits into
tetherto:mainfrom
jpgaribotti:fix/qvac-25104-addons-0.16.1
Sep 18, 2026
Merged

jpgaribotti merged 2 commits into
tetherto:mainfrom
jpgaribotti:fix/qvac-25104-addons-0.16.1

Conversation

@jpgaribotti

Copy link
Copy Markdown
Contributor

Consumer half of #4566, which landed and shipped as @qvac/fabric 0.16.1. The six npm_runtime addons still floor at ^0.16.0, so Android prebuilds linked against that release keep the versioned imports that fail to load.

🎯 What problem does this PR solve?

  • @qvac/fabric 0.16.0 named the ELF version node QVAC_FABRIC_ABI_1 on every ELF target. An Android consumer built against it records a DT_VERNEED that bionic cannot satisfy: the addon fails dlopen and bare reports ADDON_NOT_FOUND: Cannot find addon '.' from binding.js before any model work.
  • 0.16.1 (QVAC-25104 fix: name fabric's ELF version node only where it owns the runtime #4566) names the node only where fabric owns the C++ runtime (Linux embedding libc++). Android keeps the anonymous node it had through 0.15.0. Linux binaries built against 0.16.0 are unaffected; Android binaries are not — they keep the versioned imports until rebuilt.
  • A caret on a 0.x version locks the minor, so ^0.16.0 still admits 0.16.0. The floor has to move.

📝 How does it solve it?

@qvac/fabric ^0.16.0^0.16.1 for all six npm_runtime consumers in .github/fabric-consumers.json, each with a patch bump and a changelog entry:

package version
classification-ggml 0.26.2 → 0.26.3
vla-ggml 0.27.2 → 0.27.3
translation-nmtcpp 0.16.2 → 0.16.3
model-fit 0.12.1 → 0.12.2
ocr-ggml 0.24.2 → 0.24.3
embed-llamacpp 0.41.2 → 0.41.3

Patch rather than minor so @qvac/sdk / @qvac/inference, already on these 0.x lines (^0.26.1, ^0.27.1, ^0.16.1, ^0.12.0, ^0.24.1, ^0.41.1), pick the rebuilt Android modules up without a range change of their own. model-fit's [Unreleased] fit-stub entry stays where it is.

llm-llamacpp is not in this roster — it still builds qvac-fabric from vcpkg rather than the npm runtime.

pnpm-lock.yaml is regenerated in the same commit, which CONTRIBUTING.md requires. The six @qvac/fabric entries stay link:../fabric. Regenerating also relinks workspace @qvac/asr-ggml@0.5.3 (same version previously resolved from npm); pnpm install --frozen-lockfile --lockfile-only exits zero.

🧪 How was it tested?

  • Confirmed @qvac/fabric@0.16.1 resolves from npm, and each consumer's origin/main version matches npm latest (translation-nmtcpp is the known renumbered line: npm latest is 10.0.0, main is 0.16.2).
  • pnpm install --frozen-lockfile --lockfile-only under the pinned pnpm 11.17.0 exits zero.
  • The Android load failure and the 0.16.1 link change were verified on QVAC-25104 fix: name fabric's ELF version node only where it owns the runtime #4566. This PR is the rebuild: apply prebuilds (and the desktop/C++ addon labels after fork-ci approval) so CI links the six consumers against 0.16.1.

@qvac/fabric 0.16.1 is published. Android consumers built against 0.16.0
fail to load because that release named the ELF version node on every
ELF target; 0.16.1 keeps the node anonymous on Android. The six
npm_runtime packages move ^0.16.0 -> ^0.16.1 and take a patch bump so
they rebuild against it. A caret on 0.x still admits 0.16.0, so the
floor has to move.
@github-actions

github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Review Status

Current Status: ✅ APPROVED
Approvals so far: Team Lead: 1, Member: 1

@jpgaribotti
jpgaribotti merged commit ba6657a into tetherto:main Sep 18, 2026
196 of 198 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants