Skip to content

fix(ci): bundle CLI native libs in single-file publish and validate via packaged binary#365

Merged
Aaronontheweb merged 1 commit into
devfrom
fix/cli-publish-native-libs-ci
Mar 21, 2026
Merged

fix(ci): bundle CLI native libs in single-file publish and validate via packaged binary#365
Aaronontheweb merged 1 commit into
devfrom
fix/cli-publish-native-libs-ci

Conversation

@Aaronontheweb

Copy link
Copy Markdown
Collaborator

Summary

  • Added IncludeNativeLibrariesForSelfExtract=true to the CLI publish step in all three workflows (publish_release_binaries.yml, smoke_sandbox.yml, pr_validation.yml) — the daemon already had this flag but the CLI was missing it, causing libe_sqlite3.so to be excluded from the packaged archive and triggering a type initializer exception in netclaw doctor on installed binaries
  • Rewired the PR validation CLI smoke test to publish with full release flags, tar only the binary (exactly as the release pipeline does), extract to a clean directory, and run cli-smoke.sh from there — so the smoke test now faithfully catches packaging issues instead of testing via dotnet run

Root cause

a21a147 added IncludeNativeLibrariesForSelfExtract=true to the daemon publish but not the CLI. Without it, libe_sqlite3.so is left alongside the publish output rather than bundled in the single-file binary. Since the release archive only tars the netclaw executable, the native lib never ships. Users with leftover files from older non-single-file installations were masked from the issue until installed binaries diverged from the on-disk layout.

Test plan

  • pr_validation CI passes — smoke test runs against packaged binary, not dotnet run
  • netclaw doctor Memory Checkpoint Health check passes on a clean install of the next release

@Aaronontheweb Aaronontheweb enabled auto-merge (squash) March 21, 2026 19:16
…ia packaged binary

The CLI was missing IncludeNativeLibrariesForSelfExtract=true on all
single-file publish steps, while the daemon had it. Without this flag,
libe_sqlite3.so is not bundled into the single-file binary. The release
archive only tars the netclaw executable, so the native lib is never
shipped — causing a type initializer exception in MemoryCheckpointHealth
doctor check at runtime on installed binaries.

Additionally, the PR validation CLI smoke test was running via dotnet run
rather than against a published binary, so it never caught packaging issues.
The smoke test now publishes with the full release flags, archives only
the binary (matching the release packaging step exactly), extracts it to a
clean directory, and runs cli-smoke.sh from there — faithfully simulating
what users install.

Fixes applied to all three affected workflows:
- publish_release_binaries.yml: add IncludeNativeLibrariesForSelfExtract to CLI publish
- smoke_sandbox.yml: add IncludeNativeLibrariesForSelfExtract to CLI publish
- pr_validation.yml: publish CLI with release flags, package+extract to clean
  dir, run smoke tests against the extracted binary
@Aaronontheweb Aaronontheweb force-pushed the fix/cli-publish-native-libs-ci branch from 7f045ca to b7f4bc8 Compare March 21, 2026 19:16
@Aaronontheweb Aaronontheweb merged commit d80e1f6 into dev Mar 21, 2026
3 checks passed
@Aaronontheweb Aaronontheweb deleted the fix/cli-publish-native-libs-ci branch March 21, 2026 19:23
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.

1 participant