From f027e8ba75ad8070afd70146c0e25b8e929ad793 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 8 Nov 2022 01:35:14 -0500 Subject: [PATCH] import qt5-qtbase-5.15.3-1.el8 --- .gitignore | 3 +- .qt5-qtbase.metadata | 3 +- .../qt5-qtbase-5.12.1-firebird-4.0.0.patch | 17 ++ SOURCES/qt5-qtbase-gcc11.patch | 171 +++++++++++ SOURCES/qtbase-CVE-2021-38593.patch | 289 ------------------ ...tbase-everywhere-src-5.15.2-libglvnd.patch | 15 + SPECS/qt5-qtbase.spec | 99 ++++-- 7 files changed, 274 insertions(+), 323 deletions(-) create mode 100644 SOURCES/qt5-qtbase-5.12.1-firebird-4.0.0.patch create mode 100644 SOURCES/qt5-qtbase-gcc11.patch delete mode 100644 SOURCES/qtbase-CVE-2021-38593.patch create mode 100644 SOURCES/qtbase-everywhere-src-5.15.2-libglvnd.patch diff --git a/.gitignore b/.gitignore index 5ab0702..43dfc3e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -SOURCES/qtbase-everywhere-src-5.15.2.tar.xz +SOURCES/kde-5.15-rollup-20220324.patch.gz +SOURCES/qtbase-everywhere-opensource-src-5.15.3.tar.xz diff --git a/.qt5-qtbase.metadata b/.qt5-qtbase.metadata index 4ced115..b319920 100644 --- a/.qt5-qtbase.metadata +++ b/.qt5-qtbase.metadata @@ -1 +1,2 @@ -b5ad67fc6381ad7fae0296944734198488d096a3 SOURCES/qtbase-everywhere-src-5.15.2.tar.xz +981f5fbeb315c2e4adc122cee944368598466b67 SOURCES/kde-5.15-rollup-20220324.patch.gz +d7383126e1f412ef26096692b9e50a1887eb11f7 SOURCES/qtbase-everywhere-opensource-src-5.15.3.tar.xz diff --git a/SOURCES/qt5-qtbase-5.12.1-firebird-4.0.0.patch b/SOURCES/qt5-qtbase-5.12.1-firebird-4.0.0.patch new file mode 100644 index 0000000..9c09161 --- /dev/null +++ b/SOURCES/qt5-qtbase-5.12.1-firebird-4.0.0.patch @@ -0,0 +1,17 @@ +diff -up qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json.firebird qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json +--- qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json.firebird 2019-01-28 11:11:52.000000000 -0600 ++++ qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json 2019-02-03 13:41:27.392305128 -0600 +@@ -49,10 +49,11 @@ + "ibase": { + "label": "InterBase", + "test": {}, +- "headers": "ibase.h", ++ "headers": "ibase.h", + "sources": [ + { "libs": "-lgds32_ms", "condition": "config.win32" }, +- { "libs": "-lgds", "condition": "!config.win32" } ++ { "libs": "-lgds", "condition": "!config.win32" }, ++ { "libs": "-lfbclient", "condition": "!config.win32" } + ] + }, + "mysql": { diff --git a/SOURCES/qt5-qtbase-gcc11.patch b/SOURCES/qt5-qtbase-gcc11.patch new file mode 100644 index 0000000..c956712 --- /dev/null +++ b/SOURCES/qt5-qtbase-gcc11.patch @@ -0,0 +1,171 @@ +diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp +index 06fd88da..dbff3239 100644 +--- a/src/corelib/codecs/qtextcodec.cpp ++++ b/src/corelib/codecs/qtextcodec.cpp +@@ -38,6 +38,7 @@ + ** + ****************************************************************************/ + ++#include + #include "qplatformdefs.h" + + #include "qtextcodec.h" +diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp +index 8561f908..8128d3cf 100644 +--- a/src/corelib/codecs/qutfcodec.cpp ++++ b/src/corelib/codecs/qutfcodec.cpp +@@ -38,6 +38,8 @@ + ** + ****************************************************************************/ + ++#include ++ + #include "qutfcodec_p.h" + #include "qlist.h" + #include "qendian.h" +diff --git a/src/corelib/global/qendian.cpp b/src/corelib/global/qendian.cpp +index eb08b2f8..6b41b3dd 100644 +--- a/src/corelib/global/qendian.cpp ++++ b/src/corelib/global/qendian.cpp +@@ -38,6 +38,7 @@ + ** + ****************************************************************************/ + ++#include + #include "qendian.h" + + #include "qalgorithms.h" +diff --git a/src/corelib/global/qfloat16.cpp b/src/corelib/global/qfloat16.cpp +index c9733174..c62a1972 100644 +--- a/src/corelib/global/qfloat16.cpp ++++ b/src/corelib/global/qfloat16.cpp +@@ -38,6 +38,7 @@ + ** + ****************************************************************************/ + ++#include + #include "qfloat16.h" + #include "private/qsimd_p.h" + #include // for fpclassify()'s return values +diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp +index 10672c1f..6d5fd63e 100644 +--- a/src/corelib/global/qrandom.cpp ++++ b/src/corelib/global/qrandom.cpp +@@ -40,6 +40,7 @@ + // for rand_s + #define _CRT_RAND_S + ++#include + #include "qrandom.h" + #include "qrandom_p.h" + #include +diff --git a/src/corelib/plugin/qelfparser_p.cpp b/src/corelib/plugin/qelfparser_p.cpp +index 13eee353..9e7a7a41 100644 +--- a/src/corelib/plugin/qelfparser_p.cpp ++++ b/src/corelib/plugin/qelfparser_p.cpp +@@ -37,6 +37,7 @@ + ** + ****************************************************************************/ + ++#include + #include "qelfparser_p.h" + + #if defined (Q_OF_ELF) && defined(Q_CC_GNU) +diff --git a/src/corelib/plugin/qmachparser.cpp b/src/corelib/plugin/qmachparser.cpp +index 11670caf..39f5596b 100644 +--- a/src/corelib/plugin/qmachparser.cpp ++++ b/src/corelib/plugin/qmachparser.cpp +@@ -37,6 +37,8 @@ + ** + ****************************************************************************/ + ++#include ++ + #include "qmachparser_p.h" + + #if defined(Q_OF_MACH_O) +diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp +index 83873edf..5aafb4e5 100644 +--- a/src/corelib/plugin/quuid.cpp ++++ b/src/corelib/plugin/quuid.cpp +@@ -38,6 +38,7 @@ + ** + ****************************************************************************/ + ++#include + #include "quuid.h" + + #include "qcryptographichash.h" +diff --git a/src/corelib/serialization/qdatastream.cpp b/src/corelib/serialization/qdatastream.cpp +index 5082a8cb..7eecfcca 100644 +--- a/src/corelib/serialization/qdatastream.cpp ++++ b/src/corelib/serialization/qdatastream.cpp +@@ -40,6 +40,8 @@ + #include "qdatastream.h" + #include "qdatastream_p.h" + ++#include ++ + #if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED) + #include "qbuffer.h" + #include "qfloat16.h" +diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp +index 9a72df58..6651ee98 100644 +--- a/src/corelib/text/qbytearray.cpp ++++ b/src/corelib/text/qbytearray.cpp +@@ -39,6 +39,7 @@ + ** + ****************************************************************************/ + ++#include + #include "qbytearray.h" + #include "qbytearraymatcher.h" + #include "private/qtools_p.h" +diff --git a/src/corelib/text/qbytearraymatcher.cpp b/src/corelib/text/qbytearraymatcher.cpp +index 72e09226..80511cb5 100644 +--- a/src/corelib/text/qbytearraymatcher.cpp ++++ b/src/corelib/text/qbytearraymatcher.cpp +@@ -37,6 +37,7 @@ + ** + ****************************************************************************/ + ++#include + #include "qbytearraymatcher.h" + + #include +diff --git a/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp +index ab3054d5..22efb3a0 100644 +--- a/src/corelib/tools/qbitarray.cpp ++++ b/src/corelib/tools/qbitarray.cpp +@@ -38,6 +38,7 @@ + ** + ****************************************************************************/ + ++#include + #include "qbitarray.h" + #include + #include +diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp +index fa8d21e0..cd85956d 100644 +--- a/src/corelib/tools/qcryptographichash.cpp ++++ b/src/corelib/tools/qcryptographichash.cpp +@@ -38,6 +38,7 @@ + ** + ****************************************************************************/ + ++#include + #include + #include + +diff --git a/src/gui/text/qfontengine_qpf2.cpp b/src/gui/text/qfontengine_qpf2.cpp +index e00f9d05..917ab5f9 100644 +--- a/src/gui/text/qfontengine_qpf2.cpp ++++ b/src/gui/text/qfontengine_qpf2.cpp +@@ -37,6 +37,7 @@ + ** + ****************************************************************************/ + ++#include + #include "qfontengine_qpf2_p.h" + + #include diff --git a/SOURCES/qtbase-CVE-2021-38593.patch b/SOURCES/qtbase-CVE-2021-38593.patch deleted file mode 100644 index 63c1c3d..0000000 --- a/SOURCES/qtbase-CVE-2021-38593.patch +++ /dev/null @@ -1,289 +0,0 @@ -From 081d835c040a90f8ee76807354355062ac521dfb Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland -Date: Tue, 13 Apr 2021 14:23:45 +0200 -Subject: [PATCH] Avoid processing-intensive painting of high number of tiny - dashes - -When stroking a dashed path, an unnecessary amount of processing would -be spent if there is a huge number of dashes visible, e.g. because of -scaling. Since the dashes are too small to be indivdually visible -anyway, just replace with a semi-transparent solid line for such -cases. - -Pick-to: 6.1 6.0 5.15 -Change-Id: I9e9f7861257ad5bce46a0cf113d1a9d7824911e6 -Reviewed-by: Allan Sandfeld Jensen -(cherry picked from commit f4d791b330d02777fcaf02938732892eb3167e9b) - -* asturmlechner 2021-08-21: -Conflict from preceding 94dd2ceb in dev branch: - src/gui/painting/qpaintengineex.cpp - Resolved via: - - if (pen.style() > Qt::SolidLine) { - QRectF cpRect = path.controlPointRect(); - const QTransform &xf = state()->matrix; -- if (pen.isCosmetic()) { -+ if (qt_pen_is_cosmetic(pen, state()->renderHints)){ - clipRect = d->exDeviceRect; - cpRect.translate(xf.dx(), xf.dy()); - } else { - -FTBFS from preceding 471e4fcb in dev branch changing QVector to QList: - Resolved via: - - QRectF extentRect = cpRect.adjusted(-pw, -pw, pw, pw) & clipRect; - qreal extent = qMax(extentRect.width(), extentRect.height()); - qreal patternLength = 0; -- const QList pattern = pen.dashPattern(); -+ const QVector pattern = pen.dashPattern(); - const int patternSize = qMin(pattern.size(), 32); - for (int i = 0; i < patternSize; i++) - patternLength += qMax(pattern.at(i), qreal(0)); ---- - src/gui/painting/qpaintengineex.cpp | 44 +++++++++++++++---- - .../other/lancelot/scripts/tinydashes.qps | 34 ++++++++++++++ - 2 files changed, 69 insertions(+), 9 deletions(-) - create mode 100644 tests/auto/other/lancelot/scripts/tinydashes.qps - -diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp -index 5d8f89eadd..55fdb0c2a0 100644 ---- a/src/gui/painting/qpaintengineex.cpp -+++ b/src/gui/painting/qpaintengineex.cpp -@@ -385,7 +385,7 @@ QPainterState *QPaintEngineEx::createState(QPainterState *orig) const - - Q_GUI_EXPORT extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale); // qtransform.cpp - --void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) -+void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) - { - #ifdef QT_DEBUG_DRAW - qDebug() << "QPaintEngineEx::stroke()" << pen; -@@ -403,6 +403,38 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) - d->stroker.setCubicToHook(qpaintengineex_cubicTo); - } - -+ QRectF clipRect; -+ QPen pen = inPen; -+ if (pen.style() > Qt::SolidLine) { -+ QRectF cpRect = path.controlPointRect(); -+ const QTransform &xf = state()->matrix; -+ if (qt_pen_is_cosmetic(pen, state()->renderHints)){ -+ clipRect = d->exDeviceRect; -+ cpRect.translate(xf.dx(), xf.dy()); -+ } else { -+ clipRect = xf.inverted().mapRect(QRectF(d->exDeviceRect)); -+ } -+ // Check to avoid generating unwieldy amount of dashes that will not be visible anyway -+ QRectF extentRect = cpRect & clipRect; -+ qreal extent = qMax(extentRect.width(), extentRect.height()); -+ qreal patternLength = 0; -+ const QVector pattern = pen.dashPattern(); -+ const int patternSize = qMin(pattern.size(), 32); -+ for (int i = 0; i < patternSize; i++) -+ patternLength += qMax(pattern.at(i), qreal(0)); -+ if (pen.widthF()) -+ patternLength *= pen.widthF(); -+ if (qFuzzyIsNull(patternLength)) { -+ pen.setStyle(Qt::NoPen); -+ } else if (extent / patternLength > 10000) { -+ // approximate stream of tiny dashes with semi-transparent solid line -+ pen.setStyle(Qt::SolidLine); -+ QColor color(pen.color()); -+ color.setAlpha(color.alpha() / 2); -+ pen.setColor(color); -+ } -+ } -+ - if (!qpen_fast_equals(pen, d->strokerPen)) { - d->strokerPen = pen; - d->stroker.setJoinStyle(pen.joinStyle()); -@@ -430,14 +462,8 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) - return; - } - -- if (pen.style() > Qt::SolidLine) { -- if (qt_pen_is_cosmetic(pen, state()->renderHints)){ -- d->activeStroker->setClipRect(d->exDeviceRect); -- } else { -- QRectF clipRect = state()->matrix.inverted().mapRect(QRectF(d->exDeviceRect)); -- d->activeStroker->setClipRect(clipRect); -- } -- } -+ if (!clipRect.isNull()) -+ d->activeStroker->setClipRect(clipRect); - - if (d->activeStroker == &d->stroker) - d->stroker.setForceOpen(path.hasExplicitOpen()); -diff --git a/tests/auto/other/lancelot/scripts/tinydashes.qps b/tests/auto/other/lancelot/scripts/tinydashes.qps -new file mode 100644 -index 0000000000..d41ced7f5f ---- /dev/null -+++ b/tests/auto/other/lancelot/scripts/tinydashes.qps -@@ -0,0 +1,34 @@ -+# Version: 1 -+# CheckVsReference: 5% -+ -+path_addEllipse mypath 20.0 20.0 200.0 200.0 -+ -+save -+setPen blue 20 SolidLine FlatCap -+pen_setCosmetic true -+pen_setDashPattern [ 0.0004 0.0004 ] -+setBrush yellow -+ -+drawPath mypath -+translate 300 0 -+setRenderHint Antialiasing true -+drawPath mypath -+restore -+ -+path_addEllipse bigpath 200000.0 200000.0 2000000.0 2000000.0 -+ -+setPen blue 20 DotLine FlatCap -+setBrush yellow -+ -+save -+translate 0 300 -+scale 0.0001 0.00011 -+drawPath bigpath -+restore -+ -+save -+translate 300 300 -+setRenderHint Antialiasing true -+scale 0.0001 0.00011 -+drawPath bigpath -+restore --- -GitLab - -From 6b400e3147dcfd8cc3a393ace1bd118c93762e0c Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland -Date: Fri, 23 Jul 2021 15:53:56 +0200 -Subject: [PATCH] Improve fix for avoiding huge number of tiny dashes -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Some pathological cases were not caught by the previous fix. - -Fixes: QTBUG-95239 -Pick-to: 6.2 6.1 5.15 -Change-Id: I0337ee3923ff93ccb36c4d7b810a9c0667354cc5 -Reviewed-by: Robert Löhning ---- - src/gui/painting/qpaintengineex.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp -index 2997d533107..22e9a621c3c 100644 ---- a/src/gui/painting/qpaintengineex.cpp -+++ b/src/gui/painting/qpaintengineex.cpp -@@ -426,7 +426,7 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) - patternLength *= pen.widthF(); - if (qFuzzyIsNull(patternLength)) { - pen.setStyle(Qt::NoPen); -- } else if (extent / patternLength > 10000) { -+ } else if (qFuzzyIsNull(extent) || extent / patternLength > 10000) { - // approximate stream of tiny dashes with semi-transparent solid line - pen.setStyle(Qt::SolidLine); - QColor color(pen.color()); - -From 427df34efdcb56582a9ae9f7d2d1f39eeff70328 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland -Date: Fri, 30 Jul 2021 13:03:49 +0200 -Subject: [PATCH] Refix for avoiding huge number of tiny dashes - -Previous fix hit too widely so some valid horizontal and vertical -lines were affected; the root problem being that such lines have an -empty control point rect (width or height is 0). Fix by caculating in -the pen width. - -Pick-to: 6.2 6.1 5.15 -Change-Id: I7a436e873f6d485028f6759d0e2c6456f07eebdc -Reviewed-by: Allan Sandfeld Jensen -(cherry picked from commit 84aba80944a2e1c3058d7a1372e0e66676411884) ---- - src/gui/painting/qpaintengineex.cpp | 8 ++--- - .../gui/painting/qpainter/tst_qpainter.cpp | 31 +++++++++++++++++++ - 2 files changed, 35 insertions(+), 4 deletions(-) - -diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp -index 19e4b23423..9fe510827a 100644 ---- a/src/gui/painting/qpaintengineex.cpp -+++ b/src/gui/painting/qpaintengineex.cpp -@@ -415,18 +415,18 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) - clipRect = xf.inverted().mapRect(QRectF(d->exDeviceRect)); - } - // Check to avoid generating unwieldy amount of dashes that will not be visible anyway -- QRectF extentRect = cpRect & clipRect; -+ qreal pw = pen.widthF() ? pen.widthF() : 1; -+ QRectF extentRect = cpRect.adjusted(-pw, -pw, pw, pw) & clipRect; - qreal extent = qMax(extentRect.width(), extentRect.height()); - qreal patternLength = 0; - const QVector pattern = pen.dashPattern(); - const int patternSize = qMin(pattern.size(), 32); - for (int i = 0; i < patternSize; i++) - patternLength += qMax(pattern.at(i), qreal(0)); -- if (pen.widthF()) -- patternLength *= pen.widthF(); -+ patternLength *= pw; - if (qFuzzyIsNull(patternLength)) { - pen.setStyle(Qt::NoPen); -- } else if (qFuzzyIsNull(extent) || extent / patternLength > 10000) { -+ } else if (extent / patternLength > 10000) { - // approximate stream of tiny dashes with semi-transparent solid line - pen.setStyle(Qt::SolidLine); - QColor color(pen.color()); -diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp -index 42e98ce363..d7c3f95f1d 100644 ---- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp -+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp -@@ -308,6 +308,7 @@ private slots: - void fillPolygon(); - - void drawImageAtPointF(); -+ void scaledDashes(); - - private: - void fillData(); -@@ -5468,6 +5469,36 @@ void tst_QPainter::drawImageAtPointF() - paint.end(); - } - -+void tst_QPainter::scaledDashes() -+{ -+ // Test that we do not hit the limit-huge-number-of-dashes path -+ QRgb fore = qRgb(0, 0, 0xff); -+ QRgb back = qRgb(0xff, 0xff, 0); -+ QImage image(5, 32, QImage::Format_RGB32); -+ image.fill(back); -+ QPainter p(&image); -+ QPen pen(QColor(fore), 3, Qt::DotLine); -+ p.setPen(pen); -+ p.scale(1, 2); -+ p.drawLine(2, 0, 2, 16); -+ p.end(); -+ -+ bool foreFound = false; -+ bool backFound = false; -+ int i = 0; -+ while (i < 32 && (!foreFound || !backFound)) { -+ QRgb pix = image.pixel(3, i); -+ if (pix == fore) -+ foreFound = true; -+ else if (pix == back) -+ backFound = true; -+ i++; -+ } -+ -+ QVERIFY(foreFound); -+ QVERIFY(backFound); -+} -+ - QTEST_MAIN(tst_QPainter) - - #include "tst_qpainter.moc" --- -GitLab diff --git a/SOURCES/qtbase-everywhere-src-5.15.2-libglvnd.patch b/SOURCES/qtbase-everywhere-src-5.15.2-libglvnd.patch new file mode 100644 index 0000000..e819f8d --- /dev/null +++ b/SOURCES/qtbase-everywhere-src-5.15.2-libglvnd.patch @@ -0,0 +1,15 @@ +diff -up qtbase-everywhere-src-5.15.2/src/gui/configure.json.libglvnd qtbase-everywhere-src-5.15.2/src/gui/configure.json +--- qtbase-everywhere-src-5.15.2/src/gui/configure.json.libglvnd 2020-10-27 03:02:11.000000000 -0500 ++++ qtbase-everywhere-src-5.15.2/src/gui/configure.json 2021-09-10 10:05:53.610312223 -0500 +@@ -847,9 +847,9 @@ + ], + "include": [ "EGL/egl.h", "X11/Xlib.h" ], + "main": [ +- "Display *dpy = EGL_DEFAULT_DISPLAY;", ++ "Display *dpy = reinterpret_cast(EGL_DEFAULT_DISPLAY);", + "EGLNativeDisplayType egldpy = XOpenDisplay(\"\");", +- "dpy = egldpy;", ++ "dpy = reinterpret_cast(egldpy);", + "EGLNativeWindowType w = XCreateWindow(dpy, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);", + "XDestroyWindow(dpy, w);", + "XCloseDisplay(dpy);" diff --git a/SPECS/qt5-qtbase.spec b/SPECS/qt5-qtbase.spec index e92624c..77101f0 100644 --- a/SPECS/qt5-qtbase.spec +++ b/SPECS/qt5-qtbase.spec @@ -17,6 +17,9 @@ %endif %endif +# Disable automatic .la file removal +%global __brp_remove_la_files %nil + %global platform linux-g++ %if 0%{?use_clang} @@ -28,23 +31,23 @@ %global rpm_macros_dir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) %global journald -journald +BuildRequires: make BuildRequires: pkgconfig(libsystemd) ## skip for now, until we're better at it --rex %global examples 1 %global build_tests 1 -#global tests 1 Name: qt5-qtbase Summary: Qt5 - QtBase components -Version: 5.15.2 -Release: 4%{?dist} +Version: 5.15.3 +Release: 1%{?dist} # See LGPL_EXCEPTIONS.txt, for exception details License: LGPLv2 with exceptions or GPLv3 with exceptions Url: http://qt-project.org/ %global majmin %(echo %{version} | cut -d. -f1-2) -Source0: https://download.qt.io/official_releases/qt/%{majmin}/%{version}/submodules/%{qt_module}-everywhere-src-%{version}.tar.xz +Source0: https://download.qt.io/official_releases/qt/%{majmin}/%{version}/submodules/%{qt_module}-everywhere-opensource-src-%{version}.tar.xz # https://bugzilla.redhat.com/show_bug.cgi?id=1227295 Source1: qtlogging.ini @@ -94,20 +97,33 @@ Patch54: qtbase-qmake_LFLAGS.patch # don't use relocatable heuristics to guess prefix when using -no-feature-relocatable Patch55: qtbase-everywhere-src-5.14.2-no_relocatable.patch +# fix FTBFS against libglvnd-1.3.4+ +Patch56: qtbase-everywhere-src-5.15.2-libglvnd.patch + # drop -O3 and make -O2 by default Patch61: qt5-qtbase-cxxflag.patch # support firebird version 3.x -Patch64: qt5-qtbase-5.12.1-firebird.patch +Patch63: qt5-qtbase-5.12.1-firebird.patch + +# support firebird version 4.x +Patch64: qt5-qtbase-5.12.1-firebird-4.0.0.patch # fix for new mariadb Patch65: qtbase-opensource-src-5.9.0-mysql.patch Patch68: qtbase-ambiguous-python-shebang.patch +# gcc-11 +Patch90: %{name}-gcc11.patch -# Security fixes -Patch100: qtbase-CVE-2021-38593.patch +## upstream patches +# https://invent.kde.org/qt/qt/qtbase, kde/5.15 branch +# git diff v5.15.3-lts-lgpl..HEAD | gzip > kde-5.15-rollup-$(date +%Y%m%d).patch.gz +# patch100 in lookaside cache due to large'ish size -- rdieter +Patch100: kde-5.15-rollup-20220324.patch.gz +# HACK to make 'fedpkg sources' consider it 'used" +Source100: kde-5.15-rollup-20220324.patch.gz # Do not check any files in %%{_qt5_plugindir}/platformthemes/ for requires. # Those themes are there for platform integration. If the required libraries are @@ -129,6 +145,8 @@ BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(atspi-2) %if 0%{?use_clang} BuildRequires: clang >= 3.7.0 +%else +BuildRequires: gcc-c++ %endif # http://bugzilla.redhat.com/1196359 %if 0%{?fedora} || 0%{?rhel} > 6 @@ -351,6 +369,7 @@ Qt5 libraries used for drawing widgets and OpenGL items. %patch53 -p1 -b .qt5gui_cmake_isystem_includes %patch54 -p1 -b .qmake_LFLAGS %patch55 -p1 -b .no_relocatable +%patch56 -p1 -b .libglvnd %patch61 -p1 -b .qt5-qtbase-cxxflag %patch64 -p1 -b .firebird %if 0%{?fedora} > 27 || 0%{?rhel} > 7 @@ -358,7 +377,10 @@ Qt5 libraries used for drawing widgets and OpenGL items. %endif %patch68 -p1 -%patch100 -p1 -b .CVE-2021-38593 +%patch90 -p1 -b .gcc11 + +## upstream patches +%patch100 -p1 # move some bundled libs to ensure they're not accidentally used pushd src/3rdparty @@ -384,6 +406,13 @@ sed -i -e "s|^#!/usr/bin/env perl$|#!%{__perl}|" \ mkspecs/features/data/unix/findclasslist.pl %build +# QT is known not to work properly with LTO at this point. Some of the issues +# are being worked on upstream and disabling LTO should be re-evaluated as +# we update this change. Until such time... +# Disable LTO +# https://bugzilla.redhat.com/1900527 +%define _lto_cflags %{nil} + ## adjust $RPM_OPT_FLAGS # remove -fexceptions RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'` @@ -420,7 +449,7 @@ export MAKEFLAGS="%{?_smp_mflags}" -shared \ -accessibility \ %{?dbus}%{!?dbus:-dbus-runtime} \ - %{?egl:-egl} \ + %{?egl:-egl -eglfs} \ -fontconfig \ -glib \ -gtk \ @@ -516,7 +545,7 @@ translationdir=%{_qt5_translationdir} Name: Qt5 Description: Qt5 Configuration -Version: %{version} +Version: 5.15.3 EOF # rpm macros @@ -596,6 +625,10 @@ EOF mkdir -p %{buildroot}%{_qt5_headerdir}/QtXcb install -m 644 src/plugins/platforms/xcb/*.h %{buildroot}%{_qt5_headerdir}/QtXcb/ +# drop Qt5Bootstrap from -static (#2017661) +rm -f %{buildroot}%{_qt5_libdir}/libQt5Bootstrap.*a +rm -f %{buildroot}%{_qt5_libdir}/libQt5Bootstrap.prl + %check # verify Qt5.pc export PKG_CONFIG_PATH=%{buildroot}%{_libdir}/pkgconfig @@ -698,7 +731,7 @@ fi %{_qt5_importdir}/ %{_qt5_translationdir}/ %if "%{_qt5_prefix}" != "%{_prefix}" -%dir %{_qt5_prefix} +%dir %{_qt5_prefix}/ %endif %dir %{_qt5_archdatadir}/ %dir %{_qt5_datadir}/ @@ -810,7 +843,6 @@ fi %{_qt5_libdir}/cmake/Qt5DBus/Qt5DBusConfig*.cmake %{_qt5_libdir}/cmake/Qt5DBus/Qt5DBusMacros.cmake %{_qt5_libdir}/cmake/Qt5Gui/Qt5GuiConfig*.cmake -%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QLibInputPlugin.cmake %{_qt5_libdir}/cmake/Qt5Network/Qt5NetworkConfig*.cmake %{_qt5_libdir}/cmake/Qt5OpenGL/Qt5OpenGLConfig*.cmake %{_qt5_libdir}/cmake/Qt5PrintSupport/Qt5PrintSupportConfig*.cmake @@ -820,24 +852,24 @@ fi %{_qt5_libdir}/cmake/Qt5Widgets/Qt5WidgetsMacros.cmake %{_qt5_libdir}/cmake/Qt5Xml/Qt5XmlConfig*.cmake %{_qt5_libdir}/cmake/Qt5/Qt5ModuleLocation.cmake -%{_qt5_libdir}/cmake/Qt5AccessibilitySupport/Qt5AccessibilitySupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5DeviceDiscoverySupport/Qt5DeviceDiscoverySupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5EdidSupport/Qt5EdidSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5EglFSDeviceIntegration/Qt5EglFSDeviceIntegrationConfig*.cmake -%{_qt5_libdir}/cmake/Qt5EglFsKmsSupport/Qt5EglFsKmsSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5EglSupport/Qt5EglSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5EventDispatcherSupport/Qt5EventDispatcherSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5FbSupport/Qt5FbSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5FontDatabaseSupport/Qt5FontDatabaseSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5GlxSupport/Qt5GlxSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5InputSupport/Qt5InputSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5KmsSupport/Qt5KmsSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5LinuxAccessibilitySupport/Qt5LinuxAccessibilitySupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5PlatformCompositorSupport/Qt5PlatformCompositorSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5ServiceSupport/Qt5ServiceSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5ThemeSupport/Qt5ThemeSupportConfig*.cmake -%{_qt5_libdir}/cmake/Qt5XcbQpa/Qt5XcbQpaConfig*.cmake -%{_qt5_libdir}/cmake/Qt5XkbCommonSupport/Qt5XkbCommonSupportConfig*.cmake +%{_qt5_libdir}/cmake/Qt5AccessibilitySupport/ +%{_qt5_libdir}/cmake/Qt5DeviceDiscoverySupport/ +%{_qt5_libdir}/cmake/Qt5EdidSupport/ +%{_qt5_libdir}/cmake/Qt5EglFSDeviceIntegration/ +%{_qt5_libdir}/cmake/Qt5EglFsKmsSupport/ +%{_qt5_libdir}/cmake/Qt5EglSupport/ +%{_qt5_libdir}/cmake/Qt5EventDispatcherSupport/ +%{_qt5_libdir}/cmake/Qt5FbSupport/ +%{_qt5_libdir}/cmake/Qt5FontDatabaseSupport/ +%{_qt5_libdir}/cmake/Qt5GlxSupport/ +%{_qt5_libdir}/cmake/Qt5InputSupport/ +%{_qt5_libdir}/cmake/Qt5KmsSupport/ +%{_qt5_libdir}/cmake/Qt5LinuxAccessibilitySupport/ +%{_qt5_libdir}/cmake/Qt5PlatformCompositorSupport/ +%{_qt5_libdir}/cmake/Qt5ServiceSupport/ +%{_qt5_libdir}/cmake/Qt5ThemeSupport/ +%{_qt5_libdir}/cmake/Qt5XcbQpa/ +%{_qt5_libdir}/cmake/Qt5XkbCommonSupport/ %{_qt5_libdir}/metatypes/qt5core_metatypes.json %{_qt5_libdir}/metatypes/qt5gui_metatypes.json %{_qt5_libdir}/metatypes/qt5widgets_metatypes.json @@ -868,8 +900,6 @@ fi #{_qt5_archdatadir}/mkspecs/modules/qt_lib_*_private.pri %files static -%{_qt5_libdir}/libQt5Bootstrap.*a -%{_qt5_libdir}/libQt5Bootstrap.prl %{_qt5_headerdir}/QtOpenGLExtensions/ %{_qt5_libdir}/libQt5OpenGLExtensions.*a %{_qt5_libdir}/libQt5OpenGLExtensions.prl @@ -1025,6 +1055,11 @@ fi %changelog +* Thu Mar 24 2022 Jan Grulich - 5.15.3-1 +- 5.15.3 + sync with Fedora + Resolves: bz#2061377 + Resolves: bz#2059853 + * Tue Oct 12 2021 Jan Grulich - 5.15.2-4 - Fix out-of-bounds write in QOutlineMapper::convertPath Resolves: bz#1996877