do default-feature unification in nix
Some of the features affect nix dependencies, so we need to have a full feature list available when constructing the nix derivation. This incidentally fixes the bug where we weren't enabling jemalloc on rocksdb in CI/devshells, because jemalloc is now a default feature. It does not fix the more general class of that issue, where CI is performing an `--all-features` build in a nix devshell built for default-features. I am now passing `--no-default-features` to cargo, and having it use our unified feature list rather than duplicating the unification inside cargo.
This commit is contained in:
parent
a7fe434086
commit
188dea13e0
1 changed files with 16 additions and 7 deletions
|
@ -16,7 +16,19 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
featureEnabled = feature : builtins.elem feature features;
|
# We perform default-feature unification in nix, because some of the dependencies
|
||||||
|
# on the nix side depend on feature values.
|
||||||
|
workspaceMembers = builtins.map (member: "${inputs.self}/src/${member}")
|
||||||
|
(builtins.attrNames (builtins.readDir "${inputs.self}/src"));
|
||||||
|
crateDefaultFeatures = path:
|
||||||
|
(lib.importTOML "${path}/Cargo.toml").features.default;
|
||||||
|
allDefaultFeatures = lib.unique
|
||||||
|
(lib.flatten (builtins.map crateDefaultFeatures workspaceMembers));
|
||||||
|
features' = lib.unique
|
||||||
|
(features ++
|
||||||
|
lib.optionals default_features allDefaultFeatures);
|
||||||
|
|
||||||
|
featureEnabled = feature : builtins.elem feature features';
|
||||||
|
|
||||||
# This derivation will set the JEMALLOC_OVERRIDE variable, causing the
|
# This derivation will set the JEMALLOC_OVERRIDE variable, causing the
|
||||||
# tikv-jemalloc-sys crate to use the nixpkgs jemalloc instead of building it's
|
# tikv-jemalloc-sys crate to use the nixpkgs jemalloc instead of building it's
|
||||||
|
@ -102,13 +114,10 @@ craneLib.buildPackage ( commonAttrs // {
|
||||||
env = buildDepsOnlyEnv;
|
env = buildDepsOnlyEnv;
|
||||||
});
|
});
|
||||||
|
|
||||||
cargoExtraArgs = ""
|
cargoExtraArgs = "--no-default-features "
|
||||||
+ lib.optionalString
|
+ lib.optionalString
|
||||||
(!default_features)
|
(features' != [])
|
||||||
"--no-default-features "
|
"--features " + (builtins.concatStringsSep "," features');
|
||||||
+ lib.optionalString
|
|
||||||
(features != [])
|
|
||||||
"--features " + (builtins.concatStringsSep "," features);
|
|
||||||
|
|
||||||
# This is redundant with CI
|
# This is redundant with CI
|
||||||
cargoTestCommand = "";
|
cargoTestCommand = "";
|
||||||
|
|
Loading…
Add table
Reference in a new issue