diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-03-10 15:23:27 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-03-10 15:23:27 +0000 |
commit | 731b77ac35945d6762b65d9dcfb54c614a2c07da (patch) | |
tree | 45f39a4aafd8ec81de7e05d6ee595790e83df2bc | |
parent | b53ef575548dc53dd39bbe75e2a00b26d943f161 (diff) | |
download | nixlib-731b77ac35945d6762b65d9dcfb54c614a2c07da.tar nixlib-731b77ac35945d6762b65d9dcfb54c614a2c07da.tar.gz nixlib-731b77ac35945d6762b65d9dcfb54c614a2c07da.tar.bz2 nixlib-731b77ac35945d6762b65d9dcfb54c614a2c07da.tar.lz nixlib-731b77ac35945d6762b65d9dcfb54c614a2c07da.tar.xz nixlib-731b77ac35945d6762b65d9dcfb54c614a2c07da.tar.zst nixlib-731b77ac35945d6762b65d9dcfb54c614a2c07da.zip |
* Nicer notation for Nixpkgs' Hydra jobs. The packages to build are
given as a nested attribute set isomorphic to all-packages.nix, where the value for each attribute is a list of platforms on which to build the package. For instance, { wine = ["i686-linux"]; xorg = { libX11 = ["i686-linux" "x86_64-linux"]; }; } says that the "wine" attribute in all-packages.nix should be built on "i686-linux" only, while the "xorg.libX11" attribute should be built on "i686-linux" and "x86_64-linux". There are some aliases for common platform groups (currently "all" for all supported platforms, "linux" for all supported Linux platforms). svn path=/nixpkgs/trunk/; revision=14496
-rw-r--r-- | pkgs/top-level/release.nix | 106 |
1 files changed, 53 insertions, 53 deletions
diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index ab21f5353699..55e56e67c689 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -4,76 +4,76 @@ let pkgs = allPackages {}; + /* Perform a job on the given set of platforms. The function `f' is + called by Hydra for each platform, and should return some job + to build on that platform. `f' is passed the Nixpkgs collection + for the platform in question. */ testOn = systems: f: {system ? builtins.currentSystem}: if pkgs.lib.elem system systems then f (allPackages {inherit system;}) else {}; - - testOnLinux = testOn ["i686-linux" "x86_64-linux"]; - test = testOn ["i686-linux" "x86_64-linux" "i686-darwin" "i686-cygwin"]; + /* Map an attribute of the form `foo = [platforms...]' to `testOn + [platforms...] (pkgs: pkgs.foo)'. */ + mapTestOn = pkgs.lib.mapAttrsRecursive + (path: value: testOn value (pkgs: pkgs.lib.getAttrFromPath path pkgs)); + + /* Common platform groups on which to test packages. */ + all = ["i686-linux" "x86_64-linux" "i686-darwin" "i686-cygwin"]; + linux = ["i686-linux" "x86_64-linux"]; in { tarball = import ./make-tarball.nix; - /* All the top-level packages that we want to build in the build - farm. The notation is still kinda clumsy. We could use some - meta-programming. E.g. we would want to write - - wine = ["i686-linux"]; - - which would be translated to +} // mapTestOn { - wine = testOn ["i686-linux"] (pkgs: pkgs.wine); - - Shouldn't be too hard to make a function that recurses over the - attrset and does this for every attribute. */ - - MPlayer = testOnLinux (pkgs: pkgs.MPlayer); - autoconf = test (pkgs: pkgs.autoconf); - bash = test (pkgs: pkgs.bash); - firefox3 = testOnLinux (pkgs: pkgs.firefox3); - gcc = test (pkgs: pkgs.gcc); - hello = test (pkgs: pkgs.hello); - libsmbios = testOnLinux (pkgs: pkgs.libsmbios); - libtool = test (pkgs: pkgs.libtool); - pan = testOnLinux (pkgs: pkgs.pan); - perl = test (pkgs: pkgs.perl); - python = test (pkgs: pkgs.python); - thunderbird = testOnLinux (pkgs: pkgs.thunderbird); - wine = testOn ["i686-linux"] (pkgs: pkgs.wine); - - xorg = { - libX11 = testOnLinux (pkgs: pkgs.xorg.libX11); - }; + MPlayer = linux; + apacheHttpd = linux; + autoconf = all; + bash = all; + firefox3 = linux; + gcc = all; + hello = all; + libsmbios = linux; + libtool = all; + pan = linux; + perl = all; + python = all; + thunderbird = linux; + vlc = linux; + wine = ["i686-linux"]; kde42 = { - kdeadmin = testOnLinux (pkgs: pkgs.kde42.kdeadmin); - kdeartwork = testOnLinux (pkgs: pkgs.kde42.kdeartwork); - kdebase = testOnLinux (pkgs: pkgs.kde42.kdebase); - kdebase_runtime = testOnLinux (pkgs: pkgs.kde42.kdebase_runtime); - kdebase_workspace = testOnLinux (pkgs: pkgs.kde42.kdebase_workspace); - kdeedu = testOnLinux (pkgs: pkgs.kde42.kdeedu); - kdegames = testOnLinux (pkgs: pkgs.kde42.kdegames); - kdegraphics = testOnLinux (pkgs: pkgs.kde42.kdegraphics); - kdelibs = testOnLinux (pkgs: pkgs.kde42.kdelibs); - kdemultimedia = testOnLinux (pkgs: pkgs.kde42.kdemultimedia); - kdenetwork = testOnLinux (pkgs: pkgs.kde42.kdenetwork); - kdepim = testOnLinux (pkgs: pkgs.kde42.kdepim); - kdeplasma_addons = testOnLinux (pkgs: pkgs.kde42.kdeplasma_addons); - kdesdk = testOnLinux (pkgs: pkgs.kde42.kdesdk); - kdetoys = testOnLinux (pkgs: pkgs.kde42.kdetoys); - kdeutils = testOnLinux (pkgs: pkgs.kde42.kdeutils); - kdewebdev = testOnLinux (pkgs: pkgs.kde42.kdewebdev); + kdeadmin = linux; + kdeartwork = linux; + kdebase = linux; + kdebase_runtime = linux; + kdebase_workspace = linux; + kdeedu = linux; + kdegames = linux; + kdegraphics = linux; + kdelibs = linux; + kdemultimedia = linux; + kdenetwork = linux; + kdepim = linux; + kdeplasma_addons = linux; + kdesdk = linux; + kdetoys = linux; + kdeutils = linux; + kdewebdev = linux; }; kernelPackages_2_6_27 = { - aufs = testOnLinux (pkgs: pkgs.kernelPackages_2_6_27.aufs); - kernel = testOnLinux (pkgs: pkgs.kernelPackages_2_6_27.kernel); + aufs = linux; + kernel = linux; }; kernelPackages_2_6_28 = { - aufs = testOnLinux (pkgs: pkgs.kernelPackages_2_6_28.aufs); - kernel = testOnLinux (pkgs: pkgs.kernelPackages_2_6_28.kernel); + aufs = linux; + kernel = linux; }; + xorg = { + libX11 = linux; + }; + } |