From a3dd3cce6e1aa8aaf1f8c9eba7233b2a334e686e Mon Sep 17 00:00:00 2001 From: Daniel Nagy Date: Fri, 18 Aug 2023 11:45:00 +0200 Subject: [PATCH 1/2] chickenPackages.chickenEggs: update --- .../development/compilers/chicken/5/deps.toml | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/pkgs/development/compilers/chicken/5/deps.toml b/pkgs/development/compilers/chicken/5/deps.toml index b61c38506bb5..e54ac4691c70 100644 --- a/pkgs/development/compilers/chicken/5/deps.toml +++ b/pkgs/development/compilers/chicken/5/deps.toml @@ -107,9 +107,9 @@ version = "0.6" [apropos] dependencies = ["srfi-1", "utf8", "string-utils", "symbol-utils", "check-errors"] license = "bsd" -sha256 = "1xnqfnbnac4pzm4j3mphq09p18q962dxg11cfyxqk8k6v8qrv5nh" +sha256 = "0njkdxwd9122l9vql64nqm7dy3lggikr2bzwidwk7i8yz3nm3g6w" synopsis = "CHICKEN apropos" -version = "3.7.2" +version = "3.8.1" [arcadedb] dependencies = ["uri-common", "medea"] @@ -282,9 +282,9 @@ version = "1.37" [bitwise-utils] dependencies = [] license = "public-domain" -sha256 = "09fdcv81069br4pz0ccr2jj6xgakvwbshdiy21r85865r7r6g05m" +sha256 = "065q6ha8wsj6qhg7zxkaj2qrj5sm3iz2v7shcp5wh7j3fqwbs5q5" synopsis = "Bitwise utilities" -version = "1.2.5" +version = "1.3.0" [blas] dependencies = ["bind", "compile-file", "srfi-13"] @@ -364,11 +364,11 @@ synopsis = "Byte array utility procedures for blobs." version = "2.3" [cairo] -dependencies = [] +dependencies = ["srfi-1"] license = "lgpl-2.1" -sha256 = "1krsjlydqa9zj0bpad0w4x636kg30ng1azlyyn8j8vx3b8lcd362" +sha256 = "1x69i4aysn8mf93ic36947p6gvgglk8c0vg2m6vdhimf6y65szi1" synopsis = "Chicken bindings for Cairo, a vector graphics library" -version = "0.1.17" +version = "0.1.18" [call-table-generics] dependencies = ["brev-separate"] @@ -1157,9 +1157,9 @@ version = "0.4.2" [gochan] dependencies = ["matchable", "srfi-18", "queues"] license = "bsd" -sha256 = "1yp3yzfx97qfx8kkxvjvs1vnr2h8iffnx1zaqq05dbh5ivnx74j8" +sha256 = "1pyzr387zbbw7x9zk524qcs368hzxv4c46p24cz3x2nl30y84d5h" synopsis = "golang channels in CHICKEN" -version = "5.2.9" +version = "5.2.10" [graph-bfs] dependencies = ["srfi-1", "iset", "matchable", "yasos", "digraph"] @@ -1213,9 +1213,9 @@ version = "0.10.1" [hash-trie] dependencies = [] license = "mit" -sha256 = "0kcr99fdc0b09inq8ansb79ynblcxryvsg67zfms5y7z91v11p0c" +sha256 = "1860bp5h3kh0ra6b2qvb5pccylajq1x2hng0skqnv8ik068lnfr0" synopsis = "hash-trie" -version = "1.1.7" +version = "1.1.8" [heap-o-rama] dependencies = ["srfi-18"] @@ -1395,9 +1395,9 @@ version = "0.3" [ipfs] dependencies = ["http-client", "intarweb", "medea", "srfi-1", "srfi-13", "srfi-189", "srfi-197", "uri-common"] license = "unlicense" -sha256 = "1cxjbl5kl4xk42a4p8j3av6ip0gqvp5yxahsccvm0snc98n3ngqg" +sha256 = "1mw6z3piddy9xz494kv0243jhhirlb1dp15dph2p1ks4bhipbr4m" synopsis = "IPFS HTTP API for Scheme" -version = "0.0.12" +version = "0.0.13" [irc] dependencies = ["matchable", "regex", "srfi-1"] @@ -1556,9 +1556,9 @@ version = "1.2.1" [list-utils] dependencies = ["utf8", "srfi-1", "check-errors"] license = "bsd" -sha256 = "0wqmsvh3sfgp8ssh98n8y615lxnjlcda1k375jfss7vf8k5xn032" +sha256 = "0sbd04kmiahk7mbw1cy64n1qjz2rpldjx66aj41r964kjscm6izv" synopsis = "list-utils" -version = "2.4.3" +version = "2.5.1" [live-define] dependencies = ["matchable"] @@ -1794,9 +1794,9 @@ version = "0.7" [micro-benchmark] dependencies = ["micro-stats", "srfi-1"] license = "gplv3" -sha256 = "0ahvxdm350bc9v80gnb8ccmjqqp60jznfjkx7w5ypf0q61mnj8sj" +sha256 = "022fkwr1wm1im40rgk3g5dz8n4rvlw1zdmskqsh9idv31gbfi456" synopsis = "Easily create micro-benchmarks" -version = "0.0.19" +version = "0.0.20" [micro-stats] dependencies = ["srfi-1", "sequences", "sequences-utils"] @@ -2333,9 +2333,9 @@ version = "2.1.2" [rlimit] dependencies = ["srfi-13"] license = "bsd" -sha256 = "0jmz98253k3q9a6kyyby6jm722w3s74c5y3km7ih9ybjjmcdkyzv" +sha256 = "1yxdn9y11i8s9mj5dknlpz588d48bklylxcq73v0s48a5m7vfpwp" synopsis = "Setting resource limits" -version = "1.0.1" +version = "1.0.2" [rocksdb] dependencies = [] @@ -2368,9 +2368,9 @@ version = "0.9.12" [s9fes-char-graphics] dependencies = ["srfi-1", "utf8", "format"] license = "public-domain" -sha256 = "1h12l59860cyv8xwvvpf96dnlqwd25mrq2qapj9nyxv0vbkcs4p6" +sha256 = "1ysz8vrx7zwfv4drx955ca28avmdfilafd9a20sl67y5vwb47i8m" synopsis = "Scheme 9 from Empty Space Char Graphics" -version = "1.3.3" +version = "1.4.2" [salmonella-diff] dependencies = ["salmonella", "salmonella-html-report", "srfi-1", "srfi-13", "sxml-transforms"] @@ -2508,9 +2508,9 @@ version = "1.9.1" [sequences-utils] dependencies = ["srfi-1", "srfi-69", "sequences"] license = "bsd" -sha256 = "0s5yadn034a3g89xjcy0yxga7k60dadcnynv16yvbcfg4wjrs81k" +sha256 = "1c0yq4bzq6lkax4pwky5vyb2gl0yw88r7fzsbx37xsw14lb4fl64" synopsis = "(More) Generic sequence operators" -version = "0.4.0" +version = "0.5.0" [sequences] dependencies = ["fast-generic", "srfi-42"] @@ -3047,9 +3047,9 @@ version = "0.2.3" [srfi-18] dependencies = [] license = "bsd" -sha256 = "0v2pkdck0ji1wiqgg8sg4z6rbkj2qw4vy4b9lx0w0pmhlxqpg1xd" +sha256 = "0mkg3g045md9v74p4ac24q0c4xvvinz1nggakyg7wlg7c176i2l9" synopsis = "SRFI-18 thread library" -version = "0.1.6" +version = "0.1.7" [srfi-180] dependencies = ["r7rs", "srfi-60", "srfi-145", "srfi-121"] @@ -3068,9 +3068,9 @@ version = "1.0.3" [srfi-19] dependencies = ["srfi-1", "utf8", "srfi-18", "srfi-29", "srfi-69", "miscmacros", "locale", "record-variants", "check-errors"] license = "bsd" -sha256 = "14nyv6m67k2angmhg028rd50mq77qi1zfr5f0praiyy07k2pmcpz" +sha256 = "0mq9nd1ck1qq9bs415xw4sqlbw1jcrg9n1vrh8kiqy197xbymh0h" synopsis = "Time Data Types and Procedures" -version = "4.7.3" +version = "4.7.5" [srfi-193] dependencies = [] @@ -3159,9 +3159,9 @@ version = "4.2.2" [srfi-29] dependencies = ["srfi-1", "srfi-69", "utf8", "locale", "posix-utils", "condition-utils", "check-errors"] license = "bsd" -sha256 = "1wxz4kj6dqylfiqi035vzsphgbj68y6wwivmx25z5j11c8v3s81c" +sha256 = "15g2knq5b76f3nhxnmxidhkvbw9dyyc00hrzvsnpkmnfqzcmxbxw" synopsis = "Localization" -version = "3.0.6" +version = "3.0.7" [srfi-34] dependencies = [] @@ -3647,11 +3647,11 @@ synopsis = "tracing and breakpoints" version = "2.0" [transducers] -dependencies = ["srfi-1", "srfi-128", "srfi-133", "srfi-143", "srfi-146", "srfi-160", "check-errors"] +dependencies = ["srfi-1", "srfi-128", "srfi-133", "srfi-143", "srfi-146", "srfi-160", "check-errors", "r7rs"] license = "mit" -sha256 = "0mkrrfvskwgy5w8c9gz21np3p9857sm8fylq0hjz608jaxzybpcz" +sha256 = "162f0xvk69jha55sszdkgm47q18k3x5bc2g6psn2107im4ma45fi" synopsis = "Transducers for working with foldable data types." -version = "0.4.0" +version = "0.4.2" [transmission] dependencies = ["http-client", "intarweb", "medea", "r7rs", "srfi-1", "srfi-189", "uri-common"] @@ -3789,9 +3789,9 @@ version = "3.6.3" [uuid-lib] dependencies = ["record-variants"] license = "bsd" -sha256 = "0da71k0f3j1l9wjnfk9gqs9gw3v1192xhxbxv2gfmah3fvxf203p" +sha256 = "1hk5p2yvwq4dx93a1wnxggrbwkh050b6m9jlw44s7xvhxhvdqyns" synopsis = "OSF DCE 1.1 UUID" -version = "0.0.10" +version = "0.0.14" [uuid] dependencies = [] @@ -3915,9 +3915,9 @@ version = "0.2" [zshbrev] dependencies = ["brev"] license = "lgplv3" -sha256 = "16sn87z72x8d4ddbkwgz1jxas471r5nvazwi0klsn204v1qc30dy" +sha256 = "1id8a728ibi3fzcpfdd7ary41g7nrlb7pc3vjpmz70jp1q53qppx" synopsis = "Access Chicken functions from any shell and access zsh functions from Chicken" -version = "1.19" +version = "1.20" [zstd] dependencies = [] From f58a6078fa737bd9a2c68db99486132f88b132af Mon Sep 17 00:00:00 2001 From: Daniel Nagy Date: Fri, 21 Jul 2023 10:30:00 +0200 Subject: [PATCH 2/2] 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. --- doc/languages-frameworks/chicken.section.md | 29 ++++++++ .../compilers/chicken/4/default.nix | 2 +- .../compilers/chicken/5/default.nix | 66 ++++++++++--------- pkgs/top-level/all-packages.nix | 4 +- 4 files changed, 66 insertions(+), 35 deletions(-) diff --git a/doc/languages-frameworks/chicken.section.md b/doc/languages-frameworks/chicken.section.md index d329943dc3c2..72c2642a6478 100644 --- a/doc/languages-frameworks/chicken.section.md +++ b/doc/languages-frameworks/chicken.section.md @@ -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`. +# ... +``` diff --git a/pkgs/development/compilers/chicken/4/default.nix b/pkgs/development/compilers/chicken/4/default.nix index 08952e028de5..de64d20d3e05 100644 --- a/pkgs/development/compilers/chicken/4/default.nix +++ b/pkgs/development/compilers/chicken/4/default.nix @@ -18,4 +18,4 @@ let egg2nix = callPackage ./egg2nix.nix { }; }; -in lib.recurseIntoAttrs self +in self diff --git a/pkgs/development/compilers/chicken/5/default.nix b/pkgs/development/compilers/chicken/5/default.nix index 6aed893c97e6..e66b4940ff03 100644 --- a/pkgs/development/compilers/chicken/5/default.nix +++ b/pkgs/development/compilers/chicken/5/default.nix @@ -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 { }; + +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 44ddc8b5c06c..6c00749b7005 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.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)