llvmPackages_{12,13,14,15,16,17,git}.{libcxx,libcxxabi}: merge libcxxabi into libcxx#292043
llvmPackages_{12,13,14,15,16,17,git}.{libcxx,libcxxabi}: merge libcxxabi into libcxx#29204311 commits merged intostagingfrom unknown repository
Conversation
|
This pull request has been mentioned on NixOS Discourse. There might be relevant details there: https://discourse.nixos.org/t/aarch64-darwin-rust-rocksdb-bindgen-linking-error/39931/3 |
|
This pull request has been mentioned on NixOS Discourse. There might be relevant details there: |
|
I haven't fully confirmed it yet, but I suspect this commit broke statically building boehm-gc on aarch64-darwin http://discourse.nixos.org/t/tracking-down-what-broke-boehm-gc-static-aarch64-apple-darwin/42234/2 |
yes, as noted https://discourse.nixos.org/t/tracking-down-what-broke-boehm-gc-static-aarch64-apple-darwin/42234/3 LLVM doesn't provide a mechanism for static builds that avoid having to specify [edit] PR #305876 merges libc++abi.a into libc++.a |
Key test case: nixpkgs#pkgsStatic.pkgsLLVM.ncurses Prior to this patch, this fails with errors such as: ``` error: undefined symbol: __cxa_throw ``` I think this is a reasonable solution because in NixOS#292043, libcxxabi was 'merged into libcxx', however, the commit message suggests that only dynamic linking was accounted for, because it says: ``` * linux/freebsd `libc++.so` is a linker script `LINK(libc++.so.1, -lc++abi)` making `-lc++` sufficient. ``` Whereas, I found that if I tried linking a "hello world" C++ program with a static hostPlatform, it failed unless -lc++abi was passed. Signed-off-by: Peter Waller <p@pwaller.net>
Key test case: nixpkgs#pkgsStatic.pkgsLLVM.ncurses Prior to this patch, this fails with errors such as: ``` error: undefined symbol: __cxa_throw ``` I think this is a reasonable solution because in #292043, libcxxabi was 'merged into libcxx', however, the commit message suggests that only dynamic linking was accounted for, because it says: ``` * linux/freebsd `libc++.so` is a linker script `LINK(libc++.so.1, -lc++abi)` making `-lc++` sufficient. ``` Whereas, I found that if I tried linking a "hello world" C++ program with a static hostPlatform, it failed unless -lc++abi was passed. Signed-off-by: Peter Waller <p@pwaller.net>
24.05 is incompatible with rules_nixpkgs at this point due to NixOS/nixpkgs#292043.
24.05 is incompatible with rules_nixpkgs at this point due to NixOS/nixpkgs#292043.
It was merged into libcxx in NixOS/nixpkgs#292043.
It was merged into libcxx in NixOS/nixpkgs#292043.
It was merged into libcxx in NixOS/nixpkgs#292043.
Description of changes
-lc++ -lc++abifrom 58 packages as it is no longer required.libc++abisymbols are missing with LLVM12+'sstdenvon Darwin #166205This change can be represented in 3 stages
merging libcxxabi into libcxx
-lc++is sufficient.libc++.sois a linker scriptLINK(libc++.so.1, -lc++abi)making-lc++sufficient.LIBCXX_ADDITIONAL_LIBRARIES(only used in 16+)stdenv changes
58 package updates
NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}as no longer neededSupersedes #282624
tests bellow all pass:
linux x64 builds
linux / darwin x64 builds
dlopen and link tests
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.