Conversation
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.
Problem
Since 0.5.1 the Arch/AUR build fails to link with
undefined symbol: sqlite3_*(reported in #226). 0.5.0 was the last release that built there.Root cause
0.5.0 had no explicit sqlite dependency, so diesel pulled
libsqlite3-sys 0.30.1non-bundled and linked the systemlibsqlite3dynamically. 0.5.1 addedrookie, whoserusqlitedraggedlibsqlite3-sysdown to0.28with thebundledfeature, so sqlite was compiled into a static lib and folded into the rlib. Arch'smakepkglink flags (-fuse-ld=lld -Wl,--gc-sections) drop those bundled objects from the final binary, leaving diesel'ssqlite3_*references unresolved. The failing 0.5.3 link line confirms it: the bundled sqlite is on the search path with no-lsqlite3, whileaws-lc-sys(whole-archived) survives the same flags. #227 then cemented the broken path with an explicitlibsqlite3-sys = { version = "0.28", features = ["bundled"] }, which outlived the removal ofrookiein #228.Fix
Drop the explicit
libsqlite3-syspin so diesel resolves a modernlibsqlite3-sys(0.37.0) non-bundled, linking the system sqlite again — exactly the configuration that worked in 0.5.0. The README install note now documents the system build dependencies (SQLite + OpenSSL + pkg-config on Linux). Also folds in the native-tls lockfile sync left over from #230 and the 0.5.4 version bump.Verification
Built clean locally (macOS) and in a Linux container with
--all-featuresunderlld -Wl,--gc-sections -Wl,--as-needed. I could not reproduce the original failure in-house because it needs an x86_64 Arch toolchain with the exactmakepkgflags, so this restores 0.5.0's known-good config rather than a flag-level patch — final confirmation should come from building 0.5.4 on the AUR.Tradeoff
Building now requires a system sqlite (plus openssl + pkg-config) on Linux; the bundled zero-config build for bare boxes and Windows is dropped. CI (macOS + Ubuntu) covers the supported platforms.
Addresses #226 (leave open until verified on the AUR).