nixpkgs/pkgs/stdenv/darwin
Ivan Trubach 5eee6cf40a xar: 1.6.1 -> 498
This change switches the xar package from unmaintained fork of the
original project to the Apple Open Source tarball. See also
https://repology.org/project/xar/versions

Since the package is essentially rewritten from scratch, we take an
opportunity and move it to pkgs/by-name/xa/xar (formatted with nixfmt).

We also remove Windows from the supported platforms because even before
this change pkgsCross.mingwW64.xar failed with
xar> configure: error: can not detect the size of your system's uid_t type
2024-08-25 18:10:08 +03:00
..
bootstrap-files
bootstrap-tools.nix freshBootstrapTools.bootstrapTools: extract as a package 2024-08-02 16:08:15 -07:00
default.nix xar: 1.6.1 -> 498 2024-08-25 18:10:08 +03:00
make-bootstrap-tools.nix freshBootstrapTools: remove rec in favor of explicit attrset building 2024-08-02 16:11:03 -07:00
override-sdk.nix Merge pull request #314167 from reckenrode/override-sdk-list-inputs-fix 2024-08-02 22:55:05 +01:00
portable-libsystem.sh
README.md
stdenv-bootstrap-tools.nix freshBootstrapTools: extract bootstrapFiles as a passthru on its core derivation 2024-08-02 16:11:02 -07:00
test-bootstrap-tools.nix freshBootstrapTools.test: extract as a package 2024-08-02 16:08:15 -07:00

Darwin stdenv design goals

There are two more goals worth calling out explicitly:

  1. The standard environment should build successfully with sandboxing enabled on Darwin. It is fine if a package requires a sandboxProfile to build, but it should not be necessary to disable the sandbox to build the stdenv successfully; and
  2. The output should depend weakly on the bootstrap tools. Historically, Darwin required updating the bootstrap tools prior to updating the version of LLVM used in the standard environment. By not depending on a specific version, the LLVM used on Darwin can be updated simply by bumping the definition of llvmPackages in all-packages.nix.

Updating the stdenv

There are effectively two steps when updating the standard environment:

  1. Update the definition of llvmPackages in all-packages.nix for Darwin to match the value of llvmPackages.latest in all-packages.nix. Timing-wise, this done currently using the spring release of LLVM and once llvmPackages.latest has been updated to match. If the LLVM project has announced a release schedule of patch updates, wait until those are in nixpkgs. Otherwise, the LLVM updates will have to go through staging instead of being merged into master; and
  2. Fix the resulting breakage. Most things break due to additional warnings being turned into errors or additional strictness applied by LLVM. Fixes may come in the form of disabling those new warnings or by fixing the actual source (e.g., with a patch or update upstream). If the fix is trivial (e.g., adding a missing int to an implicit declaration), it is better to fix the problem instead of silencing the warning.