diff options
author | davidovski <david@davidovski.xyz> | 2023-02-02 14:10:02 +0000 |
---|---|---|
committer | davidovski <david@davidovski.xyz> | 2023-02-02 14:10:02 +0000 |
commit | f29d569cd33a73da5ad675f43a34ad53c5cc9bc6 (patch) | |
tree | 76fe6267f8307e7630fc6f53ff99a9767ad40de0 /skip/python-pyside2 | |
parent | 05d004dfe0c9a9d898fac8a4a0292ca2a74ca391 (diff) |
Work
Diffstat (limited to 'skip/python-pyside2')
-rw-r--r-- | skip/python-pyside2/python-3.10.patch | 119 | ||||
-rw-r--r-- | skip/python-pyside2/python-pyside2.xibuild | 39 |
2 files changed, 158 insertions, 0 deletions
diff --git a/skip/python-pyside2/python-3.10.patch b/skip/python-pyside2/python-3.10.patch new file mode 100644 index 0000000..0e8b0f2 --- /dev/null +++ b/skip/python-pyside2/python-3.10.patch @@ -0,0 +1,119 @@ +# Based on: +# https://github.com/pyside/pyside-setup/commit/81e9cff884d6 +# https://github.com/pyside/pyside-setup/commit/2530cb3f165a + +diff -upr pyside-setup-opensource-src-5.15.2.orig/build_scripts/config.py pyside-setup-opensource-src-5.15.2/build_scripts/config.py +--- pyside-setup-opensource-src-5.15.2.orig/build_scripts/config.py 2020-11-11 14:51:30.000000000 +0200 ++++ pyside-setup-opensource-src-5.15.2/build_scripts/config.py 2021-12-01 15:15:52.323808457 +0200 +@@ -93,6 +93,7 @@ class Config(object): + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', ++ 'Programming Language :: Python :: 3.10', + ] + + self.setup_script_dir = None +diff -upr pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/libshiboken/pep384impl.cpp pyside-setup-opensource-src-5.15.2/sources/shiboken2/libshiboken/pep384impl.cpp +--- pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/libshiboken/pep384impl.cpp 2020-11-11 14:51:30.000000000 +0200 ++++ pyside-setup-opensource-src-5.15.2/sources/shiboken2/libshiboken/pep384impl.cpp 2021-12-01 15:17:21.444888977 +0200 +@@ -751,14 +751,14 @@ _Pep_PrivateMangle(PyObject *self, PyObj + #endif // IS_PY2 + Shiboken::AutoDecRef privateobj(PyObject_GetAttr( + reinterpret_cast<PyObject *>(Py_TYPE(self)), Shiboken::PyMagicName::name())); +-#ifndef Py_LIMITED_API +- return _Py_Mangle(privateobj, name); +-#else +- // For some reason, _Py_Mangle is not in the Limited API. Why? +- size_t plen = PyUnicode_GET_LENGTH(privateobj); ++ ++ // PYSIDE-1436: _Py_Mangle is no longer exposed; implement it always. ++ // The rest of this function is our own implementation of _Py_Mangle. ++ // Please compare the original function in compile.c . ++ size_t plen = PyUnicode_GET_LENGTH(privateobj.object()); + /* Strip leading underscores from class name */ + size_t ipriv = 0; +- while (PyUnicode_READ_CHAR(privateobj, ipriv) == '_') ++ while (PyUnicode_READ_CHAR(privateobj.object(), ipriv) == '_') + ipriv++; + if (ipriv == plen) { + Py_INCREF(name); +@@ -787,7 +787,6 @@ _Pep_PrivateMangle(PyObject *self, PyObj + if (amount > big_stack) + free(resbuf); + return result; +-#endif // else Py_LIMITED_API + } + + /***************************************************************************** +diff -upr pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/libshiboken/pep384impl.h pyside-setup-opensource-src-5.15.2/sources/shiboken2/libshiboken/pep384impl.h +--- pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/libshiboken/pep384impl.h 2020-11-11 14:51:30.000000000 +0200 ++++ pyside-setup-opensource-src-5.15.2/sources/shiboken2/libshiboken/pep384impl.h 2021-12-01 15:13:58.899521842 +0200 +@@ -40,6 +40,11 @@ + #ifndef PEP384IMPL_H + #define PEP384IMPL_H + ++// PYSIDE-1436: Adapt to Python 3.10 ++#if PY_VERSION_HEX < 0x030900A4 ++# define Py_SET_REFCNT(obj, refcnt) ((Py_REFCNT(obj) = (refcnt)), (void)0) ++#endif ++ + extern "C" + { + +@@ -327,7 +332,7 @@ LIBSHIBOKEN_API PyObject *PyRun_String(c + // But this is no problem as we check it's validity for every version. + + #define PYTHON_BUFFER_VERSION_COMPATIBLE (PY_VERSION_HEX >= 0x03030000 && \ +- PY_VERSION_HEX < 0x0309FFFF) ++ PY_VERSION_HEX < 0x030AFFFF) + #if !PYTHON_BUFFER_VERSION_COMPATIBLE + # error Please check the buffer compatibility for this python version! + #endif +diff -upr pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/libshiboken/sbkstring.cpp pyside-setup-opensource-src-5.15.2/sources/shiboken2/libshiboken/sbkstring.cpp +--- pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/libshiboken/sbkstring.cpp 2020-11-11 14:51:30.000000000 +0200 ++++ pyside-setup-opensource-src-5.15.2/sources/shiboken2/libshiboken/sbkstring.cpp 2021-12-01 15:14:47.703201473 +0200 +@@ -247,7 +247,7 @@ static void finalizeStaticStrings() + { + auto &set = staticStrings(); + for (PyObject *ob : set) { +- Py_REFCNT(ob) = 1; ++ Py_SET_REFCNT(ob, 1); + Py_DECREF(ob); + } + set.clear(); +diff -upr pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/mapping.py pyside-setup-opensource-src-5.15.2/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/mapping.py +--- pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/mapping.py 2020-11-11 14:51:30.000000000 +0200 ++++ pyside-setup-opensource-src-5.15.2/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/mapping.py 2021-12-01 15:15:14.560100869 +0200 +@@ -300,6 +300,7 @@ type_map.update({ + "zero(object)": None, + "zero(str)": "", + "zero(typing.Any)": None, ++ "zero(Any)": None, + }) + + type_map.update({ +diff -upr pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/parser.py pyside-setup-opensource-src-5.15.2/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/parser.py +--- pyside-setup-opensource-src-5.15.2.orig/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/parser.py 2020-11-11 14:51:30.000000000 +0200 ++++ pyside-setup-opensource-src-5.15.2/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/parser.py 2021-12-01 15:25:43.267843740 +0200 +@@ -43,10 +43,11 @@ import sys + import re + import warnings + import types ++import typing + import keyword + import functools + from shibokensupport.signature.mapping import (type_map, update_mapping, +- namespace, typing, _NotCalled, ResultVariable, ArrayLikeVariable) ++ namespace, _NotCalled, ResultVariable, ArrayLikeVariable) + from shibokensupport.signature.lib.tool import (SimpleNamespace, + build_brace_pattern) + +@@ -222,7 +223,7 @@ def _resolve_arraytype(thing, line): + def to_string(thing): + if isinstance(thing, str): + return thing +- if hasattr(thing, "__name__"): ++ if hasattr(thing, "__name__") and thing.__module__ != "typing": + dot = "." in str(thing) + name = get_name(thing) + return thing.__module__ + "." + name if dot else name diff --git a/skip/python-pyside2/python-pyside2.xibuild b/skip/python-pyside2/python-pyside2.xibuild new file mode 100644 index 0000000..d2652e8 --- /dev/null +++ b/skip/python-pyside2/python-pyside2.xibuild @@ -0,0 +1,39 @@ +#!/bin/sh + +NAME="python-pyside2" +DESC="Enables the use of Qt5 APIs in Python applications" + +MAKEDEPS=" cmake libshiboken2 qt5-qt3d qt5-qtbase qt5-qtcharts qt5-qtdatavis3d qt5-qtdeclarative qt5-qtlocation qt5-qtmultimedia qt5-qtquickcontrols2 qt5-qtremoteobjects qt5-qtscript qt5-qtscxml qt5-qtsensors qt5-qtserialport qt5-qtspeech qt5-qtsvg qt5-qttools qt5-qtwebchannel qt5-qtwebsockets qt5-qtx11extras qt5-qtxmlpatterns shiboken2 py3-setuptools qt5-qtwebengine" + +PKG_VER=5.15.2 +SOURCE="https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-$PKG_VER-src/pyside-setup-opensource-src-$PKG_VER.tar.xz" + +ADDITIONAL=" +python-3.10.patch +" + +prepare () { + apply_patches +} + +build() { + cmake -B build \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_SHARED_LIBS=True \ + -DCMAKE_BUILD_TYPE=None \ + -DPYTHON_EXECUTABLE=/usr/bin/python3 \ + -DBUILD_TESTS=OFF \ + sources/pyside2 + cmake --build build +} + +package() { + DESTDIR="$PKG_DEST" cmake --install build + + # Install egg info + export PATH="/usr/lib/qt5/bin:$PATH" + python3 setup.py egg_info --build-type=pyside2 + pythonpath="$(python3 -c "from sysconfig import get_path; print(get_path('platlib'))")" + cp -r PySide2.egg-info "$PKG_DEST/$pythonpath" +} + |