Fix import and make pkgFilter recurse into dependencies.
This commit is contained in:
parent
1476ff6acb
commit
af66caf14a
2 changed files with 32 additions and 15 deletions
28
fn.nix
28
fn.nix
|
@ -9,6 +9,8 @@ rec {
|
|||
(pathIsRegularFile a)
|
||||
a b);
|
||||
cwd = toString ./.;
|
||||
|
||||
# lst (string PATH) (string FILETYPE) (bool RETURNFULLPATH)
|
||||
lst = { p ? cwd, t ? "regular", b ? false }: (lists.forEach
|
||||
(attrNames
|
||||
(filterAttrs (n: v: v == t)
|
||||
|
@ -23,11 +25,25 @@ rec {
|
|||
(hasAttrByPath a d)
|
||||
(hasAttr a d)))
|
||||
aList);
|
||||
pkgFilter = l: (filter
|
||||
deps = p: ifelse (isAttrs p) (filter (p: isAttrs p)
|
||||
(p.buildInputs ++ p.nativeBuildInputs ++ p.propagatedBuildInputs ++ p.propagatedNativeBuildInputs)
|
||||
) [];
|
||||
importFilter = l: p: filter (n: elem (nameFromURL (toString n) ".") l) p;
|
||||
depsRec = ld: ifelse (ld == []) [] ((toList ld) ++ (depsRec (lists.unique (lists.flatten (map (d: deps d) (toList ld))))));
|
||||
isBroken = p: ifelse ((elem true (hasAttrs [["meta" "broken"]] p)) && (p.meta.broken == true))
|
||||
(warn "Package ${p.name} is marked as broken." true)
|
||||
false;
|
||||
depsBroken = p: lists.any (p: (isBroken p)) (deps p);
|
||||
# Those two lines are quite magical 🧙
|
||||
depsBrokenRec = p: (b: b == true) (ifelse (depsBroken p) true
|
||||
(map (p: depsBrokenRec p) (deps p)));
|
||||
pkgFilter = ld: (filter
|
||||
(p: (
|
||||
ifelse (elem true (hasAttrs [["meta" "broken"]] p))
|
||||
(warn "Package ${p.name} is marked as broken." false)
|
||||
true)
|
||||
)
|
||||
l);
|
||||
ifelse (isBroken p)
|
||||
false
|
||||
(ifelse (depsBrokenRec p)
|
||||
(warn "Dependency of ${p.name} is marked as broken." false)
|
||||
true)
|
||||
))
|
||||
ld);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue