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, ... }:
|
{ 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
|
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
|
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 =
|
prePackages-unstable =
|
||||||
ppplToPpa
|
ppplToPpa
|
||||||
|
@ -32,37 +73,37 @@ with pkgs.gerbil-support; {
|
||||||
softwareName = "";
|
softwareName = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
ppaToPl = builtins.mapAttrs (_: gerbilPackage);
|
ppaToPl = mapAttrs (_: gerbilPackage);
|
||||||
gerbilPackages-unstable = ppaToPl prePackages-unstable;
|
gerbilPackages-unstable = ppaToPl prePackages-unstable;
|
||||||
|
|
||||||
resolve-pre-src = pre-src: pre-src.fun (removeAttrs pre-src ["fun"]);
|
resolve-pre-src = pre-src: pre-src.fun (removeAttrs pre-src ["fun"]);
|
||||||
|
|
||||||
gerbilVersionFromGit = srcDir: version-path:
|
gerbilVersionFromGit = srcDir: version-path:
|
||||||
let version-file = "${srcDir}/${version-path}.ss"; in
|
let version-file = "${srcDir}/${version-path}.ss"; in
|
||||||
if builtins.pathExists version-file then
|
if pathExists version-file then
|
||||||
let m =
|
let m =
|
||||||
builtins.match "\\(import :clan/versioning.*\\)\n\\(register-software \"([-_.A-Za-z0-9]+)\" \"([-_.A-Za-z0-9]+)\"\\) ;; ([-0-9]+)\n"
|
match "\\(import :clan/versioning.*\\)\n\\(register-software \"([-_.A-Za-z0-9]+)\" \"([-_.A-Za-z0-9]+)\"\\) ;; ([-0-9]+)\n"
|
||||||
(builtins.readFile version-file); in
|
(readFile version-file); in
|
||||||
{ version = "${builtins.elemAt m 2}-git"; git-version = builtins.elemAt m 1; }
|
{ version = "${elemAt m 2}-git"; git-version = elemAt m 1; }
|
||||||
else { version = "0.0-git";
|
else { version = "0.0-git";
|
||||||
git-version = let gitpath = "${srcDir}/.git"; in
|
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"];
|
gerbilSkippableFiles = [".git" ".build" ".build_outputs" "run" "result" "dep" "BLAH" "tmp.nix"];
|
||||||
|
|
||||||
gerbilSourceFilter = path: type:
|
gerbilSourceFilter = path: type:
|
||||||
let baseName = baseNameOf path; in
|
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.
|
# Use this function in any package that uses Gerbil libraries, to define the GERBIL_LOADPATH.
|
||||||
gerbilLoadPath =
|
gerbilLoadPath =
|
||||||
gerbilInputs: builtins.concatStringsSep ":" (map (x: x + "/gerbil/lib") gerbilInputs);
|
gerbilInputs: concatStringsSep ":" (map (x: x + "/gerbil/lib") gerbilInputs);
|
||||||
|
|
||||||
path-src = path: { fun = _: path; };
|
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";
|
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;
|
pre-src = new-pre-src;
|
||||||
version = "override";
|
version = "override";
|
||||||
git-version = if new-pre-src ? rev
|
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";};
|
else "unknown";};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -102,10 +143,10 @@ with pkgs.gerbil-support; {
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
set -e ;
|
set -e ;
|
||||||
${lib.optionalString (version-path != "")
|
${optionalString (version-path != "")
|
||||||
''echo -e '(import :clan/versioning${builtins.concatStringsSep ""
|
''echo -e '(import :clan/versioning${concatStringsSep ""
|
||||||
(map (x: let px = x.passthru.pre-pkg; in
|
(map (x: let px = x.passthru.pre-pkg; in
|
||||||
lib.optionalString (px.version-path != "")
|
optionalString (px.version-path != "")
|
||||||
" :${px.gerbil-package}/${px.version-path}")
|
" :${px.gerbil-package}/${px.version-path}")
|
||||||
gerbilInputs)
|
gerbilInputs)
|
||||||
})\n(register-software "${softwareName}" "v${git-version}")\n' > "${version-path}.ss"''}
|
})\n(register-software "${softwareName}" "v${git-version}")\n' > "${version-path}.ss"''}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user