Part 1 of #301908.
This renames the two versions of the Apple Public Source License seen in
nixpkgs; `apsl20` was often confused as being for the widely-used Apache
License 2.0.
Fixes#297765
The `postFetch` step was broken in several ways:
1. It attempts to unpack the archive, but this has already been done before reaching this step.
2. It unpacks the file `$downloadedFile`, but this file no longer exists because it's been moved to `$renamed`.
Additionally, since (1) neither directory `src/opendirectory` nor `src/OpenDirectory` are used for anything, and (2) it's not clear whether Nix produces different hashes depending on file system case sensitivity, the chosen solution is to just remove both these two directories for now. If later a file from either directory is needed, an investigation needs to be done on how Nix hashes archives with clashing names on case insensitive file systems.
- Update to the latest available version from Apple;
- Use Meson because dealing with xcbuild is too much trouble; and
- Conditionally build certain programs when newer SDKs are available.
- merge libcxxabi into libcxx for LLVM 12, 13, 14, 15, 16, 17, and git.
- remove the link time workaround `-lc++ -lc++abi` from 58 packages as it is no longer required.
- fixes https://github.com/NixOS/nixpkgs/issues/166205
- provides alternative fixes for. https://github.com/NixOS/nixpkgs/issues/269548https://github.com/NixOS/nix/issues/9640
- pkgsCross.x86_64-freebsd builds work again
This change can be represented in 3 stages
1. merge libcxxabi into libcxx -- files: pkgs/development/compilers/llvm/[12, git]/{libcxx, libcxxabi}
2. update stdenv to account for merge -- files: stdenv.{adapters, cc.wrapper, darwin}
3. remove all references to libcxxabi outside of llvm (about 58 packages modified)
### merging libcxxabi into libcxx
- take the union of the libcxxabi and libcxx cmake flags
- eliminate the libcxx-headers-only package - it was only needed to break libcxx <-> libcxxabi circular dependency
- libcxx.cxxabi is removed. external cxxabi (freebsd) will symlink headers / libs into libcxx.
- darwin will re-export the libcxxabi symbols into libcxx so linking `-lc++` is sufficient.
- linux/freebsd `libc++.so` is a linker script `LINK(libc++.so.1, -lc++abi)` making `-lc++` sufficient.
- libcxx/default.nix [12, 17] are identical except for patches and `LIBCXX_ADDITIONAL_LIBRARIES` (only used in 16+)
- git/libcxx/defaul.nix does not link with -nostdlib when useLLVM is true so flag is removed. this is not much different than before as libcxxabi used -nostdlib where libcxx did not, so libc was linked in anyway.
### stdenv changes
- darwin bootstrap, remove references to libcxxabi and cxxabi
- cc-wrapper: remove c++ link workaround when libcxx.cxxabi doesn't exist (still exists for LLVM pre 12)
- adapter: update overrideLibcxx to account for a pkgs.stdenv that only has libcxx
### 58 package updates
- remove `NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}` as no longer needed
- swift, nodejs_v8 remove libcxxabi references in the clang override
https://github.com/NixOS/nixpkgs/pull/292043
The upstream source release for 765.50.9 defines `_DNS_SD_LIBDISPATCH`
to `0` in `dns_sd.h`, but the SDK version of that header actually
defines it to `1`. Having it defined to `0` causes packages that expect
to use libdispatch-based symbols such as `DNSServiceSetDispatchQueue` to
fail to build. Define it to match the SDK to fix those packages.
The patch in this commit is based on the SDK header, which has an ASPL
license header even though the updated header is not part of the source
distribution of Libm. Adding the missing declarations allows packages
such as jq, Ruby, and Guile to build without requiring an SDK that is
not built from the source releases.
This is an additional fix for clang 16, which fails due to an undeclared
symbol. Adding `_DNS_SD_LIBDISPATCH` makes the symbol visible in
`dns_sd.h`, allowing the build to complete successfully.
A number of headers in Libc are being vendored from other packages.
Instead of copying them from an earlier Libc, Libsystem now sources them
from their respective packages (see below). This allows Libc_old to be
dropped and avoids any potential clashes when building Libsystem.
libmalloc:
* malloc/malloc.h
libplatform:
* setjmp.h
* ucontext.h
* libkern/OSAtomic.h
* libkern/OSCacheControl.h
libpthread:
* pthread*.h
* sched.h
* spawn.h
syslog (vendored because only one file is needed):
* asl.h
xnu:
* spawn.h (a different one from libpthread)
* libproc.h
Clang 16 makes implicit declarations an error by default. The headers
are available, so include them.
`getline` was renamed to `get_line` to avoid a name clash. `util.h`
includes `stdio.h`, which defines `getline`.