mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-16 17:14:00 +00:00
![]() After final improvements to the official formatter implementation, this commit now performs the first treewide reformat of Nix files using it. This is part of the implementation of RFC 166. Only "inactive" files are reformatted, meaning only files that aren't being touched by any PR with activity in the past 2 months. This is to avoid conflicts for PRs that might soon be merged. Later we can do a full treewide reformat to get the rest, which should not cause as many conflicts. A CI check has already been running for some time to ensure that new and already-formatted files are formatted, so the files being reformatted here should also stay formatted. This commit was automatically created and can be verified using nix-build |
||
---|---|---|
.. | ||
bootstrap-files | ||
default.nix | ||
make-bootstrap-tools.nix | ||
override-sdk.nix | ||
portable-libsystem.sh | ||
README.md |
Darwin stdenv design goals
There are two more goals worth calling out explicitly:
- 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 - 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:
- Update the definition of llvmPackages in
all-packages.nix
for Darwin to match the value of llvmPackages.latest inall-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 - 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.