Commit Graph
692144 Commits
Author SHA1 Message Date
Randy Eckenrode e6a4c83d20 llvmPackages.compiler-rt: fix compiler-rt bootstrap on Darwin
The first build of compiler-rt in the LLVM bootstrap is build without
libc++ being available, which causes support for the `-g` flag to be
detected incorrectly on Darwin. Overriding the check by specifying that
it’s usable allows the first build of compiler-rt to succeed.
2024-10-10 16:23:01 -04:00
Randy Eckenrode 2fd9a1abeb llvmPackages.compiler-rt: drop use of xcbuild
compiler-rt supports specifying the SDK path and version, so do that to
avoid needing to include `xcrun` as a native build input, which
simplifies the bootstrap.
2024-10-10 16:23:01 -04:00
Randy Eckenrode 7647c6834a llvmPackages.compiler-rt: avoid propagating the SDK in static builds 2024-10-10 16:23:01 -04:00
Randy Eckenrode 654e19fb83 llvmPackages.compiler-rt: always build sanitizers on Darwin
Also enable TSAN since the SDK has xpc. There’s no reason to disable it.
2024-10-10 16:23:01 -04:00
Randy Eckenrode d3114e05d7 llvmPackages.compiler-rt: align Darwin bootstrap with other platforms
Instead of using overrides in the stdenv bootstrap, Darwin will be
relying on the LLVM bootstrap to build compiler-rt. The only special
handling it needs is to use a stdenv with a bootstrap SDK instead of the
default one (to avoid infinite recursions).
2024-10-10 16:23:01 -04:00
Randy Eckenrode 4dc3227d4c llvmPackages.clang: use the system libunwind on Darwin
While the Darwin stdenv bootstrap sets up its own clang wrappers and
doesn’t provide these wrappers in the final stdenv, it does use them
indirectly via the LLVM bootstrap to build LLVM and its libraries.

Note on using the system libunwind: It is possible to build and use the
LLVM libunwind on Darwin, but using the system by default one ensures
everything is using the same unwinder.
2024-10-10 16:23:01 -04:00
Randy Eckenrode 25c6fe1dc3 llvmPackages.clang: backport __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__
Newer SDKs use this on Darwin. Without it, using the 14.4 and 15.0 SDKs
won’t work with clang 16.
2024-10-10 16:23:01 -04:00
Randy Eckenrode 5a60ff8315 libxml2: build with the bootstrap stdenv on Darwin
Using the bootstrap stdenv avoids an infinite recursion from xcbuild
depending on libxml2 depending on xcrun from xcbuild, which is
propagated by the non-bootstrap stdenv.
2024-10-10 16:23:01 -04:00
Randy Eckenrode 1ebcfd5758 libuv: Use darwin.libutil on Darwin
The Darwin SDK used to provide `libutil.tbd`, but it has been replaced
by `libutil.dylib` in the darwin.libutil package.
2024-10-10 16:23:00 -04:00
Randy Eckenrode f1480a23ec libpng: build with the bootstrap stdenv on Darwin
Using the bootstrap stdenv avoids an infinite recursion from xcbuild
depending on libpng depending on xcrun from xcbuild, which is propagated
by the non-bootstrap stdenv.
2024-10-10 16:23:00 -04:00
Randy Eckenrode a79ed0daec gnutar: make sure libiconv is linked
gnutar’s `configure` detects libiconv but fails to link it on Darwin.
2024-10-10 16:23:00 -04:00
Randy Eckenrode 472d10b75b cmake: do in fact use the Darwin SDK in the setup hook 2024-10-10 16:23:00 -04:00
Randy Eckenrode 54d591b2b4 cmake: undo /var/empty workaround for Darwin SDK paths
With this workaround enabled, CMake looks for SDK headers and libraries
in `${SDKROOT}/var/empty`, which ensures it will not find them.
Disabling the workaround in just this case allows CMake’s SDK support to
work with the SDKs in nixpkgs while still not including other, impure
paths in its search paths.
2024-10-10 16:23:00 -04:00
Randy Eckenrode a556a81f12 atf: build with the bootstrap stdenv on Darwin 2024-10-10 16:23:00 -04:00
Randy Eckenrode 826edbf719 {bintools,cc}-wrapper: fix static builds on Darwin
Without this change, all Darwin platforms mangle to the same suffix
salt. That is normally not an issue because build = host should mean a
non-cross build, but it causes issues on Darwin with static builds
because `DEVELOPER_DIR_FOR_BUILD` and `DEVELOPER_DIR` will refer to
different SDKs but mangle to the same `DEVELOPER_DIR` with suffix salt.

The fix is to mangle static builds differently from non-static ones on
Darwin, which allows building for a static Darwin target on a
same-architecture Darwin host. This fix is applied only to Dariwn
because the issue does not appear to affect other platforms.
2024-10-10 16:23:00 -04:00
Randy Eckenrode 51755b0c00 {bintools,cc}-wrapper: use a fallback SDK when DEVELOPER_DIR is not set
It is unusual to invoke a wrapped compiler without setting
`DEVELOPER_DIR`, but it can happen when a user adds a compiler to their
installed packages or when a package intentionally invokes the compiler
without an environment (such as the GHC binary packages).
2024-10-10 16:22:59 -04:00
Randy Eckenrode 97d75cb619 {bintools,cc}-wrapper: set up Darwin SDK paths
Some compilers may know to check these paths when `SDKROOT` is set, but
it’s not assumed they do. `SDKROOT` is instead derived from the
`DEVELOPER_DIR`, and `NIX_CFLAGS_COMPILE` is set up with the sysroot and
necessary framework and include search paths.
2024-10-10 16:22:59 -04:00
Randy Eckenrode c218ce1e4d darwin: replace framework chooser with stubs 2024-10-10 16:22:59 -04:00
Randy Eckenrode 9ecb69c827 darwin.apple_sdk: drop gen-frameworks.py (replaced by new SDK pattern) 2024-10-10 16:22:59 -04:00
Randy Eckenrode 0a3c487571 darwin.apple_sdk: convert frameworks and libs to stubs 2024-10-10 16:22:59 -04:00
Randy Eckenrode 480227777b darwin.apple_sdk_12_3: convert frameworks and libs to stubs 2024-10-10 16:22:59 -04:00
Randy Eckenrode fcd9dc8ac6 darwin.apple_sdk_11_0: convert frameworks and libs to stubs 2024-10-10 16:22:59 -04:00
Randy Eckenrode 17aeace4d9 darwin: prepare for adding stub packages 2024-10-10 16:22:59 -04:00
Randy Eckenrode d1c2539523 darwin: add mkStub for deprecating frameworks 2024-10-10 16:22:59 -04:00
Randy Eckenrode 8fae28553a apple-sdk_14: init at 14.4 2024-10-10 16:22:58 -04:00
Randy Eckenrode 4283b8f00a apple-sdk_13: init at 13.3 2024-10-10 16:22:58 -04:00
Randy Eckenrode 689e8980bc apple-sdk_12: init at 12.3 2024-10-10 16:22:58 -04:00
Randy Eckenrode d10c85b19b apple-sdk_10_15: init at 10.15.6 2024-10-10 16:22:58 -04:00
Randy Eckenrode a447cba849 apple-sdk_10_14: init at 10.14.6 2024-10-10 16:22:58 -04:00
Randy Eckenrode 3fb982d0e2 apple-sdk_10_13: init at 10.13.2 2024-10-10 16:22:58 -04:00
Randy Eckenrode 556790248f apple-sdk: init at 10.12.2 and 11.3
This is a new packaging of the Darwin SDK. Instead of splitting
libraries and frameworks into separate packages, it provides a single
package for the whole SDK.

# Features

- Vendored files are removed from the SDK. There are 50+ different
  packages that are vendored by upstream (depending on the version);
- Components that are built in nixpkgs (either from upstream or from the
  source releases) are also removed. If they need to be included by
  default, they are propagated;
- A single SDK pattern is used to package all SDKs, and scripts are
  provided to aid updating the SDK version and its source release
  versions. This makes adding new SDKs much easier;
- SDK overrides are handled by adding the SDK version you require. If
  multiple SDKs are present, only the newest is used. It is possible to
  have different SDKs for each of build, host, and target platforms;
- Private headers are no longer provided by default unless you use the
  SDK’s `privateFrameworksHook` to add them. It does the right thing
  when multiple SDKs are in your inputs;
- Source releases for the SDK version are available via a passthru
  `sourceRelease` function. This is mostly useful for getting private
  headers for building source releases in the darwin attrset; and
- The same versions of propagated components are used on both platforms
  (e.g., the same libresult, libiconv, etc).

See `pkgs/by-name/ap/apple-sdk/README.md` for details on how the SDK
derivation is structured and how to update it.
2024-10-10 16:22:58 -04:00
Randy Eckenrode 639108ea70 darwin.libsbuf: init at 14.1
libsbuf is required by some of the source release updates that will
be done. Unfortunately, it is only available on macOS 14 and newer, and
there is no source release available currently.

This is a port of libsbuf from FreeBSD, which appears to be the origin
of the header provided in the 14.x SDK. It provides the same ABI as the
system dylib and same API as the the SDK header while being available on
all supported deployment targets in nixpkgs.

Note: This package is not based on libsbuf from the FreeBSD package set
in nixpkgs because: it doesn’t build on Darwin, and using it would pull
many FreeBSD packages into the Darwin bootstrap, which is undesirable.
2024-10-10 16:18:59 -04:00
Randy Eckenrode 6a54c7f6c9 darwin.apple-source-releases: add update-source-releases.sh
Add a new update script that locks the source releases to the indicated
macOS version per the version pins in following repo:

https://github.com/apple-oss-distributions/distribution-macOS
2024-10-10 16:18:59 -04:00
Randy Eckenrode 8f8e240965 darwin.apple-source-releases: add mkAppleDerivation
This is a replacement for the family of `appleDerivation` functions
currently used. It is patterned after the `mkDerivation` used in the BSD
package sets. It also provides additional support for using Meson to
build source releases.
2024-10-10 16:18:59 -04:00
Randy Eckenrode 121149836e darwin: add xcodeProjectCheckHook
This hook is used by source releases that build with Meson to assert
that the Xcode project has not changed since the previous release. This
is meant to be a check to force those updating source release packages
to make sure they have incorporated any changes that were made to the
Xcode project into the Meson build.
2024-10-10 01:07:39 -04:00
Randy Eckenrode 5721c4fa47 darwin: add libSystem
The new Darwin SDK pattern relies on an effectively empty, stub libc
implementation. The actual libSystem to be linked is located dynamically
based on the active SDK for the target. Independent build, host, and
target SDKs are all supported by Darwin.

The stub libSystem contains empty `include` and `lib` folders to avoid
warnings from wrappers that add those paths unconditionally, which can
turn into errors when a package is building with warnings-as-errors.

While it would be nice if a fallback libc could be provided, SDK headers
are not compatible between framework versions. Providing a fallback
risks mixing headers from different frameworks, which can result in hard
to diagnose errors involving semicolons or other punctuation.
2024-10-10 01:07:39 -04:00
Randy Eckenrode 40d415f4df darwin: add darwinMinVersionHook
Adding the hook allows the deployment target to be changed without
having to mess with the stdenv. The can also be propagated, which is
useful for libraries that have a minimum deployment target higher than
the default in nixpkgs. In that case, they can propagate the hook to
ensure library users are not targeting an unsupported version.
2024-10-10 01:07:38 -04:00
Randy Eckenrode 08ad88285d darwin: add bootstrapStdenv
Packages propagated by the SDK need to use a stdenv that does not
propagate anything. Otherwise, an infinite recursion will result when
building those packages.

For consistency, all source releases should use the bootstrapStdenv.
2024-10-10 01:07:38 -04:00
Randy Eckenrode 22369efb1c maintainers/team-list.nix: add reckenrode to darwin 2024-10-10 01:07:38 -04:00
Emily e694240f77 Merge staging-next into staging 2024-10-10 01:23:52 +01:00
github-actions[bot]andGitHub 1404154595 Merge master into staging-next 2024-10-10 00:14:06 +00:00
adisbladisandGitHub 9ee9cac888 waydroid: 1.4.2 -> 1.4.3; add update script, move to by-name, format, and other cleanup (#346270) 2024-10-10 00:09:42 +00:00
EmilyandGitHub 27272c21af Mass pings be gone, code owners for all (#347610) 2024-10-10 00:52:01 +01:00
Silvan Mosberger ddeb2dfd91 .gitattributes: Mark ci/OWNERS as CODEOWNERS 2024-10-10 01:40:43 +02:00
Silvan Mosberger c721e917ce ci/request-reviews: Make wrong base branch message hashes more transparent
Also, fix the description of the text
2024-10-10 01:40:11 +02:00
Silvan Mosberger c2464034c0 CONTRIBUTING: Remove now-unneeded mass ping section
This is not a problem anymore with the parent commit
2024-10-10 01:40:11 +02:00
Silvan Mosberger b01ca00aed CODEOWNERS: Switch to alternate mechanism
This effectively disables the native GitHub codeowners feature
and enables the new alternate codeowners mechanism introduced in
https://github.com/NixOS/nixpkgs/pull/336261

This means that:
- We can now declare users without write access as code owners!
- Targeting the wrong branch won't trigger mass pings anymore!
2024-10-10 01:40:05 +02:00
EmilyandGitHub 6422c786dd treewide: add CVE-2024-9680 as a known vulnerability to Firefox forks (#347601) 2024-10-10 00:08:07 +01:00
EmilyandGitHub 6a57be8716 librewolf-unwrapped: 130.0-3 -> 131.0.2-1 (#347598) 2024-10-10 00:01:44 +01:00
Aaron AndersenandGitHub 50a0ea2eb6 nixos/redmine: Apply initial hardening using the systemd unit (#346554) 2024-10-09 18:47:58 -04:00