nix: Cache deps with crane (#27411)
It turns out that on linux crane's `buildDepsOnly` was working fine, so I'm re-enabling it and will worry about why it's failing on darwin later. This should significantly improve the amount of artifact-reuse for the linux nix builds, which will hopefully bring build times low enough that we're ok putting it in CI. Release Notes: - N/A
This commit is contained in:
parent
42f01cc903
commit
fca7ce9a14
1 changed files with 17 additions and 28 deletions
|
@ -133,7 +133,7 @@ let
|
|||
(darwinMinVersionHook "10.15")
|
||||
];
|
||||
|
||||
cargoExtraArgs = "--package=zed --package=cli --features=gpui/runtime_shaders";
|
||||
cargoExtraArgs = "-p zed -p cli --locked --features=gpui/runtime_shaders";
|
||||
|
||||
env = {
|
||||
ZSTD_SYS_USE_PKG_CONFIG = true;
|
||||
|
@ -146,21 +146,28 @@ let
|
|||
ZED_UPDATE_EXPLANATION = "Zed has been installed using Nix. Auto-updates have thus been disabled.";
|
||||
RELEASE_VERSION = version;
|
||||
RUSTFLAGS = if withGLES then "--cfg gles" else "";
|
||||
# these libraries are used with dlopen so putting them in buildInputs isn't enough
|
||||
NIX_LDFLAGS = "-rpath ${
|
||||
LK_CUSTOM_WEBRTC = livekit-libwebrtc;
|
||||
|
||||
CARGO_PROFILE = profile;
|
||||
# need to handle some profiles specially https://github.com/rust-lang/cargo/issues/11053
|
||||
TARGET_DIR = "target/" + (if profile == "dev" then "debug" else profile);
|
||||
|
||||
# for some reason these deps being in buildInputs isn't enough, the only thing
|
||||
# about them that's special is that they're manually dlopened at runtime
|
||||
NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isLinux "-rpath ${
|
||||
lib.makeLibraryPath [
|
||||
gpu-lib
|
||||
wayland
|
||||
]
|
||||
}";
|
||||
LK_CUSTOM_WEBRTC = livekit-libwebrtc;
|
||||
CARGO_PROFILE = profile;
|
||||
# need to handle some profiles specially https://github.com/rust-lang/cargo/issues/11053
|
||||
TARGET_DIR = "target/" + (if profile == "dev" then "debug" else profile);
|
||||
};
|
||||
|
||||
# prevent nix from removing the "unused" wayland/gpu-lib rpaths
|
||||
dontPatchELF = true;
|
||||
dontPatchELF = stdenv.hostPlatform.isLinux;
|
||||
|
||||
# TODO: try craneLib.cargoNextest separate output
|
||||
# for now we're not worried about running our test suite (or tests for deps) in the nix sandbox
|
||||
doCheck = false;
|
||||
|
||||
cargoVendorDir = craneLib.vendorCargoDeps {
|
||||
inherit src cargoLock;
|
||||
|
@ -184,22 +191,7 @@ let
|
|||
drv;
|
||||
};
|
||||
};
|
||||
cargoArtifacts = craneLib.buildDepsOnly (
|
||||
commonArgs
|
||||
// {
|
||||
# TODO: figure out why the main derivation is still rebuilding deps...
|
||||
# disable pre-building the deps for now
|
||||
buildPhaseCargoCommand = "true";
|
||||
|
||||
# forcibly inhibit `doInstallCargoArtifacts`...
|
||||
# https://github.com/ipetkov/crane/blob/1d19e2ec7a29dcc25845eec5f1527aaf275ec23e/lib/setupHooks/installCargoArtifactsHook.sh#L111
|
||||
#
|
||||
# it is, unfortunately, not overridable in `buildDepsOnly`:
|
||||
# https://github.com/ipetkov/crane/blob/1d19e2ec7a29dcc25845eec5f1527aaf275ec23e/lib/buildDepsOnly.nix#L85
|
||||
preBuild = "postInstallHooks=()";
|
||||
doCheck = false;
|
||||
}
|
||||
);
|
||||
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
|
||||
in
|
||||
craneLib.buildPackage (
|
||||
lib.recursiveUpdate commonArgs {
|
||||
|
@ -215,15 +207,12 @@ craneLib.buildPackage (
|
|||
|
||||
# without the env var generate-licenses fails due to crane's fetchCargoVendor, see:
|
||||
# https://github.com/zed-industries/zed/issues/19971#issuecomment-2688455390
|
||||
# TODO: put this in a separate derivation that depends on src to avoid running it on every build
|
||||
preBuild = ''
|
||||
ALLOW_MISSING_LICENSES=yes bash script/generate-licenses
|
||||
echo nightly > crates/zed/RELEASE_CHANNEL
|
||||
'';
|
||||
|
||||
# TODO: try craneLib.cargoNextest separate output
|
||||
# for now we're not worried about running our test suite in the nix sandbox
|
||||
doCheck = false;
|
||||
|
||||
installPhase =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
''
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue