Author: sandervanderburg
Date: Thu Dec 23 16:02:13 2010
New Revision: 25258
URL: https://svn.nixos.org/websvn/nix/?rev=25258&sc=1

Log:
Fundemental fix: The services model now takes a pkgs attribute, so that it's no 
longer needed to import Nixpkgs yourselves. This also fixes the problems with 
picking the right Nixpkgs variant on Hydra

Modified:
   disnix/disnix/trunk/data/gendist-roundrobin.nix
   disnix/disnix/trunk/data/instantiate.nix
   disnix/disnix/trunk/data/lib.nix
   disnix/disnix/trunk/data/manifest.nix
   disnix/disnix/trunk/tests/manifest/services-complete.nix
   disnix/disnix/trunk/tests/manifest/services-composition.nix
   disnix/disnix/trunk/tests/manifest/services-incomplete.nix

Modified: disnix/disnix/trunk/data/gendist-roundrobin.nix
==============================================================================
--- disnix/disnix/trunk/data/gendist-roundrobin.nix     Thu Dec 23 13:56:04 
2010        (r25257)
+++ disnix/disnix/trunk/data/gendist-roundrobin.nix     Thu Dec 23 16:02:13 
2010        (r25258)
@@ -8,7 +8,7 @@
   infrastructure = import infrastructureFile;
   
   pkgs = import nixpkgs {};
-  lib = import ./lib.nix;
+  lib = import ./lib.nix { inherit pkgs nixpkgs; };
 in
 pkgs.stdenv.mkDerivation {
   name = "distribution.nix";

Modified: disnix/disnix/trunk/data/instantiate.nix
==============================================================================
--- disnix/disnix/trunk/data/instantiate.nix    Thu Dec 23 13:56:04 2010        
(r25257)
+++ disnix/disnix/trunk/data/instantiate.nix    Thu Dec 23 16:02:13 2010        
(r25258)
@@ -11,7 +11,7 @@
   distributionFun = import distributionFile;
   
   pkgs = import nixpkgs {};
-  lib = import ./lib.nix;
+  lib = import ./lib.nix { inherit nixpkgs pkgs; };
   distributedDerivation = lib.generateDistributedDerivation servicesFun 
infrastructure distributionFun targetProperty;
   
   generateDistributedDerivationXSL = ./generatedistributedderivation.xsl;

Modified: disnix/disnix/trunk/data/lib.nix
==============================================================================
--- disnix/disnix/trunk/data/lib.nix    Thu Dec 23 13:56:04 2010        (r25257)
+++ disnix/disnix/trunk/data/lib.nix    Thu Dec 23 16:02:13 2010        (r25258)
@@ -1,3 +1,27 @@
+{nixpkgs, pkgs}:
+
+let
+  /* Defines all variants of Nixpkgs */
+  pkgs_i686_linux = import nixpkgs { system = "i686-linux"; };
+  pkgs_x86_64_linux = import nixpkgs { system = "x86_64-linux"; };
+  pkgs_i686_darwin = import nixpkgs { system = "i686-darwin"; };
+  pkgs_x86_64_darwin = import nixpkgs { system = "x86_64-darwin"; };
+  pkgs_i686_freebsd = import nixpkgs { system = "i686-freebsd"; };
+  pkgs_x86_64_freebsd = import nixpkgs { system = "x86_64-freebsd"; };
+  pkgs_i686_cygwin = import nixpkgs { system = "i686-cygwin"; };
+  
+  /* Determines the right pkgs collection from the system identifier */
+  
+  selectPkgs = system:
+    if system == "i686-linux" then pkgs_i686_linux
+    else if system == "x86_64-linux" then pkgs_x86_64_linux
+    else if system == "i686-darwin" then pkgs_i686_darwin
+    else if system == "x86_64-darwin" then pkgs_x86_64_darwin
+    else if system == "i686-freebsd" then pkgs_i686_freebsd
+    else if system == "x86_64-freebsd" then pkgs_x86_64_freebsd
+    else if system == "i686-cygwin" then pkgs_i686_cygwin
+    else abort "unsupported system type: ${system}";
+in
 rec {
   inherit (builtins) attrNames getAttr listToAttrs head tail 
unsafeDiscardOutputDependency;
   
@@ -76,7 +100,7 @@
          distribution = map (target:
            let
              system = if target ? system then target.system else 
builtins.currentSystem;
-             pkg = (getAttr serviceName (servicesFun { inherit distribution; 
inherit system; })).pkg;
+             pkg = (getAttr serviceName (servicesFun { inherit distribution; 
inherit system; pkgs = selectPkgs system; })).pkg;
            in
            { service = 
                if serviceProperty == "outPath" then
@@ -241,7 +265,7 @@
   generateManifest = pkgs: servicesFun: infrastructure: distributionFun: 
targetProperty:
     let
       distribution = distributionFun { inherit infrastructure; };
-      initialServices = servicesFun { inherit distribution; system = null; };
+      initialServices = servicesFun { inherit distribution; system = null; 
inherit pkgs; };
       servicesWithTargets = augumentTargetsInDependsOn distribution 
initialServices;
       servicesWithDistribution = evaluatePkgFunctions distribution 
servicesWithTargets servicesFun "outPath";
       serviceActivationMapping = generateServiceActivationMapping (attrNames 
servicesWithDistribution) servicesWithDistribution targetProperty;
@@ -269,7 +293,7 @@
   generateDistributedDerivation = servicesFun: infrastructure: 
distributionFun: targetProperty:
     let
       distribution = distributionFun { inherit infrastructure; };
-      initialServices = servicesFun { inherit distribution; system = null; };
+      initialServices = servicesFun { inherit distribution; system = null; 
inherit pkgs; };
       servicesWithTargets = augumentTargetsInDependsOn distribution 
initialServices;
       servicesWithDistribution = evaluatePkgFunctions distribution 
servicesWithTargets servicesFun "drvPath";
       serviceActivationMapping = generateServiceActivationMapping (attrNames 
servicesWithDistribution) servicesWithDistribution targetProperty;
@@ -311,7 +335,7 @@
    */
   generateDistributionModelRoundRobin = servicesFun: infrastructure:
     let
-      services = servicesFun { distribution = null; system = null; };
+      services = servicesFun { distribution = null; system = null; inherit 
pkgs; };
     in
     ''
       {infrastructure}:

Modified: disnix/disnix/trunk/data/manifest.nix
==============================================================================
--- disnix/disnix/trunk/data/manifest.nix       Thu Dec 23 13:56:04 2010        
(r25257)
+++ disnix/disnix/trunk/data/manifest.nix       Thu Dec 23 16:02:13 2010        
(r25258)
@@ -11,7 +11,7 @@
   distributionFun = import distributionFile;
   
   pkgs = import nixpkgs {};
-  lib = import ./lib.nix;
+  lib = import ./lib.nix { inherit nixpkgs pkgs; };
   manifest = lib.generateManifest pkgs servicesFun infrastructure 
distributionFun targetProperty;
   
   generateManifestXSL = ./generatemanifest.xsl;

Modified: disnix/disnix/trunk/tests/manifest/services-complete.nix
==============================================================================
--- disnix/disnix/trunk/tests/manifest/services-complete.nix    Thu Dec 23 
13:56:04 2010        (r25257)
+++ disnix/disnix/trunk/tests/manifest/services-complete.nix    Thu Dec 23 
16:02:13 2010        (r25258)
@@ -1,18 +1,18 @@
-{distribution, system}:
+{distribution, system, pkgs}:
 
 let
-  pkgs = import ./pkgs { inherit system; };
+  customPkgs = import ./pkgs { inherit system; };
 in
 rec {
   testService1 = {
     name = "testService1";
-    pkg = pkgs.testService1;
+    pkg = customPkgs.testService1;
     type = "echo";
   };
   
   testService2 = {
     name = "testService2";
-    pkg = pkgs.testService2;
+    pkg = customPkgs.testService2;
     dependsOn = {
       inherit testService1;
     };
@@ -21,7 +21,7 @@
   
   testService3 = {
     name = "testService3";
-    pkg = pkgs.testService3;
+    pkg = customPkgs.testService3;
     dependsOn = {
       inherit testService1 testService2;
     };

Modified: disnix/disnix/trunk/tests/manifest/services-composition.nix
==============================================================================
--- disnix/disnix/trunk/tests/manifest/services-composition.nix Thu Dec 23 
13:56:04 2010        (r25257)
+++ disnix/disnix/trunk/tests/manifest/services-composition.nix Thu Dec 23 
16:02:13 2010        (r25258)
@@ -1,18 +1,18 @@
-{distribution, system}:
+{distribution, system, pkgs}:
 
 let
-  pkgs = import ./pkgs { inherit system; };
+  customPkgs = import ./pkgs { inherit system; };
 in
 rec {
   testService1 = {
     name = "testService1";
-    pkg = pkgs.testService1;
+    pkg = customPkgs.testService1;
     type = "echo";
   };
   
   testService2 = {
     name = "testService2";
-    pkg = pkgs.testService2;
+    pkg = customPkgs.testService2;
     dependsOn = {
       inherit testService1;
     };
@@ -21,7 +21,7 @@
 
   testService2B = {
     name = "testService2B";
-    pkg = pkgs.testService2B;
+    pkg = customPkgs.testService2B;
     dependsOn = {
       inherit testService1;
     };
@@ -30,7 +30,7 @@
   
   testService3 = {
     name = "testService3";
-    pkg = pkgs.testService3;
+    pkg = customPkgs.testService3;
     dependsOn = {
       inherit testService1;
       testService2 = testService2B; # A custom composition

Modified: disnix/disnix/trunk/tests/manifest/services-incomplete.nix
==============================================================================
--- disnix/disnix/trunk/tests/manifest/services-incomplete.nix  Thu Dec 23 
13:56:04 2010        (r25257)
+++ disnix/disnix/trunk/tests/manifest/services-incomplete.nix  Thu Dec 23 
16:02:13 2010        (r25258)
@@ -1,18 +1,18 @@
-{distribution, system}:
+{distribution, system, pkgs}:
 
 let
-  pkgs = import ./pkgs { inherit system; };
+  customPkgs = import ./pkgs { inherit system; };
 in
 rec {
   testService1 = {
     name = "testService1";
-    pkg = pkgs.testService1;
+    pkg = customPkgs.testService1;
     type = "echo";
   };
   
   testService2 = {
     name = "testService2";
-    pkg = pkgs.testService2;
+    pkg = customPkgs.testService2;
     dependsOn = {
       inherit testService1;
     };
@@ -21,7 +21,7 @@
   
   testService3 = {
     name = "testService3";
-    pkg = pkgs.testService3;
+    pkg = customPkgs.testService3;
     dependsOn = {
       inherit testService1; /*testService2;*/ # This triggers an error
     };
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to