diff --git a/pkgs/build-support/coq/meta-fetch/default.nix b/pkgs/build-support/coq/meta-fetch/default.nix index 82c29fb760b7..daed9faa3efe 100644 --- a/pkgs/build-support/coq/meta-fetch/default.nix +++ b/pkgs/build-support/coq/meta-fetch/default.nix @@ -1,8 +1,33 @@ { lib, stdenv, fetchzip }@args: -let lib' = lib; in -let lib = import ../extra-lib.nix {lib = lib';}; in -with builtins; with lib; + let + lib = import ../extra-lib.nix { + inherit (args) lib; + }; + + inherit (lib) + attrNames + fakeSha256 + filter + findFirst + head + isAttrs + isPath + isString + last + length + optionalAttrs + pathExists + pred + sort + switch + switch-if + versionAtLeast + versions + ; + + inherit (lib.strings) match split; + default-fetcher = {domain ? "github.com", owner ? "", repo, rev, name ? "source", sha256 ? null, ...}@args: let ext = if args?sha256 then "zip" else "tar.gz"; fmt = if args?sha256 then "zip" else "tarball"; @@ -17,7 +42,7 @@ let { cond = (match "(www.)?mpi-sws.org" domain) != null; out = "https://www.mpi-sws.org/~${owner}/${repo}/download/${repo}-${rev}.${ext}";} ] (throw "meta-fetch: no fetcher found for domain ${domain} on ${rev}"); - fetch = x: if args?sha256 then fetchzip (x // { inherit sha256; }) else fetchTarball x; + fetch = x: if args?sha256 then fetchzip (x // { inherit sha256; }) else builtins.fetchTarball x; in fetch { inherit url ; }; in { @@ -38,11 +63,12 @@ switch arg [ { case = isNull; out = { version = "broken"; src = ""; broken = true; }; } { case = isPathString; out = { version = "dev"; src = arg; }; } { case = pred.union isVersion isShortVersion; - out = let v = if isVersion arg then arg else shortVersion arg; in - let - given-sha256 = release.${v}.sha256 or ""; - sha256 = if given-sha256 == "" then lib.fakeSha256 else given-sha256; - rv = release.${v} // { inherit sha256; }; in + out = let + v = if isVersion arg then arg else shortVersion arg; + given-sha256 = release.${v}.sha256 or ""; + sha256 = if given-sha256 == "" then fakeSha256 else given-sha256; + rv = release.${v} // { inherit sha256; }; + in { version = rv.version or v; src = rv.src or fetcher (location // { rev = releaseRev v; } // rv);