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"
```
Lore overrides have been included with binlore's source up to now, but
this hasn't worked very well. (It isn't as easy to self-service for
people working in nixpkgs, and its use of partial pnames for matching
breaks down around some edge cases like version numbers appearing
early in perl pnames, or multiple packages having identical pnames.)
with structuredAttrs lists will be bash arrays which cannot be exported
which will be a issue with some patches and some wrappers like cc-wrapper
this makes it clearer that NIX_CFLAGS_COMPILE must be a string as lists
in env cause a eval failure
/proc/uptime support can't be detected automatically when cross-compiling, so
it is disabled by default. This causes extremely large uptime values (e.g.
19167 days) on systems without RTCs because the boot time is set to the
epoch.
I suspect this issue is caused by the very old version of diffutils we
have in the aarch64+musl bootstrap tools, so hopefully we can
re-enable the tests once we have newer bootstrap tools.
Until a recent patch in coreutils, gnus uname -p returned a different
arch on apple silicon macs, compared to the uname shipped with macos.
This causes config.guess to produce incorrect build system triplets
for various projects on these systems when in a nix-shell.[23][42]
As coreutils only releases every few months/years and no release is
planned at the moment, I'm introducing the patch here. We can drop it
once the next coreutils version is released.
I made a tiny adjustment to the patch from [23]. I removed the usage
of MAYBE_UNUSED, which currently only compiles against HEAD.
[23] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52330
[42] https://github.com/NixOS/nixpkgs/issues/147914
The arm patch tries to modify files that are nowhere to be found in the
entire source tree. The cygwin patch also doesn't work so good anymore:
1 out of 1 hunk FAILED -- saving rejects to file ChangeLog.rej
1 out of 1 hunk ignored -- saving rejects to file configure.ac.rej
1 out of 1 hunk FAILED -- saving rejects to file lib/hash-triple.c.rej
2 out of 2 hunks ignored
2 out of 2 hunks FAILED -- saving rejects to file src/chroot.c.rej
1 out of 1 hunk FAILED -- saving rejects to file src/cksum.c.rej
6 out of 9 hunks FAILED -- saving rejects to file src/copy.c.rej
1 out of 4 hunks FAILED -- saving rejects to file src/dd.c.rej
1 out of 1 hunk ignored
1 out of 2 hunks FAILED -- saving rejects to file src/mv.c.rej
4 out of 7 hunks FAILED -- saving rejects to file src/stat.c.rej
Tested on 16-core machine with 10 rebuilds:
$ nix build -f. coreutils --repeat 10
No failures. Original failure is probably fixed upstream
with a69e54cfdf7 ("maint: fix dependency of man/arch.1".)