[staging-next] Qt 6.10 (#449572)

This commit is contained in:
K900
2025-10-07 21:55:36 +03:00
committed by GitHub
19 changed files with 279 additions and 832 deletions

View File

@@ -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 = [

View File

@@ -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' )

View File

@@ -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 {
]
# Im 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}"

View File

@@ -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)"
'';
}

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();

View File

@@ -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"));

View File

@@ -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 ];

View File

@@ -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 = [

View File

@@ -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

View File

@@ -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 = {

View File

@@ -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 = [

View File

@@ -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.

View File

@@ -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";
};
};
}

View File

@@ -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}/

View File

@@ -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}/
'';

View File

@@ -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