I have found these related issues/pull requests
sqlx-sqlite currently pins libsqlite3-sys to 0.30.1 (on 0.8.5), which makes Cargo resolution fail in mixed graphs that also include crates using rusqlite 0.38 (libsqlite3-sys 0.36.x), due to the single links = "sqlite3" rule.
Description
sqlx-sqlite currently pins libsqlite3-sys to 0.30.1 (on 0.8.5), which makes Cargo resolution fail in mixed graphs that also include crates using rusqlite 0.38 (libsqlite3-sys 0.36.x), due to the single links = "sqlite3" rule.
Why this matters
sqlite3 is a peer dependency for the user so pinning to a specific version prevents using any other crate that pins to a different version. Real-world apps can combine for example:
sea-orm (via sqlx-sqlite)
- SDKs that use
rusqlite (e.g. Breez Liquid SDK)
These cannot currently coexist without a local patch/fork.
Minimal reproduction
Cargo.toml:
[package]
name = "repro"
version = "0.1.0"
edition = "2021"
[dependencies]
sea-orm = { version = "1.1.19", features = ["sqlx-sqlite", "runtime-tokio-rustls"] }
breez-sdk-liquid = { git = "https://github.com/breez/breez-sdk-liquid", tag = "0.11.13" }
Then:
Cargo fails with a libsqlite3-sys links conflict (sqlite3).
Expected behavior
The graph should be resolvable when both crates are otherwise compatible.
Prefered solution
Relax/bump sqlx-sqlite's libsqlite3-sys version constraint to include 0.36.x (or wider compatible range), so mixed stacks can resolve without downstream patching.
Is this a breaking change? Why or why not?
No because versions are compatible.
I have found these related issues/pull requests
sqlx-sqlitecurrently pinslibsqlite3-systo0.30.1(on 0.8.5), which makes Cargo resolution fail in mixed graphs that also include crates usingrusqlite0.38 (libsqlite3-sys0.36.x), due to the singlelinks = "sqlite3"rule.Description
sqlx-sqlitecurrently pinslibsqlite3-systo0.30.1(on 0.8.5), which makes Cargo resolution fail in mixed graphs that also include crates usingrusqlite0.38 (libsqlite3-sys0.36.x), due to the singlelinks = "sqlite3"rule.Why this matters
sqlite3is a peer dependency for the user so pinning to a specific version prevents using any other crate that pins to a different version. Real-world apps can combine for example:sea-orm(viasqlx-sqlite)rusqlite(e.g. Breez Liquid SDK)These cannot currently coexist without a local patch/fork.
Minimal reproduction
Cargo.toml:Then:
Cargo fails with a
libsqlite3-syslinks conflict (sqlite3).Expected behavior
The graph should be resolvable when both crates are otherwise compatible.
Prefered solution
Relax/bump
sqlx-sqlite'slibsqlite3-sysversion constraint to include 0.36.x (or wider compatible range), so mixed stacks can resolve without downstream patching.Is this a breaking change? Why or why not?
No because versions are compatible.