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>
I'm not entirely sure what the appropriate license attribute for this
package is. The license [1] says:
| 2.1.2 Linux/FreeBSD Exception. Notwithstanding the foregoing terms of
| Section 2.1.1, SOFTWARE designed exclusively for use on the Linux or
| FreeBSD operating systems, or other operating systems derived from
| the source code to these operating systems, may be copied and
| redistributed, provided that the binary files thereof are not
| modified in any way (except for unzipping of compressed files).
It sounds to me like this gives NixOS the right to re-distribute the
files (because we don't modify them). The 'proprietary' license sort-of
fits that. On the other hand, we seem to assume that proprietary
software cannot be redistributed, which doesn't apply here.
[1] http://www.nvidia.com/content/DriverDownload-March2009/licence.php?lang=us