diff --git a/doc/manual/conf-file.xml b/doc/manual/conf-file.xml index 19e86808ec..cb47b99418 100644 --- a/doc/manual/conf-file.xml +++ b/doc/manual/conf-file.xml @@ -97,6 +97,25 @@ env-keep-derivations = false + build-cores + + Sets the value of the + NIX_BUILD_CORES environment variable in the + invocation of builders. Builders can use this variable at their + discretion to control the maximum amount of parallelism. For + instance, in Nixpkgs, if the derivation attribute + enableParallelBuilding is set to + true, the builder passes the + flag to GNU Make. + It can be overriden using the command line switch and + defaults to 1. The value 0 + means that the builder should use all available CPU cores in the + system. + + + + build-max-silent-time diff --git a/doc/manual/manual.xml b/doc/manual/manual.xml index df926841aa..090a92ce6b 100644 --- a/doc/manual/manual.xml +++ b/doc/manual/manual.xml @@ -27,10 +27,11 @@ 2007 2008 2009 + 2010 Eelco Dolstra - September 2009 + August 2010 diff --git a/doc/manual/nix-push.xml b/doc/manual/nix-push.xml index 1435c55949..d2a7e063e5 100644 --- a/doc/manual/nix-push.xml +++ b/doc/manual/nix-push.xml @@ -120,7 +120,7 @@ dependencies used in the build, such as compilers). dependencies, we can do: -$ nix-push urls $(nix-instantiate $(nix-store -r foo.nix)) +$ nix-push urls $(nix-store -r $(nix-instantiate foo.nix)) diff --git a/doc/manual/opt-common-syn.xml b/doc/manual/opt-common-syn.xml index 0412fcb6ab..da60288b2a 100644 --- a/doc/manual/opt-common-syn.xml +++ b/doc/manual/opt-common-syn.xml @@ -13,6 +13,10 @@ number + + + number + number diff --git a/doc/manual/opt-common.xml b/doc/manual/opt-common.xml index 3be9f5dd5f..2d67162d7c 100644 --- a/doc/manual/opt-common.xml +++ b/doc/manual/opt-common.xml @@ -98,7 +98,25 @@ linkend='conf-build-max-jobs'>build-max-jobs configuration setting, which itself defaults to 1. A higher value is useful on SMP systems or to - exploit I/O latency. + exploit I/O latency. + + + + + + + Sets the value of the NIX_BUILD_CORES + environment variable in the invocation of builders. Builders can + use this variable at their discretion to control the maximum amount + of parallelism. For instance, in Nixpkgs, if the derivation + attribute enableParallelBuilding is set to + true, the builder passes the + flag to GNU Make. + It defaults to the value of the build-cores + configuration setting, if set, or 1 otherwise. + The value 0 means that the builder should use all + available CPU cores in the system. diff --git a/doc/manual/release-notes.xml b/doc/manual/release-notes.xml index e795634404..5b1c30bf82 100644 --- a/doc/manual/release-notes.xml +++ b/doc/manual/release-notes.xml @@ -6,6 +6,59 @@ + + +
Release 0.16 (August 17, 2010) + +This release has the following improvements: + + + + + The Nix expression evaluator is now much faster in most + cases: typically, 3 + to 8 times compared to the old implementation. It also + uses less memory. It no longer depends on the ATerm + library. + + + + + Support for configurable parallelism inside builders. Build + scripts have always had the ability to perform multiple build + actions in parallel (for instance, by running make -j + 2), but this was not desirable because the number of + actions to be performed in parallel was not configurable. Nix + now has an option as well as a configuration + setting build-cores = + N that causes the + environment variable NIX_BUILD_CORES to be set to + N when the builder is invoked. The + builder can use this at its discretion to perform a parallel + build, e.g., by calling make -j + N. In Nixpkgs, this can be + enabled on a per-package basis by setting the derivation + attribute enableParallelBuilding to + true. + + + + + nix-store -q now supports XML output + through the flag. + + + + Several bug fixes. + + + + +
+ +
Release 0.15 (March 17, 2010) diff --git a/nix.conf.example b/nix.conf.example index 7063bed54c..3c55b570e6 100644 --- a/nix.conf.example +++ b/nix.conf.example @@ -63,7 +63,7 @@ # # This option defines the number of CPU cores to utilize in parallel # within a build job, i.e. by passing an appropriate `-jN' flag to GNU -# make. The default is 1, meaning that parallel building within jobs +# Make. The default is 1, meaning that parallel building within jobs # is disabled. Passing the special value `0' causes Nix to try and # auto-detect the number of available cores on the local host. This # setting can be overridden using the `--cores' command line switch. diff --git a/release.nix b/release.nix index 62ac87da73..589d0f035e 100644 --- a/release.nix +++ b/release.nix @@ -1,5 +1,5 @@ -{ nix ? {outPath = ./.; rev = 1234;} -, nixpkgs ? ../nixpkgs +{ nixpkgs ? ../nixpkgs +, nix ? { outPath = ./.; rev = 1234; } , officialRelease ? false }: @@ -64,7 +64,7 @@ let build = { system ? "i686-linux" }: - with import nixpkgs {inherit system;}; + with import nixpkgs { inherit system; }; releaseTools.nixBuild { name = "nix"; @@ -80,7 +80,7 @@ let coverage = - with import nixpkgs {}; + with import nixpkgs { system = "x86_64-linux"; }; releaseTools.coverageAnalysis { name = "nix-build"; @@ -143,7 +143,7 @@ let makeRPM = system: diskImageFun: prio: - with import nixpkgs {inherit system;}; + with import nixpkgs { inherit system; }; releaseTools.rpmBuild rec { name = "nix-rpm-${diskImage.name}"; @@ -160,7 +160,7 @@ let makeDeb = system: diskImageFun: prio: - with import nixpkgs {inherit system;}; + with import nixpkgs { inherit system; }; releaseTools.debBuild { name = "nix-deb"; @@ -169,7 +169,7 @@ let memSize = 1024; meta.schedulingPriority = prio; configureFlags = "--sysconfdir=/etc"; - debRequires = ["curl"]; + debRequires = [ "curl" ]; }; diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc index 93319ebb8e..8f162daeee 100644 --- a/src/libstore/remote-store.cc +++ b/src/libstore/remote-store.cc @@ -198,6 +198,9 @@ void RemoteStore::setOptions() writeInt(logType, to); writeInt(printBuildTrace, to); } + if (GET_PROTOCOL_MINOR(daemonVersion) >= 6) { + writeInt(buildCores, to); + } processStderr(); } diff --git a/src/libstore/worker-protocol.hh b/src/libstore/worker-protocol.hh index 392a69acf6..a4dc690b74 100644 --- a/src/libstore/worker-protocol.hh +++ b/src/libstore/worker-protocol.hh @@ -8,7 +8,7 @@ namespace nix { #define WORKER_MAGIC_1 0x6e697863 #define WORKER_MAGIC_2 0x6478696f -#define PROTOCOL_VERSION 0x105 +#define PROTOCOL_VERSION 0x106 #define GET_PROTOCOL_MAJOR(x) ((x) & 0xff00) #define GET_PROTOCOL_MINOR(x) ((x) & 0x00ff) diff --git a/src/nix-worker/nix-worker.cc b/src/nix-worker/nix-worker.cc index b292b83ed5..9be733d8c7 100644 --- a/src/nix-worker/nix-worker.cc +++ b/src/nix-worker/nix-worker.cc @@ -502,6 +502,9 @@ static void performOp(unsigned int clientVersion, logType = (LogType) readInt(from); printBuildTrace = readInt(from) != 0; } + if (GET_PROTOCOL_MINOR(clientVersion) >= 6) { + buildCores = readInt(from); + } startWork(); stopWork(); break; diff --git a/version b/version index a59ac46083..9f8e9b69a3 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.16 \ No newline at end of file +1.0 \ No newline at end of file