Only show/build a package on the platforms listed in meta.platforms
The function ‘mkDerivation’ now checks whether the current platform type is included in a package's meta.platform field. If not, it throws an exception: $ nix-build -A linux --argstr system x86_64-darwin error: user-thrown exception: the package ‘linux-3.10.15’ is not supported on ‘x86_64-darwin’ These packages also no longer show up in ‘nix-env -qa’ output. This means, for instance, that the number of packages shown on x86_64-freebsd has dropped from 9268 to 4764. Since meta.platforms was also used to prevent Hydra from building some packages, there now is a new attribute meta.hydraPlatforms listing the platforms on which Hydra should build the package (which defaults to meta.platforms).
This commit is contained in:
@@ -21,10 +21,13 @@ cabal.mkDerivation (self: {
|
||||
mv contrib/darcs_completion $out/etc/bash_completion.d/darcs
|
||||
'';
|
||||
meta = {
|
||||
homepage = "http://darcs.net/";
|
||||
description = "a distributed, interactive, smart revision control system";
|
||||
homepage = http://darcs.net/;
|
||||
description = "A distributed, interactive, smart revision control system";
|
||||
license = "GPL";
|
||||
platforms = self.ghc.meta.platforms;
|
||||
# FIXME: this gives an infinite recursion in the "darcs" attribute
|
||||
# in all-packages.nix.
|
||||
#platforms = self.ghc.meta.platforms;
|
||||
platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
|
||||
maintainers = [ self.stdenv.lib.maintainers.andres ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -40,9 +40,6 @@
|
||||
, ...
|
||||
}:
|
||||
|
||||
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"
|
||||
|| stdenv.isArm || stdenv.system == "mips64el-linux";
|
||||
|
||||
assert stdenv.platform.name == "sheevaplug" -> stdenv.platform.uboot != null;
|
||||
|
||||
let
|
||||
|
||||
@@ -21,8 +21,7 @@ stdenv.mkDerivation {
|
||||
|
||||
patches =
|
||||
[ ./version-test.patch ]
|
||||
++ optional (!libsOnly && versionAtLeast kernelDev.version "3.11") ./nvidia-drivers-linux-3.11-incremental.patch
|
||||
;
|
||||
++ optional (!libsOnly && versionAtLeast kernelDev.version "3.11") ./nvidia-drivers-linux-3.11-incremental.patch;
|
||||
|
||||
src =
|
||||
if stdenv.system == "i686-linux" then
|
||||
@@ -58,5 +57,7 @@ stdenv.mkDerivation {
|
||||
homepage = http://www.nvidia.com/object/unix.html;
|
||||
description = "X.org driver and kernel module for NVIDIA graphics cards";
|
||||
license = stdenv.lib.licenses.unfreeRedistributable;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
hydraPlatforms = [];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -55,6 +55,8 @@ let
|
||||
throw "package ‘${attrs.name}’ has an unfree license, refusing to evaluate"
|
||||
else if !allowBroken && attrs.meta.broken or false then
|
||||
throw "you can't use package ‘${attrs.name}’ because it has been marked as broken"
|
||||
else if !allowBroken && attrs.meta.platforms or null != null && !lib.lists.elem result.system attrs.meta.platforms then
|
||||
throw "the package ‘${attrs.name}’ is not supported on ‘${result.system}’"
|
||||
else
|
||||
lib.addPassthru (derivation (
|
||||
(removeAttrs attrs ["meta" "passthru" "crossAttrs"])
|
||||
|
||||
@@ -119,14 +119,12 @@ rec {
|
||||
|
||||
# May fail as much as it wishes, we will catch the error.
|
||||
processPackage = attrSet:
|
||||
if attrSet ? recurseForDerivations && attrSet.recurseForDerivations then
|
||||
if attrSet.recurseForDerivations or false then
|
||||
packagesWithMetaPlatform attrSet
|
||||
else if attrSet ? recurseForRelease && attrSet.recurseForRelease then
|
||||
else if attrSet.recurseForRelease or false then
|
||||
packagesWithMetaPlatform attrSet
|
||||
else
|
||||
if attrSet ? meta && attrSet.meta ? platforms
|
||||
then attrSet.meta.platforms
|
||||
else [];
|
||||
attrSet.meta.hydraPlatforms or (attrSet.meta.platforms or []);
|
||||
|
||||
|
||||
/* Common platform groups on which to test packages. */
|
||||
|
||||
Reference in New Issue
Block a user