From 1748887ff2353a16806a46dc27fb603981a047d5 Mon Sep 17 00:00:00 2001 From: Matthias Treydte Date: Thu, 3 Mar 2022 12:16:02 +0100 Subject: [PATCH] llvmPackages/libllvm: move static archives to dev output Reduces closure size by ~240MiB (down to ~100MiB) for LLVM 13, the others are similar. Having those archives in the lib output makes no sense as they are no runtime dependencies. Removing them alltogether is also not an option because the dynamic libraries offer only the C API while many users of libllvm require the C++ API. Those users must have an dependency on libllvm.dev anyway and will find those files for linking. --- pkgs/development/compilers/llvm/10/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/11/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/12/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/13/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/14/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/5/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/6/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/7/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/8/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/9/llvm/default.nix | 6 ++++++ pkgs/development/compilers/llvm/git/llvm/default.nix | 6 ++++++ 11 files changed, 66 insertions(+) diff --git a/pkgs/development/compilers/llvm/10/llvm/default.nix b/pkgs/development/compilers/llvm/10/llvm/default.nix index bb1b90b36a92..128ac5709356 100644 --- a/pkgs/development/compilers/llvm/10/llvm/default.nix +++ b/pkgs/development/compilers/llvm/10/llvm/default.nix @@ -244,6 +244,12 @@ in stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/11/llvm/default.nix b/pkgs/development/compilers/llvm/11/llvm/default.nix index e8cfd23faa7e..955f9dbec7e8 100644 --- a/pkgs/development/compilers/llvm/11/llvm/default.nix +++ b/pkgs/development/compilers/llvm/11/llvm/default.nix @@ -255,6 +255,12 @@ in stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/12/llvm/default.nix b/pkgs/development/compilers/llvm/12/llvm/default.nix index 2c035ee67a9e..8acd4d2c1fda 100644 --- a/pkgs/development/compilers/llvm/12/llvm/default.nix +++ b/pkgs/development/compilers/llvm/12/llvm/default.nix @@ -242,6 +242,12 @@ in stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/13/llvm/default.nix b/pkgs/development/compilers/llvm/13/llvm/default.nix index abfb2b36d18f..b760d75cf4ed 100644 --- a/pkgs/development/compilers/llvm/13/llvm/default.nix +++ b/pkgs/development/compilers/llvm/13/llvm/default.nix @@ -205,6 +205,12 @@ in stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/14/llvm/default.nix b/pkgs/development/compilers/llvm/14/llvm/default.nix index d2059cc66ba2..02ec0f3ab119 100644 --- a/pkgs/development/compilers/llvm/14/llvm/default.nix +++ b/pkgs/development/compilers/llvm/14/llvm/default.nix @@ -200,6 +200,12 @@ in stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/5/llvm/default.nix b/pkgs/development/compilers/llvm/5/llvm/default.nix index cf668cd566a6..253aaade6939 100644 --- a/pkgs/development/compilers/llvm/5/llvm/default.nix +++ b/pkgs/development/compilers/llvm/5/llvm/default.nix @@ -222,6 +222,12 @@ stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${v}.dylib '') versionSuffixes} '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/6/llvm/default.nix b/pkgs/development/compilers/llvm/6/llvm/default.nix index 61f9234274d3..622b90e58e87 100644 --- a/pkgs/development/compilers/llvm/6/llvm/default.nix +++ b/pkgs/development/compilers/llvm/6/llvm/default.nix @@ -215,6 +215,12 @@ stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${v}.dylib '') versionSuffixes} '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/7/llvm/default.nix b/pkgs/development/compilers/llvm/7/llvm/default.nix index b324e1a0e4d6..01784baca8ce 100644 --- a/pkgs/development/compilers/llvm/7/llvm/default.nix +++ b/pkgs/development/compilers/llvm/7/llvm/default.nix @@ -234,6 +234,12 @@ in stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${v}.dylib '') versionSuffixes} '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/8/llvm/default.nix b/pkgs/development/compilers/llvm/8/llvm/default.nix index efd1707eb337..01a052d4042f 100644 --- a/pkgs/development/compilers/llvm/8/llvm/default.nix +++ b/pkgs/development/compilers/llvm/8/llvm/default.nix @@ -226,6 +226,12 @@ in stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/9/llvm/default.nix b/pkgs/development/compilers/llvm/9/llvm/default.nix index 1dd1455ed6d6..b197e9ab8ba1 100644 --- a/pkgs/development/compilers/llvm/9/llvm/default.nix +++ b/pkgs/development/compilers/llvm/9/llvm/default.nix @@ -241,6 +241,12 @@ in stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native ''; diff --git a/pkgs/development/compilers/llvm/git/llvm/default.nix b/pkgs/development/compilers/llvm/git/llvm/default.nix index d2059cc66ba2..02ec0f3ab119 100644 --- a/pkgs/development/compilers/llvm/git/llvm/default.nix +++ b/pkgs/development/compilers/llvm/git/llvm/default.nix @@ -200,6 +200,12 @@ in stdenv.mkDerivation (rec { ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib '' + + optionalString enableSharedLibraries '' + mkdir -p $dev/lib + mv $lib/lib/*.a $dev/lib + sed -i -E "s|$lib/lib/(.*)\.a|$dev/lib/\1\.a|" \ + "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" + '' + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native '';