llvmPackages_rocm.llvm: don't build shared libs

This seems to fix the notorious "CommandLine Error: Option 'xxxxx'
registered more than once!" error in applications that use both Mesa and
ROCm.

Since Mesa is built with llvmPackages_latest and ROCm stuff is built
with llvmPackages_rocm, applications that use both (such as Blender) end
up with two different `libLLVM*.so`s loaded, which breaks things.

This seems like a straightforward way to fix the problem, and since the
ROCm stack seems to be the only thing in Nixpkgs that uses
llvmPackages_rocm this hopefully shouldn't break anything.

While there might be another way to fix this problem that doesn't
require disabling the shared libraries, I haven't been able to find it
yet, and since this issue seems to affect a lot of people I think it
might make sense to merge this fix for now and revisit it later if a
better solution is found.

This also removes a small patch to rocm-comgr since there are no longer
LLVM shared libraries for it to link against.
main
InternetUnexplorer 2 years ago
parent 062a0c5437
commit 9c8eda7f38
  1. 4
      pkgs/development/compilers/llvm/rocm/llvm/default.nix
  2. 9
      pkgs/development/libraries/rocm-comgr/default.nix

@ -12,7 +12,7 @@
, zlib
, debugVersion ? false
, enableManpages ? false
, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
, enableSharedLibraries ? false
, version
, src
@ -59,7 +59,7 @@ in stdenv.mkDerivation rec {
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
];
postPatch = ''
postPatch = lib.optional enableSharedLibraries ''
substitute '${./outputs.patch}' ./outputs.patch --subst-var lib
patch -p1 < ./outputs.patch
'';

@ -27,15 +27,6 @@ stdenv.mkDerivation rec {
"-DLLVM_TARGETS_TO_BUILD=\"AMDGPU;X86\""
];
# The comgr build tends to link against the static LLVM libraries
# *and* the dynamic library. Linking against both causes errors
# about command line options being registered twice. This patch
# removes the static library linking.
patchPhase = ''
sed -e '/^llvm_map_components_to_libnames/,/[[:space:]]*Symbolize)/d' \
-i CMakeLists.txt
'';
passthru.updateScript = writeScript "update.sh" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq common-updater-scripts

Loading…
Cancel
Save