Without this change `as` on `aarch64-darwin` is defunct:
```
$ /nix/store/g11xba8ch20zndaf32hfnap46z47b5k3-cctools-port-949.0.1/bin/as -v
/nix/store/g11xba8ch20zndaf32hfnap46z47b5k3-cctools-port-949.0.1/bin/as: assembler (/nix/store/g11xba8ch20zndaf32hfnap46z47b5k3-cctools-port-949.0.1/libexec/as/arm64/as or /nix/store/g11xba8ch20zndaf32hfnap46z47b5k3-cctools-port-949.0.1/libexec/as/arm64/as) for architecture arm64 not installed
Installed assemblers are:
/nix/store/g11xba8ch20zndaf32hfnap46z47b5k3-cctools-port-949.0.1/libexec/as/ppc64/as for architecture ppc64
/nix/store/g11xba8ch20zndaf32hfnap46z47b5k3-cctools-port-949.0.1/libexec/as/x86_64/as for architecture x86_64
/nix/store/g11xba8ch20zndaf32hfnap46z47b5k3-cctools-port-949.0.1/libexec/as/ppc/as for architecture ppc
/nix/store/g11xba8ch20zndaf32hfnap46z47b5k3-cctools-port-949.0.1/libexec/as/i386/as for architecture i386
/nix/store/g11xba8ch20zndaf32hfnap46z47b5k3-cctools-port-949.0.1/libexec/as/arm/as for architecture arm
```
Apple defaults to Clang in all cases from what I see, but nixpkgs prefers `cctools`: #51881.
The issue manifests itself as the following on `aarch64-darwin`:
```
>>> import ctypes
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/nix/store/i8cq0xrjirz1rcp65wzcyhj6ypzlw9il-python3-3.7.10/lib/python3.7/ctypes/__init__.py", line 551, in <module>
_reset_cache()
File "/nix/store/i8cq0xrjirz1rcp65wzcyhj6ypzlw9il-python3-3.7.10/lib/python3.7/ctypes/__init__.py", line 273, in _reset_cache
CFUNCTYPE(c_int)(lambda: None)
MemoryError
```
The commit we backport is included in Python 3.8, and it reverts
the change that was introduced all the way back in Python 2.7.
Fixing the following error:
```
LD ../priv/x86_64-apple-darwin20.3.0/wxe_driver.so
ld: file not found: /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit for architecture x86_64
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
```
This fixes `aarch64-darwin` build in #105026. Without this the `strip` in `PATH`
is the one from `darwin.cctools`, which doesn't preserve code signatures,
resulting in code that cannot run and pass `pythonImportsCheckPhase`.
The dependency on cctools was introduced in #44902 in 2018,
but it doesn't seem to be necessary on `x86_64-darwin` today.
This was originally in #105026, but then 5.30.1 happened with
this change included, so there were conflict and the patch
got dropped. Let's introduce it separately for only one version
that still needs it.
The `checkType` attribute does not apply after #113193,
and since we're changing tests anyway, let's run them
in the release mode to avoid the need for `checkType`.
This fixes the otherwise broken build.
This `substituteInPlace` was introduced in 2016 when cmake was at v3.4:
* https://github.com/NixOS/nixpkgs/commit/5286c0aebb
In 2018 cmake v3.12.0 changed the code to make it not match anything:
* https://github.com/Kitware/CMake/commit/50b5e9ed13
```
substituteStream(): WARNING: pattern '${PYTHON_EXECUTABLE}' doesn't match anything in file 'Modules/FindCxxTest.cmake'
```
Having it around in 2021 with cmake v3.19.3 doesn't help,
and tests are disabled anyway.
These were introduced with nodejs itself back in 2016: 822abc49ad.
Removing `util-linux` from build inputs doesn't break the builds,
so there's no reason to keep them.
It fails on darwin due to missing `patchelf` and the missing ELFs:
```
/nix/store/...-auto-patchelf-hook/nix-support/setup-hook: line 220: -l: command not found
```
In libc++ starting with LLVM8 there's `<version>` include in `cstddef`:
The following things also align:
* QEMU has a file called `VERSION` in repo root
* QEMU prepends repo root to include path in build
* macOS has a case-insensetive filesystem
All of this combined means that `VERSION` file is included as a header.
Working around this be renaming `VERSION` -> `QEMU_VERSION` to resolve ambiguity.
The problem really only appears on `aarch64-darwin`, since on `x86_64-darwin`
there are no C++ files to compile. The workaround is harmless enough to apply.
This change produces the following warning:
```
... configure: line 619: sysctl: command not found
```
It's benign and sysctl is only useful on MacOS X Leopard:
* https://github.com/qemu/qemu/blob/v5.2.0/configure#L615-L621
Leopard is 13 years old and is not supported by Nix.
The sysctl check is removed in qemu master branch already.
Plus aarch64-darwin is coming in #105026, so there's no reason to force x86_64.
There's an error when compiling autogen on macos Big Sur with #105026,
and it compiles fine without autogen, so I see no reason to keep it.
The dependency on autogen was originally introduced in 31a128b32b,
but unfortunately there's no explanation for the reason and no linked issue.