The usage of NIX_CFLAGS_COMPILE was added in 2023, in commit
2a6b15d371.
When going back to that commit, removing the added flag, and
building with:
$ nix-build pkgsCross.aarch64-multiplatform.linuxPackages.nvidia_x11_beta_open
...the build fails.
With the current state of Nixpkgs, the build completes whether
or not the flag is used.
This *necessarily* has to be unneeded, as using kernelModuleMakeFlags and
the kernel's out-of-tree build tooling forces the unwrapped `cc` to be
used... *For `CC` uses*.
This situation may be a bit wonkier than the others, since `CXX` usage
is *not* affected by the (debatable?) regression. This can be observed
experimentally by setting `NIX_CFLAGS_COMPILE` to some bogus value that
won't work. The build will fail only when invoking the C++ compiler.
Context here: f86e9fe549/pkgs/os-specific/linux/kernel/common-flags.nix (L10-L11)
- Disable `pidwait`, which fails to build on non-Linux due to requiring
`pidof_open`; and
- Apply patch from upstream to avoid using `SIGPOLL` on Darwin.
this was done manually, fixing the eval and any remaining stuff of the previous commit
together with the previous commit this shouldn't create any rebuilds
this creates some eval errors that will be fixed in the next commit
done with the following script:
```fish
\#!/usr/bin/env fish
set packagesjson (nix eval --impure --json --expr '
let
lib = import ./lib;
in
import pkgs/servers/x11/xorg/default.nix (lib.mapAttrs (
name: _:
if name == "lib" then
lib
else if name == "config" then
{ allowAliases = false; }
else
name
) (__functionArgs (import pkgs/servers/x11/xorg/default.nix))) { }
' | jq)
set one (grep '^ [A-Za-z0-9_-]*$' pkgs/servers/x11/xorg/default.nix | string trim | string replace -r '$' Z | sort | string sub -e -1)
set two (grep '^ [A-Za-z0-9_-]* = [A-Za-z0-9_-]*;$' pkgs/servers/x11/xorg/default.nix | cut -d= -f1 | string trim | string replace -r '$' Z | sort | string sub -e -1)
for arg in $one $two
set oname $arg
set nname (echo $packagesjson | jq -r .$oname)
if test $nname = null
echo (set_color red)warn:(set_color normal) unknown package xorg.$oname >&2
continue
end
echo $oname "->" $nname
# replace basic xorg.$name references
for file in (rg -F "xorg.$oname" --files-with-matches pkgs)
# special cases
sd -F "$oname = xorg.$oname;" "$nname = $nname;" $file
# replace
sd -F "xorg.$oname" "$nname" $file
# fixup function arguments
# prevent duplicate function args
if grep -E " ($oname|$nname),\$" $file >/dev/null
continue
end
if grep 'xorg\..' $file >/dev/null # case1: there is more so we can't just remove the function arg
if grep ' xorg,$' $file >/dev/null
sd ' xorg,$' " xorg,
$nname," $file
else if grep ' xorg ? .*,$' $file >/dev/null
sd 'xorg( ? .*),$' "xorg\$1,
$nname," $file
else
sd -F 'xorg,' "$nname,
xorg," $file
end
else # case there is no more xorg..* so we can just replace the function arg
sd 'xorg(| ? .*),.*$' "$nname," $file
end
end
end
nix fmt
```