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