Build of "media-libs/mesa-24.0.0" fails reproducibly. /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: src/gallium/frontends/rusticl/librusticl.a(rusticl.rusticl.a47c5595081e634a-cgu.06.rcgu.o): in function `rusticl::core::program::get_disk_cache': rusticl.a47c5595081e634a-cgu.06:(.text._ZN7rusticl4core7program14get_disk_cache17h48ec0ac8c9b41030E+0x1e): undefined reference to `clang::getClangFullVersion()' /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: rusticl.a47c5595081e634a-cgu.06:(.text._ZN7rusticl4core7program14get_disk_cache17h48ec0ac8c9b41030E+0x2a): undefined reference to `llvm::writeSpirv(llvm::Module*, SPIRV::TranslatorOpts const&, std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)' collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed. # /etc/portage/package.use/media-libs media-libs/mesa d3d9 gles1 osmesa xa xvmc zink # /etc/portage/profile/package.use.mask media-libs/mesa -zink In Attachment - emerge --info - build.log of media-libs/mesa-24.0.0 Reproducible: Always
Created attachment 884270 [details] build.log for media-libs/mesa-24.0.0
Created attachment 884271 [details] emerge --info
Reverting commit 33673bcc as per the referenced bug still not enough to make it compile. llvm-config --version 17.0.6 clang --version clang version 17.0.6 Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/lib/llvm/17/bin Configuration file: /etc/clang/x86_64-pc-linux-gnu-clang.cfg gcc --version gcc (Gentoo Hardened 13.2.1_p20240113-r1 p12) 13.2.1 20240113 [2321/2321] x86_64-pc-linux-gnu-g++ -o src/gallium/targets/rusticl/libRusticlOpenCL.so.1.0.0 src/gallium/targets/rusticl/libRusticlOpenCL.so.1.0.0.p/target.c.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libRusticlOpenCL.so.1 -Wl,--whole-archive src/gallium/frontends/rusticl/librusticl.a -Wl,--no-whole-archive -O2 -march=native -pipe -Wl,-O1 -Wl,--as-needed -Wl,-rpath,/usr/lib/llvm/17/lib64 -Wl,-rpath-link,/usr/lib/llvm/17/lib64 src/gallium/auxiliary/libgalliumvl.a src/compiler/nir/libnir.a src/compiler/libcompiler.a src/util/libmesa_util.a src/util/libmesa_util_sse41.a src/util/blake3/libblake3.a src/c11/impl/libmesa_util_c11.a src/gallium/auxiliary/pipe-loader/libpipe_loader_static.a src/loader/libloader.a src/util/libxmlconfig.a src/gallium/winsys/sw/dri/libswdri.a src/gallium/winsys/sw/kms-dri/libswkmsdri.a src/gallium/winsys/sw/wrapper/libwsw.a src/gallium/winsys/sw/null/libws_null.a src/gallium/drivers/iris/libiris.a src/gallium/drivers/iris/libiris_per_hw_ver80.a src/gallium/drivers/iris/libiris_per_hw_ver90.a src/gallium/drivers/iris/libiris_per_hw_ver110.a src/gallium/drivers/iris/libiris_per_hw_ver120.a src/gallium/drivers/iris/libiris_per_hw_ver125.a src/gallium/drivers/iris/libiris_per_hw_ver200.a src/intel/compiler/libintel_compiler.a src/intel/dev/libintel_dev.a src/intel/isl/libisl.a src/intel/isl/libisl_per_hw_ver40.a src/intel/isl/libisl_per_hw_ver50.a src/intel/isl/libisl_per_hw_ver60.a src/intel/isl/libisl_per_hw_ver70.a src/intel/isl/libisl_per_hw_ver75.a src/intel/isl/libisl_per_hw_ver80.a src/intel/isl/libisl_per_hw_ver90.a src/intel/isl/libisl_per_hw_ver110.a src/intel/isl/libisl_per_hw_ver120.a src/intel/isl/libisl_per_hw_ver125.a src/intel/isl/libisl_per_hw_ver200.a src/intel/isl/libisl_tiled_memcpy.a src/intel/isl/libisl_tiled_memcpy_sse41.a src/intel/blorp/libblorp.a src/intel/perf/libintel_perf.a src/intel/common/libintel_common.a src/intel/common/libintel_clflushopt.a src/intel/ds/libintel-driver-ds.a src/gallium/winsys/iris/drm/libiriswinsys.a src/gallium/drivers/r600/libr600.a src/mesa/libmesa.a src/compiler/glsl/libglsl.a src/compiler/glsl/glcpp/libglcpp.a src/mesa/libmesa_sse41.a src/compiler/spirv/libvtn.a src/gallium/winsys/radeon/drm/libradeonwinsys.a src/gallium/drivers/radeonsi/libradeonsi_gfx6.a src/amd/compiler/libaco.a src/gallium/drivers/radeonsi/libradeonsi_gfx7.a src/gallium/drivers/radeonsi/libradeonsi_gfx8.a src/gallium/drivers/radeonsi/libradeonsi_gfx9.a src/gallium/drivers/radeonsi/libradeonsi_gfx10.a src/gallium/drivers/radeonsi/libradeonsi_gfx103.a src/gallium/drivers/radeonsi/libradeonsi_gfx11.a src/gallium/drivers/radeonsi/libradeonsi_gfx115.a src/gallium/drivers/radeonsi/libradeonsi.a src/gallium/winsys/amdgpu/drm/libamdgpuwinsys.a src/amd/addrlib/libaddrlib.a src/amd/common/libamd_common.a src/amd/llvm/libamd_common_llvm.a src/amd/vpelib/liblibvpe.a.a src/gallium/drivers/llvmpipe/libllvmpipe.a src/gallium/drivers/softpipe/libsoftpipe.a src/gallium/frontends/rusticl/liblibc_rust_gen.rlib src/gallium/frontends/rusticl/libmesa_rust.rlib src/gallium/frontends/rusticl/libmesa_rust_gen.rlib src/gallium/auxiliary/libgallium.a src/compiler/clc/liblibmesaclc.a src/gallium/frontends/rusticl/libmesa_rust_util.rlib src/gallium/frontends/rusticl/libmesa_bindings_inline_wrapper.a src/gallium/frontends/rusticl/libsystem_bindings.a src/gallium/frontends/rusticl/librusticl_llvm_gen.rlib src/gallium/frontends/rusticl/librusticl_opencl_gen.rlib -Wl,--build-id=sha1 -Wl,--gc-sections -Wl,--version-script /var/tmp/portage/media-libs/mesa-24.0.0/work/mesa-24.0.0/src/gallium/targets/rusticl/rusticl.sym /usr/lib64/libz.so -pthread -lm /usr/lib64/libzstd.so /usr/lib64/libunwind.so -L/usr/lib/llvm/17/lib64 -lLLVM-17 /usr/lib64/libdrm.so /usr/lib64/libexpat.so /usr/lib64/libxcb.so /usr/lib64/libxcb-randr.so /usr/lib64/libdrm_radeon.so /usr/lib64/libelf.so -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 /usr/lib64/libdrm_amdgpu.so -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -lrt -lpthread -ldl -lutil -fPIC -L/usr/lib/llvm/17/lib64 -lLLVM-17 -lsensors /usr/lib/llvm/17/lib64/libclang-cpp.so -L/usr/lib/llvm/17/lib64 -lLLVM-17 /usr/lib/llvm/17/lib64/libLLVMSPIRVLib.so /usr/lib64/libSPIRV-Tools-opt.so /usr/lib64/libSPIRV-Tools.so /usr/lib64/libSPIRV-Tools-link.so -Wl,--end-group FAILED: src/gallium/targets/rusticl/libRusticlOpenCL.so.1.0.0 x86_64-pc-linux-gnu-g++ -o src/gallium/targets/rusticl/libRusticlOpenCL.so.1.0.0 src/gallium/targets/rusticl/libRusticlOpenCL.so.1.0.0.p/target.c.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libRusticlOpenCL.so.1 -Wl,--whole-archive src/gallium/frontends/rusticl/librusticl.a -Wl,--no-whole-archive -O2 -march=native -pipe -Wl,-O1 -Wl,--as-needed -Wl,-rpath,/usr/lib/llvm/17/lib64 -Wl,-rpath-link,/usr/lib/llvm/17/lib64 src/gallium/auxiliary/libgalliumvl.a src/compiler/nir/libnir.a src/compiler/libcompiler.a src/util/libmesa_util.a src/util/libmesa_util_sse41.a src/util/blake3/libblake3.a src/c11/impl/libmesa_util_c11.a src/gallium/auxiliary/pipe-loader/libpipe_loader_static.a src/loader/libloader.a src/util/libxmlconfig.a src/gallium/winsys/sw/dri/libswdri.a src/gallium/winsys/sw/kms-dri/libswkmsdri.a src/gallium/winsys/sw/wrapper/libwsw.a src/gallium/winsys/sw/null/libws_null.a src/gallium/drivers/iris/libiris.a src/gallium/drivers/iris/libiris_per_hw_ver80.a src/gallium/drivers/iris/libiris_per_hw_ver90.a src/gallium/drivers/iris/libiris_per_hw_ver110.a src/gallium/drivers/iris/libiris_per_hw_ver120.a src/gallium/drivers/iris/libiris_per_hw_ver125.a src/gallium/drivers/iris/libiris_per_hw_ver200.a src/intel/compiler/libintel_compiler.a src/intel/dev/libintel_dev.a src/intel/isl/libisl.a src/intel/isl/libisl_per_hw_ver40.a src/intel/isl/libisl_per_hw_ver50.a src/intel/isl/libisl_per_hw_ver60.a src/intel/isl/libisl_per_hw_ver70.a src/intel/isl/libisl_per_hw_ver75.a src/intel/isl/libisl_per_hw_ver80.a src/intel/isl/libisl_per_hw_ver90.a src/intel/isl/libisl_per_hw_ver110.a src/intel/isl/libisl_per_hw_ver120.a src/intel/isl/libisl_per_hw_ver125.a src/intel/isl/libisl_per_hw_ver200.a src/intel/isl/libisl_tiled_memcpy.a src/intel/isl/libisl_tiled_memcpy_sse41.a src/intel/blorp/libblorp.a src/intel/perf/libintel_perf.a src/intel/common/libintel_common.a src/intel/common/libintel_clflushopt.a src/intel/ds/libintel-driver-ds.a src/gallium/winsys/iris/drm/libiriswinsys.a src/gallium/drivers/r600/libr600.a src/mesa/libmesa.a src/compiler/glsl/libglsl.a src/compiler/glsl/glcpp/libglcpp.a src/mesa/libmesa_sse41.a src/compiler/spirv/libvtn.a src/gallium/winsys/radeon/drm/libradeonwinsys.a src/gallium/drivers/radeonsi/libradeonsi_gfx6.a src/amd/compiler/libaco.a src/gallium/drivers/radeonsi/libradeonsi_gfx7.a src/gallium/drivers/radeonsi/libradeonsi_gfx8.a src/gallium/drivers/radeonsi/libradeonsi_gfx9.a src/gallium/drivers/radeonsi/libradeonsi_gfx10.a src/gallium/drivers/radeonsi/libradeonsi_gfx103.a src/gallium/drivers/radeonsi/libradeonsi_gfx11.a src/gallium/drivers/radeonsi/libradeonsi_gfx115.a src/gallium/drivers/radeonsi/libradeonsi.a src/gallium/winsys/amdgpu/drm/libamdgpuwinsys.a src/amd/addrlib/libaddrlib.a src/amd/common/libamd_common.a src/amd/llvm/libamd_common_llvm.a src/amd/vpelib/liblibvpe.a.a src/gallium/drivers/llvmpipe/libllvmpipe.a src/gallium/drivers/softpipe/libsoftpipe.a src/gallium/frontends/rusticl/liblibc_rust_gen.rlib src/gallium/frontends/rusticl/libmesa_rust.rlib src/gallium/frontends/rusticl/libmesa_rust_gen.rlib src/gallium/auxiliary/libgallium.a src/compiler/clc/liblibmesaclc.a src/gallium/frontends/rusticl/libmesa_rust_util.rlib src/gallium/frontends/rusticl/libmesa_bindings_inline_wrapper.a src/gallium/frontends/rusticl/libsystem_bindings.a src/gallium/frontends/rusticl/librusticl_llvm_gen.rlib src/gallium/frontends/rusticl/librusticl_opencl_gen.rlib -Wl,--build-id=sha1 -Wl,--gc-sections -Wl,--version-script /var/tmp/portage/media-libs/mesa-24.0.0/work/mesa-24.0.0/src/gallium/targets/rusticl/rusticl.sym /usr/lib64/libz.so -pthread -lm /usr/lib64/libzstd.so /usr/lib64/libunwind.so -L/usr/lib/llvm/17/lib64 -lLLVM-17 /usr/lib64/libdrm.so /usr/lib64/libexpat.so /usr/lib64/libxcb.so /usr/lib64/libxcb-randr.so /usr/lib64/libdrm_radeon.so /usr/lib64/libelf.so -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 /usr/lib64/libdrm_amdgpu.so -L/usr/lib/llvm/17/lib64 -lLLVM-17 -L/usr/lib/llvm/17/lib64 -lLLVM-17 -lrt -lpthread -ldl -lutil -fPIC -L/usr/lib/llvm/17/lib64 -lLLVM-17 -lsensors /usr/lib/llvm/17/lib64/libclang-cpp.so -L/usr/lib/llvm/17/lib64 -lLLVM-17 /usr/lib/llvm/17/lib64/libLLVMSPIRVLib.so /usr/lib64/libSPIRV-Tools-opt.so /usr/lib64/libSPIRV-Tools.so /usr/lib64/libSPIRV-Tools-link.so -Wl,--end-group /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: src/gallium/frontends/rusticl/librusticl.a(rusticl.rusticl.8232024ab3b6f6d2-cgu.06.rcgu.o): in function `rusticl::core::program::get_disk_cache': rusticl.8232024ab3b6f6d2-cgu.06:(.text._ZN7rusticl4core7program14get_disk_cache17h761dbc098ab01d02E+0x1e): undefined reference to `clang::getClangFullVersion()' /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: rusticl.8232024ab3b6f6d2-cgu.06:(.text._ZN7rusticl4core7program14get_disk_cache17h761dbc098ab01d02E+0x2a): undefined reference to `llvm::writeSpirv(llvm::Module*, SPIRV::TranslatorOpts const&, std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)' collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed.
Still fails, even with the patch from the other related bug
(In reply to Attila Tóth from comment #4) > Still fails, even with the patch from the other related bug Could it be some kind of a rust vs llvm/clang version mismatch? Something compiled with a different version?
(In reply to Attila Tóth from comment #5) > Could it be some kind of a rust vs llvm/clang version mismatch? Something > compiled with a different version? I also tried it with "=dev-lang/rust-1.74.1" (compiled with my own llvm 17) and it gets the same error as with "dev-lang/rust-bin-1.74.1"
"media-libs/mesa-24.0.1" has the same problem.
I suspect vulkan/spirv packages are to blame. There is bug #918989 about ffmpeg linker errors after dev-util/spirv-llvm-translator 17.0.0-r2 replaced -r1 because it pulled in newer vulkan headers and stuff that requires patches for linking. And now we have spirv-llvm messages again in the mesa output.
Another take on this matter: src/gallium/frontends/rusticl/rusticl_llvm_bindings.hpp contains <clang/Basic/Version.h> <llvm/IR/LLVMContext.h> <LLVMSPIRVLib/LLVMSPIRVLib.h> There's no /usr/include/clang or /usr/include/llvm on my system. clang/Basic/Version.h is located: /usr/lib/llvm/17/include/clang/Basic/Version.h llvm/IR/LLVMContext.h location: /usr/lib/llvm/17/include/llvm/IR/LLVMContext.h and LLVMSPIRVLib/LLVMSPIRVLib.h: /usr/lib/llvm/17/include/LLVMSPIRVLib/LLVMSPIRVLib.h. If I correct the include lines in the source files (build.meson also has a line involved), compile fails with: /usr/lib/llvm/17/include/clang/Basic/Version.h:18:10: fatal error: 'clang/Basic/Version.inc' file not found panicked at 'Unable to generate bindings: ClangDiagnostic("/usr/lib/llvm/17/include/clang/Basic/Version.h:18:10: fatal error: 'clang/Basic/Version.inc' file not found\n")', bindgen-cli/main.rs:52:36 If I create symlinks: /usr/include/clang -> /usr/lib/llvm/17/include/clang /usr/include/llvm -> /usr/lib/llvm/17/include/llvm /usr/include/llvm-c -> /usr/lib/llvm/17/include/llvm-c /usr/include/LLVMSPIRVLib -> /usr/lib/llvm/17/include/LLVMSPIRVLib /usr/include/clang-c -> /usr/lib/llvm/17/include/clang-c It still seem to not take into account the headers. So that I explicitly add rusticl_llvm_bindings.hpp to rusticl_mesa_bindings.h like this: @@ -1,5 +1,6 @@ #include "rusticl_mesa_inline_bindings_wrapper.h" #include "rusticl_system_bindings.h" +#include "rusticl_llvm_bindings.hpp" #include "compiler/clc/nir_clc_helpers.h" #include "compiler/clc/clc.h" Now there is a compile failure with this: [2237/2321] <<<snip>>> -DHAVE_DRISW_KMS -DHAVE_LIBSENSORS=1 -MD -MQ ../mesa-24.0.0/src/gallium/frontends/rusticl/rusticl_mesa_bindings.h -MF src/gallium/frontends/rusticl/rusticl_mesa_bindings.h.d FAILED: src/gallium/frontends/rusticl/rusticl_mesa_bindings.rs /usr/bin/bindgen ../mesa-24.0.0/src/gallium/frontends/rusticl/rusticl_mesa_bindings.h --output /var/tmp/portage/media-libs/mesa-24.0.0/work/mesa-24.0.0-abi_x86_64.amd64/src/gallium/frontends/rusticl/ <<<snip>>> -MD -MQ ../mesa-24.0.0/src/gallium/frontends/rusticl/rusticl_mesa_bindings.h -MF src/gallium/frontends/rusticl/rusticl_mesa_bindings.h.d /usr/include/llvm/ADT/DenseMapInfo.h:17:10: fatal error: 'cassert' file not found panicked at 'Unable to generate bindings: ClangDiagnostic("/usr/include/llvm/ADT/DenseMapInfo.h:17:10: fatal error: 'cassert' file not found\n")', bindgen-cli/main.rs:52:36 DenseMapInfo.h has these includes: #include <cassert> #include <cstddef> #include <cstdint> #include <tuple> #include <type_traits> #include <utility> OK? I feel uneasy to create symlinks in /usr/include for specific clang/llvm versions. What will be next? Cannot find cstdint? I'm not sure how this must be handled professionally. I will let this settle for a while.
I should add, that according to meson.build an rs file should be generated during compilation from rusticl_llvm_bindings.hpp. I don't know why that is not happening in order.
(In reply to Attila Tóth from comment #9) > Another take on this matter: > src/gallium/frontends/rusticl/rusticl_llvm_bindings.hpp contains > <clang/Basic/Version.h> > <llvm/IR/LLVMContext.h> > <LLVMSPIRVLib/LLVMSPIRVLib.h> > > There's no /usr/include/clang or /usr/include/llvm on my system. > clang/Basic/Version.h is located: > /usr/lib/llvm/17/include/clang/Basic/Version.h > llvm/IR/LLVMContext.h location: > /usr/lib/llvm/17/include/llvm/IR/LLVMContext.h > and LLVMSPIRVLib/LLVMSPIRVLib.h: > /usr/lib/llvm/17/include/LLVMSPIRVLib/LLVMSPIRVLib.h. Those include directives do not imply /usr/include/clang has to exist, because the build system may well pass -I/path/to/them, as Meson should (and I think does) here.
I've been wondering whether LLVM_TARGETS could be the cause of this, but I've had no success after many CPU-hours of experimenting. I noticed llvm_targets_SPIRV isn't set by p.use.force and tried rebuilding all of llvm+clang+rust with it enabled (previously had rust-bin installed like the bug reporter). Also rebuilt everything with vulkan or spirv in the package name afterwards for good measure, in case there was some sort of toolchain bootstrapping problem going on, but it wouldn't budge. FWIW mesa-24 builds fine with USE=-opencl here, and mesa-23 with it. I'm inclined to just leave it off since no CL apps I've tried actually work with anything but a 5 year old rocm anyway.
*** Bug 928601 has been marked as a duplicate of this bug. ***