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