The locale data used on macOS has not been included in a source release
since adv_cmds-118. Fortunately, that data can be parsed by the current
version of adv_cmds. It’s a bit old, but other sources of data (such as
FreeBSD) are not compatible enough and may cause divergent behavior.
file_cmds 352.40.6 added a C-based implementation of xattr, which is the
version of xattr used on recent releases of macOS. Align nixpkgs with
what macOS is shipping, which has also the benefit of allowing xattr to
be cross-compiled (previously precluded due to Python limitations).
Darwin uses the system unwinder, which is based on the LLVM unwinder.
While it’s mostly API-compatible with libunwind, some packages expect to
find it using `pkg-config`. This package provides a compatible file to
allow those packages to use the system unwinder on Darwin.
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.
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.
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.