Skip to content

[TEST, don't merge] Reproduce and verify native lib layout fix for core 677fbba2 - #250

Closed
rr3khan wants to merge 2 commits into
mainfrom
riyad/test-native-lib-layout
Closed

rr3khan wants to merge 2 commits into
mainfrom
riyad/test-native-lib-layout

Conversation

@rr3khan

@rr3khan rr3khan commented Nov 12, 2026 •

Copy link
Copy Markdown

Warning

Test PR. Don't review or merge. It reproduces a broken native library layout in generated core-update branches, and checks that the proposed fix works. A separate PR will be opened for review and will link here.

What this tests

The core-update branches that the core publish workflow generates (for example sdk-core/beta/2026-11-10-677fbba2, #247) have a broken src/onepassword/lib layout:

Path Expected (as in v0.4.2) On the generated branch
x86_64/libop_uniffi_core.so x86-64 ELF missing
aarch64/libop_uniffi_core.so AArch64 ELF missing
x86_64/op_uniffi_core.dll x86-64 DLL missing
lib root no files libop_uniffi_core.so (AArch64), op_uniffi_core.dll, op_uniffi_core.py

core.py loads the native library from its own arch folder, so imports fail on Linux and Windows. macOS keeps its layout and works.

Cause: the publish workflow downloads the four native-library artifacts (linux-amd64, linux-arm64, darwin, windows-x86_64) into one folder. The Linux and Windows artifacts don't keep their arch folder, so their files land at the root, and the arm64 .so overwrites the amd64 one.

Steps

  1. Commit 1 (3347189): the generated core update, unchanged. CI should fail in test-trusted with OSError: .../lib/x86_64/libop_uniffi_core.so: cannot open shared object file.
  2. Commit 2: src/onepassword/lib rebuilt from the same build artifacts, but with each artifact downloaded into its own arch folder, as the proposed publish-workflow fix does. CI should pass on all OSes.

Results

Step Commit Run Result
1. Generated core update, unchanged 3347189 43258486066 ❌ test-trusted (ubuntu-latest, 3.13): OSError: .../lib/x86_64/libop_uniffi_core.so: cannot open shared object file (5 failed, 1 passed). Fail-fast cancelled the other 11 jobs.
2. Same artifacts, one folder per artifact 385e3d3 43258964516 ✅ All 12 test-trusted jobs pass (ubuntu, windows and macos × Python 3.10–3.13), for example 6 passed on ubuntu and macos 3.13. Lint and signed-commit checks pass.

Commit 2 only moves files and adds the missing x86-64 .so. The .dylib files and bindings are byte-identical to commit 1, and file modes stay 644, as the publish workflow writes them:

  • libop_uniffi_core.so (AArch64): lib root → aarch64/
  • op_uniffi_core.dll: lib root → x86_64/
  • x86_64/libop_uniffi_core.so (x86-64): added from the linux-amd64 artifact
  • op_uniffi_core.py at the lib root: removed

Conclusion: downloading each native-library artifact into its own arch folder fixes the generated branch. The fix belongs in the core publish workflow, and the PR for that will link here.

🤖 Generated with Claude Code

1PasswordSDKBot and others added 2 commits November 10, 2026 18:04
Rebuild src/onepassword/lib from the same 677fbba2 build artifacts, with
each artifact downloaded into its own folder (linux-amd64 -> x86_64/,
linux-arm64 -> aarch64/, darwin -> lib root, windows-x86_64 -> x86_64/),
as the proposed publish-workflow fix does:

- move the AArch64 libop_uniffi_core.so from the lib root to aarch64/
- add the x86-64 libop_uniffi_core.so to x86_64/ (it was overwritten)
- move op_uniffi_core.dll from the lib root to x86_64/
- remove the stray op_uniffi_core.py at the lib root

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rr3khan rr3khan closed this Nov 12, 2026
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.

2 participants