qt-creator has a false dependency on clang-libs = 15.0.7 that should be removed. It is no longer needed since qt-creator bundles its own version of clang.
Fixed in update https://bodhi.fedoraproject.org/updates/FEDORA-2023-07c0c553a1.
Proposed as a Freeze Exception for 38-final by Fedora user tstellar using the blocker tracking app because: qt-creator has a false dependency on clang-libs =15.0.7, so it will fail to install once clang is updated to 16.0.0 in https://bodhi.fedoraproject.org/updates/FEDORA-2023-3a602914f6
Discussed during the 2023-04-10 blocker review meeting: [0] The decision to classify this bug as an "AcceptedFreezeException (Final)" was made to fix the fails-to-install problem in the frozen release repository. [0] https://meetbot.fedoraproject.org/fedora-blocker-review/2023-04-10/f38-blocker-review.2023-04-10-16.00.txt
FEDORA-2023-07c0c553a1 has been submitted as an update to Fedora 38. https://bodhi.fedoraproject.org/updates/FEDORA-2023-07c0c553a1
FEDORA-2023-07c0c553a1 has been pushed to the Fedora 38 stable repository. If problem still persists, please make note of it in this bug report.
Created attachment 1958631 [details] undefined symbols in the clang format plugin
Can it be that this bug fix broke the QtCreator ClangFormat plugin?
Can you reproduce this if you have llvm-libs installed?
llvm-libs are already installed. I tried the QtCreator version of F37 and got similar output. But there the plugin loader has no linking error. So maybe some other lib was providing the symbol. /usr/lib64/qtcreator/plugins/libClangFormat.so: Cannot load library /usr/lib64/qtcreator/plugins/libClangFormat.so: (/usr/lib64/qtcreator/plugins/libClangFormat.so: undefined symbol: _ZN4llvm15SmallVectorBaseIjE13mallocForGrowEmmRm)
I found this in the cmake files of QtCreator: find_package(Clang CONFIG) option(CLANGTOOLING_LINK_CLANG_DYLIB "Force linking of Clang tooling against clang-cpp" NO) set(CLANG_FORMAT_LIB clangFormat) if (TARGET clang-cpp AND CLANGTOOLING_LINK_CLANG_DYLIB) set(CLANG_FORMAT_LIB clang-cpp) endif()
The symbol is in: nm -D /usr/lib64/libLLVM-15.0.7.so |grep _ZN4llvm15SmallVectorBaseIjE13mallocForGrowEmmRm 0000000000bd3540 W _ZN4llvm15SmallVectorBaseIjE13mallocForGrowEmmRm@@LLVM_15
Seems the symbol is also defined in: /usr/lib64/libLLVMSupport.a:SmallVector.cpp.o:0000000000000000 W _ZN4llvm15SmallVectorBaseIjE13mallocForGrowEmmRm I don't know if LLVM is linked dynamically or statically. I hope this help.
I don't think the dependency changed caused this. It's likely due to some kind of version mismatch between the plugin bundled with qt-creator, and whatever tools is trying to load it, maybe clang-format? I'm not sure how these plugins work.
The ClangFormat plugin of QtCreator is part of QtCreator. So a version mismatch is very unlikely. Very is very few functionality in QtCreator which is not a plugin. It is not using the clang-format binary but the libclangFormat.a from Clang. libclangFormat.a has other dependencies which can be statically or dynamically linked. Depends on the LLVM configuration. I looked into your build patches and ... -DBUILD_PLUGIN_CLANGREFACTORING=ON -DBUILD_PLUGIN_CLANGPCHMANAGER=ON This were very experimental plugins which should have been never be activated. Anyway they do no exists anymore. Your qt-creator-clangformat.patch is missing clangSupport. Maybe more. So you are right, there should be not anymore a dependency because it is statically linked. Maybe you can push some of the patches upstream?