Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cctools: 973.0.1 -> 1010.6 #307880

Merged
merged 24 commits into from
Jul 17, 2024
Merged

cctools: 973.0.1 -> 1010.6 #307880

merged 24 commits into from
Jul 17, 2024

Commits on Jul 13, 2024

  1. ld-wrapper: use a temporary file for reponse file

    This changes ld-wrapper to use a temporary file for the response file
    passed to ld instead of using process substitution.
    
    ld64 does not handle long command-lines when reading from the response
    file, which defeats the point of using a response file to handle long
    command-lines. cctools-port was patched to work around this, but nixpkgs
    is now using Apple’s source release directly instead of the port.
    
    Since it’s preferable not to patch Apple’s release heavily (to reduce
    the difficulty of updating to new versions and to match upstream’s
    behavior), use the approach that was adopted in cc-wrapper to work
    around issues with response files in newer versions of clang.
    
    Related PRs (cctools-port):
    - NixOS#213831
    - tpoechtrager/cctools-port#132
    
    Related PRs (cc-wrapper):
    - NixOS#245282
    - NixOS#258608
    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    1cb1853 View commit details
    Browse the repository at this point in the history
  2. libredirect: use llvmPackages unconditionally

    Darwin and its bootstrap tools both use LLVM 16, which is sufficient for
    arm64e support in LLVM. Thsi change removes an unnecessary LLVM 13 build
    from the stdenv bootstrap.
    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    4712e8f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    91d8dd9 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    3a545f6 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    7f45223 View commit details
    Browse the repository at this point in the history
  6. darwin.Libsystem: get headers from AvailabilityVersions

    While these headers correspond to a newer SDK, they’re compatible with the 10.12 SDK and more compatible with GCC.
    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    b7952b4 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    4ee4fe5 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    baf3568 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    cdf968c View commit details
    Browse the repository at this point in the history
  10. ld64: init at 951.9

    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    f02b50b View commit details
    Browse the repository at this point in the history
  11. cctools: 973.0.1 -> 1010.6

    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    9f68d60 View commit details
    Browse the repository at this point in the history
  12. darwin.stdenv: make sure curl cannot be used

    Fetchers can use the `curl` binary from the bootstrap tools. Allowing packages in the Darwin bootstrap to link curl makes any curl update cause a full rebuild on Darwin, which is undesirable.
    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    65a37e7 View commit details
    Browse the repository at this point in the history
  13. darwin.stdenv: always use a response file

    The bootstrap tools have been updated, so it is no longer necessary to suppress using a response file in the Darwin stdenv bootstrap.
    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    8559d64 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    78da51c View commit details
    Browse the repository at this point in the history
  15. binutils: drop Darwin hack

    Darwin no longer uses GNU binutils and prevents it from being used in the bootstrap. This hack is no longer necessary.
    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    7f1bc0d View commit details
    Browse the repository at this point in the history
  16. darwin.stdenv: clean up GNU binutils ban

    - Only propagate binutils-unwrapped; and
    - Clarify in the `throw` that it cannot be used in the Darwin bootstrap.
    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    05e5d7f View commit details
    Browse the repository at this point in the history
  17. darwin.stdenv: consolidate stage 2 into one stage

    Separate stages are no longer necessary because CF is not built from source and will not be built in the future.
    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    9403fdc View commit details
    Browse the repository at this point in the history
  18. Configuration menu
    Copy the full SHA
    10c87ee View commit details
    Browse the repository at this point in the history
  19. bintools-wrapper: drop postLinkSignHook

    When the linker signs a Mach-O binary, it sets a flag in the signature’s code directory indicating that the signature was generated by a linker. Tools such as `strip` and `install_name_tool` read this flag and will
    update ad hoc signatures after they perform their modifications.
    
    The updated l64 supports signing binaries automatically. Both the updated cctools and LLVM will check for the linker-signed flag and resign binaries they modify automatically when it’s present. Given that, use of postLinkSignHook is unnecessary and potentially harmful.
    
    In particular, if the hook is used and an unwrapped `strip` or `install_name_tool` is on the user’s path, they will not automatically update an ad hoc signature. Instead, they will issue a warning and create a binary with a broken signature.
    
    It is more robust to let the tools handled this since the only time a signature would not be linker-signed is when the user is manually invoking `codesign` (or another tool such as `sigtool` or `rcodesign`), which by nature of the invocation updates the signature to a valid  one.
    
    Since `strip` no longer needs to be wrapped for code-signing, binutils-wrapper now uses the GNU strip wrapper on Darwin.
    
    Fixes NixOS#208951.
    reckenrode committed Jul 13, 2024
    Configuration menu
    Copy the full SHA
    c922cb2 View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    a49dbb2 View commit details
    Browse the repository at this point in the history
  21. Configuration menu
    Copy the full SHA
    ca92415 View commit details
    Browse the repository at this point in the history

Commits on Jul 14, 2024

  1. ghc: update Darwin bintools references

    - Unconditionally get `install_name_tool` from cc.bintools.bintools since it is no longer wrapped; and
    - Use the `strip` wrapper on both Darwin architectures. It’s the default one, and it’s the same between both.
    reckenrode committed Jul 14, 2024
    Configuration menu
    Copy the full SHA
    79f5f9b View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    76e1209 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    9641ac5 View commit details
    Browse the repository at this point in the history