summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2009-03-10 15:23:27 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2009-03-10 15:23:27 +0000
commit731b77ac35945d6762b65d9dcfb54c614a2c07da (patch)
tree45f39a4aafd8ec81de7e05d6ee595790e83df2bc
parentb53ef575548dc53dd39bbe75e2a00b26d943f161 (diff)
downloadnixlib-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.nix106
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;
+  };
+
 }