Add dev-qt from an older version of the gentoo repo

Qt5 has been removed, we restore it since we still use it.
This commit is contained in:
2026-07-03 09:45:00 +02:00
parent 2247967dd3
commit d5c461ec31
587 changed files with 30457 additions and 0 deletions

View File

@ -0,0 +1,20 @@
https://mail.kde.org/pipermail/distributions/2026-May/001681.html
https://qt-project.atlassian.net/browse/QTBUG-145310
https://codereview.qt-project.org/c/qt/qtbase/+/727830
--- a/src/gui/text/freetype/qfontengine_ft.cpp
+++ b/src/gui/text/freetype/qfontengine_ft.cpp
@@ -1956,9 +1956,11 @@
err = FT_Render_Glyph(slot, renderMode);
- if (err != FT_Err_Ok)
- qWarning("render glyph failed err=%x face=%p, glyph=%d", err, face, glyph);
-
FT_Library_SetLcdFilter(slot->library, FT_LCD_FILTER_NONE);
+ if (err != FT_Err_Ok) {
+ qWarning("render glyph failed err=%x face=%p, glyph=%d", err, face, glyph);
+ return nullptr;
+ }
+
info.height = slot->bitmap.rows;
info.width = slot->bitmap.width;

View File

@ -0,0 +1,14 @@
https://codereview.qt-project.org/c/qt/qtbase/+/735182
https://qt-project.atlassian.net/browse/QTBUG-146670
(seems to also affect ppc32)
--- a/src/corelib/kernel/qtestsupport_core.cpp
+++ b/src/corelib/kernel/qtestsupport_core.cpp
@@ -9,8 +9,4 @@
using namespace std::chrono_literals;
-// Assert that this instantiation of std::atomic is always lock-free so we
-// know that no code will execute on destruction.
-static_assert(std::atomic<std::chrono::milliseconds>::is_always_lock_free);
-
QT_BEGIN_NAMESPACE

View File

@ -0,0 +1,28 @@
Patch taken from Debian[1], largely broken on HPPA without and several
tests give segmentation faults[2].
Needs upstreaming if someone familiar with HPPA wants to give this
attention. Note forkfd is essentially maintained in qtbase's repo[3]
rather than truly third party.
[1] https://bugs.debian.org/1042018
[2] https://bugs.gentoo.org/914371
[3] https://code.qt.io/cgit/qt/qtbase.git/tree/src/3rdparty/forkfd
Description: Change how stack grows on HPPA.
On HPPA stack grows upwards. This patch introduces this change for
this 3rd party code.
Author: John David Anglin <dave.anglin@bell.net>
--- a/src/3rdparty/forkfd/forkfd_linux.c
+++ b/src/3rdparty/forkfd/forkfd_linux.c
@@ -170,5 +170,10 @@
*system = 1;
+#if defined(__hppa__)
+ /* Stack grows up */
+ pid = clone(childFn, childStack, cloneflags, token, &pidfd, NULL, NULL);
+#else
pid = clone(childFn, childStack + sizeof(childStack), cloneflags, token, &pidfd, NULL, NULL);
+#endif
if (pid < 0)
return pid;

View File

@ -0,0 +1,5 @@
https://bugs.gentoo.org/914195
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -65 +64,0 @@
-qt_internal_check_if_path_has_symlinks("${CMAKE_BINARY_DIR}")

View File

@ -0,0 +1,27 @@
Avoid crash that happens for some users in qsb, qmake, and
potentially other Qt tools when ran under sandbox leading
to build failures for qtdeclarative and other packages.
Former fix involved replacing 4096 by SIGSTKSZ but
bug #918664 shown that this may be insufficient so this
tries 32k instead.
Update: after https://bugs.gentoo.org/923013 and a fixed
sandbox been stabilized for some time, it should in theory
be possible to drop this
https://bugs.gentoo.org/908809
https://bugs.gentoo.org/908816
https://bugs.gentoo.org/913493
https://bugs.gentoo.org/915695
https://bugs.gentoo.org/918664
https://codereview.qt-project.org/c/qt/qtbase/+/513140
--- a/src/3rdparty/forkfd/forkfd_linux.c
+++ b/src/3rdparty/forkfd/forkfd_linux.c
@@ -158,5 +158,5 @@
int system_vforkfd(int flags, pid_t *ppid, int (*childFn)(void *), void *token, int *system)
{
- __attribute__((aligned(64))) char childStack[SIGSTKSZ];
+ __attribute__((aligned(64))) char childStack[32768];
pid_t pid;
int pidfd;

View File

@ -0,0 +1,15 @@
Simply disable the broken path rather than worry about it for now.
Likely an easy fix but would rather this be handled upstream and
reported by someone that is affected and can test.
https://bugs.gentoo.org/926287
--- a/src/gui/painting/qrgbafloat.h
+++ b/src/gui/painting/qrgbafloat.h
@@ -20,5 +20,5 @@
public:
using Type = F;
-#if defined(__AVX512FP16__) && QFLOAT16_IS_NATIVE
+#if 0
// AVX512FP16 has multiplication instructions
using FastType = F;

View File

@ -0,0 +1,14 @@
https://bugs.gentoo.org/938475
https://codereview.qt-project.org/c/qt/qtbase/+/585668
From: Sam James <sam@gentoo.org>
Date: Sun, 25 Aug 2024 17:34:22 +0100
Subject: [PATCH] QContiguousCache: fix include for qMin
Include `<QtCore/qminmax.h>` for `qMin`. This came up downstream
in Gentoo at https://bugs.gentoo.org/938475.
--- a/src/corelib/tools/qcontiguouscache.h
+++ b/src/corelib/tools/qcontiguouscache.h
@@ -10,2 +10,3 @@
#include <QtCore/qtcoreexports.h>
+#include <QtCore/qminmax.h>
#include <QtCore/qttypetraits.h>

View File

@ -0,0 +1,58 @@
Combined backport of [1][2][3] from upcoming Qt 6.8.3 for [4][5][6].
[1] https://github.com/qt/qtbase/commit/12d4bf1ab52748cb84894f50d437064b439e0b7d
[2] https://github.com/qt/qtbase/commit/2ef615228bba9a8eb282437bfb7472f925610e89
[3] https://github.com/qt/qtbase/commit/a43c7e58046604796aa69974ea1c5d3e2648c755
[4] https://bugreports.qt.io/browse/QTBUG-133206
[5] https://bugreports.qt.io/browse/QTBUG-133500
[6] https://bugs.kde.org/show_bug.cgi?id=499537
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -7,4 +7,5 @@
#include "qfile.h"
#if QT_CONFIG(settings)
+#include "qresource.h"
#include "qsettings.h"
#endif
@@ -104,5 +105,5 @@
QString qtconfig = QStringLiteral(":/qt/etc/qt.conf");
- if (QFile::exists(qtconfig))
+ if (QResource(qtconfig, QLocale::c()).isValid())
return std::make_unique<QSettings>(qtconfig, QSettings::IniFormat);
#ifdef Q_OS_DARWIN
--- a/src/corelib/text/qlocale.cpp
+++ b/src/corelib/text/qlocale.cpp
@@ -1113,8 +1113,11 @@
QLocale::QLocale()
- : d(*defaultLocalePrivate)
+ : d(c_private())
{
- // Make sure system data is up to date:
- systemData();
+ if (!defaultLocalePrivate.isDestroyed()) {
+ // Make sure system data is up to date:
+ systemData();
+ d = *defaultLocalePrivate;
+ }
}
--- a/src/corelib/text/qlocale_unix.cpp
+++ b/src/corelib/text/qlocale_unix.cpp
@@ -128,4 +128,6 @@
{
QSystemLocaleData *d = qSystemLocaleData();
+ if (!d)
+ return QVariant();
if (type == LocaleChanged) {
--- a/src/corelib/text/qlocale_win.cpp
+++ b/src/corelib/text/qlocale_win.cpp
@@ -829,4 +829,6 @@
{
QSystemLocalePrivate *d = systemLocalePrivate();
+ if (!d)
+ return QVariant();
switch(type) {
case DecimalPoint:

View File

@ -0,0 +1,12 @@
https://bugs.gentoo.org/949629
https://bugreports.qt.io/browse/QTBUG-133808
https://codereview.qt-project.org/c/qt/qtbase/+/624870
--- a/src/corelib/global/qcompare_impl.h
+++ b/src/corelib/global/qcompare_impl.h
@@ -13,4 +13,6 @@
#include <QtCore/qcompilerdetection.h>
+#include <type_traits>
+
QT_BEGIN_NAMESPACE

View File

@ -0,0 +1,36 @@
When cross-compiling, CMake needs to find the build host's Qt6CoreTools. It
therefore prepends QT_HOST_PATH, which is /usr, to CMAKE_FIND_ROOT_PATH. The
problem is that CMAKE_FIND_ROOT_PATH is only a hint, not a definitive
location. Just below, CMake's find_package is usually told to look in
/usr/${CHOST}/usr/lib/cmake and /usr/lib/cmake when cross-compiling. Since
both of these are under /usr, it chooses the former instead of the latter.
It then ends up trying to execute non-native Qt binaries.
We can avoid this problem by setting CMAKE_FIND_ROOT_PATH to a more precise
location. All the Qt6 modules are installed under /usr/lib/cmake, represented
by the __qt_find_package_host_qt_path variable, so we can point it there.
find_package has two modes, module mode and config mode. No mode is
explicitly chosen in this case, so it tries both. In module mode, it would
use a module called FindQt6*.cmake, but no such module exists. It is
therefore safe to assume config mode, which involves the files under
/usr/lib/cmake.
See the isSameDirectoryOrSubDirectory() call in CMake's
cmFindCommon::RerootPaths() function for exactly where this goes wrong.
Chewi
https://bugs.gentoo.org/950314
--- a/cmake/QtConfig.cmake.in
+++ b/cmake/QtConfig.cmake.in
@@ -131,7 +131,7 @@
set(__qt_backup_cmake_find_root_path "${CMAKE_FIND_ROOT_PATH}")
list(PREPEND CMAKE_PREFIX_PATH "${__qt_find_package_host_qt_path}"
${_qt_additional_host_packages_prefix_paths})
- list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_HOST_PATH}"
+ list(PREPEND CMAKE_FIND_ROOT_PATH "${__qt_find_package_host_qt_path}"
${_qt_additional_host_packages_root_paths})
endif()

View File

@ -0,0 +1,163 @@
https://www.qt.io/blog/security-advisory-qtextmarkdownimporter-hbo
https://codereview.qt-project.org/c/qt/qtbase/+/635699
--- a/src/gui/text/qtextmarkdownimporter.cpp
+++ b/src/gui/text/qtextmarkdownimporter.cpp
@@ -28,5 +28,6 @@
static const QChar qtmi_Space = u' ';
-static constexpr auto markerString() noexcept { return "---"_L1; }
+static constexpr auto lfMarkerString() noexcept { return "---\n"_L1; }
+static constexpr auto crlfMarkerString() noexcept { return "---r\n"_L1; }
// TODO maybe eliminate the margins after all views recognize BlockQuoteLevel, CSS can format it, etc.
@@ -120,4 +121,45 @@
}
+/*! \internal
+ Split any Front Matter from the Markdown document \a md.
+ Returns a pair of QStringViews: if \a md begins with qualifying Front Matter
+ (according to the specification at https://jekyllrb.com/docs/front-matter/ ),
+ put it into the \c frontMatter view, omitting both markers; and put the remaining
+ Markdown into \c rest. If no Front Matter is found, return all of \a md in \c rest.
+*/
+static auto splitFrontMatter(QStringView md)
+{
+ struct R {
+ QStringView frontMatter, rest;
+ explicit operator bool() const noexcept { return !frontMatter.isEmpty(); }
+ };
+
+ const auto NotFound = R{{}, md};
+
+ /* Front Matter must start with '---\n' or '---\r\n' on the very first line,
+ and Front Matter must end with another such line.
+ If that is not the case, we return NotFound: then the whole document is
+ to be passed on to the Markdown parser, in which '---\n' is interpreted
+ as a "thematic break" (like <hr/> in HTML). */
+ QLatin1StringView marker;
+ if (md.startsWith(lfMarkerString()))
+ marker = lfMarkerString();
+ else if (md.startsWith(crlfMarkerString()))
+ marker = crlfMarkerString();
+ else
+ return NotFound;
+
+ const auto frontMatterStart = marker.size();
+ const auto endMarkerPos = md.indexOf(marker, frontMatterStart);
+
+ if (endMarkerPos < 0 || md[endMarkerPos - 1] != QChar::LineFeed)
+ return NotFound;
+
+ Q_ASSERT(frontMatterStart < md.size());
+ Q_ASSERT(endMarkerPos < md.size());
+ const auto frontMatter = md.sliced(frontMatterStart, endMarkerPos - frontMatterStart);
+ return R{frontMatter, md.sliced(endMarkerPos + marker.size())};
+}
+
void QTextMarkdownImporter::import(const QString &markdown)
{
@@ -144,19 +186,12 @@
QStringView md = markdown;
- if (m_features.testFlag(QTextMarkdownImporter::FeatureFrontMatter) && md.startsWith(markerString())) {
- qsizetype endMarkerPos = md.indexOf(markerString(), markerString().size() + 1);
- if (endMarkerPos > 4) {
- qsizetype firstLinePos = 4; // first line of yaml
- while (md.at(firstLinePos) == '\n'_L1 || md.at(firstLinePos) == '\r'_L1)
- ++firstLinePos;
- auto frontMatter = md.sliced(firstLinePos, endMarkerPos - firstLinePos);
- firstLinePos = endMarkerPos + 4; // first line of markdown after yaml
- while (md.size() > firstLinePos && (md.at(firstLinePos) == '\n'_L1 || md.at(firstLinePos) == '\r'_L1))
- ++firstLinePos;
- md = md.sliced(firstLinePos);
- doc->setMetaInformation(QTextDocument::FrontMatter, frontMatter.toString());
- qCDebug(lcMD) << "extracted FrontMatter: size" << frontMatter.size();
+ if (m_features.testFlag(QTextMarkdownImporter::FeatureFrontMatter)) {
+ if (const auto split = splitFrontMatter(md)) {
+ doc->setMetaInformation(QTextDocument::FrontMatter, split.frontMatter.toString());
+ qCDebug(lcMD) << "extracted FrontMatter: size" << split.frontMatter.size();
+ md = split.rest;
}
}
+
const auto mdUtf8 = md.toUtf8();
m_cursor.beginEditBlock();
--- a/tests/auto/gui/text/qtextmarkdownimporter/data/front-marker-malformed1.md
+++ b/tests/auto/gui/text/qtextmarkdownimporter/data/front-marker-malformed1.md
@@ -0,0 +1,3 @@
+---
+name: "Pluto"---
+Pluto may not be a planet. And this document does not contain Front Matter.
--- a/tests/auto/gui/text/qtextmarkdownimporter/data/front-marker-malformed2.md
+++ b/tests/auto/gui/text/qtextmarkdownimporter/data/front-marker-malformed2.md
@@ -0,0 +1,5 @@
+---
+name: "Sloppy"
+---
+This document has trailing whitespace after its second Front Matter marker.
+Therefore the marker does not qualify, and the document does not have Front Matter.
--- a/tests/auto/gui/text/qtextmarkdownimporter/data/front-marker-malformed3.md
+++ b/tests/auto/gui/text/qtextmarkdownimporter/data/front-marker-malformed3.md
@@ -0,0 +1,4 @@
+---
+name: "Aborted YAML"
+description: "The ending marker does not end with a newline, so it's invalid."
+---
\ No newline at end of file
--- a/tests/auto/gui/text/qtextmarkdownimporter/data/oss-fuzz-42533775.md
+++ b/tests/auto/gui/text/qtextmarkdownimporter/data/oss-fuzz-42533775.md
@@ -0,0 +1 @@
+--- ---
\ No newline at end of file
--- a/tests/auto/gui/text/qtextmarkdownimporter/data/yaml-crlf.md
+++ b/tests/auto/gui/text/qtextmarkdownimporter/data/yaml-crlf.md
@@ -0,0 +1,10 @@
+---
+name: "Venus"
+discoverer: "Galileo Galilei"
+title: "A description of the planet Venus"
+keywords:
+ - planets
+ - solar system
+ - astronomy
+---
+*Venus* is the second planet from the Sun, orbiting it every 224.7 Earth days.
--- a/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
+++ b/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
@@ -549,4 +549,5 @@
QTest::newRow("fuzz20450") << "attempted to insert into a list that no longer exists";
QTest::newRow("fuzz20580") << "";
+ QTest::newRow("oss-fuzz-42533775") << ""; // caused a heap-buffer-overflow
}
@@ -645,8 +646,13 @@
{
QTest::addColumn<QString>("inputFile");
+ QTest::addColumn<int>("expectedFrontMatterSize");
QTest::addColumn<int>("expectedBlockCount");
- QTest::newRow("yaml + markdown") << QFINDTESTDATA("data/yaml.md") << 1;
- QTest::newRow("yaml only") << QFINDTESTDATA("data/yaml-only.md") << 0;
+ QTest::newRow("yaml + markdown") << QFINDTESTDATA("data/yaml.md") << 140 << 1;
+ QTest::newRow("yaml + markdown with CRLFs") << QFINDTESTDATA("data/yaml-crlf.md") << 140 << 1;
+ QTest::newRow("yaml only") << QFINDTESTDATA("data/yaml-only.md") << 59 << 0;
+ QTest::newRow("malformed 1") << QFINDTESTDATA("data/front-marker-malformed1.md") << 0 << 1;
+ QTest::newRow("malformed 2") << QFINDTESTDATA("data/front-marker-malformed2.md") << 0 << 2;
+ QTest::newRow("malformed 3") << QFINDTESTDATA("data/front-marker-malformed3.md") << 0 << 1;
}
@@ -654,4 +660,5 @@
{
QFETCH(QString, inputFile);
+ QFETCH(int, expectedFrontMatterSize);
QFETCH(int, expectedBlockCount);
@@ -673,5 +680,7 @@
}
QCOMPARE(blockCount, expectedBlockCount); // yaml is not part of the markdown text
- QCOMPARE(doc.metaInformation(QTextDocument::FrontMatter), yaml); // without fences
+ if (expectedFrontMatterSize)
+ QCOMPARE(doc.metaInformation(QTextDocument::FrontMatter), yaml); // without fences
+ QCOMPARE(doc.metaInformation(QTextDocument::FrontMatter).size(), expectedFrontMatterSize);
}

View File

@ -0,0 +1,9 @@
Re-allow auto-detect rather than do =ON to ensure the toolchain supports it.
https://bugs.gentoo.org/754021
https://github.com/qt/qtbase/commit/48675dfa3 (revert of)
--- a/configure.cmake
+++ b/configure.cmake
@@ -784,3 +784,2 @@
CONDITION NOT WIN32 AND TEST_no_direct_extern_access
- AUTODETECT OFF
)