From 91feb4b6f3571cf82e4511f9312711e3d7ef1019 Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Thu, 14 Mar 2024 14:37:50 -0700 Subject: [PATCH] Avoid top-level `with ...;` in pkgs/development/compilers/gerbil/gerbil-support.nix The set of names to inherit was generated by running this in a loop until it did not error: ``` nix-instantiate --parse pkgs/development/compilers/gerbil/gerbil-support.nix ``` --- .../compilers/gerbil/gerbil-support.nix | 75 ++++++++++++++----- 1 file changed, 58 insertions(+), 17 deletions(-) diff --git a/pkgs/development/compilers/gerbil/gerbil-support.nix b/pkgs/development/compilers/gerbil/gerbil-support.nix index 230126ade007..e395d8ca1dec 100644 --- a/pkgs/development/compilers/gerbil/gerbil-support.nix +++ b/pkgs/development/compilers/gerbil/gerbil-support.nix @@ -1,11 +1,52 @@ { pkgs, lib, callPackage, ... }: -with pkgs.gerbil-support; { +let + inherit (builtins) filterSource; - pppToName = ppp: lib.removeSuffix ".nix" (baseNameOf ppp); # from pre-package path to name + inherit (lib) + commitIdFromGitRepo + concatStringsSep + elem + elemAt + hasSuffix + listToAttrs + mapAttrs + optionalString + pathExists + readFile + removeSuffix + substring + traceSeqN + ; + + inherit (lib.strings) match; + + # Implicitly calls through to this file, similar to `let .. in` or `rec`. + inherit (pkgs.gerbil-support) + callPpp + gerbilLoadPath + gerbilPackage + gerbilPackages-unstable + gerbilSkippableFiles + gerbilSourceFilter + overrideSrcIfShaDiff + ppaToPl + pppToKV + pppToName + ppplToPpa + prePackage-defaults + prePackages-unstable + resolve-pre-src + sha256-of-pre-src + view + ; +in + +{ + pppToName = ppp: removeSuffix ".nix" (baseNameOf ppp); # from pre-package path to name callPpp = ppp: callPackage ppp prePackage-defaults; # from pre-package path to pre-package pppToKV = ppp: { name = pppToName ppp; value = callPpp ppp; }; # from pre-package path to name - ppplToPpa = ppps: builtins.listToAttrs (map pppToKV ppps); # from pre-package path list to name/pre-package attr + ppplToPpa = ppps: listToAttrs (map pppToKV ppps); # from pre-package path list to name/pre-package attr prePackages-unstable = ppplToPpa @@ -32,37 +73,37 @@ with pkgs.gerbil-support; { softwareName = ""; }; - ppaToPl = builtins.mapAttrs (_: gerbilPackage); + ppaToPl = mapAttrs (_: gerbilPackage); gerbilPackages-unstable = ppaToPl prePackages-unstable; resolve-pre-src = pre-src: pre-src.fun (removeAttrs pre-src ["fun"]); gerbilVersionFromGit = srcDir: version-path: let version-file = "${srcDir}/${version-path}.ss"; in - if builtins.pathExists version-file then + if pathExists version-file then let m = - builtins.match "\\(import :clan/versioning.*\\)\n\\(register-software \"([-_.A-Za-z0-9]+)\" \"([-_.A-Za-z0-9]+)\"\\) ;; ([-0-9]+)\n" - (builtins.readFile version-file); in - { version = "${builtins.elemAt m 2}-git"; git-version = builtins.elemAt m 1; } + match "\\(import :clan/versioning.*\\)\n\\(register-software \"([-_.A-Za-z0-9]+)\" \"([-_.A-Za-z0-9]+)\"\\) ;; ([-0-9]+)\n" + (readFile version-file); in + { version = "${elemAt m 2}-git"; git-version = elemAt m 1; } else { version = "0.0-git"; git-version = let gitpath = "${srcDir}/.git"; in - if builtins.pathExists gitpath then lib.commitIdFromGitRepo gitpath else "0"; }; + if pathExists gitpath then commitIdFromGitRepo gitpath else "0"; }; gerbilSkippableFiles = [".git" ".build" ".build_outputs" "run" "result" "dep" "BLAH" "tmp.nix"]; gerbilSourceFilter = path: type: let baseName = baseNameOf path; in - ! (builtins.elem baseName gerbilSkippableFiles || lib.hasSuffix "~" baseName); + ! (elem baseName gerbilSkippableFiles || hasSuffix "~" baseName); - gerbilFilterSource = builtins.filterSource gerbilSourceFilter; + gerbilFilterSource = filterSource gerbilSourceFilter; # Use this function in any package that uses Gerbil libraries, to define the GERBIL_LOADPATH. gerbilLoadPath = - gerbilInputs: builtins.concatStringsSep ":" (map (x: x + "/gerbil/lib") gerbilInputs); + gerbilInputs: concatStringsSep ":" (map (x: x + "/gerbil/lib") gerbilInputs); path-src = path: { fun = _: path; }; - view = lib.debug.traceSeqN 4; + view = traceSeqN 4; sha256-of-pre-src = pre-src: if pre-src ? sha256 then pre-src.sha256 else "none"; @@ -75,7 +116,7 @@ with pkgs.gerbil-support; { pre-src = new-pre-src; version = "override"; git-version = if new-pre-src ? rev - then lib.substring 0 7 new-pre-src.rev + then substring 0 7 new-pre-src.rev else "unknown";}; }; @@ -102,10 +143,10 @@ with pkgs.gerbil-support; { postPatch = '' set -e ; - ${lib.optionalString (version-path != "") - ''echo -e '(import :clan/versioning${builtins.concatStringsSep "" + ${optionalString (version-path != "") + ''echo -e '(import :clan/versioning${concatStringsSep "" (map (x: let px = x.passthru.pre-pkg; in - lib.optionalString (px.version-path != "") + optionalString (px.version-path != "") " :${px.gerbil-package}/${px.version-path}") gerbilInputs) })\n(register-software "${softwareName}" "v${git-version}")\n' > "${version-path}.ss"''}