Skip to content

Commit

Permalink
fix(rust): properly handle cyclic deps
Browse files Browse the repository at this point in the history
  • Loading branch information
yusdacra committed Feb 18, 2022
1 parent 3a3cfd7 commit 1de1753
Showing 1 changed file with 24 additions and 5 deletions.
29 changes: 24 additions & 5 deletions src/builders/rust/vendor.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,32 @@
let
l = lib // builtins;

getAllDependencies = pname: version:
(getDependencies pname version) ++ (getCyclicDependencies pname version);
isCyclic = cyclic: dep:
l.any (odep: dep.name == odep.name && dep.version == odep.version) cyclic;

getAllTransitiveDependencies = pname: version:
let direct = getAllDependencies pname version; in
getUncyclicDependencies = cyclic: deps:
l.map
(dep: getAllTransitiveDependencies dep.name dep.version)
(l.filter (dep: !(isCyclic cyclic dep)) deps);

getAllTransitiveUncyclicDependencies = pname: version: let
cyclic = getCyclicDependencies pname version;
direct = getDependencies pname version;
in
l.unique (l.flatten (direct ++ (getUncyclicDependencies cyclic direct)));

getAllTransitiveDependencies = pname: version: let
direct = getDependencies pname version;
cyclic = getCyclicDependencies pname version;
in
l.unique (l.flatten (
direct ++ (l.map (dep: getAllTransitiveDependencies dep.name dep.version) direct)
direct
++ (getUncyclicDependencies cyclic direct)
++ (
l.map
(dep: getAllTransitiveUncyclicDependencies dep.name dep.version)
(l.filter (isCyclic cyclic) direct)
)
));
in {
# Generates a shell script that writes git vendor entries to .cargo/config.
Expand Down

0 comments on commit 1de1753

Please sign in to comment.