make it easy to configure cargo features from nix

Users of the nix package can now just use `.override` to choose what
features they want.

This also makes RocksDB automatically use jemalloc when Conduit is
configured to use jemalloc.
This commit is contained in:
Charles Hall 2024-05-01 00:38:55 -07:00 committed by Matthias Ahouansou
parent 3336d3f812
commit d796fe7cd3
No known key found for this signature in database

View file

@ -1,4 +1,4 @@
# Keep sorted # Dependencies (keep sorted)
{ craneLib { craneLib
, inputs , inputs
, lib , lib
@ -6,23 +6,34 @@
, rocksdb , rocksdb
, rust , rust
, stdenv , stdenv
# Options (keep sorted)
, default-features ? true
, features ? []
}: }:
let let
env = { env =
CONDUIT_VERSION_EXTRA = inputs.self.shortRev or inputs.self.dirtyShortRev; let
ROCKSDB_INCLUDE_DIR = "${rocksdb}/include"; rocksdb' = rocksdb.override {
ROCKSDB_LIB_DIR = "${rocksdb}/lib"; enableJemalloc = builtins.elem "jemalloc" features;
} };
// in
(import ./cross-compilation-env.nix { {
# Keep sorted CONDUIT_VERSION_EXTRA =
inherit inputs.self.shortRev or inputs.self.dirtyShortRev;
lib ROCKSDB_INCLUDE_DIR = "${rocksdb'}/include";
pkgsBuildHost ROCKSDB_LIB_DIR = "${rocksdb'}/lib";
rust }
stdenv; //
}); (import ./cross-compilation-env.nix {
# Keep sorted
inherit
lib
pkgsBuildHost
rust
stdenv;
});
in in
craneLib.buildPackage rec { craneLib.buildPackage rec {
@ -44,6 +55,14 @@ craneLib.buildPackage rec {
]; ];
}; };
cargoExtraArgs = "--locked "
+ lib.optionalString
(!default-features)
"--no-default-features "
+ lib.optionalString
(features != [])
"--features " + (builtins.concatStringsSep "," features);
# This is redundant with CI # This is redundant with CI
doCheck = false; doCheck = false;