-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Description
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(viasqlx-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 checkCargo 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.