Apple ships a 13‐year‐old fork of OpenLDAP. The very few things
that use it, like Meson tests, have been adding dependencies on
our up‐to‐date OpenLDAP package to get headers. That’s not
reliable to mix with the `.tbd` Apple ships, and pulls OpenLDAP into
the bootstrap unnecessarily.
We continue to strip the `.dylib`s to avoid accidental dependencies
on the old version. Packages can still link to Apple’s version with
`-framework LDAP`. As very little seems to want the system version,
hopefully this won’t have any major compatibility impact.
Apple like to remove old minor releases of the SDK when bumping to a
new one. Our current 15.0 SDK is already gone. Since these are all
the last minor version of their major version, they’re probably
not at risk of imminent deletion, but given their general practices
it makes sense to guard against, especially as we can’t be sure
ahead of time what the last minor version will be.
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.