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:
parent
bc736298ed
commit
91feb4b6f3
@ -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"''}
|
||||
|
Loading…
Reference in New Issue
Block a user