From d417ada9a6b13e4a070dd4eb7309adeb708db432 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Tue, 17 Apr 2018 09:50:21 -0500 Subject: [PATCH 1/3] clang: only link if LLVMgold exists buildEnv now errors with broken symlinks. Lots of things like this still exist. Discussion in #39038. (cherry picked from commit 7b73c7f49a0a4673987b661b9d679ec595704d89) --- pkgs/development/compilers/llvm/3.4/clang.nix | 5 ++++- pkgs/development/compilers/llvm/3.5/clang.nix | 5 ++++- pkgs/development/compilers/llvm/3.7/clang/default.nix | 5 ++++- pkgs/development/compilers/llvm/3.8/clang/default.nix | 5 ++++- pkgs/development/compilers/llvm/3.9/clang/default.nix | 5 ++++- pkgs/development/compilers/llvm/4/clang/default.nix | 5 ++++- pkgs/development/compilers/llvm/6/clang/default.nix | 5 ++++- 7 files changed, 28 insertions(+), 7 deletions(-) diff --git a/pkgs/development/compilers/llvm/3.4/clang.nix b/pkgs/development/compilers/llvm/3.4/clang.nix index 10510c75035..863e7eb2247 100644 --- a/pkgs/development/compilers/llvm/3.4/clang.nix +++ b/pkgs/development/compilers/llvm/3.4/clang.nix @@ -29,7 +29,10 @@ stdenv.mkDerivation { # Clang expects to find LLVMgold in its own prefix # Clang expects to find sanitizer libraries in its own prefix postInstall = '' - ln -sv ${llvm}/lib/LLVMgold.so $out/lib + if [ -e ${llvm}/lib/LLVMgold.so ]; then + ln -sv ${llvm}/lib/LLVMgold.so $out/lib + fi + ln -sv ${llvm}/lib/clang/${version}/lib $out/lib/clang/${version}/ ''; diff --git a/pkgs/development/compilers/llvm/3.5/clang.nix b/pkgs/development/compilers/llvm/3.5/clang.nix index f15c989ef51..b61118439ee 100644 --- a/pkgs/development/compilers/llvm/3.5/clang.nix +++ b/pkgs/development/compilers/llvm/3.5/clang.nix @@ -31,7 +31,10 @@ in stdenv.mkDerivation { # Clang expects to find LLVMgold in its own prefix # Clang expects to find sanitizer libraries in its own prefix postInstall = '' - ln -sv ${llvm}/lib/LLVMgold.so $out/lib + if [ -e ${llvm}/lib/LLVMgold.so ]; then + ln -sv ${llvm}/lib/LLVMgold.so $out/lib + fi + ln -sv ${llvm}/lib/clang/${version}/lib $out/lib/clang/${version}/ ln -sv $out/bin/clang $out/bin/cpp ''; diff --git a/pkgs/development/compilers/llvm/3.7/clang/default.nix b/pkgs/development/compilers/llvm/3.7/clang/default.nix index f27e3f0089e..a63706e95cf 100644 --- a/pkgs/development/compilers/llvm/3.7/clang/default.nix +++ b/pkgs/development/compilers/llvm/3.7/clang/default.nix @@ -32,7 +32,10 @@ let # Clang expects to find LLVMgold in its own prefix # Clang expects to find sanitizer libraries in its own prefix postInstall = '' - ln -sv ${llvm}/lib/LLVMgold.so $out/lib + if [ -e ${llvm}/lib/LLVMgold.so ]; then + ln -sv ${llvm}/lib/LLVMgold.so $out/lib + fi + ln -sv ${llvm}/lib/clang/${version}/lib $out/lib/clang/${version}/ ln -sv $out/bin/clang $out/bin/cpp ''; diff --git a/pkgs/development/compilers/llvm/3.8/clang/default.nix b/pkgs/development/compilers/llvm/3.8/clang/default.nix index 0147485dd58..c8b2fec5e51 100644 --- a/pkgs/development/compilers/llvm/3.8/clang/default.nix +++ b/pkgs/development/compilers/llvm/3.8/clang/default.nix @@ -34,7 +34,10 @@ let # Clang expects to find LLVMgold in its own prefix # Clang expects to find sanitizer libraries in its own prefix postInstall = '' - ln -sv ${llvm}/lib/LLVMgold.so $out/lib + if [ -e ${llvm}/lib/LLVMgold.so ]; then + ln -sv ${llvm}/lib/LLVMgold.so $out/lib + fi + ln -sv ${llvm}/lib/clang/${version}/lib $out/lib/clang/${version}/ ln -sv $out/bin/clang $out/bin/cpp diff --git a/pkgs/development/compilers/llvm/3.9/clang/default.nix b/pkgs/development/compilers/llvm/3.9/clang/default.nix index aafe30e4c9b..fabc6a39d9f 100644 --- a/pkgs/development/compilers/llvm/3.9/clang/default.nix +++ b/pkgs/development/compilers/llvm/3.9/clang/default.nix @@ -36,7 +36,10 @@ let # Clang expects to find LLVMgold in its own prefix # Clang expects to find sanitizer libraries in its own prefix postInstall = '' - ln -sv ${llvm}/lib/LLVMgold.so $out/lib + if [ -e ${llvm}/lib/LLVMgold.so ]; then + ln -sv ${llvm}/lib/LLVMgold.so $out/lib + fi + ln -sv ${llvm}/lib/clang/${version}/lib $out/lib/clang/${version}/ ln -sv $out/bin/clang $out/bin/cpp diff --git a/pkgs/development/compilers/llvm/4/clang/default.nix b/pkgs/development/compilers/llvm/4/clang/default.nix index 5531fd2ab77..e8f025c24ed 100644 --- a/pkgs/development/compilers/llvm/4/clang/default.nix +++ b/pkgs/development/compilers/llvm/4/clang/default.nix @@ -52,7 +52,10 @@ let # Clang expects to find LLVMgold in its own prefix # Clang expects to find sanitizer libraries in its own prefix postInstall = '' - ln -sv ${llvm}/lib/LLVMgold.so $out/lib + if [ -e ${llvm}/lib/LLVMgold.so ]; then + ln -sv ${llvm}/lib/LLVMgold.so $out/lib + fi + ln -sv ${llvm}/lib/clang/${release_version}/lib $out/lib/clang/${release_version}/ ln -sv $out/bin/clang $out/bin/cpp diff --git a/pkgs/development/compilers/llvm/6/clang/default.nix b/pkgs/development/compilers/llvm/6/clang/default.nix index 919efdc8ef9..c540a8267e9 100644 --- a/pkgs/development/compilers/llvm/6/clang/default.nix +++ b/pkgs/development/compilers/llvm/6/clang/default.nix @@ -53,7 +53,10 @@ let # Clang expects to find LLVMgold in its own prefix # Clang expects to find sanitizer libraries in its own prefix postInstall = '' - ln -sv ${llvm}/lib/LLVMgold.so $out/lib + if [ -e ${llvm}/lib/LLVMgold.so ]; then + ln -sv ${llvm}/lib/LLVMgold.so $out/lib + fi + ln -sv ${llvm}/lib/clang/${release_version}/lib $out/lib/clang/${release_version}/ ln -sv $out/bin/clang $out/bin/cpp From 9416f2980001fafbf6bd635fc7825830ec68c22d Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Mon, 16 Apr 2018 20:04:54 -0500 Subject: [PATCH 2/3] llvm: remove libedit from clang clang should never need libedit. From what I understand this is only needed by LLDB. https://github.com/llvm-mirror/clang/search?q=libedit (cherry picked from commit 9ee69c27c9b300154f1b26c1c21737cf000656cf) --- pkgs/development/compilers/llvm/3.4/clang.nix | 4 ++-- pkgs/development/compilers/llvm/3.5/clang.nix | 4 ++-- pkgs/development/compilers/llvm/3.7/clang/default.nix | 4 ++-- pkgs/development/compilers/llvm/3.8/clang/default.nix | 4 ++-- pkgs/development/compilers/llvm/3.9/clang/default.nix | 4 ++-- pkgs/development/compilers/llvm/4/clang/default.nix | 4 ++-- pkgs/development/compilers/llvm/5/clang/default.nix | 4 ++-- pkgs/development/compilers/llvm/6/clang/default.nix | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/pkgs/development/compilers/llvm/3.4/clang.nix b/pkgs/development/compilers/llvm/3.4/clang.nix index 863e7eb2247..2c5d3524911 100644 --- a/pkgs/development/compilers/llvm/3.4/clang.nix +++ b/pkgs/development/compilers/llvm/3.4/clang.nix @@ -1,4 +1,4 @@ -{ stdenv, fetch, cmake, libxml2, libedit, llvm, zlib, version, clang-tools-extra_src }: +{ stdenv, fetch, cmake, libxml2, llvm, zlib, version, clang-tools-extra_src }: stdenv.mkDerivation { name = "clang-${version}"; @@ -17,7 +17,7 @@ stdenv.mkDerivation { patches = [ ./clang-separate-build.patch ./clang-purity.patch ]; - buildInputs = [ cmake libedit libxml2 zlib ]; + buildInputs = [ cmake libxml2 zlib ]; cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-std=c++11" diff --git a/pkgs/development/compilers/llvm/3.5/clang.nix b/pkgs/development/compilers/llvm/3.5/clang.nix index b61118439ee..7e0163577ba 100644 --- a/pkgs/development/compilers/llvm/3.5/clang.nix +++ b/pkgs/development/compilers/llvm/3.5/clang.nix @@ -1,4 +1,4 @@ -{ stdenv, fetch, cmake, libxml2, libedit, llvm, version, clang-tools-extra_src }: +{ stdenv, fetch, cmake, libxml2, llvm, version, clang-tools-extra_src }: let gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; in stdenv.mkDerivation { @@ -12,7 +12,7 @@ in stdenv.mkDerivation { mv clang-tools-extra-* $sourceRoot/tools/extra ''; - buildInputs = [ cmake libedit libxml2 llvm ]; + buildInputs = [ cmake libxml2 llvm ]; cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-std=c++11" diff --git a/pkgs/development/compilers/llvm/3.7/clang/default.nix b/pkgs/development/compilers/llvm/3.7/clang/default.nix index a63706e95cf..4ccd00af684 100644 --- a/pkgs/development/compilers/llvm/3.7/clang/default.nix +++ b/pkgs/development/compilers/llvm/3.7/clang/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetch, cmake, libxml2, libedit, llvm, version, clang-tools-extra_src }: +{ stdenv, fetch, cmake, libxml2, llvm, version, clang-tools-extra_src }: let gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; @@ -13,7 +13,7 @@ let mv clang-tools-extra-* $sourceRoot/tools/extra ''; - buildInputs = [ cmake libedit libxml2 llvm ]; + buildInputs = [ cmake libxml2 llvm ]; cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-std=c++11" diff --git a/pkgs/development/compilers/llvm/3.8/clang/default.nix b/pkgs/development/compilers/llvm/3.8/clang/default.nix index c8b2fec5e51..05893704d87 100644 --- a/pkgs/development/compilers/llvm/3.8/clang/default.nix +++ b/pkgs/development/compilers/llvm/3.8/clang/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetch, cmake, libxml2, libedit, llvm, version, clang-tools-extra_src, python }: +{ stdenv, fetch, cmake, libxml2, llvm, version, clang-tools-extra_src, python }: let gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; @@ -13,7 +13,7 @@ let mv clang-tools-extra-* $sourceRoot/tools/extra ''; - buildInputs = [ cmake libedit libxml2 llvm python ]; + buildInputs = [ cmake libxml2 llvm python ]; cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-std=c++11" diff --git a/pkgs/development/compilers/llvm/3.9/clang/default.nix b/pkgs/development/compilers/llvm/3.9/clang/default.nix index fabc6a39d9f..1f6d80ab3be 100644 --- a/pkgs/development/compilers/llvm/3.9/clang/default.nix +++ b/pkgs/development/compilers/llvm/3.9/clang/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetch, cmake, libxml2, libedit, llvm, version, clang-tools-extra_src, python }: +{ stdenv, fetch, cmake, libxml2, llvm, version, clang-tools-extra_src, python }: let gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; @@ -15,7 +15,7 @@ let nativeBuildInputs = [ cmake ]; - buildInputs = [ libedit libxml2 llvm python ]; + buildInputs = [ libxml2 llvm python ]; cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-std=c++11" diff --git a/pkgs/development/compilers/llvm/4/clang/default.nix b/pkgs/development/compilers/llvm/4/clang/default.nix index e8f025c24ed..c6538282f23 100644 --- a/pkgs/development/compilers/llvm/4/clang/default.nix +++ b/pkgs/development/compilers/llvm/4/clang/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetch, cmake, libxml2, libedit, llvm, version, release_version, clang-tools-extra_src, python +{ stdenv, fetch, cmake, libxml2, llvm, version, release_version, clang-tools-extra_src, python , fixDarwinDylibNames , enableManpages ? false }: @@ -19,7 +19,7 @@ let nativeBuildInputs = [ cmake python ] ++ stdenv.lib.optional enableManpages python.pkgs.sphinx; - buildInputs = [ libedit libxml2 llvm ] + buildInputs = [ libxml2 llvm ] ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames; cmakeFlags = [ diff --git a/pkgs/development/compilers/llvm/5/clang/default.nix b/pkgs/development/compilers/llvm/5/clang/default.nix index b5aea54b577..539e29ac5e4 100644 --- a/pkgs/development/compilers/llvm/5/clang/default.nix +++ b/pkgs/development/compilers/llvm/5/clang/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetch, cmake, libxml2, libedit, llvm, version, release_version, clang-tools-extra_src, python +{ stdenv, fetch, cmake, libxml2, llvm, version, release_version, clang-tools-extra_src, python , fixDarwinDylibNames , enableManpages ? false }: @@ -19,7 +19,7 @@ let nativeBuildInputs = [ cmake python ] ++ stdenv.lib.optional enableManpages python.pkgs.sphinx; - buildInputs = [ libedit libxml2 llvm ] + buildInputs = [ libxml2 llvm ] ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames; cmakeFlags = [ diff --git a/pkgs/development/compilers/llvm/6/clang/default.nix b/pkgs/development/compilers/llvm/6/clang/default.nix index c540a8267e9..3d02062a4a3 100644 --- a/pkgs/development/compilers/llvm/6/clang/default.nix +++ b/pkgs/development/compilers/llvm/6/clang/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetch, cmake, libxml2, libedit, llvm, version, release_version, clang-tools-extra_src, python +{ stdenv, fetch, cmake, libxml2, llvm, version, release_version, clang-tools-extra_src, python , fixDarwinDylibNames , enableManpages ? false }: @@ -19,7 +19,7 @@ let nativeBuildInputs = [ cmake python ] ++ stdenv.lib.optional enableManpages python.pkgs.sphinx; - buildInputs = [ libedit libxml2 llvm ] + buildInputs = [ libxml2 llvm ] ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames; cmakeFlags = [ From 895fef2b19db36e841175b934ffed1297a961ffd Mon Sep 17 00:00:00 2001 From: Matthew Justin Bauer Date: Wed, 18 Apr 2018 13:13:03 -0500 Subject: [PATCH 3/3] clang3.4: still needs libedit https://hydra.nixos.org/build/72965931/nixlog/1 (cherry picked from commit 2d90138b3b90fb36db50a0954629b2f306795d5a) --- pkgs/development/compilers/llvm/3.4/clang.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/llvm/3.4/clang.nix b/pkgs/development/compilers/llvm/3.4/clang.nix index 2c5d3524911..863e7eb2247 100644 --- a/pkgs/development/compilers/llvm/3.4/clang.nix +++ b/pkgs/development/compilers/llvm/3.4/clang.nix @@ -1,4 +1,4 @@ -{ stdenv, fetch, cmake, libxml2, llvm, zlib, version, clang-tools-extra_src }: +{ stdenv, fetch, cmake, libxml2, libedit, llvm, zlib, version, clang-tools-extra_src }: stdenv.mkDerivation { name = "clang-${version}"; @@ -17,7 +17,7 @@ stdenv.mkDerivation { patches = [ ./clang-separate-build.patch ./clang-purity.patch ]; - buildInputs = [ cmake libxml2 zlib ]; + buildInputs = [ cmake libedit libxml2 zlib ]; cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-std=c++11"