-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[package] xorg/system transitively brings a libuuid from the system, with different symbols than Conan Center's libuuid #19084
Comments
This is a problem that happens when both We are going to observe different side effects depending on the
Building the entire graph with Recipes to updateMoving recipes to use
These should be migrated all at once or in very quick succession, to minimize the possibility of users experiencing a conflict due to both Additional validation requiredWhen However before proceeding I think we need to consider that this may cause issues in the future:
|
…uid (conan-io#18557) Use util-linux-libuuid instead of deprecated libuuid (conan-io#18557), see issue conan-io#19084
…an-io#18553) Use util-linux-libuuid instead of deprecated libuuid (conan-io#18553), see issue conan-io#19084
conan-io#20695 conan-io#19084 Contributes to CURA-10831
@jcar87 This should be able to be closed now, the CPython 2.0 migration was merged, which included the switch to |
@jcar87 Bump, I think you can close this :) |
There's also a handful of recipes that likely have an unlisted dependency on libuuid, but have it accidentally provided by Here's a list of all source archives that have an include against aeron-1.41.4.tar.gz:
- aeron-1.41.4/aeron-driver/src/main/c/aeron_driver_context.c
apr-1.7.4.tar.bz2:
- apr-1.7.4/configure.in
- apr-1.7.4/include/arch/unix/apr_private.h.in
- apr-1.7.4/misc/unix/rand.c
boost_1_85_0.tar.gz:
- boost_1_85_0/boost/uuid/detail/md5.hpp
- boost_1_85_0/boost/uuid/detail/sha1.hpp
- boost_1_85_0/boost/uuid/basic_name_generator.hpp
- boost_1_85_0/boost/uuid/nil_generator.hpp
- boost_1_85_0/boost/uuid/random_generator.hpp
- boost_1_85_0/boost/uuid/string_generator.hpp
- boost_1_85_0/boost/uuid/uuid_hash.hpp
- boost_1_85_0/boost/uuid/uuid_io.hpp
- boost_1_85_0/boost/uuid/uuid_serialize.hpp
- boost_1_85_0/libs/serialization/performance/xml/harness.hpp
client-cpp-1.5.6.tar.gz:
- client-cpp-1.5.6/src/lib/src/policy_object.cpp
crashpad-e9937cb36cd12f24d73a07c4b91168cf1885b5db.tar.gz:
- crashpad-e9937cb36cd12f24d73a07c4b91168cf1885b5db/client/crash_report_database_mac.mm
- crashpad-e9937cb36cd12f24d73a07c4b91168cf1885b5db/snapshot/mac/process_types.cc
- crashpad-e9937cb36cd12f24d73a07c4b91168cf1885b5db/util/misc/uuid.cc
fast_io-316afccde333721b059a761b25217084e84a9ca0.tar.gz:
- fast_io-316afccde333721b059a761b25217084e84a9ca0/include/fast_io_driver/boost/uuid.h
fltk-release-1.3.9.tar.gz:
- fltk-release-1.3.9/src/Fl_Preferences.cxx
gcc-13.2.0.tar.xz:
- gcc-13.2.0/libphobos/src/std/uuid.d
hazelcast-cpp-client-5.3.0.tar.gz:
- hazelcast-cpp-client-5.3.0/hazelcast/generated-sources/src/hazelcast/client/protocol/codec/codecs.cpp
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/impl/hazelcast_client_instance_impl.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/impl/vector_clock.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/internal/nearcache/NearCacheRecord.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/internal/nearcache/impl/record/AbstractNearCacheRecord.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/member.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/membership_listener.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/protocol/ClientMessage.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/serialization/pimpl/data_output.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/serialization/serialization.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/spi/ClientContext.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/spi/impl/ClientInvocation.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/spi/impl/ListenerMessageCodec.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/spi/lifecycle_service.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/sql/hazelcast_sql_exception.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/sql/impl/query_id.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/sql/impl/sql_error.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/client/txn/TransactionProxy.h
- hazelcast-cpp-client-5.3.0/hazelcast/include/hazelcast/util/Preconditions.h
libfabric-1.18.1.tar.bz2:
- libfabric-1.18.1/prov/opx/include/rdma/opx/fi_opx_hfi1.h
- libfabric-1.18.1/prov/opx/include/rdma/opx/fi_opx_domain.h
- libfabric-1.18.1/prov/psm3/psm3/psm2.h
- libfabric-1.18.1/config.h.in
libmemcached-1.0.18.tar.gz:
- libmemcached-1.0.18/mem_config.in
llvm-13.0.0.src.tar.xz:
- llvm-13.0.0.src/lib/Support/LockFileManager.cpp
- llvm-13.0.0.src/tools/dsymutil/SymbolMap.cpp
metall-0.28.tar.gz:
- metall-0.28/include/metall/detail/uuid.hpp
miniupnp-miniupnpc_2_2_5.tar.gz:
- miniupnp-miniupnpc_2_2_5/miniupnpd/upnpevents.c
mqtt_cpp-13.2.1.tar.gz:
- mqtt_cpp-13.2.1/include/mqtt/broker/uuid.hpp
ntv2-16.1.tar.gz:
- ntv2-16.1/ajalibraries/ajabase/common/guid.h
ohNet-ohNet_1.36.5344.tar.gz:
- ohNet-ohNet_1.36.5344/thirdparty/mDNSResponder-1310.80.1/mDNSCore/mDNSEmbeddedAPI.h
- ohNet-ohNet_1.36.5344/thirdparty/mDNSResponder-1310.80.1/mDNSMacOSX/mdns_objects/mdns_dns_service.h
- ohNet-ohNet_1.36.5344/thirdparty/mDNSResponder-1310.80.1/mDNSShared/dnssd_clientstub.c
openE57-1.6.5.tar.gz:
- openE57-1.6.5/src/tools/las2e57.cpp
openldap-2.6.7.tgz:
- openldap-2.6.7/include/portable.hin
- openldap-2.6.7/libraries/liblutil/uuid.c
osrm-backend-5.27.1.tar.gz:
- osrm-backend-5.27.1/include/util/fingerprint.hpp
ozo-0.1.0.tar.gz:
- ozo-0.1.0/include/ozo/ext/boost/uuid.h
paho.mqtt.c-1.3.13.tar.gz:
- paho.mqtt.c-1.3.13/src/WebSocket.c
pcl-pcl-1.14.1.tar.gz:
- pcl-pcl-1.14.1/surface/include/pcl/surface/3rdparty/opennurbs/opennurbs_system.h
- pcl-pcl-1.14.1/surface/src/3rdparty/opennurbs/opennurbs_uuid.cpp
postgresql-15.5.tar.bz2:
- postgresql-15.5/contrib/uuid-ossp/uuid-ossp.c
- postgresql-15.5/src/include/pg_config.h.in
qt-everywhere-src-6.7.1.tar.xz:
- qt-everywhere-src-6.7.1/qtwebengine/src/3rdparty/chromium/base/profiler/module_cache_apple.cc
- qt-everywhere-src-6.7.1/qtwebengine/src/3rdparty/chromium/chrome/common/safe_browsing/mach_o_image_reader_mac_unittest.cc
- qt-everywhere-src-6.7.1/qtwebengine/src/3rdparty/chromium/third_party/crashpad/crashpad/client/crash_report_database_mac.mm
- qt-everywhere-src-6.7.1/qtwebengine/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/mac/process_types.cc
- qt-everywhere-src-6.7.1/qtwebengine/src/3rdparty/chromium/third_party/crashpad/crashpad/util/misc/uuid.cc
- qt-everywhere-src-6.7.1/qtwebengine/src/3rdparty/chromium/third_party/dawn/third_party/dxc/lib/Support/LockFileManager.cpp
root-6-22-06.zip:
- root-6-22-06/cmake/modules/Findlibuuid.cmake
- root-6-22-06/interpreter/cling/include/cling/boost.modulemap
- root-6-22-06/interpreter/llvm/src/lib/Support/LockFileManager.cpp
sentry-native.zip:
- external/crashpad/util/misc/uuid.cc
- external/crashpad/snapshot/mac/process_types.cc
- external/crashpad/client/crash_report_database_mac.mm
zyre-2.0.1.tar.gz:
- zyre-2.0.1/Finduuid.cmake |
Another possible solution for the libuuid issue is to use a non-system X11 altogether or at least substitute parts of it. I'm not seriously suggesting replacing As you can see, swapping out just the
The recipes could be forced to As I said, it's probably not worth the risk, though. It's not clear if FindX11.cmake would be able to find these relocated libraries correctly (I replaced it with a custom version for Conan packages) and many other build systems might hard-code these to system paths as well. My original motivation was to create a personal fork without system packages to test cross-compilation against, since xorg and other system libs cannot be installed side-by-side with the native architecture packages. /cc @jwillikers Maybe that experiment is of interest to you since you have been working on packaging Wayland and Mesa. |
Description
Originally posted by @samuel-emrys in #17427 (comment)
To capture the issue with the current conan 2 build (summarised from this slack conversation):
This is an error where automake fails to build a test executable because it wants to use all of the deps to do so. The deps are available, however it fails with the following from
config.log
:This is occurring because
libSM
is a dependency ofxorg/system
, which uses the system package manager to installlibuuid
and linkslibSM
with the system version oflibuuid
. Becauselibuuid
is also in the dependency tree oftk
(fromfontconfig
), this is injected into the build path to enable the test executable to find the conan dependencies. The conan dependency oflibuuid
overrides the system dependency, but unfortunately these seem to be different libraries providing the same interface which means that the system version oflibuuid
contains theuuid_unparse_lower@UUID_1.0
symbol, but the conan version only containsuuid_unparse_lower
- i.e. an unversioned representation of the same symbol, and so it fails to resolve.In terms of
libuuid
libraries available in open source, there seem to be the following three:(1) is the original implementation, and is currently in maintenance mode seeing no new features.
(2) is a fork of (1) and is actively developed. This appears to be the variant used by at least the arch linux pacman and debian apt package maintainers.
(3) appears to be an unmaintained fork of (2), and hasn't been updated in a couple of years. This is the implementation that is currently packaged with conan.
The conflict appears to be because (2) and (3) have similar interfaces but are fundamentally different. The following solutions seem like the way forward:
util-linux
variant -util-linux-libuuid
? This could setprovides = "libuuid"
to indicate that it provides the same interfacelibuuid
recipe to point at the sources forutil-linux
instead of the current link. This would be the best migratory solution given that there are a large number of packages that depend onlibuuid
, but perhaps not the best solution for reproducibility. Having said that, the change will be captured in a rrev so maybe this isn't that big a deal.@prince-chrismc if you or anyone else on the conan team has a good view of a way forward here some advice would be appreciated.
Originally posted by @samuel-emrys in #17427 (comment)
Package and Environment Details
Conan profile
TBD
Steps to reproduce
TBD
Logs
TBD
The text was updated successfully, but these errors were encountered: