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.
An aggregate is a trivial build that depends on other builds. This is
intended to provide a declarative replacement of Hydra's "view"
mechanism.
For instance, you can define an aggregate named "critical" that
depends on a selected set of jobs:
critical = releaseTools.aggregate
{ name = "foo-${tarball.version}";
members =
[ tarball
build.x86_64-linux
...
];
meta.description = "Release-critical builds";
};
The "critical" build will only succeed if all its members
(dependencies) succeed.
Without the --disable-nptl-bug-check configure option LinuxSampler
refuses to build. It seems to be a long standing bug. Despite this, I
have used LinuxSampler for over a week now and it seems OK.
libxslt has optional dependencies which may be found in /usr or
/usr/local on platforms that have a native stdenv. With those features
enabled, the build generated binaries that depend on libraries outside
of the store. In this particular case, the NixOS channel had binaries
for FreeBSD that depended on libgcrypt, apparently because that packages
happens to be installed outside of Nix on the build machine. On other
machines, however, those binaries failed with unresolvable references.
Our hard-linking code depended on md5sum, which FreeBSD doesn't have in its
system environment. To avoid that impure dependency, the hard-linking is now
done with the 'hardlink' utility from Nixpkgs.
libxslt has optional dependencies which may be found in /usr or
/usr/local on platforms that have a native stdenv. With those features
enabled, the build generated binaries that depend on libraries outside
of the store. In this particular case, the NixOS channel had binaries
for FreeBSD that depended on libgcrypt, apparently because that packages
happens to be installed outside of Nix on the build machine. On other
machines, however, those binaries failed with unresolvable references.
With multiple outputs, adding attributes to a derivation without
changing the {drv,out}Path is no longer as trivial as simply using the
`//' operator, as we usually want to add the attribute to _each_ output,
and even if we only care about one that one output can be reached via
multiple paths.
For stdenv.mkDerivation, we already had code in place to add passthru
and meta attributes to derivations. This commit simply factors part of
that code out into a lib function addPassthru, which takes a derivation
and an attribute set and appends the attribute set to each output of the
derivation.
Signed-off-by: Shea Levy <shea@shealevy.com>
First, pass in `self' again so that overriding works properly (thanks
for pointing that out, @edolstra)
Second, instead of having linuxPackages*.kernel mean something different
inside the set and out, add a new attribute linuxPackages*.kernelDev,
which for the generic kernel is simply linuxPackages*.kernel but for the
manual-config kernel is the `dev' output (which has the build tree,
source tree, etc.)
The second change required trivial modifications in a bunch of
expressions, I verified that all of the linuxPackages* sets defined in
all-packages.nix have the same drv paths before and after the change.
Signed-off-by: Shea Levy <shea@shealevy.com>