diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-09-21 08:40:09 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-10-06 17:48:52 +0000 |
commit | 3e5360df35848a1ad8c5edae83a0a9cdfd6bb775 (patch) | |
tree | 6fa37457b279fced0cb46167d5b1ea35c9554bf7 | |
parent | 98f5e51bd30cb1333834535dba6b5ddbc1d4fa99 (diff) |
qt-dist.mk: suppress linker version script errors with lld >= 17
Qt uses generated linker version scripts which always have a
qt_version_tag symbol, but that symbol is only defined in the main Qt
shared library. For other Qt components, this leads to lld >= 17
erroring out due to the symbol being undefined. Suppress these errors
from qt-dist.mk, so we don't have to patch each individual port.
This affects at least:
* devel/qt5-dbus
* net/qt5-network
* databases/qt5-sql
which were the first ones to fall over with a clang+lld 17 poudriere
bulk run.
For reference, the error you would see looks like:
...
c++ -Wl,--as-needed -fstack-protector-strong -Wl,--no-undefined -Wl,--version-script,QtDBus.version -pthread -Wl,-rpath,/usr/local/lib/qt5 -shared -Wl,-Bsymbolic-functions -Wl,-soname,libQt5DBus.so.5 -o libQt5DBus.so.5.15.8 .obj/qdbusconnection.o .obj/qdbusconnectioninterface.o .obj/qdbuserror.o .obj/qdbusintegrator.o .obj/qdbusmessage.o .obj/qdbusserver.o .obj/qdbusabstractinterface.o .obj/qdbusinterface.o .obj/qdbusxmlparser.o .obj/qdbusutil.o .obj/qdbusintrospection.o .obj/qdbusabstractadaptor.o .obj/qdbusinternalfilters.o .obj/qdbusmetaobject.o .obj/qdbusxmlgenerator.o .obj/qdbusmisc.o .obj/qdbusargument.o .obj/qdbusreply.o .obj/qdbusmetatype.o .obj/qdbusextratypes.o .obj/qdbuscontext.o .obj/qdbuspendingcall.o .obj/qdbuspendingreply.o .obj/qdbus_symbols.o .obj/qdbusservicewatcher.o .obj/qdbusunixfiledescriptor.o .obj/qdbusvirtualobject.o .obj/moc_qdbusconnectioninterface.o .obj/moc_qdbuserror.o .obj/moc_qdbusconnection.o .obj/moc_qdbusabstractadaptor.o .obj/moc_qdbusvirtualobject.o .obj/moc_qdbusconnection_p.o .obj/moc_qdbusconnectionmanager_p.o .obj/moc_qdbuspendingcall_p.o -L/wrkdirs/usr/ports/devel/qt5-dbus/work/kde-qtbase-5.15.8p157/lib /usr/local/lib/qt5/libQt5Core.so -L/usr/local/lib -ldbus-1
ld: error: version script assignment of 'Qt_5.15' to symbol 'qt_version_tag' failed: symbol not defined
c++: error: linker command failed with exit code 1 (use -v to see invocation)
PR: 273992
Approved by: maintainer timeout (2 weeks)
MFH: 2023Q4
-rw-r--r-- | Mk/Uses/qt-dist.mk | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Mk/Uses/qt-dist.mk b/Mk/Uses/qt-dist.mk index 40ae305bdbb1..868eed099a6b 100644 --- a/Mk/Uses/qt-dist.mk +++ b/Mk/Uses/qt-dist.mk @@ -181,6 +181,12 @@ EXTRACT_AFTER_ARGS?= ${DISTNAME:S,$,/examples,:S,^,--exclude ,} \ --no-same-owner --no-same-permissions . endif # ! ${_QT_VER:M5} +# Qt uses generated linker version scripts which always have a qt_version_tag +# symbol, but that symbol is only defined in the main Qt shared library. For +# other Qt components, this leads to lld >= 17 erroring out due to the symbol +# being undefined. Supress these errors. +LDFLAGS+= -Wl,--undefined-version + # Build setup for Qt6 . if ${_QT_VER:M6} CMAKE_ARGS+= -DCMAKE_INSTALL_PREFIX=${PREFIX} \ |