diff --git a/doc/meta.xml b/doc/meta.xml index df84915cc091..00e9b8ac67a1 100644 --- a/doc/meta.xml +++ b/doc/meta.xml @@ -118,6 +118,47 @@ interpretation: package). + + platforms + The list of Nix platform types on which the + package is supported. If this attribute is set, the package will + refuse to build, and won’t show up in nix-env + -qa output, on any platform not listed + here. An example is: + + +meta.platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + + + The set lib.platforms defines various common + lists of platforms types, so it’s more typical to write: + + +meta.platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; + + + + + + + hydraPlatforms + The list of Nix platform types for which the Hydra + instance at hydra.nixos.org should build the + package. (Hydra is the Nix-based continuous build system.) It + defaults to the value of meta.platforms. Thus, + the only reason to set meta.hydraPlatforms is + if you want hydra.nixos.org to build the + package on a subset of meta.platforms, or not + at all, e.g. + + +meta.platforms = stdenv.lib.platforms.linux; +meta.hydraPlatforms = []; + + + + + broken If set to true, the package is diff --git a/pkgs/applications/version-management/darcs/default.nix b/pkgs/applications/version-management/darcs/default.nix index f33e479b3ada..8ec65e50adf3 100644 --- a/pkgs/applications/version-management/darcs/default.nix +++ b/pkgs/applications/version-management/darcs/default.nix @@ -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 ]; }; }) diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 1ade24736279..3e1fc920a59b 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -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 diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index 35595a7b8f4f..f9239bb5fba1 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -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 = []; }; } diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index 083a71548b91..fcd7439e97e8 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -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"]) diff --git a/pkgs/top-level/release-lib.nix b/pkgs/top-level/release-lib.nix index 3280df09dd54..e2f5309ced33 100644 --- a/pkgs/top-level/release-lib.nix +++ b/pkgs/top-level/release-lib.nix @@ -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. */