diff --git a/easybuild/easyconfigs/q/Qt5/Qt5-5.15.2-GCCcore-11.2.0.eb b/easybuild/easyconfigs/q/Qt5/Qt5-5.15.2-GCCcore-11.2.0.eb new file mode 100644 index 000000000000..18e55bea4a72 --- /dev/null +++ b/easybuild/easyconfigs/q/Qt5/Qt5-5.15.2-GCCcore-11.2.0.eb @@ -0,0 +1,73 @@ +easyblock = 'EB_Qt' + +name = 'Qt5' +version = '5.15.2' + +homepage = 'https://qt.io/' +description = "Qt is a comprehensive cross-platform C++ application framework." + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} +# disabling use of -ftree-vectorize is required to avoid compilation failures on some systems (e.g. Intel Skylake X) +toolchainopts = {'vectorize': False} + +source_urls = [ + 'https://download.qt.io/official_releases/qt/%(version_major_minor)s/%(version)s/single/', + 'https://download.qt.io/archive/qt/%(version_major_minor)s/%(version)s/single/', + 'https://download.qt.io/new_archive/qt/%(version_major_minor)s/%(version)s/single/', +] +sources = ['qt-everywhere-src-%(version)s.tar.xz'] +patches = [ + 'Qt5-5.13.1_fix-avx2.patch', + 'Qt5-5.13.1_fix-qmake-libdir.patch', + 'Qt5-5.14.1_fix-OF-Gentoo.patch', + 'Qt5-5.15.2_fix-gcc11.patch', +] +checksums = [ + '3a530d1b243b5dec00bc54937455471aaa3e56849d2593edb8ded07228202240', # qt-everywhere-src-5.15.2.tar.xz + '6f46005f056bf9e6ff3e5d012a874d18ee03b33e685941f2979c970be91a9dbc', # Qt5-5.13.1_fix-avx2.patch + '511ca9c0599ceb1989f73d8ceea9199c041512d3a26ee8c5fd870ead2c10cb63', # Qt5-5.13.1_fix-qmake-libdir.patch + '0b9defb7ce75314d85bebe07e143db7f7de316fec64c17cbd13f7eec5d2d1afa', # Qt5-5.14.1_fix-OF-Gentoo.patch + '6606e2434aacaac49545be733bf012f1d489393bf8bd5573691c171ab8bc0976', # Qt5-5.15.2_fix-gcc11.patch +] + +builddependencies = [ + ('binutils', '2.37'), + ('pkg-config', '0.29.2'), + # deps for QtWebEngine + ('Bison', '3.7.6'), + ('flex', '2.6.4'), + ('gperf', '3.1'), + ('Ninja', '1.10.2'), + # Qt5WebEngine has build dependency on Python 2 + ('Python', '2.7.18', '-bare'), + ('re2c', '2.2'), +] + +dependencies = [ + ('double-conversion', '3.1.5'), + ('GLib', '2.69.1'), + ('PCRE2', '10.37'), + ('libpng', '1.6.37'), + # deps for QtWebEngine + ('X11', '20210802'), + ('fontconfig', '2.13.94'), + ('DBus', '1.13.18'), + ('libevent', '2.1.12'), + ('libGLU', '9.0.2'), + ('libjpeg-turbo', '2.0.6'), + ('NSS', '3.69'), + ('snappy', '1.1.9'), + ('JasPer', '2.0.33'), + ('bzip2', '1.0.8'), + ('OpenSSL', '1.1', '', True), + ('ICU', '69.1'), +] + +# qtgamepad needs recent kernel/libevdev (fails on RHEL 6.x) +# qtwayland fails to build on (some) Centos 7 systems +configopts = '-skip qtgamepad -skip qtwayland' + +# make sure QtWebEngine component is being built & installed +check_qtwebengine = True + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/q/Qt5/Qt5-5.15.2_fix-gcc11.patch b/easybuild/easyconfigs/q/Qt5/Qt5-5.15.2_fix-gcc11.patch new file mode 100644 index 000000000000..0a9ec1a4a995 --- /dev/null +++ b/easybuild/easyconfigs/q/Qt5/Qt5-5.15.2_fix-gcc11.patch @@ -0,0 +1,139 @@ +# Qt 5.15.2 build fixes for GCC 11 +# +# Upstream patches: +# https://code.qt.io/cgit/qt/qtbase.git/commit/?id=813a928c7c3cf986 +# https://code.qt.io/cgit/qt/qtbase.git/commit/?id=9c56d4da2ff631a8 +# https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=367293b18ab0d0a0 +# +# Third-party software patches (taken from Fedora): +# https://src.fedoraproject.org/rpms/qt5-qtwebengine/blob/rawhide/f/qtwebengine-gcc11.patch +# +diff -Nrup a/qtbase/src/corelib/global/qendian.h b/qtbase/src/corelib/global/qendian.h +--- a/qtbase/src/corelib/global/qendian.h 2020-10-27 09:02:11.000000000 +0100 ++++ b/qtbase/src/corelib/global/qendian.h 2021-06-21 18:02:01.741899258 +0200 +@@ -1,7 +1,7 @@ + /**************************************************************************** + ** +-** Copyright (C) 2016 The Qt Company Ltd. +-** Copyright (C) 2016 Intel Corporation. ++** Copyright (C) 2021 The Qt Company Ltd. ++** Copyright (C) 2021 Intel Corporation. + ** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtCore module of the Qt Toolkit. +@@ -44,6 +44,8 @@ + #include + #include + ++#include ++ + // include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems + #include + #include +diff -Nrup a/qtbase/src/corelib/global/qfloat16.h b/qtbase/src/corelib/global/qfloat16.h +--- a/qtbase/src/corelib/global/qfloat16.h 2020-10-27 09:02:11.000000000 +0100 ++++ b/qtbase/src/corelib/global/qfloat16.h 2021-06-21 18:02:17.409709370 +0200 +@@ -43,6 +43,7 @@ + + #include + #include ++#include + #include + + #if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__) +diff -Nrup a/qtbase/src/corelib/text/qbytearraymatcher.h b/qtbase/src/corelib/text/qbytearraymatcher.h +--- a/qtbase/src/corelib/text/qbytearraymatcher.h 2020-10-27 09:02:11.000000000 +0100 ++++ b/qtbase/src/corelib/text/qbytearraymatcher.h 2021-06-21 18:13:45.885352546 +0200 +@@ -42,6 +42,8 @@ + + #include + ++#include ++ + QT_BEGIN_NAMESPACE + + +diff -Nrup a/qtbase/src/corelib/tools/qsharedpointer_impl.h b/qtbase/src/corelib/tools/qsharedpointer_impl.h +--- a/qtbase/src/corelib/tools/qsharedpointer_impl.h 2020-10-27 09:02:11.000000000 +0100 ++++ b/qtbase/src/corelib/tools/qsharedpointer_impl.h 2021-06-21 18:13:45.885352546 +0200 +@@ -155,9 +155,6 @@ namespace QtSharedPointer { + #endif + inline void checkQObjectShared(...) { } + inline void setQObjectShared(...) { } +- +- inline void operator delete(void *ptr) { ::operator delete(ptr); } +- inline void operator delete(void *, void *) { } + }; + // sizeof(ExternalRefCountData) = 12 (32-bit) / 16 (64-bit) + +diff -Nrup a/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp b/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp +--- a/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp 2020-10-27 09:02:11.000000000 +0100 ++++ b/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp 2021-06-21 18:13:45.885352546 +0200 +@@ -698,7 +698,7 @@ void QXcbWindow::show() + if (isTransient(window())) { + const QWindow *tp = window()->transientParent(); + if (tp && tp->handle()) +- transientXcbParent = static_cast(tp->handle())->winId(); ++ transientXcbParent = tp->handle()->winId(); + // Default to client leader if there is no transient parent, else modal dialogs can + // be hidden by their parents. + if (!transientXcbParent) +diff -Nrup a/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h b/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h +--- a/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h 2020-10-27 09:02:12.000000000 +0100 ++++ b/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h 2021-06-22 09:35:22.877912946 +0200 +@@ -48,6 +48,7 @@ + #include + + #include ++#include + #include + + // +diff -Nrup a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc +--- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc 2020-11-07 02:22:36.000000000 +0100 ++++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc 2021-06-22 12:05:40.736177321 +0200 +@@ -14,9 +14,9 @@ + * limitations under the License. + */ + ++#include + #include "src/trace_processor/containers/string_pool.h" + +-#include + + #include "perfetto/base/logging.h" + #include "perfetto/ext/base/utils.h" +diff -Nrup a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc +--- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc 2020-11-07 02:22:36.000000000 +0100 ++++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc 2021-06-22 12:06:05.087880649 +0200 +@@ -14,6 +14,7 @@ + * limitations under the License. + */ + ++#include + #include "src/trace_processor/db/column.h" + + #include "src/trace_processor/db/compare.h" +diff -Nrup a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/heap_graph_walker.cc b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/heap_graph_walker.cc +--- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/heap_graph_walker.cc 2020-11-07 02:22:36.000000000 +0100 ++++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/heap_graph_walker.cc 2021-06-22 12:06:28.911590412 +0200 +@@ -14,6 +14,8 @@ + * limitations under the License. + */ + ++#include ++ + #include "src/trace_processor/importers/proto/heap_graph_walker.h" + #include "perfetto/base/logging.h" + +diff -Nrup a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/types/variadic.cc b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/types/variadic.cc +--- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/types/variadic.cc 2020-11-07 02:22:36.000000000 +0100 ++++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/types/variadic.cc 2021-06-22 12:06:52.631301445 +0200 +@@ -14,6 +14,7 @@ + * limitations under the License. + */ + ++#include + #include "src/trace_processor/types/variadic.h" + + namespace perfetto {