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
```
This commit is contained in:
Philip Taron 2024-03-14 14:37:50 -07:00 committed by Valentin Gagarin
parent bc736298ed
commit 91feb4b6f3
1 changed files with 58 additions and 17 deletions

View File

@ -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"''}