FYI: Unable to build -r501994 ports' devel/qt5-core on clang 8 based powerpc64 system: "Q_ATOMIC_INT64_IS_SUPPORTED must be defined on a 64-bit platform"
Mark Millard
marklmi at yahoo.com
Tue May 21 23:20:27 UTC 2019
I'm top posting because the problem originally reported seems to be
a later consequence of a much earlier problem. Looking in the logs
showed lots of use of -I%%LOCALBASE%%/lib/gcc8/include/c++ and looking in:
/wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/mkspecs/freebsd-g++/qmake.conf
shows:
EXTRA_INCLUDEPATH += /usr/local/lib/gcc8/include %%LOCALBASE%%/lib/gcc8/include/c++
That seems to drive from the qmake.conf.bak:
EXTRA_INCLUDEPATH += /usr/local/lib/gcc%%GCC_DEFAULT%%/include %%LOCALBASE%%/lib/gcc%%GCC_DEFAULT%%/include/c++
So %%GCC_DEFAULT%% managed to be replaced corrctly.
Notably qmake.conf.orig does not have the line at all:
#
# qmake configuration for freebsd-g++
#
MAKEFILE_GENERATOR = UNIX
QMAKE_PLATFORM = freebsd
include(../common/bsd/bsd.conf)
# Addon software goes into /usr/local on FreeBSD, by default we will look there
QMAKE_INCDIR_POST = /usr/local/include
QMAKE_LIBDIR_POST = /usr/local/lib
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
load(qt_config)
/usr/ports/Mk/Uses/qt-dist.mk has:
post-patch: gcc-post-patch
gcc-post-patch:
${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|' \
${WRKSRC}/mkspecs/common/gcc-base.conf \
${WRKSRC}/mkspecs/freebsd-g++/qmake.conf
${REINPLACE_CMD} 's|%%GCC_DEFAULT%%|${GCC_DEFAULT}|g' \
${WRKSRC}/mkspecs/common/gcc-base.conf \
${WRKSRC}/mkspecs/common/g++-base.conf \
${WRKSRC}/mkspecs/common/bsd/bsd.conf \
${WRKSRC}/mkspecs/freebsd-g++/qmake.conf
and:
post-patch: qtbase-post-patch
qtbase-post-patch:
${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
${WRKSRC}/mkspecs/common/bsd/bsd.conf \
${WRKSRC}/mkspecs/freebsd-clang/qmake.conf
My guess here is that back in gcc-post-patch:
gcc-post-patch:
${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|' \
${WRKSRC}/mkspecs/common/gcc-base.conf \
${WRKSRC}/mkspecs/freebsd-g++/qmake.conf
. . .
it needs -e and a g in order to do more than one substitution:
gcc-post-patch:
${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
${WRKSRC}/mkspecs/common/gcc-base.conf \
${WRKSRC}/mkspecs/freebsd-g++/qmake.conf
. . .
On 2019-May-19, at 07:40, Mark Millard <marklmi at yahoo.com> wrote:
> This was in a poudriere bulk build on a head -r347549 based powerpc64
> system with system clang 8 for cc and c++ and base/binutils
> for the likes of ld. But the build of qt5-core uses g++8.
>
> The log shows:
>
> --- .obj/qatomic.o ---
> g++8 -c -O2 -pipe -g -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc8 -Wl,-rpath=/usr/local/lib/gcc8 -Og -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -pthread -fPIC -DQT_GLIB -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I. -Iglobal -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I../3rdparty/sha3 -I../3rdparty -I../3rdparty/double-conversion/include -I../3rdparty/double-conversion/include/double-conversion -I../3rdparty/forkfd -I../3rdparty/tinycbor/src -I../../include -I../../include/QtCore -I../../include/QtCore/5.12.2 -I../../include/QtCore/5.12.2/QtCore -I.moc -I.tracegen -isystem /usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/lib/gcc8/include -I%%LOCALBASE%%/lib/gcc8/include/c++ -isystem /usr/local/include -I/usr/local/lib/qt5/mkspecs/freebsd-g++ -o .obj/qatomic.o thread/qatomic.cpp
> thread/qatomic.cpp:1624:4: error: #error "Q_ATOMIC_INT64_IS_SUPPORTED must be defined on a 64-bit platform"
> # error "Q_ATOMIC_INT64_IS_SUPPORTED must be defined on a 64-bit platform"
> ^~~~~
> In file included from ../../include/QtCore/qglobal.h:1,
> from thread/qatomic.h:41,
> from thread/qatomic.cpp:41:
> ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h: In instantiation of 'class QBasicAtomicInteger<long int>':
> ../../include/QtCore/../../src/corelib/thread/qatomic.h:55:7: required from 'class QAtomicInteger<long int>'
> thread/qatomic.cpp:1631:1: required from here
> ../../include/QtCore/../../src/corelib/global/qglobal.h:121:63: error: static assertion failed: template parameter is an integral of a size not supported on this platform
> # define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
> ^~~~~~~~~~~~~~~
> ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:97:5: note: in expansion of macro 'Q_STATIC_ASSERT_X'
> Q_STATIC_ASSERT_X(QAtomicOpsSupport<sizeof(T)>::IsSupported, "template parameter is an integral of a size not supported on this platform");
> ^~~~~~~~~~~~~~~~~
> ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h: In instantiation of 'class QBasicAtomicInteger<long unsigned int>':
> ../../include/QtCore/../../src/corelib/thread/qatomic.h:55:7: required from 'class QAtomicInteger<long unsigned int>'
> thread/qatomic.cpp:1632:1: required from here
> ../../include/QtCore/../../src/corelib/global/qglobal.h:121:63: error: static assertion failed: template parameter is an integral of a size not supported on this platform
> # define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
> ^~~~~~~~~~~~~~~
> ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:97:5: note: in expansion of macro 'Q_STATIC_ASSERT_X'
> Q_STATIC_ASSERT_X(QAtomicOpsSupport<sizeof(T)>::IsSupported, "template parameter is an integral of a size not supported on this platform");
> ^~~~~~~~~~~~~~~~~
> ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h: In instantiation of 'class QBasicAtomicInteger<long long unsigned int>':
> ../../include/QtCore/../../src/corelib/thread/qatomic.h:55:7: required from 'class QAtomicInteger<long long unsigned int>'
> thread/qatomic.cpp:1633:1: required from here
> ../../include/QtCore/../../src/corelib/global/qglobal.h:121:63: error: static assertion failed: template parameter is an integral of a size not supported on this platform
> # define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
> ^~~~~~~~~~~~~~~
> ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:97:5: note: in expansion of macro 'Q_STATIC_ASSERT_X'
> Q_STATIC_ASSERT_X(QAtomicOpsSupport<sizeof(T)>::IsSupported, "template parameter is an integral of a size not supported on this platform");
> ^~~~~~~~~~~~~~~~~
> ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h: In instantiation of 'class QBasicAtomicInteger<long long int>':
> ../../include/QtCore/../../src/corelib/thread/qatomic.h:55:7: required from 'class QAtomicInteger<long long int>'
> thread/qatomic.cpp:1634:1: required from here
> ../../include/QtCore/../../src/corelib/global/qglobal.h:121:63: error: static assertion failed: template parameter is an integral of a size not supported on this platform
> # define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
> ^~~~~~~~~~~~~~~
> ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:97:5: note: in expansion of macro 'Q_STATIC_ASSERT_X'
> Q_STATIC_ASSERT_X(QAtomicOpsSupport<sizeof(T)>::IsSupported, "template parameter is an integral of a size not supported on this platform");
> ^~~~~~~~~~~~~~~~~
> *** [.obj/qatomic.o] Error code 1
>
> make[1]: stopped in /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib
> 1 error
>
> make[1]: stopped in /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib
> *** Error code 2
>
> Stop.
> make: stopped in /usr/ports/devel/qt5-core
> =>> Cleaning up wrkdir
> ===> Cleaning for qt5-core-5.12.2_1
> build of devel/qt5-core | qt5-core-5.12.2_1 ended at Sun May 19 02:49:31 PDT 2019
> build time: 00:26:21
> !!! build failure encountered !!!
>
>
> For reference:
>
> Configure summary:
>
> Build type: freebsd-g++ (power64, CPU features: <none>)
> Compiler: unknown (gcc8)
> Configuration: compile_examples largefile optimize_debug shared rpath debug c++11 c++14 c++1z concurrent no-gui reduce_exports release_tools separate_debug_info stl no-widgets
> Build options:
> Mode ................................... debug; optimized tools
> Optimize debug build ................... yes
> Building shared libraries .............. yes
> Using C standard ....................... C11
> Using C++ standard ..................... C++1z
> Using ccache ........................... no
> Using gold linker ...................... no
> Using precompiled headers .............. no
> Using LTCG ............................. no
> Target compiler supports:
> Build parts ............................ libs tools
> Qt modules and options:
> Qt Concurrent .......................... yes
> Qt D-Bus ............................... no
> Qt D-Bus directly linked to libdbus .... no
> Qt Gui ................................. no
> Qt Network ............................. yes
> Qt Sql ................................. yes
> Qt Testlib ............................. yes
> Qt Widgets ............................. no
> Qt Xml ................................. yes
> Support enabled for:
> Using pkg-config ....................... yes
> udev ................................... no
> Using system zlib ...................... yes
> Qt Core:
> DoubleConversion ....................... yes
> Using system DoubleConversion ........ no
> GLib ................................... yes
> iconv .................................. no
> ICU .................................... yes
> Tracing backend ........................ <none>
> Logging backends:
> journald ............................. no
> syslog ............................... no
> slog2 ................................ no
> Using system PCRE2 ..................... yes
> Qt Network:
> getifaddrs() ........................... yes
> IPv6 ifname ............................ yes
> libproxy ............................... no
> OpenSSL ................................ no
> Qt directly linked to OpenSSL ........ no
> OpenSSL 1.1 ............................ no
> DTLS ................................... no
> SCTP ................................... no
> Use system proxies ..................... yes
> Qt Gui:
> Accessibility .......................... no
> FreeType ............................... no
> Using system FreeType ................ no
> HarfBuzz ............................... no
> Using system HarfBuzz ................ no
> Fontconfig ............................. no
> Image formats:
> GIF .................................. no
> ICO .................................. yes
> JPEG ................................. no
> Using system libjpeg ............... no
> PNG .................................. no
> Using system libpng ................ no
> EGL .................................... no
> OpenVG ................................. no
> OpenGL:
> Desktop OpenGL ....................... no
> OpenGL ES 2.0 ........................ no
> OpenGL ES 3.0 ........................ no
> OpenGL ES 3.1 ........................ no
> OpenGL ES 3.2 ........................ no
> Vulkan ................................. no
> Session Management ..................... yes
> Features used by QPA backends:
> evdev .................................. no
> libinput ............................... no
> INTEGRITY HID .......................... no
> mtdev .................................. no
> tslib .................................. no
> xkbcommon .............................. no
> X11 specific:
> XLib ................................. no
> XCB Xlib ............................. no
> EGL on X11 ........................... no
> QPA backends:
> DirectFB ............................... no
> EGLFS .................................. no
> LinuxFB ................................ no
> VNC .................................... yes
> Mir client ............................. no
> Qt Sql:
> SQL item models ........................ yes
> Qt Widgets:
> GTK+ ................................... no
> Styles ................................. Fusion Windows
> Qt PrintSupport:
> CUPS ................................... no
> Qt Sql Drivers:
> DB2 (IBM) .............................. no
> InterBase .............................. no
> MySql .................................. no
> OCI (Oracle) ........................... no
> ODBC ................................... no
> PostgreSQL ............................. no
> SQLite2 ................................ no
> SQLite ................................. yes
> Using system provided SQLite ......... no
> TDS (Sybase) ........................... no
> Qt Testlib:
> Tester for item models ................. yes
>
> WARNING: Feature xkb is insignificant in this configuration, ignoring related command line option(s).
>
> WARNING: Accessibility disabled. This configuration of Qt is unsupported.
>
>
>
> # svnlite diff /usr/ports/devel/qt5-core/ | more
> #
>
> (So no differences.)
===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
More information about the freebsd-ports
mailing list