only set `CONDUIT_VERSION_EXTRA` for final build

This prevents us from needing to recompile the dependencies when that
environment variable changes, which generally changes on every commit,
which is far more frequently than the dependencies are actually changed.
merge-requests/638/head
Charles Hall 2 months ago committed by Matthias Ahouansou
parent 55259329a3
commit 96cc1f6abd
No known key found for this signature in database

@ -14,15 +14,13 @@
}: }:
let let
env = buildDepsOnlyEnv =
let let
rocksdb' = rocksdb.override { rocksdb' = rocksdb.override {
enableJemalloc = builtins.elem "jemalloc" features; enableJemalloc = builtins.elem "jemalloc" features;
}; };
in in
{ {
CONDUIT_VERSION_EXTRA =
inputs.self.shortRev or inputs.self.dirtyShortRev;
ROCKSDB_INCLUDE_DIR = "${rocksdb'}/include"; ROCKSDB_INCLUDE_DIR = "${rocksdb'}/include";
ROCKSDB_LIB_DIR = "${rocksdb'}/lib"; ROCKSDB_LIB_DIR = "${rocksdb'}/lib";
} }
@ -35,26 +33,45 @@ let
rust rust
stdenv; stdenv;
}); });
in
craneLib.buildPackage rec { buildPackageEnv = {
inherit CONDUIT_VERSION_EXTRA = inputs.self.shortRev or inputs.self.dirtyShortRev;
(craneLib.crateNameFromCargoToml { } // buildDepsOnlyEnv;
cargoToml = "${inputs.self}/Cargo.toml";
}) commonAttrs = {
pname inherit
version; (craneLib.crateNameFromCargoToml {
cargoToml = "${inputs.self}/Cargo.toml";
})
pname
version;
src = let filter = inputs.nix-filter.lib; in filter { src = let filter = inputs.nix-filter.lib; in filter {
root = inputs.self; root = inputs.self;
# Keep sorted # Keep sorted
include = [ include = [
"Cargo.lock" "Cargo.lock"
"Cargo.toml" "Cargo.toml"
"src" "src"
];
};
nativeBuildInputs = [
# bindgen needs the build platform's libclang. Apparently due to "splicing
# weirdness", pkgs.rustPlatform.bindgenHook on its own doesn't quite do the
# right thing here.
pkgsBuildHost.rustPlatform.bindgenHook
]; ];
CARGO_PROFILE = profile;
}; };
in
craneLib.buildPackage ( commonAttrs // {
cargoArtifacts = craneLib.buildDepsOnly (commonAttrs // {
env = buildDepsOnlyEnv;
});
cargoExtraArgs = "--locked " cargoExtraArgs = "--locked "
+ lib.optionalString + lib.optionalString
@ -67,20 +84,11 @@ craneLib.buildPackage rec {
# This is redundant with CI # This is redundant with CI
doCheck = false; doCheck = false;
nativeBuildInputs = [ env = buildPackageEnv;
# bindgen needs the build platform's libclang. Apparently due to "splicing
# weirdness", pkgs.rustPlatform.bindgenHook on its own doesn't quite do the
# right thing here.
pkgsBuildHost.rustPlatform.bindgenHook
];
CARGO_PROFILE = profile;
inherit env;
passthru = { passthru = {
inherit env; env = buildPackageEnv;
}; };
meta.mainProgram = pname; meta.mainProgram = commonAttrs.pname;
} })

Loading…
Cancel
Save