llvmPackages_{12,13,14,15,16,17,18,git}.clang: fix libLTO.dylib path#304350
Merged
wegank merged 1 commit intoNixOS:stagingfrom Apr 18, 2024
Merged
llvmPackages_{12,13,14,15,16,17,18,git}.clang: fix libLTO.dylib path#304350wegank merged 1 commit intoNixOS:stagingfrom
wegank merged 1 commit intoNixOS:stagingfrom
Conversation
Clang assumes that `libLTO.dylib` is located at `../lib` in the same prefix as `clang`, but that’s not true in nixpkgs. `libLTO.dylib` is actually located at `libllvm^lib/lib.libLTO.dylib`.
Contributor
Author
|
@RossComputerGuy I rebased and consolidated the patches. Thanks for your work on #303948. |
Member
|
@reckenrode Do you want this in 24.05? |
Contributor
Author
It would be nice, but it’s only half the fix to LTO on Darwin. The other half is the ld64 upgrade, which is probably too big for 24.05. I’m still working through getting all the Darwin channel blockers to build. |
13 tasks
|
This pull request has been mentioned on NixOS Discourse. There might be relevant details there: https://discourse.nixos.org/t/darwin-ld-symbol-s-not-found-for-architecture-arm64/46177/1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of changes
Clang assumes that
libLTO.dylibis located at../libin the same prefix asclang, but that’s not true in nixpkgs.libLTO.dylibis actually located atlibllvm^lib/lib.libLTO.dylib.This is the first piece to fixing LTO on Darwin. The other is updating ld64, which I will be doing in a separate PR later this week. This PR does not depend on that PR because there is no harm passing the correct path to ld64. It does not perform LTO by default, and trying to use
-fltoeven with the correct path remains broken.Testing was done using my WIP PR for ld64 with clang 16. See #19098 (comment) for output. It can also be validated by setting
NIX_DEBUG=1when running clang, then confirming that the path passed to-lto_libraryactually exists in the store.Note: Testing was done on #302481. I’m building against the common clang branch now.
Things done
nix.conf? (See Nix manual)sandbox = relaxedsandbox = truenix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/)Add a 👍 reaction to pull requests you find important.