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
, inputs
, lib
@ -6,23 +6,34 @@
, rocksdb
, rust
, stdenv
# Options (keep sorted)
, default-features ? true
, features ? []
}:
let
env = {
CONDUIT_VERSION_EXTRA = inputs.self.shortRev or inputs.self.dirtyShortRev;
ROCKSDB_INCLUDE_DIR = "${rocksdb}/include";
ROCKSDB_LIB_DIR = "${rocksdb}/lib";
}
//
(import ./cross-compilation-env.nix {
# Keep sorted
inherit
lib
pkgsBuildHost
rust
stdenv;
});
env =
let
rocksdb' = rocksdb.override {
enableJemalloc = builtins.elem "jemalloc" features;
};
in
{
CONDUIT_VERSION_EXTRA =
inputs.self.shortRev or inputs.self.dirtyShortRev;
ROCKSDB_INCLUDE_DIR = "${rocksdb'}/include";
ROCKSDB_LIB_DIR = "${rocksdb'}/lib";
}
//
(import ./cross-compilation-env.nix {
# Keep sorted
inherit
lib
pkgsBuildHost
rust
stdenv;
});
in
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
doCheck = false;