[Bug 273992] qt-dist.mk: suppress linker version script errors with lld >= 17

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 21 Sep 2023 08:47:00 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273992

            Bug ID: 273992
           Summary: qt-dist.mk: suppress linker version script errors with
                    lld >= 17
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Ports Framework
          Assignee: portmgr@FreeBSD.org
          Reporter: dim@FreeBSD.org
                CC: ports-bugs@FreeBSD.org

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)

-- 
You are receiving this mail because:
You are on the CC list for the bug.