mirror of
https://github.com/nix-community/naersk
synced 2024-11-10 06:04:17 +00:00
Support unused dependencies
Cargo stashes unused patches into a special section of the Cargo.lock file: ``` [[patch.unused]] name = "uuid" version = "1.4.1" source = "git+https://github.com/uuid-rs/uuid#50f70278de02c106650b8d6deb325dd59b5f2a24" ``` ... a section that we, currently, don't read. Ignoring that section causes the build to fail because even if the patch is unused, when the source is unavailable, Cargo tries to fetch it (which, understandably, is not possible inside the sandbox). This commit extends our logic so that we download both the "used" and "unused" dependencies. Closes https://github.com/nix-community/naersk/issues/308.
This commit is contained in:
parent
3aa2c1e1ed
commit
3f976d822b
6 changed files with 46 additions and 1 deletions
9
lib.nix
9
lib.nix
|
@ -99,7 +99,14 @@ rec
|
|||
} // (lib.optionalAttrs (! isNull branch) { inherit branch; })
|
||||
// (lib.optionalAttrs (! isNull tag) { inherit tag; })
|
||||
// (lib.optionalAttrs (! isNull rev) { inherit rev; });
|
||||
packageLocks = builtins.map parseLock (lib.filter query cargolock.package);
|
||||
|
||||
usedPackageLocks =
|
||||
builtins.map parseLock (lib.filter query cargolock.package);
|
||||
|
||||
unusedPackageLocks =
|
||||
builtins.map parseLock (lib.filter query ((cargolock.patch or []).unused or []));
|
||||
|
||||
packageLocks = usedPackageLocks ++ unusedPackageLocks;
|
||||
|
||||
mkFetch = lock: {
|
||||
key = lock.rev or lock.tag or lock.branch or lock.revision
|
||||
|
|
|
@ -16,6 +16,7 @@ args: {
|
|||
simple-dep = import ./simple-dep args;
|
||||
simple-dep-patched = import ./simple-dep-patched args;
|
||||
symlinks = import ./symlinks args;
|
||||
unused-patch = import ./unused-patch args;
|
||||
workspace = import ./workspace args;
|
||||
workspace-build-rs = import ./workspace-build-rs args;
|
||||
workspace-patched = import ./workspace-patched args;
|
||||
|
|
15
test/fast/unused-patch/default.nix
Normal file
15
test/fast/unused-patch/default.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ naersk, pkgs, ... }:
|
||||
let
|
||||
app = naersk.buildPackage {
|
||||
src = ./fixtures;
|
||||
};
|
||||
|
||||
in
|
||||
if builtins.compareVersions pkgs.lib.version "22.11" <= 0 then
|
||||
# Executing this test requires nixpkgs > 22.11 due to changes to the TOML
|
||||
# serialization function.
|
||||
#
|
||||
# See `writeTOML` in this repository for more details.
|
||||
true
|
||||
else
|
||||
app
|
12
test/fast/unused-patch/fixtures/Cargo.lock
generated
Normal file
12
test/fast/unused-patch/fixtures/Cargo.lock
generated
Normal file
|
@ -0,0 +1,12 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "app"
|
||||
version = "0.1.0"
|
||||
|
||||
[[patch.unused]]
|
||||
name = "uuid"
|
||||
version = "1.4.1"
|
||||
source = "git+https://github.com/uuid-rs/uuid#50f70278de02c106650b8d6deb325dd59b5f2a24"
|
7
test/fast/unused-patch/fixtures/Cargo.toml
Normal file
7
test/fast/unused-patch/fixtures/Cargo.toml
Normal file
|
@ -0,0 +1,7 @@
|
|||
[package]
|
||||
name = "app"
|
||||
version = "0.1.0"
|
||||
edition = "2018"
|
||||
|
||||
[patch.crates-io]
|
||||
uuid = { git = "https://github.com/uuid-rs/uuid" }
|
3
test/fast/unused-patch/fixtures/src/main.rs
Normal file
3
test/fast/unused-patch/fixtures/src/main.rs
Normal file
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
Loading…
Reference in a new issue