diff --git a/pkgs/top-level/release-lib.nix b/pkgs/top-level/release-lib.nix index 38e6f8072776..9f2886895689 100644 --- a/pkgs/top-level/release-lib.nix +++ b/pkgs/top-level/release-lib.nix @@ -7,13 +7,33 @@ let lib = import ../../lib; -in with lib; -rec { - - pkgs = packageSet (lib.recursiveUpdate { system = "x86_64-linux"; config.allowUnsupportedSystem = true; } nixpkgsArgs); - inherit lib; + inherit (lib) + addMetaAttrs + any + derivations + filter + flip + genAttrs + getAttrFromPath + hydraJob + id + isDerivation + lists + maintainers + mapAttrs + mapAttrs' + mapAttrsRecursive + matchAttrs + meta + nameValuePair + platforms + recursiveUpdate + subtractLists + systems + ; + pkgs = packageSet (recursiveUpdate { system = "x86_64-linux"; config.allowUnsupportedSystem = true; } nixpkgsArgs); hydraJob' = if scrubJobs then hydraJob else id; @@ -57,8 +77,8 @@ rec { # More poor man's memoisation pkgsForCross = let - examplesByConfig = lib.flip lib.mapAttrs' - lib.systems.examples + examplesByConfig = flip mapAttrs' + systems.examples (_: crossSystem: nameValuePair crossSystem.config { inherit crossSystem; pkgsFor = mkPkgsFor crossSystem; @@ -68,7 +88,7 @@ rec { candidate = examplesByConfig.${crossSystem.config} or null; in if crossSystem == null then native - else if candidate != null && lib.matchAttrs crossSystem candidate.crossSystem + else if candidate != null && matchAttrs crossSystem candidate.crossSystem then candidate.pkgsFor else mkPkgsFor crossSystem; # uncached fallback @@ -80,12 +100,12 @@ rec { # This is written in a funny way so that we only elaborate the systems once. supportedMatches = let supportedPlatforms = map - (system: lib.systems.elaborate { inherit system; }) + (system: systems.elaborate { inherit system; }) supportedSystems; in metaPatterns: let anyMatch = platform: - lib.any (lib.meta.platformMatch platform) metaPatterns; - matchingPlatforms = lib.filter anyMatch supportedPlatforms; + any (meta.platformMatch platform) metaPatterns; + matchingPlatforms = filter anyMatch supportedPlatforms; in map ({ system, ...}: system) matchingPlatforms; @@ -135,7 +155,6 @@ rec { (path: metaPatterns: testOnCross crossSystem metaPatterns (pkgs: f (getAttrFromPath path pkgs))); - /* Similar to the testOn function, but with an additional 'crossSystem' * parameter for packageSet', defining the target platform for cross builds, * and triggering the build of the host derivation. */ @@ -148,7 +167,7 @@ rec { packagePlatforms = mapAttrs (name: value: if isDerivation value then value.meta.hydraPlatforms - or (lib.subtractLists (value.meta.badPlatforms or []) + or (subtractLists (value.meta.badPlatforms or []) (value.meta.platforms or [ "x86_64-linux" ])) else if value.recurseForDerivations or false || value.recurseForRelease or false then packagePlatforms value @@ -156,8 +175,24 @@ rec { [] ); - +in { /* Common platform groups on which to test packages. */ inherit (platforms) unix linux darwin cygwin all mesaPlatforms; + inherit + assertTrue + forAllSystems + forMatchingSystems + hydraJob' + lib + mapTestOn + mapTestOnCross + packagePlatforms + pkgs + pkgsFor + pkgsForCross + supportedMatches + testOn + testOnCross + ; }