From 8090854455fa2336d0fe4293d241fc0991142c88 Mon Sep 17 00:00:00 2001 From: Rmys Date: Sat, 29 Nov 2025 10:43:19 +0300 Subject: [PATCH] qt6-declarative rebuild --- ...CVE-2025-12385-qtdeclarative-6.9-0001.diff | 153 ++++++++ ...CVE-2025-12385-qtdeclarative-6.9-0002.diff | 108 +++++ .../qtdeclarative-6.9.1-QTBUG-135158.patch | 14 - ...tdeclarative-6.9.1-qmlcachegen-crash.patch | 32 -- ...mpiler-error-out-on-unstorable-types.patch | 128 ------ desktop/toolkit/qt6/qt6-declarative/pspec.xml | 368 +++++++++--------- 6 files changed, 449 insertions(+), 354 deletions(-) create mode 100644 desktop/toolkit/qt6/qt6-declarative/files/CVE-2025-12385-qtdeclarative-6.9-0001.diff create mode 100644 desktop/toolkit/qt6/qt6-declarative/files/CVE-2025-12385-qtdeclarative-6.9-0002.diff delete mode 100644 desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-6.9.1-QTBUG-135158.patch delete mode 100644 desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-6.9.1-qmlcachegen-crash.patch delete mode 100644 desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-qmlcompiler-error-out-on-unstorable-types.patch diff --git a/desktop/toolkit/qt6/qt6-declarative/files/CVE-2025-12385-qtdeclarative-6.9-0001.diff b/desktop/toolkit/qt6/qt6-declarative/files/CVE-2025-12385-qtdeclarative-6.9-0001.diff new file mode 100644 index 0000000000..02ede0c641 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-declarative/files/CVE-2025-12385-qtdeclarative-6.9-0001.diff @@ -0,0 +1,153 @@ +From 99d8ef879911a0f85a5729d058e38f895acc8c37 Mon Sep 17 00:00:00 2001 +From: Eskil Abrahamsen Blomfeldt +Date: Fri, 31 Oct 2025 09:08:51 +0100 +Subject: [PATCH] Rich text: Limit size of text object + +When we draw a text object, we need to store this in RAM +since the QTextObjectInterface is QPainter-based. This +could lead to over-allocation if the text object size +was set to be very large. We use the existing image IO +infrastructure for making sure allocations are within +reasonable (and configurable) limits. + +Task-number: QTBUG-141515 +Change-Id: Ieae06a9e92a7bd078d22ab2314889201c2049122 +Reviewed-by: Eirik Aavitsland +(cherry picked from commit 144ce34e846b3f732bdb003f99b1f9455425416f) +Reviewed-by: Qt Cherry-pick Bot +(cherry picked from commit c3a07c99f9d2328cee4aa48a51d261d243b50d85) +--- + +diff --git a/src/quick/items/qquicktextnodeengine.cpp b/src/quick/items/qquicktextnodeengine.cpp +index 32de7c4..a7cfa08 100644 +--- a/src/quick/items/qquicktextnodeengine.cpp ++++ b/src/quick/items/qquicktextnodeengine.cpp +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -434,12 +435,15 @@ + } + + if (image.isNull()) { +- image = QImage((size * m_devicePixelRatio).toSize(), QImage::Format_ARGB32_Premultiplied); +- image.setDevicePixelRatio(m_devicePixelRatio); +- image.fill(Qt::transparent); +- { +- QPainter painter(&image); +- handler->drawObject(&painter, QRectF({}, size), textDocument, pos, format); ++ if (QImageIOHandler::allocateImage((size * m_devicePixelRatio).toSize(), ++ QImage::Format_ARGB32_Premultiplied, ++ &image)) { ++ image.setDevicePixelRatio(m_devicePixelRatio); ++ image.fill(Qt::transparent); ++ { ++ QPainter painter(&image); ++ handler->drawObject(&painter, QRectF({}, size), textDocument, pos, format); ++ } + } + } + +diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp +index 9f8f250..d6534e5 100644 +--- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp ++++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp +@@ -125,6 +125,8 @@ + void imgTagsElide(); + void imgTagsUpdates(); + void imgTagsError(); ++ void imgSize_data(); ++ void imgSize(); + void fontSizeMode_data(); + void fontSizeMode(); + void fontSizeModeMultiline_data(); +@@ -3451,6 +3453,85 @@ + QVERIFY(textObject != nullptr); + } + ++void tst_qquicktext::imgSize_data() ++{ ++ QTest::addColumn("url"); ++ QTest::addColumn("width"); ++ QTest::addColumn("height"); ++ QTest::addColumn("format"); ++ ++ QTest::newRow("negative (styled text)") << QStringLiteral("images/starfish_2.png") ++ << qint64(-0x7FFFFF) ++ << qint64(-0x7FFFFF) ++ << QQuickText::StyledText; ++ QTest::newRow("negative (rich text)") << QStringLiteral("images/starfish_2.png") ++ << qint64(-0x7FFFFF) ++ << qint64(-0x7FFFFF) ++ << QQuickText::RichText; ++ QTest::newRow("large (styled text)") << QStringLiteral("images/starfish_2.png") ++ << qint64(0x7FFFFF) ++ << qint64(0x7FFFFF) ++ << QQuickText::StyledText; ++ QTest::newRow("large (right text)") << QStringLiteral("images/starfish_2.png") ++ << qint64(0x7FFFFF) ++ << qint64(0x7FFFFF) ++ << QQuickText::RichText; ++ QTest::newRow("medium (styled text)") << QStringLiteral("images/starfish_2.png") ++ << qint64(0x10000) ++ << qint64(0x10000) ++ << QQuickText::StyledText; ++ QTest::newRow("medium (right text)") << QStringLiteral("images/starfish_2.png") ++ << qint64(0x10000) ++ << qint64(0x10000) ++ << QQuickText::RichText; ++ QTest::newRow("large non-existent (styled text)") << QStringLiteral("a") ++ << qint64(0x7FFFFF) ++ << qint64(0x7FFFFF) ++ << QQuickText::StyledText; ++ QTest::newRow("medium non-existent (styled text)") << QStringLiteral("a") ++ << qint64(0x10000) ++ << qint64(0x10000) ++ << QQuickText::StyledText; ++ QTest::newRow("out-of-bounds non-existent (styled text)") << QStringLiteral("a") ++ << (qint64(INT_MAX) + 1) ++ << (qint64(INT_MAX) + 1) ++ << QQuickText::StyledText; ++ QTest::newRow("large non-existent (rich text)") << QStringLiteral("a") ++ << qint64(0x7FFFFF) ++ << qint64(0x7FFFFF) ++ << QQuickText::RichText; ++ QTest::newRow("medium non-existent (rich text)") << QStringLiteral("a") ++ << qint64(0x10000) ++ << qint64(0x10000) ++ << QQuickText::RichText; ++} ++ ++void tst_qquicktext::imgSize() ++{ ++ QFETCH(QString, url); ++ QFETCH(qint64, width); ++ QFETCH(qint64, height); ++ QFETCH(QQuickText::TextFormat, format); ++ ++ // Reusing imgTagsUpdates.qml here, since it is just an empty Text component ++ QScopedPointer window(createView(testFile("imgTagsUpdates.qml"))); ++ window->show(); ++ QVERIFY(QTest::qWaitForWindowExposed(window.data())); ++ ++ QScopedPointer myText(window->rootObject()->findChild("myText")); ++ QVERIFY(myText); ++ ++ myText->setTextFormat(format); ++ ++ QString imgStr = QStringLiteral("") ++ .arg(url) ++ .arg(width) ++ .arg(height); ++ myText->setText(imgStr); ++ ++ QVERIFY(QQuickTest::qWaitForPolish(myText.data())); ++} ++ + void tst_qquicktext::fontSizeMode_data() + { + QTest::addColumn("text"); diff --git a/desktop/toolkit/qt6/qt6-declarative/files/CVE-2025-12385-qtdeclarative-6.9-0002.diff b/desktop/toolkit/qt6/qt6-declarative/files/CVE-2025-12385-qtdeclarative-6.9-0002.diff new file mode 100644 index 0000000000..9aa826a28d --- /dev/null +++ b/desktop/toolkit/qt6/qt6-declarative/files/CVE-2025-12385-qtdeclarative-6.9-0002.diff @@ -0,0 +1,108 @@ +From 855f02c96d3c089ea7c0010ebbe4b29fab9cc1ba Mon Sep 17 00:00:00 2001 +From: Eskil Abrahamsen Blomfeldt +Date: Wed, 29 Oct 2025 09:43:40 +0100 +Subject: [PATCH] Increase robustness of tag in Text component + +For Text.StyledText, there was no protection against tags +with very large widths or heights. This could cause an application +to spend a very long time processing a layout and sometimes crash +if the size was too large. + +We reuse the internal coord limit in QPainter as our maximum size +here, similar to what we do in Qt Svg for instance. + +For Text.RichText, there were no issues in release builds, but in +debug builds, you could trigger an overflow assert when rounding +the number if it exceeded INT_MAX. For this, we simply cap the +width and height at INT_MAX. + +Fixes: QTBUG-141515 +Change-Id: I4bcba16158f5f495a0de38963316effc4c46aae1 +Reviewed-by: Eirik Aavitsland +(cherry picked from commit 4aaf9bf21f7cc69d73066785e254b664fcc82025) +Reviewed-by: Qt Cherry-pick Bot +(cherry picked from commit 907c7ceb7b27586039262567273efd5ec79e6202) +Reviewed-by: Antti Kokko +--- + +diff --git a/src/quick/items/qquicktextdocument.cpp b/src/quick/items/qquicktextdocument.cpp +index d11bae5..798b0d0 100644 +--- a/src/quick/items/qquicktextdocument.cpp ++++ b/src/quick/items/qquicktextdocument.cpp +@@ -590,9 +590,9 @@ + { + if (format.isImageFormat()) { + QTextImageFormat imageFormat = format.toImageFormat(); +- int width = qRound(imageFormat.width()); ++ int width = qRound(qBound(qreal(INT_MIN), imageFormat.width(), qreal(INT_MAX))); + const bool hasWidth = imageFormat.hasProperty(QTextFormat::ImageWidth) && width > 0; +- const int height = qRound(imageFormat.height()); ++ const int height = qRound(qBound(qreal(INT_MIN), imageFormat.height(), qreal(INT_MAX))); + const bool hasHeight = imageFormat.hasProperty(QTextFormat::ImageHeight) && height > 0; + const auto maxWidth = imageFormat.maximumWidth(); + const bool hasMaxWidth = imageFormat.hasProperty(QTextFormat::ImageMaxWidth) && maxWidth.type() != QTextLength::VariableLength; +diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp +index bb003c1..7d21c89 100644 +--- a/src/quick/util/qquickstyledtext.cpp ++++ b/src/quick/util/qquickstyledtext.cpp +@@ -11,6 +11,11 @@ + #include "qquickstyledtext_p.h" + #include + #include ++#include ++ ++#ifndef QQUICKSTYLEDPARSER_COORD_LIMIT ++# define QQUICKSTYLEDPARSER_COORD_LIMIT QT_RASTER_COORD_LIMIT ++#endif + + Q_STATIC_LOGGING_CATEGORY(lcStyledText, "qt.quick.styledtext") + +@@ -660,9 +665,19 @@ + if (is_equal_ignoring_case(attr.first, QLatin1String("src"))) { + image->url = QUrl(attr.second.toString()); + } else if (is_equal_ignoring_case(attr.first, QLatin1String("width"))) { +- image->size.setWidth(attr.second.toString().toInt()); ++ bool ok; ++ int v = attr.second.toString().toInt(&ok); ++ if (ok && v <= QQUICKSTYLEDPARSER_COORD_LIMIT) ++ image->size.setWidth(v); ++ else ++ qCWarning(lcStyledText) << "Invalid width provided for "; + } else if (is_equal_ignoring_case(attr.first, QLatin1String("height"))) { +- image->size.setHeight(attr.second.toString().toInt()); ++ bool ok; ++ int v = attr.second.toString().toInt(&ok); ++ if (ok && v <= QQUICKSTYLEDPARSER_COORD_LIMIT) ++ image->size.setHeight(v); ++ else ++ qCWarning(lcStyledText) << "Invalid height provided for "; + } else if (is_equal_ignoring_case(attr.first, QLatin1String("align"))) { + if (is_equal_ignoring_case(attr.second, QLatin1String("top"))) { + image->align = QQuickStyledTextImgTag::Top; +diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp +index d6534e5..6f37a6a 100644 +--- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp ++++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp +@@ -3484,6 +3484,22 @@ + << qint64(0x10000) + << qint64(0x10000) + << QQuickText::RichText; ++ QTest::newRow("out-of-bounds (styled text)") << QStringLiteral("images/starfish_2.png") ++ << (qint64(INT_MAX) + 1) ++ << (qint64(INT_MAX) + 1) ++ << QQuickText::StyledText; ++ QTest::newRow("out-of-bounds (rich text)") << QStringLiteral("images/starfish_2.png") ++ << (qint64(INT_MAX) + 1) ++ << (qint64(INT_MAX) + 1) ++ << QQuickText::RichText; ++ QTest::newRow("negative out-of-bounds (styled text)") << QStringLiteral("images/starfish_2.png") ++ << (qint64(INT_MIN) - 1) ++ << (qint64(INT_MIN) - 1) ++ << QQuickText::StyledText; ++ QTest::newRow("negative out-of-bounds (rich text)") << QStringLiteral("images/starfish_2.png") ++ << (qint64(INT_MIN) - 1) ++ << (qint64(INT_MIN) - 1) ++ << QQuickText::RichText; + QTest::newRow("large non-existent (styled text)") << QStringLiteral("a") + << qint64(0x7FFFFF) + << qint64(0x7FFFFF) diff --git a/desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-6.9.1-QTBUG-135158.patch b/desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-6.9.1-QTBUG-135158.patch deleted file mode 100644 index d4ee052f85..0000000000 --- a/desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-6.9.1-QTBUG-135158.patch +++ /dev/null @@ -1,14 +0,0 @@ -https://bugreports.qt.io/browse/QTBUG-135158 -https://codereview.qt-project.org/c/qt/qtdeclarative/+/647212 ---- a/src/quicktemplates/qquickpopuppositioner.cpp -+++ b/src/quicktemplates/qquickpopuppositioner.cpp -@@ -321,5 +321,8 @@ - : p->parentItem->mapToGlobal(windowPos.x(), windowPos.y()); - QRectF rect = { globalCoords.x(), globalCoords.y(), popupItem->width(), popupItem->height() }; -- if (!skipFittingStep) { -+ -+ // QTBUG-99618: On wayland, we can't use QWindow::mapToGlobal(), and should use a xdg_positioner instead. -+ static bool isWayland = QGuiApplication::platformName().startsWith(QLatin1String("wayland")); -+ if (!skipFittingStep && !isWayland) { - const QScreen *screenAtPopupPosition = QGuiApplication::screenAt(globalCoords.toPoint()); - const QScreen *screen = screenAtPopupPosition ? screenAtPopupPosition : QGuiApplication::primaryScreen(); diff --git a/desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-6.9.1-qmlcachegen-crash.patch b/desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-6.9.1-qmlcachegen-crash.patch deleted file mode 100644 index f3a0b70e00..0000000000 --- a/desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-6.9.1-qmlcachegen-crash.patch +++ /dev/null @@ -1,32 +0,0 @@ -https://bugreports.qt.io/browse/QTBUG-136998 -https://bugreports.qt.io/browse/QTBUG-137196 -https://bugreports.qt.io/browse/QTBUG-137411 -https://github.com/qt/qtdeclarative/commit/672e6777e8e6a8fd86c7877075e7a8aa0ea0a31a ---- a/src/qmlcompiler/qqmljsimportvisitor.cpp -+++ b/src/qmlcompiler/qqmljsimportvisitor.cpp -@@ -1042,14 +1042,15 @@ - - if (!prevRequiredScope.isNull()) { -- auto sourceScope = prevRequiredScope->baseType(); -- suggestion = QQmlJSFixSuggestion{ -- "%1:%2:%3: Property marked as required in %4."_L1 -- .arg(sourceScope->filePath()) -- .arg(sourceScope->sourceLocation().startLine) -- .arg(sourceScope->sourceLocation().startColumn) -- .arg(requiredScopeName), -- sourceScope->sourceLocation() -- }; -- suggestion->setFilename(sourceScope->filePath()); -+ if (auto sourceScope = prevRequiredScope->baseType()) { -+ suggestion = QQmlJSFixSuggestion{ -+ "%1:%2:%3: Property marked as required in %4."_L1 -+ .arg(sourceScope->filePath()) -+ .arg(sourceScope->sourceLocation().startLine) -+ .arg(sourceScope->sourceLocation().startColumn) -+ .arg(requiredScopeName), -+ sourceScope->sourceLocation() -+ }; -+ suggestion->setFilename(sourceScope->filePath()); -+ } - } else { - message += " (marked as required by %1)"_L1.arg(requiredScopeName); diff --git a/desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-qmlcompiler-error-out-on-unstorable-types.patch b/desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-qmlcompiler-error-out-on-unstorable-types.patch deleted file mode 100644 index b0576fe65e..0000000000 --- a/desktop/toolkit/qt6/qt6-declarative/files/qtdeclarative-qmlcompiler-error-out-on-unstorable-types.patch +++ /dev/null @@ -1,128 +0,0 @@ -From e5d9bcf70ae704569e091ee0ee93561e01fefe38 Mon Sep 17 00:00:00 2001 -From: Ulf Hermann -Date: Fri, 11 Apr 2025 17:00:52 +0200 -Subject: [PATCH] QmlCompiler: Error out on unstorable types - -We already do this for return types, but it's fatal on any type. - -Fixes: QTBUG-135342 -Change-Id: I7aee2a19ffcd39d2707eceb34b5073057d8b5ebb -Reviewed-by: Olivier De Cannière -(cherry picked from commit 0bd329a0b42b4c8c3bf77c201f3d8b187467ef02) ---- - -diff --git a/src/qmlcompiler/qqmljsstorageinitializer.cpp b/src/qmlcompiler/qqmljsstorageinitializer.cpp -index 4123716..60f46fa 100644 ---- a/src/qmlcompiler/qqmljsstorageinitializer.cpp -+++ b/src/qmlcompiler/qqmljsstorageinitializer.cpp -@@ -35,17 +35,25 @@ - if (!content.isValid() || !content.storage().isNull()) - return; - -- const QQmlJSRegisterContent original = m_typeResolver->original(content); -- const QQmlJSScope::ConstPtr originalStored -- = m_typeResolver->storedType(original.containedType()); -- m_pool->storeType(content, originalStored); -+ const QQmlJSScope::ConstPtr original = m_typeResolver->originalContainedType(content); -+ if (const QQmlJSScope::ConstPtr originalStored = m_typeResolver->storedType(original)) { -+ m_pool->storeType(content, originalStored); -+ } else { -+ addError(QStringLiteral("Cannot store type %1.").arg(original->internalName())); -+ return; -+ } - -- const QQmlJSScope::ConstPtr adjustedStored -- = m_typeResolver->storedType(content.containedType()); -+ const QQmlJSScope::ConstPtr contentContained = content.containedType(); -+ const QQmlJSScope::ConstPtr adjustedStored = m_typeResolver->storedType(contentContained); -+ if (!adjustedStored) { -+ addError(QStringLiteral("Cannot store type %1.") -+ .arg(contentContained->internalName())); -+ return; -+ } - - if (!m_typeResolver->adjustTrackedType(content.storage(), adjustedStored)) { -- addError(QStringLiteral("Cannot adjust stored type for %1.") -- .arg(content.containedType()->internalName())); -+ addError(QStringLiteral("Cannot adjust stored type for %1 to %2.") -+ .arg(contentContained->internalName(), adjustedStored->internalName())); - } - }; - -diff --git a/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt b/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt -index 4661211..cc92631 100644 ---- a/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt -+++ b/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt -@@ -308,6 +308,7 @@ - undefinedToDouble.qml - unknownAttached.qml - unknownParameter.qml -+ unknownUnderlyingType.qml - unstoredUndefined.qml - unusedAttached.qml - urlString.qml -diff --git a/tests/auto/qml/qmlcppcodegen/data/enumproblems.h b/tests/auto/qml/qmlcppcodegen/data/enumproblems.h -index 36f97be..9c98789 100644 ---- a/tests/auto/qml/qmlcppcodegen/data/enumproblems.h -+++ b/tests/auto/qml/qmlcppcodegen/data/enumproblems.h -@@ -116,4 +116,19 @@ - Q_ENUM(EType) - }; - -+using uint_myown_t = decltype(75 - 12); -+ -+class UnknownUnderlyingType : public QObject -+{ -+ Q_OBJECT -+ QML_ELEMENT -+ -+public: -+ enum Bla : uint_myown_t { -+ Yo = 11, -+ }; -+ Q_ENUM(Bla) -+}; -+ -+ - #endif // ENUMPROBLEMS_H -diff --git a/tests/auto/qml/qmlcppcodegen/data/unknownUnderlyingType.qml b/tests/auto/qml/qmlcppcodegen/data/unknownUnderlyingType.qml -new file mode 100644 -index 0000000..8e43828 ---- /dev/null -+++ b/tests/auto/qml/qmlcppcodegen/data/unknownUnderlyingType.qml -@@ -0,0 +1,6 @@ -+import QtQml -+import TestTypes as FB -+ -+QtObject { -+ property var foo: FB.UnknownUnderlyingType.Yo -+} -diff --git a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp -index f44cae1..5f701d7 100644 ---- a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp -+++ b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp -@@ -269,6 +269,7 @@ - void undefinedToDouble(); - void unknownAttached(); - void unknownParameter(); -+ void unknownUnderlyingType(); - void unstoredUndefined(); - void unusedAttached(); - void urlString(); -@@ -5466,6 +5467,16 @@ - QCOMPARE(object->property("cppProp").toInt(), 18); - } - -+void tst_QmlCppCodegen::unknownUnderlyingType() -+{ -+ QQmlEngine engine; -+ QQmlComponent component(&engine, QUrl(u"qrc:/qt/qml/TestTypes/unknownUnderlyingType.qml"_s)); -+ QVERIFY2(!component.isError(), component.errorString().toUtf8()); -+ QScopedPointer object(component.create()); -+ QVERIFY(!object.isNull()); -+ QCOMPARE(object->property("foo").toInt(), 11); -+} -+ - void tst_QmlCppCodegen::unstoredUndefined() - { - QQmlEngine engine; diff --git a/desktop/toolkit/qt6/qt6-declarative/pspec.xml b/desktop/toolkit/qt6/qt6-declarative/pspec.xml index a536773fdf..e7fdba14e2 100755 --- a/desktop/toolkit/qt6/qt6-declarative/pspec.xml +++ b/desktop/toolkit/qt6/qt6-declarative/pspec.xml @@ -1,78 +1,86 @@ - + - - qt6-declarative - http://qt.digia.com/ - - PisiLinux Community - admins@pisilinux.org - - Classes for QML and JavaScript languages - Classes for QML and JavaScript languages - LGPLv2.1-linking-exception - https://download.qt.io/official_releases/qt/6.9/6.9.3/submodules/qtdeclarative-everywhere-src-6.9.3.tar.xz - - ninja - cmake - python3 - libxkbcommon-devel - mesa-devel - qt6-sql-odbc - qt6-sql-mysql - qt6-svg-devel - qt6-sql-sqlite - qt6-base-devel - qt6-imageformats - qt6-sql-postgresql - qt6-shadertools-devel - qt6-languageserver-devel - - - - - - - - qt6-declarative - - libgcc - libglvnd - qt6-svg - qt6-base - qt6-languageserver - - - /usr/lib - /usr/lib/qt6 - /usr/share/licenses - /usr/lib/qt6/bin - /usr/bin/ - /usr/share/qt6/modules - - - - qt6-declarative-devel - - /usr/lib/pkgconfig - /usr/lib/cmake - /usr/include/qt6 - - - qt6-base-devel - qt6-declarative - - - + + + + qt6-declarative-devel + + /usr/lib/pkgconfig + /usr/lib/cmake + /usr/include/qt6 + + + qt6-base-devel + qt6-declarative + + + + + 2025-11-29 + 6.9.3 + Rebuild. + Pisi Linux Community + admin@pisilinux.org + 2025-10-07 6.9.3 @@ -87,117 +95,117 @@ Pisi Linux Community admin@pisilinux.org - - 2025-07-24 - 6.9.1 - Rebuild. - Pisi Linux Community - admin@pisilinux.org - - - 2025-06-09 - 6.9.1 - Version bump. - Pisi Linux Community - admin@pisilinux.org - - - 2025-05-12 - 6.9.0 - Version bump. - Pisi Linux Community - admin@pisilinux.org - - - 2025-02-01 - 6.8.2 - Version bump. - Pisi Linux Community - admin@pisilinux.org - - - 2024-12-02 - 6.8.1 - Version bump. - Pisi Linux Community - admin@pisilinux.org - - - 2024-09-27 - 6.7.3 - Version bump. - Pisi Linux Community - admin@pisilinux.org - - - 2024-06-02 - 6.7.1 - Version bump. - Pisi Linux Community - admin@pisilinux.org - - - 2024-03-30 - 6.6.3 - Version bump. - Mustafa Cinasal - muscnsl@gmail.com - - - 2024-02-15 - 6.6.2 - Version bump. - Mustafa Cinasal - muscnsl@gmail.com - - - 2023-11-28 - 6.6.1 - Version bump. - Mustafa Cinasal - muscnsl@gmail.com - - - 2023-11-17 - 6.6.0 - Version bump. - Mustafa Cinasal - muscnsl@gmail.com - - - 2023-10-09 - 6.5.3 - Version bump. - Mustafa Cinasal - muscnsl@gmail.com - - - 2023-05-27 - 6.5.1 - Version bump. - Mustafa Cinasal - muscnsl@gmail.com - - - 2023-04-13 - 6.5.0 - Version bump. - Mustafa Cinasal - muscnsl@gmail.com - - - 2023-01-08 - 6.4.2 - Version bump. - Mustafa Cinasal - muscnsl@gmail.com - - - 2022-10-05 - 6.4.0 - First release - Mustafa Cinasal - muscnsl@gmail.com - - + + 2025-07-24 + 6.9.1 + Rebuild. + Pisi Linux Community + admin@pisilinux.org + + + 2025-06-09 + 6.9.1 + Version bump. + Pisi Linux Community + admin@pisilinux.org + + + 2025-05-12 + 6.9.0 + Version bump. + Pisi Linux Community + admin@pisilinux.org + + + 2025-02-01 + 6.8.2 + Version bump. + Pisi Linux Community + admin@pisilinux.org + + + 2024-12-02 + 6.8.1 + Version bump. + Pisi Linux Community + admin@pisilinux.org + + + 2024-09-27 + 6.7.3 + Version bump. + Pisi Linux Community + admin@pisilinux.org + + + 2024-06-02 + 6.7.1 + Version bump. + Pisi Linux Community + admin@pisilinux.org + + + 2024-03-30 + 6.6.3 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2024-02-15 + 6.6.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2023-11-28 + 6.6.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2023-11-17 + 6.6.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2023-10-09 + 6.5.3 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2023-05-27 + 6.5.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2023-04-13 + 6.5.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2023-01-08 + 6.4.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2022-10-05 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + +