about summary refs log tree commit diff
path: root/pkgs/top-level/release-lib.nix
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-05-25 20:38:18 +0000
committerLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-05-25 20:38:18 +0000
commitfa1a414aeea9926721ed2b87b74e3f3755538e3b (patch)
tree5e4d6aea8bcd00c53b71a564ce9e0fe001751a84 /pkgs/top-level/release-lib.nix
parentd15811bf78eda2aacfa5274822ba07a911d9bca6 (diff)
parentc5098ff56e44ab8eeae3a067838cf4e139196d52 (diff)
downloadnixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.gz
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.bz2
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.lz
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.xz
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.zst
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.zip
Merging from trunk - I had to resolve conflicts on coreutils; I hope I resolved that
well


svn path=/nixpkgs/branches/stdenv-updates/; revision=21975
Diffstat (limited to 'pkgs/top-level/release-lib.nix')
-rw-r--r--pkgs/top-level/release-lib.nix23
1 files changed, 21 insertions, 2 deletions
diff --git a/pkgs/top-level/release-lib.nix b/pkgs/top-level/release-lib.nix
index 64530930ee50..be60de14ed81 100644
--- a/pkgs/top-level/release-lib.nix
+++ b/pkgs/top-level/release-lib.nix
@@ -3,7 +3,26 @@ rec {
 
   pkgs = allPackages {};
 
-  /* The working or failing letters for cross builds will be sent only to
+  /* !!! Hack: poor man's memoisation function.  Necessary for prevent
+     Nixpkgs from being evaluated again and again for every
+     job/platform pair. */
+  pkgsFor = system:
+    if system == "x86_64-linux" then pkgs_x86_64_linux
+    else if system == "i686-linux" then pkgs_i686_linux
+    else if system == "x86_64-darwin" then pkgs_x86_64_darwin
+    else if system == "i686-darwin" then pkgs_i686_darwin
+    else if system == "i686-freebsd" then pkgs_i686_freebsd
+    else if system == "i686-cygwin" then pkgs_i686_cygwin
+    else abort "unsupported system type: ${system}";
+
+  pkgs_x86_64_linux = allPackages { system = "x86_64-linux"; };
+  pkgs_i686_linux = allPackages { system = "i686-linux"; };
+  pkgs_x86_64_darwin = allPackages { system = "x86_64-darwin"; };
+  pkgs_i686_darwin = allPackages { system = "i686-darwin"; };
+  pkgs_i686_freebsd = allPackages { system = "i686-freebsd"; };
+  pkgs_i686_cygwin = allPackages { system = "i686-cygwin"; };
+
+  /* The working or failing mails for cross builds will be sent only to
      the following maintainers, as most package maintainers will not be
      interested in the result of cross building a package. */
   crossMaintainers = with pkgs.lib.maintainers; [ viric ];
@@ -23,7 +42,7 @@ rec {
      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 {};
+    if pkgs.lib.elem system systems then f (pkgsFor system) else {};
 
   /* Similar to the testOn function, but with an additional 'crossSystem'
    * parameter for allPackages, defining the target platform for cross builds */