at master 26 lines 1.7 kB view raw view rendered
1# Darwin stdenv design goals 2 3There are two more goals worth calling out explicitly: 4 51. The standard environment should build successfully with sandboxing enabled on Darwin. It is 6 fine if a package requires a `sandboxProfile` to build, but it should not be necessary to 7 disable the sandbox to build the stdenv successfully; and 82. The output should depend weakly on the bootstrap tools. Historically, Darwin required updating 9 the bootstrap tools prior to updating the version of LLVM used in the standard environment. 10 By not depending on a specific version, the LLVM used on Darwin can be updated simply by 11 bumping the definition of llvmPackages in `all-packages.nix`. 12 13# Updating the stdenv 14 15There are effectively two steps when updating the standard environment: 16 171. Update the definition of llvmPackages in `all-packages.nix` for Darwin to match the value of 18 llvmPackages.latest in `all-packages.nix`. Timing-wise, this is done currently using the spring 19 release of LLVM and once llvmPackages.latest has been updated to match. If the LLVM project 20 has announced a release schedule of patch updates, wait until those are in nixpkgs. Otherwise, 21 the LLVM updates will have to go through staging instead of being merged into master; and 222. Fix the resulting breakage. Most things break due to additional warnings being turned into 23 errors or additional strictness applied by LLVM. Fixes may come in the form of disabling those 24 new warnings or by fixing the actual source (e.g., with a patch or update upstream). If the 25 fix is trivial (e.g., adding a missing int to an implicit declaration), it is better to fix 26 the problem instead of silencing the warning.