In preparation for the deprecation of `stdenv.isX`.
These shorthands are not conducive to cross-compilation because they
hide the platforms.
Darwin might get cross-compilation for which the continued usage of `stdenv.isDarwin` will get in the way
One example of why this is bad and especially affects compiler packages
https://www.github.com/NixOS/nixpkgs/pull/343059
There are too many files to go through manually but a treewide should
get users thinking when they see a `hostPlatform.isX` in a place where it
doesn't make sense.
```
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv.is" "stdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv'.is" "stdenv'.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "clangStdenv.is" "clangStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "gccStdenv.is" "gccStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenvNoCC.is" "stdenvNoCC.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "inherit (stdenv) is" "inherit (stdenv.hostPlatform) is"
fd --type f "\.nix" | xargs sd --fixed-strings "buildStdenv.is" "buildStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "effectiveStdenv.is" "effectiveStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "originalStdenv.is" "originalStdenv.hostPlatform.is"
```
Done with the help of https://github.com/Mindavi/nixpkgs-mark-broken
Tool is still WIP but this is one of the first results.
I manually audited the results and removed some results that were not valid.
Note that some of these packages maybe should have more constrained platforms set
instead of broken set, but I think not being perfectly correct is better than
just keep trying to build all these things and never succeeding.
Some observations:
- Some darwin builds require XCode tools
- aarch64-linux builds sometimes suffer from using gcc9
- gcc9 is getting older and misses some new libraries/features
- Sometimes tools try to do system detection or expect some explicit settings for
platforms that are not x86_64-linux
A patch has been added to inject environment variables into the CMake
test runner, the `INCLUDE_PATH` variable has been specified, and the
merged LLVM derivation has been updated to refer to the split outputs.
Contains the combined single-commit work by both @jnetod and myself
from NixOS/nixpkgs#122665. Brings the build up to LLVM 10, switches to
`symlinkJoin` for putting Clang where the CMake build expects it, and
updates to a fresh update of Terra that works around a few LLVM bugs.
Terra heavily depends on its ability to interface with C APIs, but
without scanning NIX_CFLAGS_COMPILE, it's awkward and annoying to set up
imports correctly (by scanning and adding the flags yourself) in every
single project.
Luckily most of the Clang initialization is hidden away, but the Lua
code for the Terra library handles all the high-level stuff, so we patch
it in there.
This allows simple examples like:
C = terralib.includec("zlib.h")
to work instantly, provided `zlib` is a Nix dependency.
Signed-off-by: Austin Seipp <aseipp@pobox.com>
* llvmPackages_35 -> llvmPackages_38
* static llvm no longer needed
* multiple outputs, this generates the following results:
- out/lib/terra.so
- bin/bin/terra
- dev/include/terra/*.h
- static/lib/libterra.a
Contributed with help from @joachifm