summary refs log tree commit diff
path: root/pkgs/development/compilers
diff options
context:
space:
mode:
authorDan Peebles <pumpkin@me.com>2017-03-19 17:37:03 -0400
committerDan Peebles <pumpkin@me.com>2017-03-19 20:51:58 -0400
commit972f51a2daadfaff74db08cb1ac2061da31b9b3f (patch)
tree4c99ea2f27caea24bb9a81ac5e878640c8458015 /pkgs/development/compilers
parent48a7bfa3452c65edb0407aad15c69269f44a1532 (diff)
downloadnixpkgs-972f51a2daadfaff74db08cb1ac2061da31b9b3f.tar
nixpkgs-972f51a2daadfaff74db08cb1ac2061da31b9b3f.tar.gz
nixpkgs-972f51a2daadfaff74db08cb1ac2061da31b9b3f.tar.bz2
nixpkgs-972f51a2daadfaff74db08cb1ac2061da31b9b3f.tar.lz
nixpkgs-972f51a2daadfaff74db08cb1ac2061da31b9b3f.tar.xz
nixpkgs-972f51a2daadfaff74db08cb1ac2061da31b9b3f.tar.zst
nixpkgs-972f51a2daadfaff74db08cb1ac2061da31b9b3f.zip
llvmPackages_37.libcxxabi: fix with more recent versions of libc++
The build breaks on libc++ 3.8 and above, which hinders our upgrade to
LLVM 4 for the Darwin stdenv.
Diffstat (limited to 'pkgs/development/compilers')
-rw-r--r--pkgs/development/compilers/llvm/3.7/libc++abi.nix17
1 files changed, 15 insertions, 2 deletions
diff --git a/pkgs/development/compilers/llvm/3.7/libc++abi.nix b/pkgs/development/compilers/llvm/3.7/libc++abi.nix
index 6a62a6256b4..d2be57b1a5f 100644
--- a/pkgs/development/compilers/llvm/3.7/libc++abi.nix
+++ b/pkgs/development/compilers/llvm/3.7/libc++abi.nix
@@ -1,6 +1,12 @@
-{ stdenv, cmake, fetch, libcxx, libunwind, llvm, version }:
+{ stdenv, cmake, fetch, fetchpatch, libcxx, libunwind, llvm, version }:
 
-stdenv.mkDerivation {
+let
+  # Newer LLVMs (3.8 onwards) have changed how some basic C++ stuff works, which breaks builds of this older version
+  llvm38-and-above = fetchpatch {
+    url    = "https://trac.macports.org/raw-attachment/ticket/50304/0005-string-Fix-exception-declaration.patch";
+    sha256 = "1lm38n7s0l5dbl7kp4i49pvzxz1mcvlr2vgsnj47agnwhhm63jvr";
+  };
+in stdenv.mkDerivation {
   name = "libc++abi-${version}";
 
   src = fetch "libcxxabi" "0ambfcmr2nh88hx000xb7yjm9lsqjjz49w5mlf6dlxzmj3nslzx4";
@@ -16,6 +22,13 @@ stdenv.mkDerivation {
     export TRIPLE=x86_64-apple-darwin
   '';
 
+  # I can't use patches directly because this is actually a patch for libc++'s source, which we manually extract
+  # into the libc++abi build environment above.
+  prePatch = ''(
+    cd ../libcxx-*
+    patch -p1 < ${llvm38-and-above}
+  )'';
+
   installPhase = if stdenv.isDarwin
     then ''
       for file in lib/*.dylib; do