nixpkgs/pkgs/build-support
John Ericson 63bd851e95 stdenv: Introduce hasCC attribute
Before, we'd always use `cc = null`, and check for that. The problem is
this breaks for cross compilation to platforms that don't support a C
compiler.

It's a very subtle issue. One might think there is no problem because we
have `stdenvNoCC`, and presumably one would only build derivations that
use that. The problem is that one still wants to use tools at build-time
that are themselves built with a C compiler, and those are gotten via
"splicing". The runtime version of those deps will explode, but the
build time / `buildPackages` versions of those deps will be fine, and
splicing attempts to work this by using `builtins.tryEval` to filter out
any broken "higher priority" packages (runtime is the default and
highest priority) so that both `foo` and `foo.nativeDrv` works.

However, `tryEval` only catches certain evaluation failures (e.g.
exceptions), and not arbitrary failures (such as `cc.attr` when `cc` is
null). This means `tryEval` fails to let us use our build time deps, and
everything comes apart.

The right solution is, as usually, to get rid of splicing. Or, baring
that, to make it so `foo` never works and one has to explicitly do
`foo.*`. But that is a much larger change, and certaily one unsuitable
to be backported to stable.

Given that, we instead make an exception-throwing `cc` attribute, and
create a `hasCC` attribute for those derivations which wish to
condtionally use a C compiler: instead of doing `stdenv.cc or null ==
null` or something similar, one does `stdenv.hasCC`. This allows quering
without "tripping" the exception, while also allowing `tryEval` to work.

No platform without a C compiler is yet wired up by default. That will
be done in a following commit.
2019-11-25 00:12:38 +00:00
..
add-opengl-runpath addOpenGLRunpath: only apply to ELF files 2019-05-23 16:52:45 -04:00
agda agda: use exec in agdaWrapper 2018-12-07 21:37:19 -05:00
appimage gdk-pixbuf: rename from gdk_pixbuf 2019-07-22 18:50:57 -04:00
bintools-wrapper stdenv: Introduce hasCC attribute 2019-11-25 00:12:38 +00:00
build-bazel-package buildBazelPackage: remove top-level symlinks 2019-08-19 11:23:17 +03:00
build-dotnet-package
build-fhs-userenv chrootenv: propagate nested chrootenv /host 2019-05-30 15:34:01 +03:00
build-setupcfg Revert "buildSetupcfg: Include unzip for zip sources." 2018-04-14 20:12:22 -04:00
buildenv Merge #55420: buildEnv, substituteAll: disable binary cache 2019-02-22 13:57:01 +01:00
cc-wrapper stdenv: Introduce hasCC attribute 2019-11-25 00:12:38 +00:00
docker dockertools.buildLayeredImage: default layer count up to 100 2019-08-12 19:59:40 -04:00
dotnetbuildhelpers
dotnetenv [bot]: remove unreferenced code 2018-07-20 18:48:37 +00:00
emacs emacsPackages: Drop old emacsPackages (non-NG) sets 2019-08-30 16:43:16 +01:00
expand-response-params
fetchbitbucket all-packages: move fetch* to pkgs/build-support/ 2019-01-26 22:47:54 -05:00
fetchbower Merge remote-tracking branch 'upstream/master' into staging 2018-01-14 21:18:27 +02:00
fetchbzr treewide: Fetchers should use stdenvNoCC. 2018-01-10 11:18:44 -05:00
fetchcvs bsd: init netbsd & openbsd userland 2018-04-24 14:16:35 -05:00
fetchdarcs pkgs/*: remove unreferenced function arguments 2018-07-21 02:48:04 +00:00
fetchdocker treewide: remove redundant quotes 2019-08-26 21:40:19 +00:00
fetchfossil treewide: Fixed output fetch* derivations should use nativeBuildInputs 2018-01-09 20:14:46 -05:00
fetchgit treewide: remove redundant quotes 2019-09-08 23:38:31 +00:00
fetchgithub all-packages: move fetch* to pkgs/build-support/ 2019-01-26 22:47:54 -05:00
fetchgitlab all-packages: move fetch* to pkgs/build-support/ 2019-01-26 22:47:54 -05:00
fetchgitlocal pkgs/*: remove unreferenced function arguments 2018-07-21 02:48:04 +00:00
fetchgx Merge remote-tracking branch 'upstream/master' into staging 2018-01-14 21:18:27 +02:00
fetchhg prefer-fetch-remote: an overlay to fetch on remote builders 2019-01-18 14:41:10 +00:00
fetchipfs prefer-fetch-remote: an overlay to fetch on remote builders 2019-01-18 14:41:10 +00:00
fetchmavenartifact
fetchmtn treewide: Fetchers should use stdenvNoCC. 2018-01-10 11:18:44 -05:00
fetchnuget pkgs/*: remove unreferenced function arguments 2018-07-21 02:48:04 +00:00
fetchpatch fetchpatch: explain why we use 0.3.3 2019-05-12 15:16:45 +02:00
fetchrepoorcz all-packages: move fetch* to pkgs/build-support/ 2019-01-26 22:47:54 -05:00
fetchrepoproject treewide: Fetchers should use stdenvNoCC. 2018-01-10 11:18:44 -05:00
fetchs3 pkgs/*: remove unreferenced function arguments 2018-07-21 02:48:04 +00:00
fetchsavannah all-packages: move fetch* to pkgs/build-support/ 2019-01-26 22:47:54 -05:00
fetchsvn fetchsvn: move defaults to package file 2019-02-03 15:33:14 +00:00
fetchsvnrevision
fetchsvnssh fetchsvnssh: move defaults to package file 2019-02-03 15:30:27 +00:00
fetchurl fetchurl: Eliminate pointless cross differences 2019-11-11 00:25:24 -05:00
fetchzip treewide: remove unused variables (#63177) 2019-06-16 19:59:05 +00:00
icon-conv-tools
install-shell-files installShellFiles: init (#65211) 2019-09-04 23:19:17 +02:00
kernel build-support/make-initrd: Don't derive derivation name from file name 2019-05-29 16:07:05 +02:00
libredirect libredirect: add posix_spawnp support 2019-06-18 22:47:11 +02:00
make-desktopitem
make-startupitem
make-symlinks
mkshell mkshell: improve mergeInputs 2019-06-23 22:20:10 +02:00
mono-dll-fixer
nix-gitignore nix-gitignore: init at v3.0.0 (#46112) 2019-02-18 09:57:30 +00:00
nix-prefetch-github nix-prefetch-github: 2.3 -> 2.3.1 2019-09-02 14:32:41 +02:00
nuke-references nukeReferences: fix for store paths with special characters (like '+' or '.') 2019-05-03 12:56:44 -04:00
ocaml Suggested edits 2019-08-07 09:50:46 +02:00
oci-tools ociTools: init 2019-09-04 22:46:42 +00:00
prefer-remote-fetch prefer-fetch-remote: an overlay to fetch on remote builders 2019-01-18 14:41:10 +00:00
references-by-popularity references-by-popularity: cache computation to avoid memory bloat 2019-03-05 16:37:52 -05:00
release treewide: remove redundant rec 2019-08-28 11:07:32 +00:00
remove-references-to
rust treewide: remove redundant rec 2019-08-28 11:07:32 +00:00
setup-hooks installShellFiles: init (#65211) 2019-09-04 23:19:17 +02:00
singularity-tools treewide: remove unused variables (#63177) 2019-06-16 19:59:05 +00:00
skaware treewide: remove unused variables (#63177) 2019-06-16 19:59:05 +00:00
snap doc: fix after snaptools merge 2019-07-10 08:02:14 -07:00
src-only
substitute substituteAll: allowSubstitutes = false; 2019-02-07 22:20:42 +00:00
substitute-files substituteAllFiles: allowSubstitutes = false 2019-02-08 00:22:51 +00:00
templaterpm treewide: remove redundant rec 2019-08-28 11:07:32 +00:00
upstream-updater treewide: remove redundant rec 2019-08-28 11:07:32 +00:00
vm treewide: remove redundant quotes 2019-09-08 23:38:31 +00:00
wrapper-common utils.bash: allow response files in bootstrapping 2019-04-20 23:17:04 -04:00
writers treewide: remove redundant quotes 2019-09-08 23:38:31 +00:00
build-maven.nix buildMaven: Support metadata-only dependencies 2018-11-29 17:29:59 +00:00
build-pecl.nix phpPackages: build phpPackages with re2c 2019-06-11 22:21:35 +03:00
closure-info.nix treewide: remove unused variables (#63177) 2019-06-16 19:59:05 +00:00
dhall-to-nix.nix treewide: remove redundant quotes 2019-09-08 23:38:31 +00:00
plugins.nix
replace-dependency.nix
setup-systemd-units.nix
source-from-head-fun.nix treewide: Change URLs to HTTPS 2019-04-22 10:19:54 +02:00
trivial-builders.nix trivial-builders: add the applyPatches function 2019-09-02 11:18:52 +02:00