mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-01 02:23:54 +00:00
b65dfc3161
These are both Python QT 5 modules, which have issues with Python 3.12 that are fixed in never versions, yet many packages depend on them. Sip4 was as simple as installing and switching over to setuptools (to replace the now removed distutils). pyside/shiboken was much more involved. I ended up pulling the required patches from the Ubuntu release repositories. The existing patch to fix clang's include headers needed an update as well, but was still required. There is some unsightly find-and-replace going on to replace distutils with setuptools. This is because, although setuptools now creates the "distutils" import module, it has to be itself imported first before that can happen. I Used this widespread find-and-replace as it does function properly, and should be extremly flexable for future versions (no needing to update patches on each release).
97 lines
4.9 KiB
Diff
97 lines
4.9 KiB
Diff
From: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
|
Date: Thu, 27 Apr 2023 13:00:37 +0200
|
|
Subject: shiboken2/clang: Suppress class scope look up for parameters with
|
|
scope resolution
|
|
|
|
Add a flag to AbstractMetaBuilderPrivate::findTypeEntriesHelper()
|
|
to suppress the class scope look in case scope resolution.
|
|
|
|
Task-number: PYSIDE-2288
|
|
Pick-to: 6.5 5.15
|
|
Change-Id: I04a4810d03845fb48393c5efed3641220bd12d87
|
|
Reviewed-by: Christian Tismer <tismer@stackless.com>
|
|
---
|
|
sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp | 16 ++++++++++++----
|
|
sources/shiboken2/ApiExtractor/abstractmetabuilder.h | 3 ++-
|
|
sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h | 1 +
|
|
3 files changed, 15 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
|
|
index 2f34e16..4bf4ab4 100644
|
|
--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
|
|
+++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
|
|
@@ -1845,7 +1845,10 @@ AbstractMetaFunction *AbstractMetaBuilderPrivate::traverseFunction(const Functio
|
|
return nullptr;
|
|
}
|
|
|
|
- AbstractMetaType *type = translateType(returnType, currentClass, {}, &errorMessage);
|
|
+ TranslateTypeFlags flags;
|
|
+ if (functionItem->scopeResolution())
|
|
+ flags.setFlag(AbstractMetaBuilder::NoClassScopeLookup);
|
|
+ AbstractMetaType *type = translateType(returnType, currentClass, flags, &errorMessage);
|
|
if (!type) {
|
|
const QString reason = msgUnmatchedReturnType(functionItem, errorMessage);
|
|
qCWarning(lcShiboken, "%s",
|
|
@@ -1880,7 +1883,10 @@ AbstractMetaFunction *AbstractMetaBuilderPrivate::traverseFunction(const Functio
|
|
return nullptr;
|
|
}
|
|
|
|
- AbstractMetaType *metaType = translateType(arg->type(), currentClass, {}, &errorMessage);
|
|
+ TranslateTypeFlags flags;
|
|
+ if (arg->scopeResolution())
|
|
+ flags.setFlag(AbstractMetaBuilder::NoClassScopeLookup);
|
|
+ AbstractMetaType *metaType = translateType(arg->type(), currentClass, flags, &errorMessage);
|
|
if (!metaType) {
|
|
// If an invalid argument has a default value, simply remove it
|
|
// unless the function is virtual (since the override in the
|
|
@@ -2073,11 +2079,13 @@ static const TypeEntry* findTypeEntryUsingContext(const AbstractMetaClass* metaC
|
|
// Helper for translateTypeStatic()
|
|
TypeEntries AbstractMetaBuilderPrivate::findTypeEntries(const QString &qualifiedName,
|
|
const QString &name,
|
|
+ TranslateTypeFlags flags,
|
|
AbstractMetaClass *currentClass,
|
|
AbstractMetaBuilderPrivate *d)
|
|
{
|
|
// 5.1 - Try first using the current scope
|
|
- if (currentClass) {
|
|
+ if (currentClass != nullptr
|
|
+ && !flags.testFlag(AbstractMetaBuilder::NoClassScopeLookup)) {
|
|
if (auto type = findTypeEntryUsingContext(currentClass, qualifiedName))
|
|
return {type};
|
|
|
|
@@ -2278,7 +2286,7 @@ AbstractMetaType *AbstractMetaBuilderPrivate::translateTypeStatic(const TypeInfo
|
|
typeInfo.clearInstantiations();
|
|
}
|
|
|
|
- TypeEntries types = findTypeEntries(qualifiedName, name, currentClass, d);
|
|
+ TypeEntries types = findTypeEntries(qualifiedName, name, flags, currentClass, d);
|
|
if (!flags.testFlag(AbstractMetaBuilder::TemplateArgument)) {
|
|
// Avoid clashes between QByteArray and enum value QMetaType::QByteArray
|
|
// unless we are looking for template arguments.
|
|
diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
|
|
index 8916eaf..f333ad5 100644
|
|
--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
|
|
+++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
|
|
@@ -94,7 +94,8 @@ public:
|
|
|
|
enum TranslateTypeFlag {
|
|
DontResolveType = 0x1,
|
|
- TemplateArgument = 0x2
|
|
+ TemplateArgument = 0x2,
|
|
+ NoClassScopeLookup = 0x4
|
|
};
|
|
Q_DECLARE_FLAGS(TranslateTypeFlags, TranslateTypeFlag);
|
|
|
|
diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h b/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
|
|
index 8468950..8ddd369 100644
|
|
--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
|
|
+++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
|
|
@@ -154,6 +154,7 @@ public:
|
|
TranslateTypeFlags flags = {},
|
|
QString *errorMessageIn = nullptr);
|
|
static TypeEntries findTypeEntries(const QString &qualifiedName, const QString &name,
|
|
+ TranslateTypeFlags flags = {},
|
|
AbstractMetaClass *currentClass = nullptr,
|
|
AbstractMetaBuilderPrivate *d = nullptr);
|
|
|