backports/shiboken2: new aport
This commit is contained in:
parent
edf1e0a0c5
commit
9a92d96a50
3 changed files with 271 additions and 0 deletions
94
backports/shiboken2/APKBUILD
Normal file
94
backports/shiboken2/APKBUILD
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
# Contributor: Leo <thinkabit.ukim@gmail.com>
|
||||||
|
# Maintainer:
|
||||||
|
pkgname=shiboken2
|
||||||
|
pkgver=5.15.10
|
||||||
|
pkgrel=0
|
||||||
|
pkgdesc="CPython bindings generator for C++ libraries"
|
||||||
|
url="https://wiki.qt.io/Qt_for_Python/Shiboken"
|
||||||
|
arch="all !armhf" # qt5-qtxmlpatterns -> qt5-qtdeclarative
|
||||||
|
license="GPL-2.0-or-later"
|
||||||
|
_llvmver=15
|
||||||
|
depends_dev="python3-dev"
|
||||||
|
makedepends="
|
||||||
|
$depends_dev
|
||||||
|
clang$_llvmver-dev
|
||||||
|
cmake
|
||||||
|
libxml2-dev
|
||||||
|
libxslt-dev
|
||||||
|
llvm$_llvmver-dev
|
||||||
|
py3-numpy-dev
|
||||||
|
py3-setuptools
|
||||||
|
qt5-qtbase-dev
|
||||||
|
qt5-qtxmlpatterns-dev
|
||||||
|
samurai
|
||||||
|
"
|
||||||
|
subpackages="lib$pkgname:libs lib$pkgname-dev py3-$pkgname:py3"
|
||||||
|
source="https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-$pkgver-src/pyside-setup-opensource-src-$pkgver.tar.xz
|
||||||
|
numpy-1.23.patch
|
||||||
|
py3.11.patch
|
||||||
|
"
|
||||||
|
builddir="$srcdir/pyside-setup-opensource-src-$pkgver"
|
||||||
|
|
||||||
|
provides="shiboken=$pkgver-r$pkgrel" # For backward compatibility
|
||||||
|
replaces="shiboken" # For backward compatibility
|
||||||
|
|
||||||
|
prepare() {
|
||||||
|
default_prepare
|
||||||
|
sed -e 's|0x030AFFFF|0x030BFFFF|' -i sources/shiboken2/libshiboken/pep384impl.h
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
export LLVM_INSTALL_DIR=/usr/lib/llvm$_llvmver
|
||||||
|
cmake -B build -S sources/shiboken2 \
|
||||||
|
-G Ninja \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||||
|
-DCMAKE_BUILD_TYPE=None \
|
||||||
|
-DBUILD_TESTS=OFF \
|
||||||
|
-DUSE_PYTHON_VERSION=3
|
||||||
|
cmake --build build
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
DESTDIR="$pkgdir" cmake --install build
|
||||||
|
}
|
||||||
|
|
||||||
|
libs() {
|
||||||
|
license="LGPL-2.1-or-later"
|
||||||
|
default_libs
|
||||||
|
}
|
||||||
|
|
||||||
|
dev() {
|
||||||
|
license="LGPL-2.1-or-later"
|
||||||
|
default_dev
|
||||||
|
provides="shiboken-dev=$pkgver-r$pkgrel"
|
||||||
|
replaces="shiboken-dev"
|
||||||
|
depends="
|
||||||
|
$depends_dev
|
||||||
|
lib$pkgname=$pkgver-r$pkgrel
|
||||||
|
$pkgname=$pkgver-r$pkgrel
|
||||||
|
py3-$pkgname=$pkgver-r$pkgrel
|
||||||
|
"
|
||||||
|
}
|
||||||
|
|
||||||
|
py3() {
|
||||||
|
license="LGPL-2.1-or-later"
|
||||||
|
depends=""
|
||||||
|
pkgdesc="Python3 shiboken bindings"
|
||||||
|
mkdir -p "$subpkgdir"/usr/lib
|
||||||
|
mv "$pkgdir"/usr/lib/python3* "$subpkgdir"/usr/lib
|
||||||
|
provides="py3-shiboken=$pkgver-r$pkgrel" # For backward compatibility
|
||||||
|
replaces="py3-shiboken" # For backward compatibility
|
||||||
|
|
||||||
|
# Install egg info
|
||||||
|
cd "$builddir"
|
||||||
|
export PATH="/usr/lib/qt5/bin:$PATH"
|
||||||
|
python3 setup.py egg_info --build-type=shiboken2
|
||||||
|
pythonpath="$(python3 -c "from sysconfig import get_path; print(get_path('platlib'))")"
|
||||||
|
cp -r shiboken2.egg-info "$subpkgdir/$pythonpath"
|
||||||
|
}
|
||||||
|
|
||||||
|
sha512sums="
|
||||||
|
dc548ab870fcc5cc637de1bcb2f428527c650287fdb3720a3ade4638cc0bb12bc4a1ed87e7f6a4ec730a26742e08ceec806bcac6af91c7a01ddc0ce7980a79d2 pyside-setup-opensource-src-5.15.10.tar.xz
|
||||||
|
449b4f4b1717b131c05e798549d49186f73215b893843ccae4c434dd95ad3f4dce0f886fe5cbd3443100d4852cb6b3d6a6d2f0a102f69f2a095bb6c500d69244 numpy-1.23.patch
|
||||||
|
985ff9a10da017db2fcf1526aa1d3502a22c29c7a640e9f8a46bc67ed2acea74f6eec4daa1baf04b90fbdbffe80ecce07aaa0f267783ff66f279120f1ff64ec5 py3.11.patch
|
||||||
|
"
|
15
backports/shiboken2/numpy-1.23.patch
Normal file
15
backports/shiboken2/numpy-1.23.patch
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
diff --git a/sources/shiboken2/libshiboken/sbknumpyarrayconverter.cpp b/sources/shiboken2/libshiboken/sbknumpyarrayconverter.cpp
|
||||||
|
index 996968f..a072dfd 100644
|
||||||
|
--- a/sources/shiboken2/libshiboken/sbknumpyarrayconverter.cpp
|
||||||
|
+++ b/sources/shiboken2/libshiboken/sbknumpyarrayconverter.cpp
|
||||||
|
@@ -116,8 +116,8 @@ std::ostream &operator<<(std::ostream &str, PyArrayObject *o)
|
||||||
|
str << " NPY_ARRAY_NOTSWAPPED";
|
||||||
|
if ((flags & NPY_ARRAY_WRITEABLE) != 0)
|
||||||
|
str << " NPY_ARRAY_WRITEABLE";
|
||||||
|
- if ((flags & NPY_ARRAY_UPDATEIFCOPY) != 0)
|
||||||
|
- str << " NPY_ARRAY_UPDATEIFCOPY";
|
||||||
|
+ if ((flags & NPY_ARRAY_WRITEBACKIFCOPY) != 0)
|
||||||
|
+ str << " NPY_ARRAY_WRITEBACKIFCOPY";
|
||||||
|
} else {
|
||||||
|
str << '0';
|
||||||
|
}
|
162
backports/shiboken2/py3.11.patch
Normal file
162
backports/shiboken2/py3.11.patch
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
From b64ad27d8dfeeecaaa8a98051252a32c9d998df4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
||||||
|
Date: Thu, 9 Jun 2022 16:50:41 +0200
|
||||||
|
Subject: [PATCH] libshiboken: Fix a crash in Shiboken::Object::isValid() for
|
||||||
|
Python 3.11
|
||||||
|
|
||||||
|
The function is passed type objects for class methods, which caused
|
||||||
|
it to crash.
|
||||||
|
|
||||||
|
The first clause did not catch this, and so it was cast to SbkObject
|
||||||
|
below.
|
||||||
|
|
||||||
|
Add a type check to prevent this.
|
||||||
|
|
||||||
|
Pick-to: 6.3 6.2 5.15
|
||||||
|
Task-number: PYSIDE-1960
|
||||||
|
Change-Id: Icfdd6fefb7156ac5961444bd5395109849a1d66e
|
||||||
|
Reviewed-by: Christian Tismer <tismer@stackless.com>
|
||||||
|
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
||||||
|
---
|
||||||
|
sources/shiboken2/libshiboken/basewrapper.cpp | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/build_scripts/config.py b/build_scripts/config.py
|
||||||
|
index 00cbd3f..63e52a2 100644
|
||||||
|
--- a/build_scripts/config.py
|
||||||
|
+++ b/build_scripts/config.py
|
||||||
|
@@ -94,6 +94,8 @@ class Config(object):
|
||||||
|
'Programming Language :: Python :: 3.8',
|
||||||
|
'Programming Language :: Python :: 3.9',
|
||||||
|
'Programming Language :: Python :: 3.10',
|
||||||
|
+ 'Programming Language :: Python :: 3.11',
|
||||||
|
+ 'Programming Language :: Python :: 3.12',
|
||||||
|
]
|
||||||
|
|
||||||
|
self.setup_script_dir = None
|
||||||
|
diff --git a/sources/pyside2/libpyside/pysideqflags.cpp b/sources/pyside2/libpyside/pysideqflags.cpp
|
||||||
|
index 8b224f2..784082a 100644
|
||||||
|
--- a/sources/pyside2/libpyside/pysideqflags.cpp
|
||||||
|
+++ b/sources/pyside2/libpyside/pysideqflags.cpp
|
||||||
|
@@ -192,7 +192,7 @@ namespace QFlags
|
||||||
|
}
|
||||||
|
newspec.slots = SbkNewQFlagsType_spec.slots;
|
||||||
|
PyTypeObject *type = (PyTypeObject *)SbkType_FromSpec(&newspec);
|
||||||
|
- Py_TYPE(type) = &PyType_Type;
|
||||||
|
+ Py_SET_TYPE(type, &PyType_Type);
|
||||||
|
|
||||||
|
PySideQFlagsType *flagsType = reinterpret_cast<PySideQFlagsType *>(type);
|
||||||
|
PepType_PFTP(flagsType)->converterPtr = &PepType_PFTP(flagsType)->converter;
|
||||||
|
diff --git a/sources/pyside2/libpyside/pysidesignal.cpp b/sources/pyside2/libpyside/pysidesignal.cpp
|
||||||
|
index b5069a0..ce89a9d 100644
|
||||||
|
--- a/sources/pyside2/libpyside/pysidesignal.cpp
|
||||||
|
+++ b/sources/pyside2/libpyside/pysidesignal.cpp
|
||||||
|
@@ -162,7 +162,7 @@ PyTypeObject *PySideSignalTypeF(void)
|
||||||
|
if (!type) {
|
||||||
|
type = reinterpret_cast<PyTypeObject *>(SbkType_FromSpec(&PySideSignalType_spec));
|
||||||
|
PyTypeObject *hold = Py_TYPE(type);
|
||||||
|
- Py_TYPE(type) = PySideMetaSignalTypeF();
|
||||||
|
+ Py_SET_TYPE(type, PySideMetaSignalTypeF());
|
||||||
|
Py_INCREF(Py_TYPE(type));
|
||||||
|
Py_DECREF(hold);
|
||||||
|
}
|
||||||
|
diff --git a/sources/pyside2/libpyside/pysideweakref.cpp b/sources/pyside2/libpyside/pysideweakref.cpp
|
||||||
|
index cd90634..730990f 100644
|
||||||
|
--- a/sources/pyside2/libpyside/pysideweakref.cpp
|
||||||
|
+++ b/sources/pyside2/libpyside/pysideweakref.cpp
|
||||||
|
@@ -90,7 +90,7 @@ PyObject *create(PyObject *obj, PySideWeakRefFunction func, void *userData)
|
||||||
|
|
||||||
|
if (Py_TYPE(PySideCallableObjectTypeF()) == 0)
|
||||||
|
{
|
||||||
|
- Py_TYPE(PySideCallableObjectTypeF()) = &PyType_Type;
|
||||||
|
+ Py_SET_TYPE(PySideCallableObjectTypeF(), &PyType_Type);
|
||||||
|
PyType_Ready(PySideCallableObjectTypeF());
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/sources/shiboken2/libshiboken/basewrapper.cpp b/sources/shiboken2/libshiboken/basewrapper.cpp
|
||||||
|
index 7ac7fad..e2eccd0 100644
|
||||||
|
--- a/sources/shiboken2/libshiboken/basewrapper.cpp
|
||||||
|
+++ b/sources/shiboken2/libshiboken/basewrapper.cpp
|
||||||
|
@@ -377,7 +377,7 @@ SbkObjectType *SbkObject_TypeF(void)
|
||||||
|
static PyTypeObject *type = nullptr;
|
||||||
|
if (!type) {
|
||||||
|
type = reinterpret_cast<PyTypeObject *>(SbkType_FromSpec(&SbkObject_Type_spec));
|
||||||
|
- Py_TYPE(type) = SbkObjectType_TypeF();
|
||||||
|
+ Py_SET_TYPE(type, SbkObjectType_TypeF());
|
||||||
|
Py_INCREF(Py_TYPE(type));
|
||||||
|
type->tp_weaklistoffset = offsetof(SbkObject, weakreflist);
|
||||||
|
type->tp_dictoffset = offsetof(SbkObject, ob_dict);
|
||||||
|
@@ -1160,7 +1160,7 @@ introduceWrapperType(PyObject *enclosingObject,
|
||||||
|
typeSpec->slots[0].pfunc = reinterpret_cast<void *>(baseType ? baseType : SbkObject_TypeF());
|
||||||
|
|
||||||
|
PyObject *heaptype = SbkType_FromSpecWithBases(typeSpec, baseTypes);
|
||||||
|
- Py_TYPE(heaptype) = SbkObjectType_TypeF();
|
||||||
|
+ Py_SET_TYPE(heaptype, SbkObjectType_TypeF());
|
||||||
|
Py_INCREF(Py_TYPE(heaptype));
|
||||||
|
auto *type = reinterpret_cast<SbkObjectType *>(heaptype);
|
||||||
|
#if PY_VERSION_HEX < 0x03000000
|
||||||
|
@@ -1525,6 +1525,7 @@ bool setCppPointer(SbkObject *sbkObj, PyTypeObject *desiredType, void *cptr)
|
||||||
|
bool isValid(PyObject *pyObj)
|
||||||
|
{
|
||||||
|
if (!pyObj || pyObj == Py_None
|
||||||
|
+ || PyType_Check(pyObj) != 0
|
||||||
|
|| Py_TYPE(Py_TYPE(pyObj)) != SbkObjectType_TypeF()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
diff --git a/sources/shiboken2/libshiboken/sbkenum.cpp b/sources/shiboken2/libshiboken/sbkenum.cpp
|
||||||
|
index 7dc73df..9459e42 100644
|
||||||
|
--- a/sources/shiboken2/libshiboken/sbkenum.cpp
|
||||||
|
+++ b/sources/shiboken2/libshiboken/sbkenum.cpp
|
||||||
|
@@ -754,7 +754,7 @@ newTypeWithName(const char *name,
|
||||||
|
PyTuple_SetItem(bases, 0, reinterpret_cast<PyObject *>(basetype));
|
||||||
|
auto *type = reinterpret_cast<PyTypeObject *>(SbkType_FromSpecWithBases(&newspec, bases));
|
||||||
|
PyErr_Print();
|
||||||
|
- Py_TYPE(type) = SbkEnumType_TypeF();
|
||||||
|
+ Py_SET_TYPE(type, SbkEnumType_TypeF());
|
||||||
|
|
||||||
|
auto *enumType = reinterpret_cast<SbkEnumType *>(type);
|
||||||
|
PepType_SETP(enumType)->cppName = cppName;
|
||||||
|
diff --git a/sources/shiboken2/libshiboken/sbkstring.cpp b/sources/shiboken2/libshiboken/sbkstring.cpp
|
||||||
|
index 077fb53..a9d451c 100644
|
||||||
|
--- a/sources/shiboken2/libshiboken/sbkstring.cpp
|
||||||
|
+++ b/sources/shiboken2/libshiboken/sbkstring.cpp
|
||||||
|
@@ -41,8 +41,14 @@
|
||||||
|
#include "sbkstaticstrings_p.h"
|
||||||
|
#include "autodecref.h"
|
||||||
|
|
||||||
|
-#include <vector>
|
||||||
|
-#include <unordered_set>
|
||||||
|
+#if PY_VERSION_HEX >= 0x030B0000 || defined(Py_LIMITED_API)
|
||||||
|
+# define USE_INTERN_STRINGS
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#ifndef USE_INTERN_STRINGS
|
||||||
|
+# include <vector>
|
||||||
|
+# include <unordered_set>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
namespace Shiboken
|
||||||
|
{
|
||||||
|
@@ -233,6 +239,13 @@ Py_ssize_t len(PyObject *str)
|
||||||
|
// PyObject *attr = PyObject_GetAttr(obj, name());
|
||||||
|
//
|
||||||
|
|
||||||
|
+#ifdef USE_INTERN_STRINGS
|
||||||
|
+PyObject *createStaticString(const char *str)
|
||||||
|
+{
|
||||||
|
+ return PyUnicode_InternFromString(str);
|
||||||
|
+}
|
||||||
|
+#else
|
||||||
|
+
|
||||||
|
using StaticStrings = std::unordered_set<PyObject *>;
|
||||||
|
|
||||||
|
static void finalizeStaticStrings(); // forward
|
||||||
|
@@ -283,6 +296,8 @@ PyObject *createStaticString(const char *str)
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#endif // !USE_INTERN_STRINGS
|
||||||
|
+
|
||||||
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// PYSIDE-1019: Helper function for snake_case vs. camelCase names
|
Loading…
Reference in a new issue