Summary: | dev-qt/qtserialport:5 fails to find udev | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Rick Farina (Zero_Chaos) <zerochaos> |
Component: | Current packages | Assignee: | Qt Bug Alias <qt> |
Status: | RESOLVED OBSOLETE | ||
Severity: | normal | CC: | chiitoo, esigra, ivan, polynomial-c, sam, toralf |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
See Also: | https://bugs.gentoo.org/show_bug.cgi?id=818760 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
emerge-info.txt
dev-qt:qtserialport-5.12.1:20190306-201357.log emerge-history.txt environment etc.portage.tbz2 logs.tbz2 temp.tbz2 dev-qt:qtserialport-5.12.4-build-success.log |
Description
Rick Farina (Zero_Chaos)
2018-12-21 17:28:20 UTC
appeared recently at the tinderbox image 17.1-desktop-plasma_libressl_20190302-221911 Created attachment 568032 [details]
emerge-info.txt
Created attachment 568034 [details]
dev-qt:qtserialport-5.12.1:20190306-201357.log
Created attachment 568036 [details]
emerge-history.txt
Created attachment 568038 [details]
environment
Created attachment 568040 [details]
etc.portage.tbz2
Created attachment 568042 [details]
logs.tbz2
Created attachment 568044 [details]
temp.tbz2
The current qtserialport requires udev unconditionally. The purpose of the sed in the is to ensure that is built independently of the Qt core installlation's udev status (dev-qt/qtgui[udev]). I suspect that build failure is occurring here due to relying on QMAKE_LIBS_LIBUDEV being automagically populated when it may not always. Could you please add the output of 'qlist dev-qt | grep gentoo | xargs grep udev'? (In reply to Michael Palimaka (kensington) from comment #9) > Could you please add the output of 'qlist dev-qt | grep gentoo | xargs grep > udev'? For the record, it looks like this on my testing devbox: > # qlist dev-qt | grep gentoo | xargs grep --color udev > /usr/lib64/qt5/mkspecs/gentoo/qmodule-qtcore.pri:QT.global_private.enabled_features = sse2 alloca_h alloca avx2 libudev network posix_fallocate reduce_exports reduce_relocations sql system-zlib testlib xml > /usr/lib64/qt5/mkspecs/gentoo/qmodule-qtcore.pri:QMAKE_LIBS_LIBUDEV = /lib64/libudev.so The presence of these entries are very suspicious given that I do not have qtgui (which is supposed to manage Qt core udev status) installed for this test. *** Bug 682896 has been marked as a duplicate of this bug. *** (In reply to Michael Palimaka (kensington) from comment #9) > The current qtserialport requires udev unconditionally. The purpose of the > sed in the is to ensure that is built independently of the Qt core > installlation's udev status (dev-qt/qtgui[udev]). > > I suspect that build failure is occurring here due to relying on > QMAKE_LIBS_LIBUDEV being automagically populated when it may not always. > > Could you please add the output of 'qlist dev-qt | grep gentoo | xargs grep > udev'? With Real udev I get (qtcore-5.9.z): > [Thu-20-Jun 3:27pm] michael@ds-miche2:pts/18:2008 ~ $ qlist dev-qt | grep gentoo | xargs grep udev >/usr/lib64/qt5/mkspecs/gentoo/qmodule-qtcore.pri:QT.global_private.enabled_features = alloca_h alloca sse2 libudev network posix_fallocate qml-debug reduce_exports reduce_relocations sql system-zlib testlib xml >/usr/lib64/qt5/mkspecs/gentoo/qmodule-qtcore.pri:QMAKE_LIBS_LIBUDEV = -ludev >/usr/lib64/qt5/mkspecs/gentoo/qtgui-qconfig.pri:QCONFIG_ADD= fontconfig system-freetype system-harfbuzz system-jpeg libinput xkbcommon-evdev opengl png system-png tslib libudev xcb xcb-glx xcb-plugin xcb-render xcb-sm xcb-xlib xinput With eudev (on older qtcore-5.7.z) >[Thu-20-Jun 4:14pm] root@wannabee:20:2064 ~ # qlist dev-qt | grep gentoo | xargs grep udev >/usr/lib64/qt5/mkspecs/gentoo/qtgui-qconfig.pri:QCONFIG_ADD= fontconfig system-freetype gtk3 system-harfbuzz system-jpeg opengl png system-png libudev xcb xcb-glx xcb-plugin xcb-render xcb-sm xcb-xlib xinput2 xrender It seems that upstream has changed the way how they pass the library: https://github.com/qt/qtbase/commit/b9a578ebc604e5f919c633ec8bee99aa8d21071d#diff-ba370d6d13d7329d2110e6509c5538a2 so instead of a usual "-ludev" they are passive a library path now. Usually, that path is detected correctly, however in the report's setup (catalist?) it must be set as "qmodule-qtcore.pri:QMAKE_LIBS_LIBUDEV = /usr/lib64/libudev.so", as per log: x86_64-pc-linux-gnu-g++ -Wl,-O1 -Wl,--as-needed -Wl,--no-undefined -Wl,--version-script,QtSerialPort.version -Wl,--enable-new-dtags -shared -Wl,-Bsymbolic-functions -Wl,-soname,libQt5SerialPort.so.5 -o libQt5SerialPort.so.5.12.1 .obj/qserialport.o .obj/qserialportinfo.o .obj/qserialport_unix.o .obj/qserialportinfo_unix.o -lQt5Core -lpthread /usr/lib64/libudev.so Created attachment 580412 [details]
dev-qt:qtserialport-5.12.4-build-success.log
I wonder if this is still an issue with 5.12.4 (in overlay)?
I just built qtserialport-5.12.4, with eudev, on a stable testing install and noticed no issues.
(5.13 seems to be fine as well.)
qlist dev-qt | grep gentoo | xargs grep udev:
/usr/lib64/qt5/mkspecs/gentoo/qmodule-qtcore.pri:QT.global_private.enabled_features = sse2 alloca_h alloca avx2 libudev network posix_fallocate reduce_exports reduce_relocations sql system-zlib testlib xml
/usr/lib64/qt5/mkspecs/gentoo/qmodule-qtcore.pri:QMAKE_LIBS_LIBUDEV = /usr/lib64/libudev.so
/usr/lib64/qt5/mkspecs/gentoo/qtgui-qconfig.pri:QCONFIG_ADD= egl fontconfig system-freetype system-harfbuzz no-jpeg libinput xkbcommon opengl png system-png libudev xcb xcb-glx xcb-plugin xcb-render xcb-sm xcb-xlib xcb-xinput egl_x11
Please re-open if this happens again. Still broke x86_64-pc-linux-gnu-g++ -Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0 -Wl,--no-undefined -Wl,--version-script,QtSerialPort.version -Wl,--enable-new-dtags -shared -Wl,-Bsymbolic-functions -Wl,-soname,libQt5SerialPort.so.5 -o libQt5SerialPort.so.5.15.1 .obj/qserialport.o .obj/qserialportinfo.o .obj/qserialport_unix.o .obj/qserialportinfo_unix.o /usr/lib64/libQt5Core.so -lpthread /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qserialportinfo_unix.o: in function `deviceProperty(udev_device*, char const*)': qserialportinfo_unix.cpp:(.text+0x213): undefined reference to `udev_device_get_property_value' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qserialportinfo_unix.o: in function `availablePortsByUdev(bool&)': qserialportinfo_unix.cpp:(.text+0x948): undefined reference to `udev_new' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0x96c): undefined reference to `udev_enumerate_new' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0x993): undefined reference to `udev_enumerate_add_match_subsystem' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0x9a0): undefined reference to `udev_enumerate_scan_devices' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0x9a8): undefined reference to `udev_enumerate_get_list_entry' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0x9d0): undefined reference to `udev_list_entry_get_name' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0x9dd): undefined reference to `udev_device_new_from_syspath' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0xa01): undefined reference to `udev_device_unref' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0xa42): undefined reference to `udev_device_get_devnode' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0xa74): undefined reference to `udev_device_get_sysname' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0xaa6): undefined reference to `udev_device_get_parent' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0xab7): undefined reference to `udev_device_get_driver' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0xd0f): undefined reference to `udev_device_unref' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0xd17): undefined reference to `udev_list_entry_get_next' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0xd46): undefined reference to `udev_enumerate_unref' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: qserialportinfo_unix.cpp:(.text+0xd50): undefined reference to `udev_unref' collect2: error: ld returned 1 exit status @QT team, can you come up with a workaround while we are waiting for the upstream? I see two solutions: - add qtcore[udev] requirement - ZC solution: 's/$$QMAKE_LIBS_LIBUDEV/-ludev/' FYI, upstream fixed the issue, but I'm not sure how easy it would be to backport the patch. Fix Version/s: Qt 6.2.0 Alpha *** Bug 804999 has been marked as a duplicate of this bug. *** My last forked version of this ebuild is 5.15.7, so I'm going to assume the fix was backported by upstream because I've not hit the issue since 5.15.7 |