llvmPackage_{3.4,3.5,3.7,3.8,3.9}: fix output of llvm-config

llvm-config is a tool to output compile and linker flags, when compiling against llvm.

The tool however outputs static library names despite libllvm is build
as shared library on nixos. This was fixed for llvm 3.4, 3.5 and 3.7.

For llvm 3.8 and 3.9 it printed the library extension twice (.so.so).
This was fixed in 4.0 and the patch is backported to 3.8 and 3.9 in
this pull request.

```
$ for i in 34 35 37 38 39; do echo "\nllvm-$i"; nix-shell -p llvmPackages_$i.llvm --run 'llvm-config --libnames'; done

llvm-34
libLLVMInstrumentation.so libLLVMIRReader.so libLLVMAsmParser.so
...

llvm-35
libLLVMLTO.so libLLVMObjCARCOpts.so libLLVMLinker.so libLLVMipo.so
...

llvm-37
libLLVMLTO.so libLLVMObjCARCOpts.so libLLVMLinker.so libLLVMBitWriter.so
...

llvm-38
libLLVM-3.8.1.so

llvm-39
libLLVM-3.9.so
```

fixes #26713
This commit is contained in:
Jörg Thalheim
2017-06-20 10:22:06 +01:00
parent fe9c7ad83f
commit b6bacc4bb2
8 changed files with 25 additions and 17 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ in stdenv.mkDerivation rec {
patches = stdenv.lib.optionals (!stdenv.isDarwin) [ patches = stdenv.lib.optionals (!stdenv.isDarwin) [
# llvm-config --libfiles returns (non-existing) static libs # llvm-config --libfiles returns (non-existing) static libs
./fix-llvm-config.patch ../fix-llvm-config.patch
]; ];
# hacky fix: created binaries need to be run before installation # hacky fix: created binaries need to be run before installation
+2 -1
View File
@@ -53,7 +53,8 @@ in stdenv.mkDerivation rec {
"-DCAN_TARGET_i386=false" "-DCAN_TARGET_i386=false"
]; ];
patches = [ ./fix-15974.patch ]; patches = [ ./fix-15974.patch ] ++
stdenv.lib.optionals (!stdenv.isDarwin) [../fix-llvm-config.patch ];
postBuild = '' postBuild = ''
rm -fR $out rm -fR $out
@@ -1,13 +0,0 @@
diff --git a/utils/llvm-build/llvmbuild/main.py b/utils/llvm-build/llvmbuild/main.py
index eacefdf60bf..40d25f5cef8 100644
--- a/utils/llvm-build/llvmbuild/main.py
+++ b/utils/llvm-build/llvmbuild/main.py
@@ -412,7 +412,7 @@ subdirectories = %s
if library_name is None:
library_name_as_cstr = '0'
else:
- library_name_as_cstr = '"lib%s.a"' % library_name
+ library_name_as_cstr = '"lib%s.so"' % library_name
f.write(' { "%s", %s, %d, { %s } },\n' % (
name, library_name_as_cstr, is_installed,
', '.join('"%s"' % dep
+1 -1
View File
@@ -55,7 +55,7 @@ in stdenv.mkDerivation rec {
patches = stdenv.lib.optionals (!stdenv.isDarwin) [ patches = stdenv.lib.optionals (!stdenv.isDarwin) [
# llvm-config --libfiles returns (non-existing) static libs # llvm-config --libfiles returns (non-existing) static libs
./fix-llvm-config.patch ../fix-llvm-config.patch
]; ];
cmakeFlags = with stdenv; [ cmakeFlags = with stdenv; [
@@ -0,0 +1,11 @@
--- llvm.org/utils/llvm-build/llvmbuild/main.py 2015-10-07 00:24:35.000000000 +0100
+++ llvm/utils/llvm-build/llvmbuild/main.py 2017-06-16 17:08:39.866586578 +0100
@@ -413,7 +413,7 @@
if library_name is None:
library_name_as_cstr = 'nullptr'
else:
- library_name_as_cstr = '"lib%s.a"' % library_name
+ library_name_as_cstr = '"lib%s.so"' % library_name
if is_installed:
is_installed_as_cstr = 'true'
else:
+2 -1
View File
@@ -37,7 +37,8 @@ in stdenv.mkDerivation rec {
# Fix a segfault in llc # Fix a segfault in llc
# See http://lists.llvm.org/pipermail/llvm-dev/2016-October/106500.html # See http://lists.llvm.org/pipermail/llvm-dev/2016-October/106500.html
patches = [ ./D17533-1.patch ]; patches = [ ./D17533-1.patch ] ++
stdenv.lib.optionals (!stdenv.isDarwin) [./fix-llvm-config.patch];
# hacky fix: New LLVM releases require a newer OS X SDK than # hacky fix: New LLVM releases require a newer OS X SDK than
# 10.9. This is a temporary measure until nixpkgs darwin support is # 10.9. This is a temporary measure until nixpkgs darwin support is
@@ -58,6 +58,14 @@ in stdenv.mkDerivation rec {
propagatedBuildInputs = [ ncurses zlib ]; propagatedBuildInputs = [ ncurses zlib ];
patches = [
# fix output of llvm-config (fixed in llvm 4.0)
(fetchpatch {
url = https://github.com/llvm-mirror/llvm/commit/5340b5b3d970069aebf3dde49d8964583742e01a.patch;
sha256 = "095f8knplwqbc2p7rad1kq8633i34qynni9jna93an7kyc80wdxl";
})
];
postPatch = "" postPatch = ""
+ '' + ''
patch -p1 --reverse < ${fetchpatch { patch -p1 --reverse < ${fetchpatch {