diff options
author | Jakub Jirutka <jakub@jirutka.cz> | 2022-09-03 19:05:32 +0200 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2022-09-03 19:15:57 +0200 |
commit | 7511ba5530d56a446fefe2372409d9c2ceea17c5 (patch) | |
tree | 7d5c2027e4bde2258a2ce966f19a339bb1c15e15 | |
parent | a6e40b75eabf0d6a863a91ae17f7d0ae20582d9e (diff) | |
download | garage-7511ba5530d56a446fefe2372409d9c2ceea17c5.tar.gz garage-7511ba5530d56a446fefe2372409d9c2ceea17c5.zip |
Allow linking against system-provided libsqlite
Unfortunately, rusqlite uses the opposite logic for enabling/disabling
bundled libraries to others (libsodium-sys, zstd-sys). Cargo features
are very limited and doesn't allow to enable feature A in a dependency
iff feature B is disabled.
Note, lmdb-rkv-sys doesn't need any special treatment because it
automatically links against system liblmdb if found via pkgconf.
Linux distros should build garage with
`--no-default-features --features system-libs` to disable bundled-libs
and enable system-libs.
-rw-r--r-- | src/db/Cargo.toml | 3 | ||||
-rw-r--r-- | src/garage/Cargo.toml | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/db/Cargo.toml b/src/db/Cargo.toml index f697054b..230fbaf9 100644 --- a/src/db/Cargo.toml +++ b/src/db/Cargo.toml @@ -22,7 +22,7 @@ hexdump = "0.1" tracing = "0.1.30" heed = "0.11" -rusqlite = { version = "0.27", features = ["bundled"] } +rusqlite = "0.27" sled = "0.34" # cli deps @@ -33,4 +33,5 @@ pretty_env_logger = { version = "0.4", optional = true } mktemp = "0.4" [features] +bundled-libs = [ "rusqlite/bundled" ] cli = ["clap", "pretty_env_logger"] diff --git a/src/garage/Cargo.toml b/src/garage/Cargo.toml index 6cc93fc0..e19aac50 100644 --- a/src/garage/Cargo.toml +++ b/src/garage/Cargo.toml @@ -74,6 +74,14 @@ base64 = "0.13" [features] +default = [ "bundled-libs" ] kubernetes-discovery = [ "garage_rpc/kubernetes-discovery" ] k2v = [ "garage_util/k2v", "garage_api/k2v" ] + +# NOTE: bundled-libs and system-libs should be treat as mutually exclusive; +# exactly one of them should be enabled. + +# Use bundled libsqlite instead of linking against system-provided. +bundled-libs = [ "garage_db/bundled-libs" ] +# Link against system-provided libsodium and libzstd. system-libs = [ "garage_block/system-libs", "garage_rpc/system-libs", "sodiumoxide/use-pkg-config" ] |