Bug 275678 - converters/wkhtmltopdf: 'make configure' error due to qmake linked with wrong libstdc++.so.6
Summary: converters/wkhtmltopdf: 'make configure' error due to qmake linked with wrong...
Status: New
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Kurt Jaeger
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-12-10 17:44 UTC by John Hein
Modified: 2023-12-13 00:12 UTC (History)
2 users (show)

See Also:
bugzilla: maintainer-feedback? (pi)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Hein 2023-12-10 17:44:51 UTC

    
Comment 1 John Hein 2023-12-10 17:54:39 UTC
This is a bit of a strange combination that is likely not affecting many others.  But if one has misc/compat9x-amd64, then during 'make configure' (when WRKSRC/qt/configure builds a local qmake), this happens:

 .
 .
g++12 -o "/z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake" project.o property.o main.o makefile.o unixmake2.o unixmake.o mingw_make.o option.o winmakefile.o projectgenerator.o meta.o makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o borland_bmake.o msvc_vcproj.o msvc_vcxproj.o msvc_nmake.o msvc_objectmodel.o msbuild_objectmodel.o symmake.o initprojectdeploy_symbian.o symmake_abld.o symmake_sbsv2.o symbiancommon.o registry.o epocroot.o gbuild.o qtextcodec.o qutfcodec.o qstring.o qtextstream.o qiodevice.o qmalloc.o qglobal.o qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfile.o qfilesystementry.o qfilesystemengine_unix.o qfilesystemengine.o qfilesystemiterator_unix.o qfsfileengine_unix.o qfsfileengine.o qfsfileengine_iterator.o qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o qfileinfo.o qdatetime.o qstringlist.o qabstractfileengine.o qtemporaryfile.o qmap.o qmetatype.o qsettings.o qsystemerror.o qlibraryinfo.o qvariant.o qvsnprintf.o qlocale.o qlocale_tools.o qlocale_unix.o qlinkedlist.o qnumeric.o qcryptographichash.o qxmlstream.o qxmlutils.o
gmake[1]: Leaving directory '/z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/qmake'
ld-elf.so.1: /usr/local/lib/compat/libstdc++.so.6: version CXXABI_1.3.8 required by /z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake not found
ld-elf.so.1: /usr/local/lib/compat/libstdc++.so.6: version CXXABI_1.3.8 required by /z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake not found
ld-elf.so.1: /usr/local/lib/compat/libstdc++.so.6: version CXXABI_1.3.8 required by /z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake not found
ld-elf.so.1: /usr/local/lib/compat/libstdc++.so.6: version CXXABI_1.3.8 required by /z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake not found
ld-elf.so.1: /usr/local/lib/compat/libstdc++.so.6: version CXXABI_1.3.8 required by /z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake not found
ld-elf.so.1: /usr/local/lib/compat/libstdc++.so.6: version CXXABI_1.3.8 required by /z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake not found
ld-elf.so.1: /usr/local/lib/compat/libstdc++.so.6: version CXXABI_1.3.8 required by /z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake not found
ld-elf.so.1: /usr/local/lib/compat/libstdc++.so.6: version CXXABI_1.3.8 required by /z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake not found
ld-elf.so.1: /usr/local/lib/compat/libstdc++.so.6: version CXXABI_1.3.8 required by /z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/bin/qmake not found
Iconv support cannot be enabled due to functionality tests!
 Turn on verbose messaging (-v) to ./../../qt/configure to see the final report.
 If you believe this message is in error you may use the continue
 switch (-continue) to ./../../qt/configure to continue.
===>  Script "../../qt/configure" failed unexpectedly.
Please report the problem to pi@FreeBSD.org [maintainer] and attach the
"/z1/local/users/jhein/.nobak/wd/usr/ports/converters/wkhtmltopdf/work/wkhtmltopdf-0.12.6/build/qt/config.log"
including the output of the failure of your make command. Also, it might be
a good idea to provide an overview of all packages installed on your system
(e.g. a /usr/local/sbin/pkg-static info -g -Ea).
*** Error code 1

Stop.
make: stopped in /usr/ports/converters/wkhtmltopdf
Comment 2 John Hein 2023-12-10 18:18:58 UTC
Moving /usr/local/lib/compat/libstdc++.so.6 away (e.g., to /usr/local/lib/compat/libstdc++.so.6.mv} temporarily allows the 'make configure' to succeed.

Also setting LD_LIBRARY_PATH=/usr/local/lib/gcc12 also allows 'make configure' to succeed.

The work dir build of qmake ("Creating qmake") should really be built (linked) with a rpath specification that points to the right libstdc++.so.6.  There are other libstdc++.so.6 in /usr/local (e.g., if you have gcc10 or gcc11 installed) that could in theory be incompatible if the run-time linker uses those versions instead of the libstdc++.so.6 in /usr/local/lib/gcc12/.

Otherwise (if no rpath is specified), the generated qmake is at the mercy of the ldconfig globale search order (run 'ldconfig -r | grep -e search -e libstdc' on a system with various misc/compat* and lang/gcc* ports installed).

So while this is a bit of an edge case, and it's not clear it's worth time to fix this one case (esp. since wkhtmltopdf's days are now numbered), it is a reminder that it is good practice when building with lang/gcc* that you should link with --rpath for shared libraries from LOCALBASE/lib/gcc*.

How you get wkhtmltopdf to use --rpath when it builds its local copy of qmake, I  don't know at this time.  I may just close this bug with "edge case not likely to affect most people" rather than dig into the strange and wonderful world of building with qt.  But I'll let this bug description soak for a day or two.  Maybe this affects more qt-based ports?  Maybe more ports that use qt and qmake and a ports version of gcc could be helped with a change to Uses/qt*.mk to use --rpath??
Comment 3 Theadisfat 2023-12-11 03:53:26 UTC
The error message "converters/wkhtmltopdf: 'make configure' error due to qmake linked with wrong libstdc++.so.6" indicates that the qmake tool used to build wkhtmltopdf is linked with the wrong version of the C++ standard library (libstdc++.so.6). This can happen if you have multiple versions of the library installed on your system.


https://trafficjam3d.com
Comment 4 John Hein 2023-12-13 00:12:58 UTC
(In reply to Theadisfat from comment #3)
Yes, as already explained, it is indeed linking (at run time) with the wrong libstdc++.so.6.  And, yes, the system does have more than one installed - legitimately.  And it's a bit of "luck" as to which one it picks at run time.  The ldconfig search path has to be set to something, and the "something" it was set to is wrong for this case.  It would be good if the qmake image used --rpath to point to the right libstdtc++.so.6 (the one it linked with at build time).