stdenv: Avoid some list allocations in check-meta when checking licenses
This commit is contained in:
parent
7d6c3583af
commit
3b13bd5c84
1 changed files with 21 additions and 8 deletions
|
@ -22,11 +22,15 @@ let
|
|||
optionals
|
||||
remove
|
||||
unknownModule
|
||||
isAttrs
|
||||
isString
|
||||
;
|
||||
|
||||
inherit (lib.lists)
|
||||
any
|
||||
toList
|
||||
isList
|
||||
elem
|
||||
;
|
||||
|
||||
# If we're in hydra, we can dispense with the more verbose error
|
||||
|
@ -59,11 +63,15 @@ let
|
|||
hasLicense = attrs:
|
||||
attrs ? meta.license;
|
||||
|
||||
hasAllowlistedLicense = assert areLicenseListsValid; attrs:
|
||||
hasLicense attrs && any (l: builtins.elem l allowlist) (toList attrs.meta.license);
|
||||
hasListedLicense = assert areLicenseListsValid; list: attrs:
|
||||
length list > 0 && hasLicense attrs && (
|
||||
if isList attrs.meta.license then any (l: elem l list) attrs.meta.license
|
||||
else elem attrs.meta.license list
|
||||
);
|
||||
|
||||
hasBlocklistedLicense = assert areLicenseListsValid; attrs:
|
||||
hasLicense attrs && any (l: builtins.elem l blocklist) (toList attrs.meta.license);
|
||||
hasAllowlistedLicense = attrs: hasListedLicense allowlist attrs;
|
||||
|
||||
hasBlocklistedLicense = attrs: hasListedLicense blocklist attrs;
|
||||
|
||||
allowBroken = config.allowBroken
|
||||
|| builtins.getEnv "NIXPKGS_ALLOW_BROKEN" == "1";
|
||||
|
@ -71,11 +79,16 @@ let
|
|||
allowUnsupportedSystem = config.allowUnsupportedSystem
|
||||
|| builtins.getEnv "NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM" == "1";
|
||||
|
||||
isUnfree = licenses: any (l: !l.free or true) licenses;
|
||||
isUnfree = licenses:
|
||||
if isAttrs licenses then !licenses.free or true
|
||||
# TODO: Returning false in the case of a string is a bug that should be fixed.
|
||||
# In a previous implementation of this function the function body
|
||||
# was `licenses: lib.lists.any (l: !l.free or true) licenses;`
|
||||
# which always evaluates to `!true` for strings.
|
||||
else if isString licenses then false
|
||||
else lib.lists.any (l: !l.free or true) licenses;
|
||||
|
||||
hasUnfreeLicense = attrs:
|
||||
hasLicense attrs &&
|
||||
isUnfree (toList attrs.meta.license);
|
||||
hasUnfreeLicense = attrs: hasLicense attrs && isUnfree attrs.meta.license;
|
||||
|
||||
hasNoMaintainers = attrs:
|
||||
attrs ? meta.maintainers && (length attrs.meta.maintainers) == 0;
|
||||
|
|
Loading…
Reference in a new issue