[staging-next] Qt 6.10 (#449572)
This commit is contained in:
@@ -42,14 +42,14 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "telegram-desktop-unwrapped";
|
||||
version = "6.1.3";
|
||||
version = "6.1.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "telegramdesktop";
|
||||
repo = "tdesktop";
|
||||
rev = "v${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-ElbKzv+QMqH62BGAvNjDDNp7NSJYIEvoDzxKCbEdwqM=";
|
||||
hash = "sha256-AmGYLRVkAmhpj22+ILAL7O2jQj6AzwdZdNaAESI9m5c=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -1 +1 @@
|
||||
WGET_ARGS=( https://download.qt.io/official_releases/qt/6.9/6.9.3/submodules/ -A '*.tar.xz' )
|
||||
WGET_ARGS=( https://download.qt.io/official_releases/qt/6.10/6.10.0/submodules/ -A '*.tar.xz' )
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
vulkan-loader,
|
||||
libthai,
|
||||
libdrm,
|
||||
libgbm,
|
||||
libdatrie,
|
||||
lttng-ust,
|
||||
libepoxy,
|
||||
@@ -78,6 +79,9 @@
|
||||
gtk3,
|
||||
withLibinput ? false,
|
||||
libinput,
|
||||
withWayland ? lib.meta.availableOn stdenv.hostPlatform wayland,
|
||||
wayland,
|
||||
wayland-scanner,
|
||||
# options
|
||||
qttranslations ? null,
|
||||
}:
|
||||
@@ -133,6 +137,7 @@ stdenv.mkDerivation rec {
|
||||
lttng-ust
|
||||
libthai
|
||||
libdrm
|
||||
libgbm
|
||||
libdatrie
|
||||
udev
|
||||
# Text rendering
|
||||
@@ -156,7 +161,11 @@ stdenv.mkDerivation rec {
|
||||
xorg.xcbutilcursor
|
||||
libepoxy
|
||||
]
|
||||
++ lib.optional (cups != null && lib.meta.availableOn stdenv.hostPlatform cups) cups;
|
||||
++ lib.optional (cups != null && lib.meta.availableOn stdenv.hostPlatform cups) cups
|
||||
++ lib.optionals withWayland [
|
||||
wayland
|
||||
wayland-scanner
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
lib.optionals (lib.meta.availableOn stdenv.hostPlatform at-spi2-core) [
|
||||
@@ -186,7 +195,14 @@ stdenv.mkDerivation rec {
|
||||
]
|
||||
# I’m not sure if this is necessary, but the macOS mkspecs stuff
|
||||
# tries to call `xcrun xcodebuild`, so better safe than sorry.
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ]
|
||||
# wayland-scanner needs to be propagated as both build
|
||||
# (for the wayland-scanner binary) and host (for the
|
||||
# actual wayland.xml protocol definition)
|
||||
++ lib.optionals withWayland [
|
||||
wayland
|
||||
wayland-scanner
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
@@ -251,6 +267,9 @@ stdenv.mkDerivation rec {
|
||||
qtQmlPrefix = "lib/qt-6/qml";
|
||||
|
||||
cmakeFlags = [
|
||||
# makes Qt print the configure summary
|
||||
"--log-level=STATUS"
|
||||
|
||||
"-DQT_EMBED_TOOLCHAIN_COMPILER=OFF"
|
||||
"-DINSTALL_PLUGINSDIR=${qtPluginPrefix}"
|
||||
"-DINSTALL_QMLDIR=${qtQmlPrefix}"
|
||||
|
||||
@@ -5,15 +5,20 @@
|
||||
qtbase,
|
||||
qtdeclarative,
|
||||
bluez,
|
||||
pcsclite,
|
||||
pkg-config,
|
||||
}:
|
||||
|
||||
qtModule {
|
||||
pname = "qtconnectivity";
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ bluez ];
|
||||
buildInputs = [ pcsclite ] ++ lib.optionals stdenv.hostPlatform.isLinux [ bluez ];
|
||||
propagatedBuildInputs = [
|
||||
qtbase
|
||||
qtdeclarative
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/nfc/configure.cmake --replace-fail "qt_configure_add_summary_entry(ARGS pcslite)" "qt_configure_add_summary_entry(ARGS pcsclite)"
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
fetchpatch,
|
||||
qtModule,
|
||||
qtbase,
|
||||
qtlanguageserver,
|
||||
@@ -29,32 +30,20 @@ qtModule {
|
||||
];
|
||||
|
||||
patches = [
|
||||
# invalidates qml caches created from nix applications at different
|
||||
# store paths and disallows saving caches of bare qml files in the store.
|
||||
(replaceVars ./invalidate-caches-from-mismatched-store-paths.patch {
|
||||
# don't cache bytecode of bare qml files in the store, as that never gets cleaned up
|
||||
(replaceVars ./dont-cache-nix-store-paths.patch {
|
||||
nixStore = builtins.storeDir;
|
||||
nixStoreLength = toString ((builtins.stringLength builtins.storeDir) + 1); # trailing /
|
||||
})
|
||||
# add version specific QML import path
|
||||
./use-versioned-import-path.patch
|
||||
|
||||
# Fix common crash
|
||||
# Manual backport of https://invent.kde.org/qt/qt/qtdeclarative/-/commit/b1ee7061ba77a7f5dc4148129bb2083f5c28e039
|
||||
# https://bugreports.qt.io/browse/QTBUG-140018
|
||||
./stackview-crash.patch
|
||||
(fetchpatch {
|
||||
url = "https://invent.kde.org/qt/qt/qtdeclarative/-/commit/2b7f93da38d41ffaeb5322a7dca40ec26fc091a1.diff";
|
||||
hash = "sha256-AOXey18lJlswpZ8tpTTZeFb0VE9k1louXy8TPPGNiA4=";
|
||||
})
|
||||
];
|
||||
|
||||
preConfigure =
|
||||
let
|
||||
storePrefixLen = toString ((builtins.stringLength builtins.storeDir) + 1);
|
||||
in
|
||||
''
|
||||
# "NIX:" is reserved for saved qmlc files in patch 0001, "QTDHASH:" takes the place
|
||||
# of the old tag, which is otherwise the qt version, invalidating caches from other
|
||||
# qtdeclarative store paths.
|
||||
echo "QTDHASH:''${out:${storePrefixLen}:32}" > .tag
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DQt6ShaderToolsTools_DIR=${pkgsBuildBuild.qt6.qtshadertools}/lib/cmake/Qt6ShaderTools"
|
||||
# for some reason doesn't get found automatically on Darwin
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
--- a/src/qml/common/qv4compileddata.cpp
|
||||
+++ b/src/qml/common/qv4compileddata.cpp
|
||||
@@ -178,6 +178,14 @@ bool CompilationUnit::saveToDisk(const QUrl &unitUrl, QString *errorString)
|
||||
return false;
|
||||
}
|
||||
|
||||
+ if (unitUrl.path().startsWith(QStringLiteral("@nixStore@"))) {
|
||||
+ // We don't store bytecode for bare QML files in the nix store as the
|
||||
+ // paths will change every time the application updates, filling caches
|
||||
+ // endlessly with junk.
|
||||
+ *errorString = QStringLiteral("Refusing to save bytecode for bare @nixStore@ path.");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
return SaveableUnitPointer(unitData()).saveToDisk<char>(
|
||||
[&unitUrl, errorString](const char *data, quint32 size) {
|
||||
const QString cachePath = localCacheFilePath(unitUrl);
|
||||
@@ -1,112 +0,0 @@
|
||||
diff --git a/src/qml/common/qv4compileddata.cpp b/src/qml/common/qv4compileddata.cpp
|
||||
index 9dee91f713..9dec5cae67 100644
|
||||
--- a/src/qml/common/qv4compileddata.cpp
|
||||
+++ b/src/qml/common/qv4compileddata.cpp
|
||||
@@ -15,6 +15,8 @@
|
||||
#include <QtCore/qscopeguard.h>
|
||||
#include <QtCore/qstandardpaths.h>
|
||||
|
||||
+#include <QtCore/qcoreapplication.h>
|
||||
+
|
||||
static_assert(QV4::CompiledData::QmlCompileHashSpace > QML_COMPILE_HASH_LENGTH);
|
||||
|
||||
#if defined(QML_COMPILE_HASH) && defined(QML_COMPILE_HASH_LENGTH) && QML_COMPILE_HASH_LENGTH > 0
|
||||
@@ -26,6 +28,35 @@ __attribute__((section(".qml_compile_hash")))
|
||||
const char qml_compile_hash[QV4::CompiledData::QmlCompileHashSpace] = QML_COMPILE_HASH;
|
||||
static_assert(sizeof(QV4::CompiledData::Unit::libraryVersionHash) > QML_COMPILE_HASH_LENGTH,
|
||||
"Compile hash length exceeds reserved size in data structure. Please adjust and bump the format version");
|
||||
+
|
||||
+bool nix__isNixApplication() {
|
||||
+ static const bool value = QCoreApplication::applicationFilePath().startsWith(QStringLiteral("@nixStore@"));
|
||||
+ return value;
|
||||
+}
|
||||
+
|
||||
+static_assert(sizeof(QV4::CompiledData::Unit::libraryVersionHash) >
|
||||
+ /*sha1*/ 20 + /*NIX:*/ 4,
|
||||
+ "Nix compile hash length exceeds the reserved space in data "
|
||||
+ "structure. Please review the patch.");
|
||||
+
|
||||
+const QByteArray &nix__applicationHash() {
|
||||
+ static const QByteArray value = [](){
|
||||
+ QCryptographicHash applicationHash(QCryptographicHash::Sha1);
|
||||
+ applicationHash.addData(QByteArrayView(qml_compile_hash, QML_COMPILE_HASH_LENGTH));
|
||||
+
|
||||
+ // We only care about the package, not the specific file path.
|
||||
+ auto view = QCoreApplication::applicationFilePath().sliced(@nixStoreLength@);
|
||||
+ auto pkgEndIdx = view.indexOf(QStringLiteral("/"));
|
||||
+ if (pkgEndIdx != -1) view = view.sliced(0, pkgEndIdx);
|
||||
+
|
||||
+ applicationHash.addData(view.toUtf8());
|
||||
+
|
||||
+ return QByteArray("NIX:") + applicationHash.result();
|
||||
+ }();
|
||||
+
|
||||
+ return value;
|
||||
+}
|
||||
+
|
||||
#else
|
||||
# error "QML_COMPILE_HASH must be defined for the build of QtDeclarative to ensure version checking for cache files"
|
||||
#endif
|
||||
@@ -69,13 +100,29 @@ bool Unit::verifyHeader(QDateTime expectedSourceTimeStamp, QString *errorString)
|
||||
}
|
||||
|
||||
#if defined(QML_COMPILE_HASH) && defined(QML_COMPILE_HASH_LENGTH) && QML_COMPILE_HASH_LENGTH > 0
|
||||
- if (qstrncmp(qml_compile_hash, libraryVersionHash, QML_COMPILE_HASH_LENGTH) != 0) {
|
||||
+ const bool nixUnit = qstrncmp("NIX:", this->libraryVersionHash, 4) == 0;
|
||||
+
|
||||
+ if (nixUnit && !nix__isNixApplication()) {
|
||||
+ *errorString = QStringLiteral("QML compile hash is for a nix store application.");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ const char *targetHash = qml_compile_hash;
|
||||
+ size_t targetHashLength = QML_COMPILE_HASH_LENGTH;
|
||||
+
|
||||
+ if (nixUnit) {
|
||||
+ const auto &applicationHash = nix__applicationHash();
|
||||
+ targetHash = applicationHash.constData();
|
||||
+ targetHashLength = applicationHash.length();
|
||||
+ }
|
||||
+
|
||||
+ if (qstrncmp(targetHash, this->libraryVersionHash, targetHashLength) != 0) {
|
||||
*errorString = QStringLiteral("QML compile hashes don't match. Found %1 expected %2")
|
||||
.arg(QString::fromLatin1(
|
||||
- QByteArray(libraryVersionHash, QML_COMPILE_HASH_LENGTH)
|
||||
+ QByteArray(this->libraryVersionHash, targetHashLength)
|
||||
.toPercentEncoding()),
|
||||
QString::fromLatin1(
|
||||
- QByteArray(qml_compile_hash, QML_COMPILE_HASH_LENGTH)
|
||||
+ QByteArray(targetHash, targetHashLength)
|
||||
.toPercentEncoding()));
|
||||
return false;
|
||||
}
|
||||
@@ -213,6 +260,29 @@ bool CompilationUnit::saveToDisk(const QUrl &unitUrl, QString *errorString)
|
||||
return false;
|
||||
}
|
||||
|
||||
+#if defined(QML_COMPILE_HASH) && defined(QML_COMPILE_HASH_LENGTH) && QML_COMPILE_HASH_LENGTH > 0
|
||||
+ if (nix__isNixApplication() && unitUrl.scheme() == QStringLiteral("qrc")) {
|
||||
+ // If the application is running from the nix store, we can safely save
|
||||
+ // bytecode for its embedded QML files as long as we hash the
|
||||
+ // application path into the version. This will invalidate the caches
|
||||
+ // when the store path changes.
|
||||
+ const auto &applicationHash = nix__applicationHash();
|
||||
+
|
||||
+ memcpy(const_cast<char *>(unitData()->libraryVersionHash),
|
||||
+ applicationHash.constData(), applicationHash.length());
|
||||
+ } else if (unitUrl.path().startsWith(QStringLiteral("@nixStore@"))) {
|
||||
+ // We don't store bytecode for bare QML files in the nix store as the
|
||||
+ // paths will change every time the application updates, filling caches
|
||||
+ // endlessly with junk.
|
||||
+ *errorString = QStringLiteral("Refusing to save bytecode for bare @nixStore@ path.");
|
||||
+ return false;
|
||||
+ } else {
|
||||
+ // If the QML file is loaded from a normal file path it doesn't matter
|
||||
+ // if the application itself is running from a nix path, so we fall back
|
||||
+ // to the default Qt behavior.
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
return SaveableUnitPointer(unitData()).saveToDisk<char>(
|
||||
[&unitUrl, errorString](const char *data, quint32 size) {
|
||||
const QString cachePath = localCacheFilePath(unitUrl);
|
||||
@@ -1,473 +0,0 @@
|
||||
diff --git a/src/quicktemplates/qquickstackelement.cpp b/src/quicktemplates/qquickstackelement.cpp
|
||||
index f6a5ffdd74..304bafe4ef 100644
|
||||
--- a/src/quicktemplates/qquickstackelement.cpp
|
||||
+++ b/src/quicktemplates/qquickstackelement.cpp
|
||||
@@ -39,7 +39,10 @@ protected:
|
||||
void setInitialState(QObject *object) override
|
||||
{
|
||||
auto privIncubator = QQmlIncubatorPrivate::get(this);
|
||||
- element->incubate(object, privIncubator->requiredProperties());
|
||||
+ if (QQmlEnginePrivate *enginePriv = privIncubator->enginePriv) {
|
||||
+ element->incubate(enginePriv->v4engine(), object,
|
||||
+ privIncubator->requiredProperties());
|
||||
+ }
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -90,7 +93,8 @@ QQuickStackElement::~QQuickStackElement()
|
||||
#endif
|
||||
}
|
||||
|
||||
-QQuickStackElement *QQuickStackElement::fromString(const QString &str, QQuickStackView *view, QString *error)
|
||||
+QQuickStackElement *QQuickStackElement::fromString(
|
||||
+ QQmlEngine *engine, const QString &str, QQuickStackView *view, QString *error)
|
||||
{
|
||||
QUrl url(str);
|
||||
if (!url.isValid()) {
|
||||
@@ -102,7 +106,7 @@ QQuickStackElement *QQuickStackElement::fromString(const QString &str, QQuickSta
|
||||
url = qmlContext(view)->resolvedUrl(url);
|
||||
|
||||
QQuickStackElement *element = new QQuickStackElement;
|
||||
- element->component = new QQmlComponent(qmlEngine(view), url, view);
|
||||
+ element->component = new QQmlComponent(engine, url, view);
|
||||
element->ownComponent = true;
|
||||
return element;
|
||||
}
|
||||
@@ -127,7 +131,8 @@ QQuickStackElement *QQuickStackElement::fromObject(QObject *object, QQuickStackV
|
||||
return element;
|
||||
}
|
||||
|
||||
-QQuickStackElement *QQuickStackElement::fromStackViewArg(QQuickStackView *view, QQuickStackViewArg arg)
|
||||
+QQuickStackElement *QQuickStackElement::fromStackViewArg(
|
||||
+ QQmlEngine *engine, QQuickStackView *view, QQuickStackViewArg arg)
|
||||
{
|
||||
QQuickStackElement *element = new QQuickStackElement;
|
||||
#if QT_CONFIG(quick_viewtransitions)
|
||||
@@ -144,7 +149,7 @@ QQuickStackElement *QQuickStackElement::fromStackViewArg(QQuickStackView *view,
|
||||
|
||||
Q_ASSERT(!arg.mUrl.isValid());
|
||||
} else if (arg.mUrl.isValid()) {
|
||||
- element->component = new QQmlComponent(qmlEngine(view), arg.mUrl, view);
|
||||
+ element->component = new QQmlComponent(engine, arg.mUrl, view);
|
||||
element->ownComponent = true;
|
||||
} else {
|
||||
qFatal("No Item, Component or URL set on arg passed to fromStrictArg");
|
||||
@@ -152,7 +157,7 @@ QQuickStackElement *QQuickStackElement::fromStackViewArg(QQuickStackView *view,
|
||||
return element;
|
||||
}
|
||||
|
||||
-bool QQuickStackElement::load(QQuickStackView *parent)
|
||||
+bool QQuickStackElement::load(QV4::ExecutionEngine *v4, QQuickStackView *parent)
|
||||
{
|
||||
setView(parent);
|
||||
if (!item) {
|
||||
@@ -161,7 +166,7 @@ bool QQuickStackElement::load(QQuickStackView *parent)
|
||||
if (component->isLoading()) {
|
||||
QObject::connect(component, &QQmlComponent::statusChanged, [this](QQmlComponent::Status status) {
|
||||
if (status == QQmlComponent::Ready)
|
||||
- load(view);
|
||||
+ load(component->engine()->handle(), view);
|
||||
else if (status == QQmlComponent::Error)
|
||||
QQuickStackViewPrivate::get(view)->warn(component->errorString().trimmed());
|
||||
});
|
||||
@@ -177,22 +182,24 @@ bool QQuickStackElement::load(QQuickStackView *parent)
|
||||
if (component->isError())
|
||||
QQuickStackViewPrivate::get(parent)->warn(component->errorString().trimmed());
|
||||
} else {
|
||||
- initialize(/*required properties=*/nullptr);
|
||||
+ initialize(v4, /*required properties=*/nullptr);
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
-void QQuickStackElement::incubate(QObject *object, RequiredProperties *requiredProperties)
|
||||
+void QQuickStackElement::incubate(
|
||||
+ QV4::ExecutionEngine *v4, QObject *object, RequiredProperties *requiredProperties)
|
||||
{
|
||||
item = qmlobject_cast<QQuickItem *>(object);
|
||||
if (item) {
|
||||
QQmlEngine::setObjectOwnership(item, QQmlEngine::CppOwnership);
|
||||
item->setParent(view);
|
||||
- initialize(requiredProperties);
|
||||
+ initialize(v4, requiredProperties);
|
||||
}
|
||||
}
|
||||
|
||||
-void QQuickStackElement::initialize(RequiredProperties *requiredProperties)
|
||||
+void QQuickStackElement::initialize(
|
||||
+ QV4::ExecutionEngine *v4, RequiredProperties *requiredProperties)
|
||||
{
|
||||
if (!item || init)
|
||||
return;
|
||||
@@ -205,11 +212,8 @@ void QQuickStackElement::initialize(RequiredProperties *requiredProperties)
|
||||
item->setParentItem(view);
|
||||
|
||||
if (!properties.isUndefined()) {
|
||||
- QQmlEngine *engine = qmlEngine(view);
|
||||
- Q_ASSERT(engine);
|
||||
- QV4::ExecutionEngine *v4 = QQmlEnginePrivate::getV4Engine(engine);
|
||||
- Q_ASSERT(v4);
|
||||
QV4::Scope scope(v4);
|
||||
+ Q_ASSERT(scope.engine);
|
||||
QV4::ScopedValue ipv(scope, properties.value());
|
||||
QV4::Scoped<QV4::QmlContext> qmlContext(scope, qmlCallingContext.value());
|
||||
QV4::ScopedValue qmlObject(scope, QV4::QObjectWrapper::wrap(v4, item));
|
||||
diff --git a/src/quicktemplates/qquickstackelement_p_p.h b/src/quicktemplates/qquickstackelement_p_p.h
|
||||
index 5af8149d91..2986a78569 100644
|
||||
--- a/src/quicktemplates/qquickstackelement_p_p.h
|
||||
+++ b/src/quicktemplates/qquickstackelement_p_p.h
|
||||
@@ -43,13 +43,14 @@ class QQuickStackElement :
|
||||
public:
|
||||
~QQuickStackElement();
|
||||
|
||||
- static QQuickStackElement *fromString(const QString &str, QQuickStackView *view, QString *error);
|
||||
+ static QQuickStackElement *fromString(QQmlEngine *engine, const QString &str, QQuickStackView *view, QString *error);
|
||||
static QQuickStackElement *fromObject(QObject *object, QQuickStackView *view, QString *error);
|
||||
- static QQuickStackElement *fromStackViewArg(QQuickStackView *view, QQuickStackViewArg arg);
|
||||
+ static QQuickStackElement *fromStackViewArg(QQmlEngine *engine, QQuickStackView *view, QQuickStackViewArg arg);
|
||||
|
||||
- bool load(QQuickStackView *parent);
|
||||
- void incubate(QObject *object, RequiredProperties *requiredProperties);
|
||||
- void initialize(RequiredProperties *requiredProperties);
|
||||
+ bool load(QV4::ExecutionEngine *v4, QQuickStackView *parent);
|
||||
+ void incubate(
|
||||
+ QV4::ExecutionEngine *v4, QObject *object, RequiredProperties *requiredProperties);
|
||||
+ void initialize(QV4::ExecutionEngine *v4, RequiredProperties *requiredProperties);
|
||||
|
||||
void setIndex(int index);
|
||||
void setView(QQuickStackView *view);
|
||||
diff --git a/src/quicktemplates/qquickstackview.cpp b/src/quicktemplates/qquickstackview.cpp
|
||||
index cb8854dca8..a0909b7fcb 100644
|
||||
--- a/src/quicktemplates/qquickstackview.cpp
|
||||
+++ b/src/quicktemplates/qquickstackview.cpp
|
||||
@@ -457,8 +457,12 @@ QQuickItem *QQuickStackView::get(int index, LoadBehavior behavior)
|
||||
Q_D(QQuickStackView);
|
||||
QQuickStackElement *element = d->elements.value(index);
|
||||
if (element) {
|
||||
- if (behavior == ForceLoad)
|
||||
- element->load(this);
|
||||
+ if (behavior == ForceLoad) {
|
||||
+ // It's possible for a slot to still be connected during destruction of the receiver's
|
||||
+ // parent (QTBUG-140018), so only try to load new things if our engine is alive.
|
||||
+ if (QQmlEngine *engine = qmlEngine(this))
|
||||
+ element->load(engine->handle(), this);
|
||||
+ }
|
||||
return element->item;
|
||||
}
|
||||
return nullptr;
|
||||
@@ -492,7 +496,7 @@ QQuickItem *QQuickStackView::find(const QJSValue &callback, LoadBehavior behavio
|
||||
for (int i = d->elements.size() - 1; i >= 0; --i) {
|
||||
QQuickStackElement *element = d->elements.at(i);
|
||||
if (behavior == ForceLoad)
|
||||
- element->load(this);
|
||||
+ element->load(engine->handle(), this);
|
||||
if (element->item) {
|
||||
QJSValue rv = func.call(QJSValueList() << engine->newQObject(element->item) << i);
|
||||
if (rv.toBool())
|
||||
@@ -624,7 +628,7 @@ void QQuickStackView::push(QQmlV4FunctionPtr args)
|
||||
#endif
|
||||
|
||||
int oldDepth = d->elements.size();
|
||||
- if (d->pushElements(elements)) {
|
||||
+ if (d->pushElements(v4, elements)) {
|
||||
d->depthChange(d->elements.size(), oldDepth);
|
||||
QQuickStackElement *enter = d->elements.top();
|
||||
#if QT_CONFIG(quick_viewtransitions)
|
||||
@@ -737,7 +741,7 @@ void QQuickStackView::pop(QQmlV4FunctionPtr args)
|
||||
|
||||
QPointer<QQuickItem> previousItem;
|
||||
|
||||
- if (d->popElements(enter)) {
|
||||
+ if (d->popElements(v4, enter)) {
|
||||
if (exit) {
|
||||
exit->removal = true;
|
||||
d->removing.insert(exit);
|
||||
@@ -907,7 +911,7 @@ void QQuickStackView::replace(QQmlV4FunctionPtr args)
|
||||
if (!d->elements.isEmpty())
|
||||
exit = d->elements.pop();
|
||||
|
||||
- if (exit != target ? d->replaceElements(target, elements) : d->pushElements(elements)) {
|
||||
+ if (exit != target ? d->replaceElements(v4, target, elements) : d->pushElements(v4, elements)) {
|
||||
d->depthChange(d->elements.size(), oldDepth);
|
||||
if (exit) {
|
||||
exit->removal = true;
|
||||
@@ -991,10 +995,14 @@ QQuickItem *QQuickStackView::pushItems(QList<QQuickStackViewArg> args, Operation
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
+ QQmlEngine *engine = qmlEngine(this);
|
||||
+ if (!engine)
|
||||
+ return nullptr;
|
||||
+
|
||||
QScopedValueRollback<bool> modifyingElements(d->modifyingElements, true);
|
||||
QScopedValueRollback<QString> operationNameRollback(d->operation, operationName);
|
||||
|
||||
- const QList<QQuickStackElement *> stackElements = d->parseElements(args);
|
||||
+ const QList<QQuickStackElement *> stackElements = d->parseElements(engine, args);
|
||||
|
||||
#if QT_CONFIG(quick_viewtransitions)
|
||||
QQuickStackElement *exit = nullptr;
|
||||
@@ -1003,7 +1011,7 @@ QQuickItem *QQuickStackView::pushItems(QList<QQuickStackViewArg> args, Operation
|
||||
#endif
|
||||
|
||||
const int oldDepth = d->elements.size();
|
||||
- if (d->pushElements(stackElements)) {
|
||||
+ if (d->pushElements(engine->handle(), stackElements)) {
|
||||
d->depthChange(d->elements.size(), oldDepth);
|
||||
QQuickStackElement *enter = d->elements.top();
|
||||
#if QT_CONFIG(quick_viewtransitions)
|
||||
@@ -1109,7 +1117,11 @@ QQuickItem *QQuickStackView::pushItem(const QUrl &url, const QVariantMap &proper
|
||||
QQuickItem *QQuickStackView::popToItem(QQuickItem *item, Operation operation)
|
||||
{
|
||||
Q_D(QQuickStackView);
|
||||
- return d->popToItem(item, operation, QQuickStackViewPrivate::CurrentItemPolicy::DoNotPop);
|
||||
+ QQmlEngine *engine = qmlEngine(this);
|
||||
+ if (!engine)
|
||||
+ return nullptr;
|
||||
+ return d->popToItem(
|
||||
+ engine->handle(), item, operation, QQuickStackViewPrivate::CurrentItemPolicy::DoNotPop);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -1149,8 +1161,13 @@ QQuickItem *QQuickStackView::popToIndex(int index, Operation operation)
|
||||
}
|
||||
|
||||
QQuickStackElement *element = d->elements.at(index);
|
||||
- element->load(this);
|
||||
- return d->popToItem(element->item, operation, QQuickStackViewPrivate::CurrentItemPolicy::Pop);
|
||||
+ QQmlEngine *engine = qmlEngine(this);
|
||||
+ if (!engine)
|
||||
+ return nullptr;
|
||||
+ QV4::ExecutionEngine *v4 = engine->handle();
|
||||
+ element->load(v4, this);
|
||||
+ return d->popToItem(
|
||||
+ v4, element->item, operation, QQuickStackViewPrivate::CurrentItemPolicy::Pop);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -1178,7 +1195,13 @@ QQuickItem *QQuickStackView::popCurrentItem(Operation operation)
|
||||
clear(operation);
|
||||
return lastItemRemoved;
|
||||
}
|
||||
- return d->popToItem(d->currentItem, operation, QQuickStackViewPrivate::CurrentItemPolicy::Pop);
|
||||
+
|
||||
+ QQmlEngine *engine = qmlEngine(this);
|
||||
+ if (!engine)
|
||||
+ return nullptr;
|
||||
+ return d->popToItem(
|
||||
+ engine->handle(), d->currentItem, operation,
|
||||
+ QQuickStackViewPrivate::CurrentItemPolicy::Pop);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -1232,12 +1255,16 @@ QQuickItem *QQuickStackView::replaceCurrentItem(const QList<QQuickStackViewArg>
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
+ QQmlEngine *engine = qmlEngine(this);
|
||||
+ if (!engine)
|
||||
+ return nullptr;
|
||||
+
|
||||
QScopedValueRollback<bool> modifyingElements(d->modifyingElements, true);
|
||||
QScopedValueRollback<QString> operationNameRollback(d->operation, operationName);
|
||||
|
||||
QQuickStackElement *currentElement = !d->elements.isEmpty() ? d->elements.top() : nullptr;
|
||||
|
||||
- const QList<QQuickStackElement *> stackElements = d->parseElements(args);
|
||||
+ const QList<QQuickStackElement *> stackElements = d->parseElements(engine, args);
|
||||
|
||||
int oldDepth = d->elements.size();
|
||||
QQuickStackElement* exit = nullptr;
|
||||
@@ -1245,8 +1272,8 @@ QQuickItem *QQuickStackView::replaceCurrentItem(const QList<QQuickStackViewArg>
|
||||
exit = d->elements.pop();
|
||||
|
||||
const bool successfullyReplaced = exit != currentElement
|
||||
- ? d->replaceElements(currentElement, stackElements)
|
||||
- : d->pushElements(stackElements);
|
||||
+ ? d->replaceElements(engine->handle(), currentElement, stackElements)
|
||||
+ : d->pushElements(engine->handle(), stackElements);
|
||||
if (successfullyReplaced) {
|
||||
d->depthChange(d->elements.size(), oldDepth);
|
||||
if (exit) {
|
||||
@@ -1607,14 +1634,19 @@ void QQuickStackView::componentComplete()
|
||||
QQuickStackElement *element = nullptr;
|
||||
QString error;
|
||||
int oldDepth = d->elements.size();
|
||||
+
|
||||
+ QQmlEngine *engine = qmlEngine(this);
|
||||
+ if (!engine)
|
||||
+ return;
|
||||
+
|
||||
if (QObject *o = d->initialItem.toQObject())
|
||||
element = QQuickStackElement::fromObject(o, this, &error);
|
||||
else if (d->initialItem.isString())
|
||||
- element = QQuickStackElement::fromString(d->initialItem.toString(), this, &error);
|
||||
+ element = QQuickStackElement::fromString(engine, d->initialItem.toString(), this, &error);
|
||||
if (!error.isEmpty()) {
|
||||
d->warn(error);
|
||||
delete element;
|
||||
- } else if (d->pushElement(element)) {
|
||||
+ } else if (d->pushElement(engine->handle(), element)) {
|
||||
d->depthChange(d->elements.size(), oldDepth);
|
||||
d->setCurrentItem(element);
|
||||
element->setStatus(QQuickStackView::Active);
|
||||
diff --git a/src/quicktemplates/qquickstackview_p.cpp b/src/quicktemplates/qquickstackview_p.cpp
|
||||
index 0288ff1f4b..8f08f29168 100644
|
||||
--- a/src/quicktemplates/qquickstackview_p.cpp
|
||||
+++ b/src/quicktemplates/qquickstackview_p.cpp
|
||||
@@ -109,7 +109,8 @@ QList<QQuickStackElement *> QQuickStackViewPrivate::parseElements(int from, QQml
|
||||
return elements;
|
||||
}
|
||||
|
||||
-QList<QQuickStackElement *> QQuickStackViewPrivate::parseElements(const QList<QQuickStackViewArg> &args)
|
||||
+QList<QQuickStackElement *> QQuickStackViewPrivate::parseElements(
|
||||
+ QQmlEngine *engine, const QList<QQuickStackViewArg> &args)
|
||||
{
|
||||
Q_Q(QQuickStackView);
|
||||
QList<QQuickStackElement *> stackElements;
|
||||
@@ -141,8 +142,8 @@ QList<QQuickStackElement *> QQuickStackViewPrivate::parseElements(const QList<QQ
|
||||
return {};
|
||||
}
|
||||
|
||||
- QQuickStackElement *element = QQuickStackElement::fromStackViewArg(q, arg);
|
||||
- QV4::ExecutionEngine *v4Engine = qmlEngine(q)->handle();
|
||||
+ QQuickStackElement *element = QQuickStackElement::fromStackViewArg(engine, q, arg);
|
||||
+ QV4::ExecutionEngine *v4Engine = engine->handle();
|
||||
element->properties.set(v4Engine, v4Engine->fromVariant(properties));
|
||||
element->qmlCallingContext.set(v4Engine, v4Engine->qmlContext());
|
||||
stackElements.append(element);
|
||||
@@ -183,28 +184,33 @@ static QString resolvedUrl(const QString &str, const QQmlRefPointer<QQmlContextD
|
||||
return str;
|
||||
}
|
||||
|
||||
-QQuickStackElement *QQuickStackViewPrivate::createElement(const QV4::Value &value, const QQmlRefPointer<QQmlContextData> &context, QString *error)
|
||||
+QQuickStackElement *QQuickStackViewPrivate::createElement(
|
||||
+ const QV4::Value &value, const QQmlRefPointer<QQmlContextData> &context, QString *error)
|
||||
{
|
||||
Q_Q(QQuickStackView);
|
||||
if (const QV4::String *s = value.as<QV4::String>())
|
||||
- return QQuickStackElement::fromString(resolvedUrl(s->toQString(), context), q, error);
|
||||
+ return QQuickStackElement::fromString(
|
||||
+ s->engine()->qmlEngine(), resolvedUrl(s->toQString(), context), q, error);
|
||||
if (const QV4::QObjectWrapper *o = value.as<QV4::QObjectWrapper>())
|
||||
return QQuickStackElement::fromObject(o->object(), q, error);
|
||||
if (const QV4::UrlObject *u = value.as<QV4::UrlObject>())
|
||||
- return QQuickStackElement::fromString(resolvedUrl(u->href(), context), q, error);
|
||||
+ return QQuickStackElement::fromString(
|
||||
+ u->engine()->qmlEngine(), resolvedUrl(u->href(), context), q, error);
|
||||
|
||||
- if (value.as<QV4::Object>()) {
|
||||
+ if (const QV4::Object *o = value.as<QV4::Object>()) {
|
||||
const QVariant data = QV4::ExecutionEngine::toVariant(value, QMetaType::fromType<QUrl>());
|
||||
if (data.typeId() == QMetaType::QUrl) {
|
||||
- return QQuickStackElement::fromString(resolvedUrl(data.toUrl(), context).toString(), q,
|
||||
- error);
|
||||
+ return QQuickStackElement::fromString(
|
||||
+ o->engine()->qmlEngine(), resolvedUrl(data.toUrl(), context).toString(), q,
|
||||
+ error);
|
||||
}
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
-bool QQuickStackViewPrivate::pushElements(const QList<QQuickStackElement *> &elems)
|
||||
+bool QQuickStackViewPrivate::pushElements(
|
||||
+ QV4::ExecutionEngine *v4, const QList<QQuickStackElement *> &elems)
|
||||
{
|
||||
Q_Q(QQuickStackView);
|
||||
if (!elems.isEmpty()) {
|
||||
@@ -212,19 +218,19 @@ bool QQuickStackViewPrivate::pushElements(const QList<QQuickStackElement *> &ele
|
||||
e->setIndex(elements.size());
|
||||
elements += e;
|
||||
}
|
||||
- return elements.top()->load(q);
|
||||
+ return elements.top()->load(v4, q);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
-bool QQuickStackViewPrivate::pushElement(QQuickStackElement *element)
|
||||
+bool QQuickStackViewPrivate::pushElement(QV4::ExecutionEngine *v4, QQuickStackElement *element)
|
||||
{
|
||||
if (element)
|
||||
- return pushElements(QList<QQuickStackElement *>() << element);
|
||||
+ return pushElements(v4, QList<QQuickStackElement *>() << element);
|
||||
return false;
|
||||
}
|
||||
|
||||
-bool QQuickStackViewPrivate::popElements(QQuickStackElement *element)
|
||||
+bool QQuickStackViewPrivate::popElements(QV4::ExecutionEngine *v4, QQuickStackElement *element)
|
||||
{
|
||||
Q_Q(QQuickStackView);
|
||||
while (elements.size() > 1 && elements.top() != element) {
|
||||
@@ -232,10 +238,12 @@ bool QQuickStackViewPrivate::popElements(QQuickStackElement *element)
|
||||
if (!element)
|
||||
break;
|
||||
}
|
||||
- return elements.top()->load(q);
|
||||
+ return elements.top()->load(v4, q);
|
||||
}
|
||||
|
||||
-bool QQuickStackViewPrivate::replaceElements(QQuickStackElement *target, const QList<QQuickStackElement *> &elems)
|
||||
+bool QQuickStackViewPrivate::replaceElements(
|
||||
+ QV4::ExecutionEngine *v4, QQuickStackElement *target,
|
||||
+ const QList<QQuickStackElement *> &elems)
|
||||
{
|
||||
if (target) {
|
||||
while (!elements.isEmpty()) {
|
||||
@@ -245,10 +253,12 @@ bool QQuickStackViewPrivate::replaceElements(QQuickStackElement *target, const Q
|
||||
break;
|
||||
}
|
||||
}
|
||||
- return pushElements(elems);
|
||||
+ return pushElements(v4, elems);
|
||||
}
|
||||
|
||||
-QQuickItem *QQuickStackViewPrivate::popToItem(QQuickItem *item, QQuickStackView::Operation operation, CurrentItemPolicy currentItemPolicy)
|
||||
+QQuickItem *QQuickStackViewPrivate::popToItem(
|
||||
+ QV4::ExecutionEngine *v4, QQuickItem *item, QQuickStackView::Operation operation,
|
||||
+ CurrentItemPolicy currentItemPolicy)
|
||||
{
|
||||
const QString operationName = QStringLiteral("pop");
|
||||
if (modifyingElements) {
|
||||
@@ -301,7 +311,7 @@ QQuickItem *QQuickStackViewPrivate::popToItem(QQuickItem *item, QQuickStackView:
|
||||
}
|
||||
|
||||
QQuickItem *previousItem = nullptr;
|
||||
- if (popElements(enter)) {
|
||||
+ if (popElements(v4, enter)) {
|
||||
if (exit) {
|
||||
exit->removal = true;
|
||||
removing.insert(exit);
|
||||
diff --git a/src/quicktemplates/qquickstackview_p_p.h b/src/quicktemplates/qquickstackview_p_p.h
|
||||
index 4ae849aa20..8bb95760a4 100644
|
||||
--- a/src/quicktemplates/qquickstackview_p_p.h
|
||||
+++ b/src/quicktemplates/qquickstackview_p_p.h
|
||||
@@ -50,20 +50,20 @@ public:
|
||||
void setCurrentItem(QQuickStackElement *element);
|
||||
|
||||
QList<QQuickStackElement *> parseElements(int from, QQmlV4FunctionPtr args, QStringList *errors);
|
||||
- QList<QQuickStackElement *> parseElements(const QList<QQuickStackViewArg> &args);
|
||||
+ QList<QQuickStackElement *> parseElements(QQmlEngine *engine, const QList<QQuickStackViewArg> &args);
|
||||
QQuickStackElement *findElement(QQuickItem *item) const;
|
||||
QQuickStackElement *findElement(const QV4::Value &value) const;
|
||||
QQuickStackElement *createElement(const QV4::Value &value, const QQmlRefPointer<QQmlContextData> &context, QString *error);
|
||||
- bool pushElements(const QList<QQuickStackElement *> &elements);
|
||||
- bool pushElement(QQuickStackElement *element);
|
||||
- bool popElements(QQuickStackElement *element);
|
||||
- bool replaceElements(QQuickStackElement *element, const QList<QQuickStackElement *> &elements);
|
||||
+ bool pushElements(QV4::ExecutionEngine *v4, const QList<QQuickStackElement *> &elements);
|
||||
+ bool pushElement(QV4::ExecutionEngine *v4, QQuickStackElement *element);
|
||||
+ bool popElements(QV4::ExecutionEngine *v4, QQuickStackElement *element);
|
||||
+ bool replaceElements(QV4::ExecutionEngine *v4, QQuickStackElement *element, const QList<QQuickStackElement *> &elements);
|
||||
|
||||
enum class CurrentItemPolicy {
|
||||
DoNotPop,
|
||||
Pop
|
||||
};
|
||||
- QQuickItem *popToItem(QQuickItem *item, QQuickStackView::Operation operation, CurrentItemPolicy currentItemPolicy);
|
||||
+ QQuickItem *popToItem(QV4::ExecutionEngine *v4, QQuickItem *item, QQuickStackView::Operation operation, CurrentItemPolicy currentItemPolicy);
|
||||
|
||||
#if QT_CONFIG(quick_viewtransitions)
|
||||
void ensureTransitioner();
|
||||
@@ -1,10 +1,14 @@
|
||||
--- a/src/qml/qml/qqmlimport.cpp
|
||||
+++ b/src/qml/qml/qqmlimport.cpp
|
||||
@@ -1520,6 +1520,7 @@ QQmlImportDatabase::QQmlImportDatabase(QQmlEngine *e)
|
||||
diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp
|
||||
index 5d09bf21c6..eacc8ccaea 100644
|
||||
--- a/src/qml/qml/qqmltypeloader.cpp
|
||||
+++ b/src/qml/qml/qqmltypeloader.cpp
|
||||
@@ -1235,7 +1235,8 @@ QQmlTypeLoader::QQmlTypeLoader(QQmlEngine *engine)
|
||||
// env import paths
|
||||
addEnvImportPath("QML_IMPORT_PATH");
|
||||
addEnvImportPath("QML2_IMPORT_PATH");
|
||||
-
|
||||
+ addEnvImportPath("NIXPKGS_QT6_QML_IMPORT_PATH");
|
||||
|
||||
+
|
||||
addImportPath(QStringLiteral("qrc:/qt/qml"));
|
||||
addImportPath(QStringLiteral("qrc:/qt-project.org/imports"));
|
||||
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
qtModule rec {
|
||||
pname = "qtmqtt";
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "qt";
|
||||
repo = "qtmqtt";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-xzh2cNPlGe0VlCdNN1u8vBi+Uq+U2oa2bskAJQTt0ik=";
|
||||
hash = "sha256-0o0zC8SUlug5xOV5AX9PiTim1td8NA4fq6WfBR5aSXA=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ qtbase ];
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
qtbase,
|
||||
qtdeclarative,
|
||||
cups,
|
||||
llvmPackages_20,
|
||||
llvmPackages,
|
||||
# clang-based c++ parser for qdoc and lupdate
|
||||
withClang ? false,
|
||||
}:
|
||||
@@ -30,10 +30,9 @@ qtModule {
|
||||
"-DNIX_OUTPUT_OUT=\"${placeholder "out"}\""
|
||||
];
|
||||
|
||||
# FIXME: update to LLVM 21 with Qt 6.10
|
||||
buildInputs = lib.optionals withClang [
|
||||
llvmPackages_20.libclang
|
||||
llvmPackages_20.llvm
|
||||
llvmPackages.libclang
|
||||
llvmPackages.llvm
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
+
|
||||
static QString qtToolFilePath(const QString &toolName, QLibraryInfo::LibraryPath location)
|
||||
{
|
||||
- QString filePath = QLibraryInfo::path(location) + QLatin1Char('/') + toolName;
|
||||
+ QString filePath = qtBasePath(location) + QLatin1Char('/') + toolName;
|
||||
- QString filePath = QLibraryInfo::path(location) + u'/' + toolName;
|
||||
+ QString filePath = qtBasePath(location) + u'/' + toolName;
|
||||
#ifdef Q_OS_WIN
|
||||
filePath.append(QLatin1String(".exe"));
|
||||
#endif
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
qtModule,
|
||||
qtbase,
|
||||
qtdeclarative,
|
||||
wayland,
|
||||
wayland-scanner,
|
||||
pkg-config,
|
||||
libdrm,
|
||||
}:
|
||||
@@ -14,24 +12,15 @@
|
||||
qtModule {
|
||||
pname = "qtwayland";
|
||||
|
||||
# wayland-scanner needs to be propagated as both build
|
||||
# (for the wayland-scanner binary) and host (for the
|
||||
# actual wayland.xml protocol definition)
|
||||
propagatedBuildInputs = [
|
||||
qtbase
|
||||
qtdeclarative
|
||||
wayland
|
||||
wayland-scanner
|
||||
];
|
||||
propagatedNativeBuildInputs = [
|
||||
wayland
|
||||
wayland-scanner
|
||||
];
|
||||
buildInputs = [ libdrm ];
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
cmakeFlags = lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
|
||||
"-DQt6WaylandScannerTools_DIR=${pkgsBuildBuild.qt6.qtwayland}/lib/cmake/Qt6WaylandScannerTools"
|
||||
"-DQt6WaylandScannerTools_DIR=${pkgsBuildBuild.qt6.qtbase}/lib/cmake/Qt6WaylandScannerTools"
|
||||
];
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
libopus,
|
||||
jsoncpp,
|
||||
protobuf,
|
||||
libvpx,
|
||||
srtp,
|
||||
snappy,
|
||||
nss,
|
||||
@@ -59,13 +58,12 @@
|
||||
lcms2,
|
||||
libkrb5,
|
||||
libgbm,
|
||||
libva,
|
||||
enableProprietaryCodecs ? true,
|
||||
# darwin
|
||||
bootstrap_cmds,
|
||||
cctools,
|
||||
xcbuild,
|
||||
|
||||
fetchpatch,
|
||||
}:
|
||||
|
||||
qtModule {
|
||||
@@ -112,13 +110,6 @@ qtModule {
|
||||
|
||||
# Reproducibility QTBUG-136068
|
||||
./gn-object-sorted.patch
|
||||
|
||||
# Fix GPU rendering with Mesa 25.2
|
||||
# https://bugreports.qt.io/browse/QTBUG-139424
|
||||
(fetchpatch {
|
||||
url = "https://invent.kde.org/qt/qt/qtwebengine/-/commit/3cc88e0f85113e38ccb1bfdadb7d150c2389b1bc.diff";
|
||||
hash = "sha256-5tKZ6b93VP4mKVc7jctrbW5Ktl+4Mjxw6bK1ajY62zQ=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
@@ -208,7 +199,6 @@ qtModule {
|
||||
|
||||
# Video formats
|
||||
srtp
|
||||
libvpx
|
||||
|
||||
# Audio formats
|
||||
libopus
|
||||
@@ -267,6 +257,7 @@ qtModule {
|
||||
|
||||
libkrb5
|
||||
libgbm
|
||||
libva
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -37,10 +37,13 @@ stdenv.mkDerivation (
|
||||
(lib.warnIf (args ? qtInputs) "qt6.qtModule's qtInputs argument is deprecated" args.qtInputs or [ ])
|
||||
++ (args.propagatedBuildInputs or [ ]);
|
||||
|
||||
cmakeFlags =
|
||||
cmakeFlags = [
|
||||
# be more verbose
|
||||
"--log-level=STATUS"
|
||||
# don't leak OS version into the final output
|
||||
# https://bugreports.qt.io/browse/QTBUG-136060
|
||||
[ "-DCMAKE_SYSTEM_VERSION=" ]
|
||||
"-DCMAKE_SYSTEM_VERSION="
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
"-DQT_NO_XCODE_MIN_VERSION_CHECK=ON"
|
||||
# This is only used for the min version check, which we disabled above.
|
||||
|
||||
@@ -4,315 +4,315 @@
|
||||
|
||||
{
|
||||
qt3d = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qt3d-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1zvzc88gykbqmks5q06zl9113lvy07gxsxmzmvpd8y8sybfn91ky";
|
||||
name = "qt3d-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qt3d-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1dz9g3nlwgwfycwl5a0c7h339s7azq2xvq99kd76wjqzfkrmz25x";
|
||||
name = "qt3d-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qt5compat = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qt5compat-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0qa4s1m9f0qzs6msrilpi12wv5hpkgw211s0cqsiqaf24hhsq789";
|
||||
name = "qt5compat-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qt5compat-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0zibn0kq8grlpkvfasjciz71bv6x4cgz02v5l5giyplbcnfwa9fh";
|
||||
name = "qt5compat-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtactiveqt = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtactiveqt-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1kzc0pqwyi1h1s8qk8agplfkrib2s9cg7bwpl41z8icngwj76h6v";
|
||||
name = "qtactiveqt-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtactiveqt-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "15m7g4h4aa3fk5q4an3apd0bdqkxdknnx64p72brrmah773mmlpm";
|
||||
name = "qtactiveqt-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtbase = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtbase-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0vnwp12wvsab1vsn8zhi4mcvrpg5iacq59xzzs0w0vimc3va58f5";
|
||||
name = "qtbase-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtbase-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0v84f9pw387m0ghd4n6s9ipwjvniqspabqxkqmbj58slrcxn5m7a";
|
||||
name = "qtbase-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtcharts = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtcharts-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0lsckms5s0av6dy8mll7bnspsigz6hpvbddm79n2wshxnfywpmr9";
|
||||
name = "qtcharts-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtcharts-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0svz8frryxv811xyg8cawn5icjcin6909mw4k6hlvgz7429m5zqv";
|
||||
name = "qtcharts-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtconnectivity = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtconnectivity-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1xfp3p5xkypxfgzvq2a5zcnyc7ms5gav99z5qmb48k0pzdgbl6z2";
|
||||
name = "qtconnectivity-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtconnectivity-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "16gs86zyaq8rvzd9jribgg51hanas15gpy8zh45n58004v7xa2jn";
|
||||
name = "qtconnectivity-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtdatavis3d = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtdatavis3d-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1v5zdwjpz8j7s1nrkg7sp452vmdmhq09kdxvbsya2ad6jsw4ajxa";
|
||||
name = "qtdatavis3d-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtdatavis3d-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1qinrrk1j9qknwq2x7rl9aw8ajrp1h7kpfg29wcvaklbz9jj5xpx";
|
||||
name = "qtdatavis3d-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtdeclarative = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtdeclarative-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0q52z2iiqdchsvvcs7w6mq38v0ahv2h5jyvbjxfbzbr9f8i1n1ss";
|
||||
name = "qtdeclarative-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtdeclarative-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1c7nar7q92w8l7wkmwbl0f6j4g1c8kw8jbn1bf35sf821593bzbf";
|
||||
name = "qtdeclarative-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtdoc = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtdoc-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0am13lnmfxqj8ayx9ml5sm2qagl5s6hrki3bvdxfmzfkl07ds694";
|
||||
name = "qtdoc-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtdoc-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0fvx690kap3s2h9lg4d4w3nsiks6h2idggskisg1r1gpwks2brgc";
|
||||
name = "qtdoc-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtgraphs = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtgraphs-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "13041r244h3mgs95zcyw5x7lfginf4gxs59spz030p0jap867p2h";
|
||||
name = "qtgraphs-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtgraphs-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1shllyk4f5lidw0hij9zhgapck3rf3hm6qw4m1nn79mynfrz3j3f";
|
||||
name = "qtgraphs-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtgrpc = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtgrpc-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "00py189v3ihpy9cj51sxapl2dp3ci7k04ikjl6zbxmbjrdwwhqvr";
|
||||
name = "qtgrpc-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtgrpc-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0id4j4xgamx9wndc3cgnf5m42ax257xyfy2khq4aw0b10s4j4wpv";
|
||||
name = "qtgrpc-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qthttpserver = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qthttpserver-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "13rfvmh42h4zd2slb2d0xqdy7wgsy05q8jqy3ldbikx5vf9qg9vs";
|
||||
name = "qthttpserver-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qthttpserver-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1i8z4l1is5xashh5lq9afj1syhvvz15zgcr5f27mwhjzvc0mfw74";
|
||||
name = "qthttpserver-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtimageformats = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtimageformats-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1zigaz2418sy6m3na91rddxvlfn3257535kq120f9f6lzgdnpcjg";
|
||||
name = "qtimageformats-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtimageformats-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1shcghzjn3v9mbgms0ykk5d91q7hdm8mxv8n6vjhsm3wa190lib4";
|
||||
name = "qtimageformats-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtlanguageserver = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtlanguageserver-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0cwx6rlp9nm0qbzjamfcqhhylbmh2f5kk3z749ln49fbz32ads68";
|
||||
name = "qtlanguageserver-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtlanguageserver-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "19i151qxh2fw2h5w6082bh0myk6skz3dihhs4mahhb1rkzh077jc";
|
||||
name = "qtlanguageserver-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtlocation = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtlocation-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "018nwyr1idh3rfp22w86pw3i25xbj7mv49wir5s1akmgzp8jf4hl";
|
||||
name = "qtlocation-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtlocation-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "007qbni20qajdq6villwp7bc7hqzjlppc30yw3ccqb2bzf3kxm6b";
|
||||
name = "qtlocation-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtlottie = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtlottie-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0cyzj0xhdhlgkra1pqb4vdazxjfii05sc7r5h0ml9fzhfiai0vhi";
|
||||
name = "qtlottie-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtlottie-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "09bvm3jr2s0hg14dq8b7604hfgxj3cm1i93lkkbjh2n2bfpi793h";
|
||||
name = "qtlottie-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtmultimedia = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtmultimedia-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1xc6kgqm88rkzr8qzdi8yj8dm4dqfsfzkkba4d8iijb0xbkvwxd2";
|
||||
name = "qtmultimedia-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtmultimedia-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "09hixwp8sq771rfp4c8bvmpzl6jd906k2rsrkxwij78drwhl0hh4";
|
||||
name = "qtmultimedia-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtnetworkauth = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtnetworkauth-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1ivyrha9ibc2iz4lvrz5309pdqxyccwzbpmyg2m24ghkxm3xrnb7";
|
||||
name = "qtnetworkauth-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtnetworkauth-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1j5k6dn0zc5rq82k89nyz5w0ny89mg1pg5aw0h41ybg2f5fqaq04";
|
||||
name = "qtnetworkauth-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtpositioning = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtpositioning-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1d1mb1fni42vgfyj9ghk0g6602nx8lwa1y0bmynpmh84yy0ck1qc";
|
||||
name = "qtpositioning-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtpositioning-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1q8yd9sjbm1vzcda1i21x0qf0n4md0k6wwbmr5jrvqbbcf8brgzc";
|
||||
name = "qtpositioning-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtquick3d = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtquick3d-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0wyfran9vwl6fm2i9nc149fpvv8r5k3yvrn2f1rjpb9qkw271cli";
|
||||
name = "qtquick3d-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtquick3d-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "126lxiizd4pxxp43zzwv3k4i73806bgg329qsygz5qbnm0g8q9cq";
|
||||
name = "qtquick3d-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtquick3dphysics = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtquick3dphysics-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0vjs7calgc0vc7fv6hnbghhi37cfiapxim650av9w92xfhnv5myw";
|
||||
name = "qtquick3dphysics-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtquick3dphysics-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0hj90pdxh6x6zm1b4iflhr89sy13qrbwc79pv9z9m7gdwyzhid62";
|
||||
name = "qtquick3dphysics-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtquickeffectmaker = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtquickeffectmaker-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "04lrlp1fakn8kv160ln8j1fsqsfdcjf1dzwlknx5r1m04hfkdw3b";
|
||||
name = "qtquickeffectmaker-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtquickeffectmaker-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0vmr5s6b4cqxpw5kl5shzydj3if89znm3izj5nrhzsgbic11vhk4";
|
||||
name = "qtquickeffectmaker-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtquicktimeline = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtquicktimeline-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1xqidk7njn1xiiz3i27ddzwd568caigq8p2ja4ks67x7bsk4nkr8";
|
||||
name = "qtquicktimeline-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtquicktimeline-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "182bn72mifx8s867hsmramjfl9qr8szpla9fqw7bi3ywb1fiig6z";
|
||||
name = "qtquicktimeline-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtremoteobjects = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtremoteobjects-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0nyqmapypw0y745zg58rq9183vcrbm2c71dc3p9sdqflal07r64q";
|
||||
name = "qtremoteobjects-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtremoteobjects-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1616dagpzs68rhi1wiq1dwl1kbgf2c1mmrb3c7ni204k0rcjsh5i";
|
||||
name = "qtremoteobjects-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtscxml = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtscxml-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1drlbdgicqx76gyqi79ri1gy2vrya6l99gig76p8x46za70c12gk";
|
||||
name = "qtscxml-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtscxml-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1r1ic7kr3xzrg0vyrj4smj2vzyidazwrb5jqn2l6irg1bx06r55m";
|
||||
name = "qtscxml-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtsensors = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtsensors-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0s1gz66nar27c3l5cbqqdnza1pxbd7nylz88mnj32xpkwml53nx2";
|
||||
name = "qtsensors-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtsensors-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0fc7cq067sddfwcn43j5v4h6xzjrvj5gvi08l9bfag43s4d5wlk7";
|
||||
name = "qtsensors-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtserialbus = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtserialbus-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1ksvfwfk0az47sgfcaqbac936y75lcaga5fip5lbgz0s0zd3k08a";
|
||||
name = "qtserialbus-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtserialbus-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0c7cljc555vcs7jkm63mczxxpg085b161b6vpd9vnrz2zyzv49y6";
|
||||
name = "qtserialbus-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtserialport = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtserialport-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "16427sa9qhk8hsyxjr69fhqmvzlg9n4pdizmqfc4cr7j1w1yq62b";
|
||||
name = "qtserialport-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtserialport-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "01gqv6hc2ycd877jhq6ffnfgizh9pgnzc1gn6m6cfp8ximwa07jg";
|
||||
name = "qtserialport-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtshadertools = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtshadertools-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0rs553abb8sdla4cywfpgfh3vvyafm8spy8nnvj06md3hvp09632";
|
||||
name = "qtshadertools-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtshadertools-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1xpvzmpisglbk3nnczqvj0n1dv6zd79phvczqwpqc9yq7y64gfl7";
|
||||
name = "qtshadertools-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtspeech = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtspeech-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0gmbr65s4j2bka13iln3fmjrhl1i46lp5vlhdv66rf1gfi65lvzq";
|
||||
name = "qtspeech-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtspeech-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "07m59akg31010khz82lvbrgjwwacavra5qsi17jqpk0chdk300qk";
|
||||
name = "qtspeech-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtsvg = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtsvg-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1qi6f3lvp0r7n79m1iw80690366bd53gyxm5gp76zgnbb0rslxnv";
|
||||
name = "qtsvg-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtsvg-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0cr5vaz485n23fvw4kvh1ykqny61bpdr5vd2q9szywsy9phc1ljy";
|
||||
name = "qtsvg-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qttools = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qttools-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1sdla2blvk9r4g7v67dhwqjxx7kflyh7cm9pw5f7ziazjw7apxqc";
|
||||
name = "qttools-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qttools-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0anhvd7yqs9l3dryl43f0f7zq22rwrvz93g16ygmjgiyryc50vfq";
|
||||
name = "qttools-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qttranslations = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qttranslations-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "18chqjzy7ji76crfisl1rya8ds3my97bgsxkg7yldcc1crg58vgk";
|
||||
name = "qttranslations-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qttranslations-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "1pkc0a5kigcp0jcq3ny1ykl0rqw0vabz45w14d2mgjyhrx9q4vij";
|
||||
name = "qttranslations-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtvirtualkeyboard = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtvirtualkeyboard-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0d2m87fvd11ckjjzy3lj1mbfisig4x9c263phq4fczwy3k4xb851";
|
||||
name = "qtvirtualkeyboard-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtvirtualkeyboard-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "108klc6cr2ihaka9gnqaqv9i8r4lr8m39yviic3nviibd3r6gcmb";
|
||||
name = "qtvirtualkeyboard-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtwayland = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtwayland-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1pfsfdjqw985d8220jw13sqacyiip26bzpk1ax30ms33jayd84z4";
|
||||
name = "qtwayland-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtwayland-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "07vnfd0xmzg8vc68g9j2i88lilmic5vhv22gn47vs94v4l52ngv0";
|
||||
name = "qtwayland-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtwebchannel = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtwebchannel-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "01d3dy0fjz4vfy8s1yzpmd31b8mhvqf15z61fzr9qgd1wp0vnmwl";
|
||||
name = "qtwebchannel-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtwebchannel-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "02ahm7cz8wgvfcgyq85sc2v566x4ihymalmv5xi0wn5zz9j5h5kl";
|
||||
name = "qtwebchannel-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtwebengine = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtwebengine-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "0rl9v936sq6spvb3sfkpmc51wwmljrn4ssy3ii0pdn0xsl8kn2ym";
|
||||
name = "qtwebengine-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtwebengine-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0765a5kfkxxi7rq58pivi32xwb17pvg3h2ix88dx3y9h3jqpfk64";
|
||||
name = "qtwebengine-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtwebsockets = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtwebsockets-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1i428awzws4x4cmv6zpdgb27c2m71cs8dqcjbwiwqcfbyf6dlzg2";
|
||||
name = "qtwebsockets-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtwebsockets-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "0vl091wnzqjpnp0i0l2dqlbhlwcfzw2ry1p48aifxf63lmyjw2fi";
|
||||
name = "qtwebsockets-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
qtwebview = {
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/official_releases/qt/6.9/6.9.3/submodules/qtwebview-everywhere-src-6.9.3.tar.xz";
|
||||
sha256 = "1j1cqj2hq0c8r9lxb1h6mdhnf9clqb95jw2p0nn81jzin701ypn6";
|
||||
name = "qtwebview-everywhere-src-6.9.3.tar.xz";
|
||||
url = "${mirror}/official_releases/qt/6.10/6.10.0/submodules/qtwebview-everywhere-src-6.10.0.tar.xz";
|
||||
sha256 = "03rszbcr3lnf9cnk7hz99ibxx8na4l3i98q19fahj36ilpk68dd9";
|
||||
name = "qtwebview-everywhere-src-6.10.0.tar.xz";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
shiboken6,
|
||||
llvmPackages,
|
||||
symlinkJoin,
|
||||
fetchpatch,
|
||||
}:
|
||||
let
|
||||
packages = with python.pkgs.qt6; [
|
||||
@@ -56,7 +57,17 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
inherit (shiboken6) version src;
|
||||
|
||||
sourceRoot = "pyside-setup-everywhere-src-${finalAttrs.version}/sources/pyside6";
|
||||
sourceRoot = "${finalAttrs.src.name}/sources/pyside6";
|
||||
|
||||
patches = [
|
||||
# revert commit that breaks generated cmake files
|
||||
(fetchpatch {
|
||||
url = "https://code.qt.io/cgit/pyside/pyside-setup.git/patch/?id=05e328476f2d6ef8a0f3f44aca1e5b1cdb7499fc";
|
||||
revert = true;
|
||||
stripLen = 2;
|
||||
hash = "sha256-PPLV5K+xp7ZdG0Tah1wpBdNWN7fsXvZh14eBzO0R55c=";
|
||||
})
|
||||
];
|
||||
|
||||
# Qt Designer plugin moved to a separate output to reduce closure size
|
||||
# for downstream things
|
||||
@@ -115,6 +126,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
postInstall = ''
|
||||
cd ../../..
|
||||
chmod +w .
|
||||
${python.pythonOnBuildForHost.interpreter} setup.py egg_info --build-type=pyside6
|
||||
cp -r PySide6.egg-info $out/${python.sitePackages}/
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
fetchurl,
|
||||
fetchgit,
|
||||
llvmPackages,
|
||||
python,
|
||||
cmake,
|
||||
@@ -13,14 +13,15 @@ let
|
||||
in
|
||||
stdenv'.mkDerivation (finalAttrs: {
|
||||
pname = "shiboken6";
|
||||
version = "6.9.3";
|
||||
version = "6.10.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://qt/official_releases/QtForPython/pyside6/PySide6-${finalAttrs.version}-src/pyside-setup-everywhere-src-${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-fNLVq7mPLm9EKw5B9fz5MOcxKuSxf2gTFrGtx7Y7sXI=";
|
||||
src = fetchgit {
|
||||
url = "https://code.qt.io/pyside/pyside-setup.git";
|
||||
rev = "97af685d5b777323690704fb9848f50aa2728ce9";
|
||||
hash = "sha256-zJV4rrqr2bzWFEG1CWOI+y6wbfQDvWAst6T3aSssj6M=";
|
||||
};
|
||||
|
||||
sourceRoot = "pyside-setup-everywhere-src-${finalAttrs.version}/sources/shiboken6";
|
||||
sourceRoot = "${finalAttrs.src.name}/sources/shiboken6";
|
||||
|
||||
patches = [ ./fix-include-qt-headers.patch ];
|
||||
|
||||
@@ -48,10 +49,17 @@ stdenv'.mkDerivation (finalAttrs: {
|
||||
# variable available in this file.
|
||||
postPatch = ''
|
||||
substituteInPlace cmake/ShibokenHelpers.cmake --replace-fail '#!/bin/bash' '#!''${BASH}'
|
||||
|
||||
# raise ValueError('ZIP does not support timestamps before 1980')
|
||||
find \
|
||||
shibokenmodule/files.dir/shibokensupport/ \
|
||||
libshiboken/embed/signature_bootstrap.py \
|
||||
-exec touch -d "1980-01-01T00:00Z" {} \;
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
cd ../../..
|
||||
chmod +w .
|
||||
${python.pythonOnBuildForHost.interpreter} setup.py egg_info --build-type=shiboken6
|
||||
cp -r shiboken6.egg-info $out/${python.sitePackages}/
|
||||
'';
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
--- a/ApiExtractor/clangparser/compilersupport.cpp
|
||||
+++ b/ApiExtractor/clangparser/compilersupport.cpp
|
||||
@@ -16,6 +16,7 @@
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <QtCore/qprocess.h>
|
||||
#include <QtCore/qstandardpaths.h>
|
||||
#include <QtCore/qstringlist.h>
|
||||
#include <QtCore/qversionnumber.h>
|
||||
+#include <QtCore/qregularexpression.h>
|
||||
|
||||
#include <clang-c/Index.h>
|
||||
|
||||
@@ -341,6 +342,13 @@ QByteArrayList emulatedCompilerOptions()
|
||||
@@ -638,6 +639,13 @@ QByteArrayList emulatedCompilerOptions(LanguageLevel level)
|
||||
{
|
||||
QByteArrayList result;
|
||||
HeaderPaths headerPaths;
|
||||
@@ -21,20 +21,18 @@
|
||||
+
|
||||
switch (compiler()) {
|
||||
case Compiler::Msvc:
|
||||
result.append(QByteArrayLiteral("-fms-compatibility-version=19.26.28806"));
|
||||
@@ -352,9 +360,30 @@ QByteArrayList emulatedCompilerOptions()
|
||||
result.append("-fms-compatibility-version="_ba + msvcCompatVersion());
|
||||
@@ -651,10 +659,27 @@ QByteArrayList emulatedCompilerOptions(LanguageLevel level)
|
||||
appendClangBuiltinIncludes(&headerPaths);
|
||||
break;
|
||||
case Compiler::Clang:
|
||||
- headerPaths.append(gppInternalIncludePaths(compilerFromCMake(u"clang++"_s)));
|
||||
+ // fix: error: cannot jump from switch statement to this case label: case Compiler::Gpp
|
||||
+ // note: jump bypasses variable initialization: const HeaderPaths clangPaths =
|
||||
- headerPaths.append(gppInternalIncludePaths(compilerFromCMake(u"clang++"_s),
|
||||
- _compilerArguments));
|
||||
+ {
|
||||
+ //headerPaths.append(gppInternalIncludePaths(compilerFromCMake(u"clang++"_s)));
|
||||
+ // fix: qt.shiboken: x is specified in typesystem, but not defined. This could potentially lead to compilation errors.
|
||||
+ // PySide requires that Qt headers are not -isystem
|
||||
+ // https://bugreports.qt.io/browse/PYSIDE-787
|
||||
+ const HeaderPaths clangPaths = gppInternalIncludePaths(compilerFromCMake(u"clang++"_qs));
|
||||
+ const HeaderPaths clangPaths = gppInternalIncludePaths(compilerFromCMake(u"clang++"_s), _compilerArguments);
|
||||
+ for (const HeaderPath &h : clangPaths) {
|
||||
+ auto match = qtHeaderRegex.match(QString::fromUtf8(h.path));
|
||||
+ if (!match.hasMatch()) {
|
||||
@@ -54,9 +52,9 @@
|
||||
case Compiler::Gpp:
|
||||
if (needsClangBuiltinIncludes())
|
||||
appendClangBuiltinIncludes(&headerPaths);
|
||||
@@ -363,8 +392,20 @@ QByteArrayList emulatedCompilerOptions()
|
||||
// <type_traits> etc (g++ 11.3).
|
||||
const HeaderPaths gppPaths = gppInternalIncludePaths(compilerFromCMake(u"g++"_qs));
|
||||
@@ -664,8 +689,20 @@ QByteArrayList emulatedCompilerOptions(LanguageLevel level)
|
||||
const HeaderPaths gppPaths = gppInternalIncludePaths(compilerFromCMake(u"g++"_s),
|
||||
_compilerArguments);
|
||||
for (const HeaderPath &h : gppPaths) {
|
||||
- if (h.path.contains("c++") || h.path.contains("sysroot"))
|
||||
+ // fix: qt.shiboken: x is specified in typesystem, but not defined. This could potentially lead to compilation errors.
|
||||
@@ -76,5 +74,3 @@
|
||||
}
|
||||
break;
|
||||
}
|
||||
--
|
||||
2.39.0
|
||||
|
||||
Reference in New Issue
Block a user