gnumake can support subsecond mtimes if it is available. But Darwin
doesn’t support setting subsecond mtimes until 10.13! So we can just
disable this check to avoid the issue where most of our built tools
use seconds but make uses nanoseconds. Might fix some parallel issues
along the way.
Fixes#51221
eabihf is an abi that can be used with ARM architectures that support
the “hard float”. It should probably only be used with ARM32 when you
are absolutely sure your binaries will run on ARM systems with a FPU.
Also, add an example "armhf-embedded" to match the preexisting
arm-embedded system. qmk_firmware needs hard float in a few places, so
add them here to get that to work.
Fixes#51184
This is needed to build linux kernels on darwin. While we can’t
actually use it to load kernel modules, we can use it to create
indexes of modules on macOS.
(cherry picked from commit ebb31480e8a45efbaff4c4a212bdfc0b053adde0)
You can use stdenv.hostPlatform.emulator to get an executable that
runs cross-built binaries. This could be any emulator. For instance,
we use QEMU to emulate Linux targets and Wine to emulate Windows
targets. To work with qemu, we need to support custom targets.
I’ve reworked the cross tests in pkgs/test/cross to use this
functionality.
Also, I’ve used talloc to cross-execute with the emulator. There
appears to be a cross-execute for all waf builds. In the future, it
would be nice to set this for all waf builds.
Adds stdenv.hostPlatform.qemuArch attrbute to get the qemuArch for
each platform.
We need to set dontUseImakeConfigure in a few places to prevent imake
from overriding the default configure phase. This packages all have a
configure script that needs to get run:
- Xaw3d
- R
- tkgate
- ssvnc
A few changes needed here:
- We don’t want to guess what our platform is. We can patch location
and targetdir to not put things in an unpredictable directory.
- Make premake4 a native build input.
- Set the premakefile variable.
Adds a configure phase for packages using premake.
premakeConfigurePhase runs the correct premake version for the premake
you are using (see premake_cmd).
Some trivial builders use the name attr to choose the exec name
produced. For example nixos-install,
nixos-install = makeProg {
name = "nixos-install";
src = ./nixos-install.sh;
nix = config.nix.package.out;
path = makeBinPath [ nixos-enter ];
};
When cross compiling, this puts the prog in,
/bin/nixos-install-powerpc64le-unknown-linux-gnu
When separateDebugInfo = true & !stdenv.hostPlatform.isLinux, we
always gave an error. There is no reason to do this. Instead, just
don’t add separate debug info when we aren’t on Linux.
A few things changed:
- no need for stdenv.hostPlatform == stdenv.buildPlatform conditional - this is already done in make-derivation
- put xvfb_run in installCheckInputs
propagateNativeBuildInputs will end up going in the output derivation.
This case is allowed to end up in references because of that. Sorry
for the disruption!
Fixes#50865
ao has been renamed to libfive. Because there’s already a libfive
package, we can just remove the old ao package. No packages appear to
depend directly on it.
KRB5_CONFIG needs to be aviailable to get the right one when cross
compiling. These things should just use pkgconfig, but it’s fairly
easy to hack around this. krb5-config will not be on path because we
don’t know ahead of time what architecture it will be for.
This is one of the rare times when flex is not just needed at build
time. When cross compiling, we will need 2 versions of flex - one for
the local system and one for the cross system.
Things changed in the Ninja setup-hook:
- Respect installFlags
- Automatically add checkPhase (can be disabled with dontUseNinjaCheck
in the same way as dontUseNinjaBuild and dontUseNinjaInstall). Tests
are only run when "ninja test" exists.
- Error in build phase when build.ninja is missing. We don’t have a
way to fall back to other build methods, so it’s best to be very
clear when we aren’t able to build with ninja
- Set -l flag to 1 when enableParallelBuilding is disabled
gsettingsschemedir only works in make where you can set any variable
from the command line as in “make VAR=VAL”. Other build systems may
not support this kind of loose overriding of variables. This broke a
scons build here:
https://hydra.nixos.org/build/84073119/
xboxdrv doesn’t use scons for installing, but instead using a
makefile! Everything else is in scons so we have to keep that. I’ve
added a dontUseSconsInstall flag to the scons setup-hook to skip the
automatic overwrite of default “make install” call.