mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2025-12-17 07:41:23 +01:00
only set GRAPEVINE_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.
This commit is contained in:
parent
bbb1a6fea4
commit
21a4b9e5a1
1 changed files with 37 additions and 29 deletions
|
|
@ -14,15 +14,13 @@
|
|||
}:
|
||||
|
||||
let
|
||||
env =
|
||||
buildDepsOnlyEnv =
|
||||
let
|
||||
rocksdb' = rocksdb.override {
|
||||
enableJemalloc = builtins.elem "jemalloc" features;
|
||||
};
|
||||
in
|
||||
{
|
||||
GRAPEVINE_VERSION_EXTRA =
|
||||
inputs.self.shortRev or inputs.self.dirtyShortRev;
|
||||
CARGO_PROFILE = profile;
|
||||
ROCKSDB_INCLUDE_DIR = "${rocksdb'}/include";
|
||||
ROCKSDB_LIB_DIR = "${rocksdb'}/lib";
|
||||
|
|
@ -36,9 +34,12 @@ let
|
|||
rust
|
||||
stdenv;
|
||||
});
|
||||
in
|
||||
|
||||
craneLib.buildPackage rec {
|
||||
buildPackageEnv = {
|
||||
GRAPEVINE_VERSION_EXTRA = inputs.self.shortRev or inputs.self.dirtyShortRev;
|
||||
} // buildDepsOnlyEnv;
|
||||
|
||||
commonAttrs = {
|
||||
inherit
|
||||
(craneLib.crateNameFromCargoToml {
|
||||
cargoToml = "${inputs.self}/Cargo.toml";
|
||||
|
|
@ -57,6 +58,20 @@ craneLib.buildPackage rec {
|
|||
];
|
||||
};
|
||||
|
||||
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
|
||||
];
|
||||
};
|
||||
in
|
||||
|
||||
craneLib.buildPackage ( commonAttrs // {
|
||||
cargoArtifacts = craneLib.buildDepsOnly (commonAttrs // {
|
||||
env = buildDepsOnlyEnv;
|
||||
});
|
||||
|
||||
cargoExtraArgs = "--locked "
|
||||
+ lib.optionalString
|
||||
(!default-features)
|
||||
|
|
@ -68,18 +83,11 @@ craneLib.buildPackage rec {
|
|||
# This is redundant with CI
|
||||
doCheck = false;
|
||||
|
||||
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
|
||||
];
|
||||
|
||||
inherit env;
|
||||
env = buildPackageEnv;
|
||||
|
||||
passthru = {
|
||||
inherit env;
|
||||
env = buildPackageEnv;
|
||||
};
|
||||
|
||||
meta.mainProgram = pname;
|
||||
}
|
||||
meta.mainProgram = commonAttrs.pname;
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue