lib.licenses: prevent subcalls for non-simple licenses

This commit is contained in:
Eman Resu
2026-05-19 23:02:22 -04:00
parent 22fcb80812
commit 9e48db8d39
+5 -4
View File
@@ -25,24 +25,25 @@ rec {
let
OR = if permissive then lib.any else lib.all;
AND = if permissive then lib.all else lib.any;
evaluateSubProperty = evaluateProperty predicate permissive;
in
license:
if license.licenseType == "simple" then
predicate license
else if license.licenseType == "compound" then
if license.operator == "OR" then
OR (x: evaluateProperty predicate permissive x) license.licenses
OR evaluateSubProperty license.licenses
else if license.operator == "AND" then
AND (x: evaluateProperty predicate permissive x) license.licenses
AND evaluateSubProperty license.licenses
else
throw "Unknown license operator"
else if license.licenseType == "exception" then
AND (x: evaluateProperty predicate permissive x) [
AND evaluateSubProperty [
license.license
license.exception
]
else if license.licenseType == "plus" then
evaluateProperty predicate permissive license.license
evaluateSubProperty license.license
else
throw "Unknown license type or legacy license";