mirror of
https://github.com/SebastianWendel/nixpkgs.git
synced 2024-09-20 04:19:00 +02:00
chickenPackages: turn into scope
The purpose of this change is to allow the overriding of one egg, which in turn affects all dependents of that eggs.
This commit is contained in:
parent
a3dd3cce6e
commit
f58a6078fa
|
@ -47,3 +47,32 @@ To include more eggs, edit `pkgs/development/compilers/chicken/5/eggs.scm`.
|
|||
The first section of this file lists eggs which are required by `egg2nix`
|
||||
itself; all other eggs go into the second section. After editing, follow the
|
||||
procedure for updating eggs.
|
||||
|
||||
## Override Scope {#sec-chicken-override-scope}
|
||||
|
||||
The chicken package and its eggs, respectively, reside in a scope. This means,
|
||||
the scope can be overridden to effect other packages in it.
|
||||
|
||||
This example shows how to use a local copy of `srfi-180` and have it affect
|
||||
all the other eggs:
|
||||
|
||||
```nix
|
||||
let
|
||||
myChickenPackages = pkgs.chickenPackages.overrideScope' (self: super: {
|
||||
# The chicken package itself can be overridden to effect the whole ecosystem.
|
||||
# chicken = super.chicken.overrideAttrs {
|
||||
# src = ...
|
||||
# };
|
||||
|
||||
chickenEggs = super.chickenEggs.overrideScope' (eggself: eggsuper: {
|
||||
srfi-180 = eggsuper.srfi-180.overrideAttrs {
|
||||
# path to a local copy of srfi-180
|
||||
src = ...
|
||||
};
|
||||
});
|
||||
});
|
||||
in
|
||||
# Here, `myChickenPackages.chickenEggs.json-rpc`, which depends on `srfi-180` will use
|
||||
# the local copy of `srfi-180`.
|
||||
# ...
|
||||
```
|
||||
|
|
|
@ -18,4 +18,4 @@ let
|
|||
egg2nix = callPackage ./egg2nix.nix { };
|
||||
};
|
||||
|
||||
in lib.recurseIntoAttrs self
|
||||
in self
|
||||
|
|
|
@ -1,40 +1,42 @@
|
|||
{ lib, newScope, fetchurl }:
|
||||
let
|
||||
callPackage = newScope self;
|
||||
|
||||
self = with lib; {
|
||||
inherit callPackage;
|
||||
lib.makeScope newScope (self: {
|
||||
|
||||
fetchegg = { pname, version, sha256, ... }:
|
||||
fetchurl {
|
||||
inherit sha256;
|
||||
url =
|
||||
"https://code.call-cc.org/egg-tarballs/5/${pname}/${pname}-${version}.tar.gz";
|
||||
};
|
||||
|
||||
eggDerivation = callPackage ./eggDerivation.nix { };
|
||||
|
||||
chicken = callPackage ./chicken.nix {
|
||||
bootstrap-chicken = self.chicken.override { bootstrap-chicken = null; };
|
||||
fetchegg = { pname, version, sha256, ... }:
|
||||
fetchurl {
|
||||
inherit sha256;
|
||||
url =
|
||||
"https://code.call-cc.org/egg-tarballs/5/${pname}/${pname}-${version}.tar.gz";
|
||||
};
|
||||
|
||||
chickenEggs = recurseIntoAttrs (mapAttrs (pname:
|
||||
eggData@{ version, synopsis, dependencies, license, ... }:
|
||||
self.eggDerivation {
|
||||
name = "${pname}-${version}";
|
||||
src = self.fetchegg (eggData // { inherit pname; });
|
||||
buildInputs = map (x: self.chickenEggs.${x}) dependencies;
|
||||
meta.homepage =
|
||||
"https://code.call-cc.org/cgi-bin/gitweb.cgi?p=eggs-5-latest.git;a=tree;f=${pname}/${version}";
|
||||
meta.description = synopsis;
|
||||
meta.license = (licenses // {
|
||||
"bsd-2-clause" = licenses.bsd2;
|
||||
"bsd-3-clause" = licenses.bsd3;
|
||||
"public-domain" = licenses.publicDomain;
|
||||
}).${license} or license;
|
||||
}) (importTOML ./deps.toml));
|
||||
eggDerivation = self.callPackage ./eggDerivation.nix { };
|
||||
|
||||
egg2nix = callPackage ./egg2nix.nix { };
|
||||
chicken = self.callPackage ./chicken.nix {
|
||||
bootstrap-chicken = self.chicken.override { bootstrap-chicken = null; };
|
||||
};
|
||||
|
||||
in lib.recurseIntoAttrs self
|
||||
chickenEggs = lib.recurseIntoAttrs (lib.makeScope self.newScope (eggself:
|
||||
(lib.mapAttrs
|
||||
(pname:
|
||||
eggData@{ version, synopsis, dependencies, license, ... }:
|
||||
self.eggDerivation {
|
||||
name = "${pname}-${version}";
|
||||
src = self.fetchegg (eggData // { inherit pname; });
|
||||
buildInputs = map (x: eggself.${x}) dependencies;
|
||||
meta.homepage =
|
||||
"https://code.call-cc.org/cgi-bin/gitweb.cgi?p=eggs-5-latest.git;a=tree;f=${pname}/${version}";
|
||||
meta.description = synopsis;
|
||||
meta.license = (lib.licenses // {
|
||||
"bsd-1-clause" = lib.licenses.bsd1;
|
||||
"bsd-2-clause" = lib.licenses.bsd2;
|
||||
"bsd-3-clause" = lib.licenses.bsd3;
|
||||
"lgpl-2.0+" = lib.licenses.lgpl2Plus;
|
||||
"lgpl-2.1-or-later" = lib.licenses.lgpl21Plus;
|
||||
"public-domain" = lib.licenses.publicDomain;
|
||||
}).${license} or license;
|
||||
})
|
||||
(lib.importTOML ./deps.toml))));
|
||||
|
||||
egg2nix = self.callPackage ./egg2nix.nix { };
|
||||
|
||||
})
|
||||
|
|
|
@ -15418,8 +15418,8 @@ with pkgs;
|
|||
colmap = libsForQt5.callPackage ../applications/science/misc/colmap { inherit (config) cudaSupport; };
|
||||
colmapWithCuda = colmap.override { cudaSupport = true; };
|
||||
|
||||
chickenPackages_4 = callPackage ../development/compilers/chicken/4 { };
|
||||
chickenPackages_5 = callPackage ../development/compilers/chicken/5 { };
|
||||
chickenPackages_4 = recurseIntoAttrs (callPackage ../development/compilers/chicken/4 { });
|
||||
chickenPackages_5 = recurseIntoAttrs (callPackage ../development/compilers/chicken/5 { });
|
||||
chickenPackages = dontRecurseIntoAttrs chickenPackages_5;
|
||||
|
||||
inherit (chickenPackages_5)
|
||||
|
|
Loading…
Reference in a new issue