You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The cause of the problem is that QPL comes with its own dump of isa-l (it would be interesting to understand why - just convenience or does it deviate in some ways from upstream isa-l?). ClickHouse now unconditionally links upstream isa-l as per #48833 which leads to duplicate symbols when the QPL codec is enabled.
There is precedence for that (e.g. #43259: cJSON linked by two unrelated submodules), and besides hacks (configuring the library to not export symbols, using PRIVATE linkage in CMake, ...) the only real fix is to build/link isa-l only once. So the best direction IMHO is to make upstream QPL not include a copy of isa-l but have isa-l as a prerequisite. "qpl-cmake/CMakeLists.txt" could then simply do target_link_libraries(_qpl ch_contrib::isal) (see contrib/isa-l-cmake/CMakeLists.txt) to satisfy the isa-l requirements. Note that the issue is not specific to ClickHouse, every program linking QPL and isa-l will run into this problem.
The text was updated successfully, but these errors were encountered:
By the way, we don't support QPL at all - it is not used for production builds, and it is not built in CI.
It means that the feature can be dropped at any moment in time.
#48833 broke the build of the QPL library:
Without QPL, the build succeeds:
The cause of the problem is that QPL comes with its own dump of isa-l (it would be interesting to understand why - just convenience or does it deviate in some ways from upstream isa-l?). ClickHouse now unconditionally links upstream isa-l as per #48833 which leads to duplicate symbols when the QPL codec is enabled.
There is precedence for that (e.g. #43259: cJSON linked by two unrelated submodules), and besides hacks (configuring the library to not export symbols, using PRIVATE linkage in CMake, ...) the only real fix is to build/link isa-l only once. So the best direction IMHO is to make upstream QPL not include a copy of isa-l but have isa-l as a prerequisite. "qpl-cmake/CMakeLists.txt" could then simply do
target_link_libraries(_qpl ch_contrib::isal)
(see contrib/isa-l-cmake/CMakeLists.txt) to satisfy the isa-l requirements. Note that the issue is not specific to ClickHouse, every program linking QPL and isa-l will run into this problem.The text was updated successfully, but these errors were encountered: