That is, there are now distinct jobs like ‘coreutils.x86_64-linux’ and
‘coreutils.x86_64-darwin’, rather than a single job ‘coreutils’ with
multiple builds. This means that testing a job is simpler:
$ nix-build pkgs/top-level/release.nix -A coreutils.x86_64-linux
See https://github.com/NixOS/hydra/issues/60 for the motivation.
If set to false, mkDerivation will throw an exception if a package has
an unfree license. ‘release-lib.nix’ uses this to enforce that we
don't build unfree packages as part of the Nixpkgs channel. Since
this is set through Nixpkgs' ‘config’ argument, it's more finegrained
than $HYDRA_DISALLOW_UNFREE.
This is for consistency with terminology in stdenv (and the terms
"hostDrv" and "buildDrv" are not very intuitive, even if they're
consistent with GNU terminology).
time and space on the new (non-ATerm) Nix expression evaluator. It
turns out that release.nix relied rather heavily on maximal laziness
for efficiency: every job calls `allPackages { inherit system; }'
for each platform. This causes the dependencies of the job to be
reevaluated for every job/platform combination. This is very slow
and (because the evaluator doesn't have a garbage collector yet)
eventually causes the evaluator to run out of memory and be killed.
As a workaround, I've replaced the calls to `allPackages' with a
quasi-memoised `pkgsFor' function. It "caches" the result by going
through a variable such as `pkgs_x86_64_linux', which is evaluated
only once. Evaluation now only takes 4.4s and 545 MiB on my
machine.
A cleaner solution may be to move the `system' argument outwards so
that entire set of jobs is called only once for each value of
`system'.
svn path=/nixpkgs/trunk/; revision=21966
I want to cross-build utillinux and coreutils, and that play will have to go in stdenv-updates I think.
svn path=/nixpkgs/branches/stdenv-updates/; revision=20506