mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2025-12-16 23:31:24 +01:00
This reverts commit 8f24ac1f27.
This is no longer necessary since the set of all features is equal to
the set of default features.
109 lines
2.5 KiB
Nix
109 lines
2.5 KiB
Nix
# Dependencies (keep sorted)
|
|
{ craneLib
|
|
, inputs
|
|
, jq
|
|
, lib
|
|
, pkgsBuildHost
|
|
, rocksdb
|
|
, rust
|
|
, snappy
|
|
, stdenv
|
|
|
|
# Options (keep sorted)
|
|
, default-features ? true
|
|
, features ? []
|
|
, profile ? "release"
|
|
, version-extra ? inputs.self.shortRev
|
|
or inputs.self.dirtyShortRev
|
|
or null,
|
|
}:
|
|
|
|
let
|
|
cargoManifest = lib.importTOML "${inputs.self}/Cargo.toml";
|
|
|
|
buildDepsOnlyEnv =
|
|
{
|
|
NIX_OUTPATH_USED_AS_RANDOM_SEED = "randomseed";
|
|
CARGO_PROFILE = profile;
|
|
ROCKSDB_INCLUDE_DIR = "${rocksdb}/include";
|
|
ROCKSDB_LIB_DIR = "${rocksdb}/lib";
|
|
}
|
|
//
|
|
(import ./cross-compilation-env.nix {
|
|
# Keep sorted
|
|
inherit
|
|
lib
|
|
pkgsBuildHost
|
|
rust
|
|
snappy
|
|
stdenv;
|
|
});
|
|
|
|
buildPackageEnv =
|
|
(lib.optionalAttrs (version-extra != null) {
|
|
GRAPEVINE_VERSION_EXTRA = version-extra;
|
|
})
|
|
// buildDepsOnlyEnv;
|
|
|
|
commonAttrs = {
|
|
# Reading from cargoManifest directly instead of using
|
|
# createNameFromCargoToml to avoid IFD
|
|
pname = cargoManifest.package.name;
|
|
version = cargoManifest.package.version;
|
|
|
|
src = let filter = inputs.nix-filter.lib; in filter {
|
|
root = inputs.self;
|
|
|
|
# Keep sorted
|
|
include = [
|
|
".cargo/config.toml"
|
|
"Cargo.lock"
|
|
"Cargo.toml"
|
|
"src"
|
|
];
|
|
};
|
|
|
|
dontStrip = profile != "release";
|
|
|
|
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
|
|
|
|
# We don't actually depend on `jq`, but crane's `buildPackage` does, but
|
|
# its `buildDepsOnly` doesn't. This causes those two derivations to have
|
|
# differing values for `NIX_CFLAGS_COMPILE`, which contributes to spurious
|
|
# rebuilds of bindgen and its depedents.
|
|
jq
|
|
];
|
|
|
|
# Opt out of crane's automagic cross support
|
|
doIncludeCrossToolchainEnv = false;
|
|
|
|
# This is redundant with CI
|
|
doCheck = false;
|
|
};
|
|
in
|
|
|
|
craneLib.buildPackage (commonAttrs // {
|
|
cargoArtifacts = craneLib.buildDepsOnly (commonAttrs // {
|
|
env = buildDepsOnlyEnv;
|
|
});
|
|
|
|
cargoExtraArgs = "--locked "
|
|
+ lib.optionalString
|
|
(!default-features)
|
|
"--no-default-features "
|
|
+ lib.optionalString
|
|
(features != [])
|
|
"--features " + (builtins.concatStringsSep "," features);
|
|
|
|
env = buildPackageEnv;
|
|
|
|
passthru = {
|
|
env = buildPackageEnv;
|
|
};
|
|
|
|
meta.mainProgram = commonAttrs.pname;
|
|
})
|