fix(ci): make release workflow build reliably (drop cache that prunes libduckdb) - #210
Merged
Conversation
…ilure) The release dry-run's second run failed at the build step with `rust-lld: error: unable to find library -lduckdb` on all platforms — the classic warm-cache/cold-link-path problem: a restored rust-cache keeps the libduckdb-sys build-script fingerprint warm, so cargo skips the script and never re-emits `cargo:rustc-link-search`, and the final link can't find libduckdb even though the .so/.dll is in the cached download dir. The previous conditional "ensure present" check was insufficient (the lib is present yet the link path is unset). Unconditionally `cargo clean -p libduckdb-sys` so the script always re-runs; it reuses the cached target/duckdb-download, so this is a cheap re-link, not a re-download. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…d libduckdb) The relink-forcing attempt didn't help: `cargo clean -p libduckdb-sys` reported "Removed 0 files", yet the link still failed with `unable to find library -lduckdb` — the search path pointed at target/duckdb-download but the .so wasn't there. rust-cache prunes the downloaded shared libduckdb when it saves the cache, so any restored cache link-fails. The very first (cache-less) dry-run linked fine on all three platforms, so the cache was the only thing breaking it. Release builds run on tag pushes only, so just drop rust-cache here and build clean from scratch — slower per run but guaranteed-correct linking. ci.yml (the frequent gate) keeps its cache. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to the new
release.yml(#208). The workflow_dispatch dry-run surfaced two issues on the non-Linux legs, both now fixed and validated green on all three platforms:.gitattributeseol=lfchange (fix: .gitattributes eol=lf — unblock Windows release build (CRLF-mangled embedded assets) #209): Windows checkout CRLF-mangled an embedded markdown asset, soescurel-serverfailed boot-time validation.unable to find library -lduckdb(this PR) — on any run with a restored cache, the link failed:rust-cacheprunes the downloaded sharedlibduckdbfromtarget/duckdb-downloadwhen it saves, so a restored cache has the-Lsearch path set but the lib gone.cargo clean -p libduckdb-sysdidn't help ("Removed 0 files"). The first cache-less run linked fine everywhere, so the cache was the sole culprit.Fix: drop
rust-cachefrom the release matrix. Release builds run on tag pushes only, so a clean from-scratch build per platform is the right trade for guaranteed-correct linking. The frequent Linux gate inci.ymlkeeps its cache.Validation
Dispatched
release.ymlon this branch (run 28294056243) — all three build jobs succeeded: cold build → libduckdb bundling + rpath fix → smoke test (bootsescurel-server, hits/healthz, proving libduckdb loads) → package.create-releasecorrectly skipped (no tag).Test plan
v1.0.1-rc.1to exercise the full publish (create-release→ GitHub pre-release with the three platform archives).🤖 Generated with Claude Code
Need help on this PR? Tag
/codesmithwith what you need. Autofix is disabled.