From: Graham Inggs Date: Sat, 25 Jan 2025 16:33:38 +0000 (+0000) Subject: Import pyside2_5.15.16-3.1.debian.tar.xz X-Git-Tag: archive/raspbian/5.15.16-3.1+rpi1^2~22^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=12e6745b377748e95b19a7c7f6055e4f1de05e25;p=pyside2.git Import pyside2_5.15.16-3.1.debian.tar.xz [dgit import tarball pyside2 5.15.16-3.1 pyside2_5.15.16-3.1.debian.tar.xz] --- 12e6745b377748e95b19a7c7f6055e4f1de05e25 diff --git a/changelog b/changelog new file mode 100644 index 0000000..c49b8cc --- /dev/null +++ b/changelog @@ -0,0 +1,535 @@ +pyside2 (5.15.16-3.1) unstable; urgency=medium + + * Non-maintainer upload + * Also make the tests non-fatal on ppc64el, in order to + unblock python3.13-default transition, see #1092890 + + -- Graham Inggs Sat, 25 Jan 2025 16:33:38 +0000 + +pyside2 (5.15.16-3) unstable; urgency=medium + + * Team upload. + * Drop 20 unused binary packages, as part of Qt 5 removal process. + - Drop Modify-sendCommand-signatures.patch, no longer needed. + + -- Dmitry Shachnev Wed, 15 Jan 2025 22:09:58 +0300 + +pyside2 (5.15.16-2) unstable; urgency=medium + + * Team upload. + * Backport upstream patches to support Python 3.13 (closes: #1091430). + * Use public version of PyLong_AsInt for Python >= 3.13. + + -- Dmitry Shachnev Sat, 04 Jan 2025 14:54:50 +0300 + +pyside2 (5.15.16-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + * Drop Fix-tests-sample_privatector-sample_privatedtor-failing-w.patch, + included in the new release. + + -- Dmitry Shachnev Sun, 17 Nov 2024 14:20:58 +0300 + +pyside2 (5.15.14-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + * Drop patches, included in the new release: + - shiboken2-Fix-build-with-clang-16.patch + - shiboken2-Fail-template-test-instead-of-crashing.patch + * Refresh and rebase other patches. + + -- Dmitry Shachnev Tue, 25 Jun 2024 23:47:03 +0300 + +pyside2 (5.15.13-1) unstable; urgency=medium + + * Team upload. + * Acknowledge NMU, thanks Steve Langasek! + * New upstream release. + * Rebase patches for the new release. + * Blacklist smart_pointer test (closes: #1068078). + * Bump Standards-Version to 4.7.0, no changes needed. + + -- Dmitry Shachnev Sun, 14 Apr 2024 23:48:11 +0300 + +pyside2 (5.15.12-6.1) unstable; urgency=medium + + * Non-maintainer upload. + * Rename libraries for 64-bit time_t transition. Closes: #1064292 + + -- Steve Langasek Sat, 02 Mar 2024 00:27:01 +0000 + +pyside2 (5.15.12-6) unstable; urgency=medium + + * Team upload. + * Build with the default LLVM version (16), to fix dep-wait on mips64el. + + -- Dmitry Shachnev Thu, 08 Feb 2024 11:13:11 +0300 + +pyside2 (5.15.12-5) unstable; urgency=medium + + * Team upload. + * Backport 9 upstream patches for LLVM ≥ 16 support. + * Modify sendCommand signatures to use 0 as default value. + * Build with llvm-toolchain-17 (closes: #1061206). + + -- Dmitry Shachnev Sun, 04 Feb 2024 17:20:57 +0300 + +pyside2 (5.15.12-4) unstable; urgency=medium + + * Team upload. + * Make the tests non-fatal on mips64el (see #1061679). + + -- Dmitry Shachnev Sun, 28 Jan 2024 19:34:21 +0300 + +pyside2 (5.15.12-3) unstable; urgency=medium + + * Team upload. + * Backport upstream change to stop using imp module. + * Do not use patchelf to change RPATH, not needed in Debian. + + -- Dmitry Shachnev Thu, 25 Jan 2024 15:19:52 +0300 + +pyside2 (5.15.12-2) unstable; urgency=medium + + * Team upload. + * Backport upstream patches to support Python 3.12. + * Blacklist registry::existence_test. It was never actually run, but + Python 3.12 started considering it a failure when all tests are skipped. + * Build with bundled patchelf on mips64el again. + - Restore update-patchelf.patch which was removed in 5.15.2-1~exp1. + + -- Dmitry Shachnev Wed, 24 Jan 2024 23:46:56 +0300 + +pyside2 (5.15.12-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + * Drop make-wheels-compatible-with-Python-3.11.patch, included in the + new release. + * Fix a bug in test_install_python3.sh because of which the test did + not do anything. Thanks Stuart Prescott! + + -- Dmitry Shachnev Sat, 20 Jan 2024 21:52:44 +0300 + +pyside2 (5.15.11-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + * Drop patches, included in the new release: + - libshiboken-Fix-a-crash-in-Shiboken-Object-isValid.patch + - Fix-usage-of-Py_TYPE-for-Python-3.11.patch + - libshiboken-Fix-crashes-with-static-strings-in-Python-3.11.patch + - Fix-Property-GC-tracking-for-Python-3.11.patch + - Fix-GLES-builds.patch + * Refresh other patches. + + -- Dmitry Shachnev Sun, 15 Oct 2023 23:04:58 +0300 + +pyside2 (5.15.10-4) unstable; urgency=medium + + * Team upload. + * Build with LLVM 15 for now (closes: #1051886). + * Backport upstream patch to fix test failures with Python 3.11.5. + * Add a debian/clean file (closes: #1047480). + + -- Dmitry Shachnev Sun, 01 Oct 2023 23:43:44 +0300 + +pyside2 (5.15.10-3) unstable; urgency=medium + + * Team upload. + * Stop building the Qt WebEngine package on mipsel (closes: #1041253). + + -- Dmitry Shachnev Sun, 16 Jul 2023 17:49:14 +0300 + +pyside2 (5.15.10-2) unstable; urgency=medium + + * Team upload. + * Regenerate debian/tests/control using debian/tests/control.gen. + * Enable the Qt WebEngine packages on mips64el. + * Enable the Qt Data Visualization package on all architectures. + * Test WebEngine only on architectures where it is available. + + -- Dmitry Shachnev Wed, 28 Jun 2023 00:02:49 +0300 + +pyside2 (5.15.10-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + * Drop patches, no longer needed after upstream changes: + - Revert-removal-of-version-check.patch + - importlib-machinery.patch + * Refresh other patches. + + -- Dmitry Shachnev Sun, 18 Jun 2023 19:12:26 +0300 + +pyside2 (5.15.8-2) unstable; urgency=medium + + * Team upload. + * Backport upstream patch to fix GLES builds. + + -- Dmitry Shachnev Mon, 09 Jan 2023 00:06:53 +0400 + +pyside2 (5.15.8-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + * Drop patches, included in the new release: + - fix-reuse-build.patch + - qApp-fix-flag-handling.patch + - py3.10-prep-reset-the-type-cache-after-feature-switching.patch + - py3.10-prep-Fix-parser.py-for-changed-typing-module.patch + - py3.10-prep-Finally-support-Python-3.10.patch + - py3.10-prep-Fix-a-very-old-refcounting-error-in-time_test.patch + - shiboken6-Adapt-to-LLVM-12.01.patch + * Refresh debian/patches/blacklist-failing-tests.patch. + * Backport 7 upstream patches to support Python 3.11 (closes: #1027950). + * Remove dh-exec (debhelper now supports substitutions natively). + * Revert a change from 5.15.8 which broke build without limited API. + * Add a patch to fix AttributeError in signature_bootstrap.py. + * Fix redundant-globbing-patterns Lintian warning. + * Bump Standards-Version to 4.6.2, no changes needed. + + -- Dmitry Shachnev Sat, 07 Jan 2023 17:38:12 +0400 + +pyside2 (5.15.2-2.3) unstable; urgency=medium + + * Call "py3versions -d" instead of "py3versions -r" in tests. + + -- Christian Marillat Fri, 17 Jun 2022 17:49:37 +0200 + +pyside2 (5.15.2-2.2) unstable; urgency=medium + + * Don't test with python3-all but python3 as only the current python3 is + supported. (Closes:# 1012878) + + -- Christian Marillat Thu, 16 Jun 2022 10:57:23 +0200 + +pyside2 (5.15.2-2.1) unstable; urgency=medium + + * Non-maintainer upload. + * Should always Build-Depends on python3-dev but not on python3-all-dev. + This package is unable to manage two python versions at the same time. + (Closes: #1008849) + + -- Christian Marillat Sun, 12 Jun 2022 18:30:03 +0200 + +pyside2 (5.15.2-2) unstable; urgency=medium + + * Backport upstream patches for Python 3.10 support (closes: #999369). + * Backport upstream patch to adapt for LLVM 12.01. + * Run build-time tests with all supported Python versions. + - Add a patch to make the tests find the matching build directory. + + -- Dmitry Shachnev Tue, 16 Nov 2021 12:16:14 +0300 + +pyside2 (5.15.2-1) unstable; urgency=medium + + * Team upload. + * Add missing dependencies to make the autopkgtest pass again. + * Backport proposed upstream patch to fix qApp flags handling. + - Unblacklist QtWidgets::bug_307 test, it should not fail anymore. + + -- Dmitry Shachnev Sat, 26 Dec 2020 11:39:45 +0300 + +pyside2 (5.15.2-1~exp2) experimental; urgency=medium + + * Add packages for Qt3DExtras and Qt3DAnimation + * Add update-sip-import.patch (Closes: #966041) + + -- Kurt Kremitzki Sun, 20 Dec 2020 11:32:30 -0600 + +pyside2 (5.15.2-1~exp1) experimental; urgency=medium + + [ Dmitry Shachnev ] + * New upstream release. + * Drop python3.9.patch, included in the new release. + * Rebase other patches. + * Backport upstream changes to pass --reuse-build only to commands that + support it. + * Build with system patchelf on all architectures. It is now available on + mipsel and mips64el too. + - Drop update-patchelf.patch, not needed with system patchelf. + * Continue building HTML documentation (upstream defaults to qch now). + * Replace Qt Quick Controls 1 build-dependency with Qt Quick Controls 2. + * Build with default llvm version (closes: #974784). + * Revert addition of “Multi-Arch: same” from the previous upload. + libpyside2-py3-5.15 is not multi-arch ready because the list of built + modules (in _config.py) may be different on different architectures. + * Bump Qt build-dependencies to 5.15 (as ftbfs-old-qt.patch was dropped). + * Minor debian/rules cleanup. + + [ Alexander Volkov ] + * Add python3-pyside2.qt{quickcontrols2,remoteobjects,serialport} packages. + + -- Kurt Kremitzki Sat, 19 Dec 2020 14:26:09 -0600 + +pyside2 (5.15.0-6) unstable; urgency=medium + + * Team upload. + + [ Debian Janitor ] + * Apply multi-arch hints. + + python-pyside2-doc, shiboken2-doc: Add Multi-Arch: foreign. + + libshiboken2-dev, python3-pyside2.qt*: Add Multi-Arch: same. + + [ Dmitry Shachnev ] + * Drop ftbfs-old-qt.patch. Not needed since Debian has Qt 5.15. + * Stop hardcoding py3.8 in debian/shiboken2-doc.docs (closes: #976900). + * Blacklist QtWidgets::bug_307 test for now (closes: #976516). + + -- Dmitry Shachnev Mon, 14 Dec 2020 20:31:39 +0300 + +pyside2 (5.15.0-5) unstable; urgency=medium + + * Team upload. + * Run tests with QSG_NO_DEPTH_BUFFER=1 on mips64el (see #868745). + + -- Dmitry Shachnev Mon, 19 Oct 2020 21:50:57 +0300 + +pyside2 (5.15.0-4) unstable; urgency=medium + + * Team upload. + * Drop preload-libglx-mesa.patch, not needed with glibc ≥ 2.31-1. + * Backport upstream patch to add support for Python 3.9 (closes: #972194). + + -- Dmitry Shachnev Thu, 15 Oct 2020 20:06:52 +0300 + +pyside2 (5.15.0-3) unstable; urgency=medium + + [ Dmitry Shachnev ] + * Bump Qt build-dependencies to 5.14. As most Qt packages have a + Build-Depends-Package field in their symbols files, dpkg-shlibdeps will + use that information and generate a runtime dependency on a new enough + Qt version (closes: #963983). + + [ Kurt Kremitzki ] + * Remove Freexian folks and add myself to Uploaders + * Correct libshiboken2 CMake include path (Closes: #964201) + + -- Kurt Kremitzki Sun, 05 Jul 2020 05:13:51 -0500 + +pyside2 (5.15.0-2) unstable; urgency=medium + + * Team upload. + * Preload libGLX_mesa.so.0 in web_engine_initialize.py, to work around + test failure on arm64 (closes: #963709). + + -- Dmitry Shachnev Mon, 29 Jun 2020 15:26:26 +0300 + +pyside2 (5.15.0-1) unstable; urgency=medium + + [ Gianfranco Costamagna ] + * Team upload + * Upload to unstable + * Drop trailing spaces from changelog file + * Bump compat level to 13 + * Bump std-version to 4.5.0 + * Add R^3: no + + -- Kurt Kremitzki Thu, 25 Jun 2020 21:15:20 -0500 + +pyside2 (5.15.0-1~exp1) experimental; urgency=medium + + [ Steve Langasek ] + * Add test dependency on python3-all to fix autopkgtests (Closes: #950127) + + [ Gianfranco Costamagna ] + * Add python3-distro needed for tests. + * Drop "uic" and "rcc" from control file, removed upstream (LP: #1874095) + * Add missing Breaks/Replaces for upgrading from previous version + (Closes: #949339) + * Drop pyside2uic tests, dropped upstream + * New upstream version 5.15.0 (Closes: #950126, Closes: #960008) + * Drop old Fix-build-with-Qt-5.12, addressed upstream + * Add patch to fix build failures with old qt implementation + * Refresh patches + * Bump copyright years + * Bump soname to 15 + * Drop manpage, removed upstream + * Use llvm-9 to build, fixing a build failure + + -- Gianfranco Costamagna Sat, 06 Jun 2020 14:48:45 +0200 + +pyside2 (5.14.0-1~exp1) experimental; urgency=medium + + [ Raphaël Hertzog ] + * Team upload + * New upstream version 5.14.0. Closes: #945376, #947101 + * Update patches (3 dropped, one new for Qt 5.12 compat) + * Use --ignore-git option instead of custom patch + * Update package names for version 5.14 + * Drop python3-pyside2uic, there's no such library anymore + * Re-enable tests failing due to broken XDG_RUNTIME_DIR + * Drop package prefix from lintian overrides + * Drop removed file from debian/copyright + * Fix arch-all build on 32 bit arches. Closes: #948764 + Thanks to peter green for the patch. + + [ Kurt Kremitzki ] + * Add CMake sed for pyside2 include path + * Add CMake sed for multi-Python version support + + -- Kurt Kremitzki Mon, 13 Jan 2020 00:10:14 -0600 + +pyside2 (5.13.2-2.2) unstable; urgency=medium + + * Non-maintainer upload + * Update cmake paths for new locations + + -- Gianfranco Costamagna Sun, 29 Dec 2019 22:44:55 +0100 + +pyside2 (5.13.2-2.1) unstable; urgency=medium + + * Non-maintainer upload + * Add an explicit shiboken dependency to fix FTBFS for reverse-dependencies + cmake based, who expect it being installed (Closes: #946082) + - thanks Tommaso Colombo for the patch + + -- Gianfranco Costamagna Tue, 24 Dec 2019 09:22:39 +0100 + +pyside2 (5.13.2-2) unstable; urgency=medium + + * Do not build-depends on libqt5datavisualization5-dev on mipsel and + mpis64el (Closes: #945174) and limit .*qtdatavisualization binary package + to arch: amd64 arm64 armel armhf i386 ppc64el s390x + * Limit python3-pyside2.qtwebengine to amd64 arm64 armhf i386 mipsel + (qtwebengine5-dev is not available for other architectures) + * Add a patch to blacklist failing tests + + -- Sophie Brun Fri, 22 Nov 2019 10:28:55 +0100 + +pyside2 (5.13.2-1) unstable; urgency=medium + + [ Ondřej Nový ] + * Remove almost all of Python 2 binary packages (no rdeps): + - python-pyside2.qt3dcore + - python-pyside2.qt3dinput + - python-pyside2.qt3dlogic + - python-pyside2.qt3drender + - python-pyside2.qtcharts + - python-pyside2.qtconcurrent + - python-pyside2.qthelp + - python-pyside2.qtlocation + - python-pyside2.qtmultimedia + - python-pyside2.qtmultimediawidgets + - python-pyside2.qtnetwork + - python-pyside2.qtpositioning + - python-pyside2.qtprintsupport + - python-pyside2.qtqml + - python-pyside2.qtquick + - python-pyside2.qtquickwidgets + - python-pyside2.qtscript + - python-pyside2.qtscripttools + - python-pyside2.qtsensors + - python-pyside2.qtsql + - python-pyside2.qttest + - python-pyside2.qttexttospeech + - python-pyside2.qtwebchannel + - python-pyside2.qtwebenginecore + - python-pyside2.qtwebenginewidgets + - python-pyside2.qtwebsockets + - python-pyside2.qtx11extras + - python-pyside2.qtxmlpatterns + + [ Sophie Brun ] + * Update debian/watch + * New upstream version 5.13.2 + * Refresh patches and remove obsolete patches + * Add missing build-deps + * Force pybuild to use distutils, not Cmake + * Replace deprecated upstream option --jobs with --parallel + * Update documentation build + * Add a patch to support Python 3.8 (Closes: #942753) + * Add new binary packages + - python3-pyside2.qtdatavisualization + - python3-pyside2.qtopenglfunctions + - python3-pyside2.qtscxml + - python3-pyside2.qtwebengine + * Update list of built files in debian/rules + * Switch pyside2-tools to Python3 + * Switch to debhelper-compat 12 + * Bump Standards-Version to 4.4.1 (no changes) + * Update installation of python3 module shiboken2 + * Add autopkgtest + * Add missing Conflicts/Replaces and Provides for libpyside2-* + * Add a patch to use python3 in pyside2-tools + * Remove disable failing test in debian/rules + * Add missing depends (Closes: #943709) + * Run the tests and add missing build-deps for tests + * Remove useless build-dep pyqt5-dev + + [ Raphaël Hertzog ] + * Drop remaining python2 parts. + + -- Sophie Brun Fri, 15 Nov 2019 10:15:57 +0100 + +pyside2 (5.11.2-3) unstable; urgency=medium + + [ Sébastien Delafond ] + * Do not build-depends on patchelf on mips and mipsel (Closes: #917199) + + -- Sebastien Delafond Wed, 16 Jan 2019 16:30:16 +0100 + +pyside2 (5.11.2-2) unstable; urgency=medium + + [ Sébastien Delafond ] + * Add myself to uploaders + * Do not build-depends on patchelf on mips64el (Closes: #917200) + + -- Sebastien Delafond Thu, 10 Jan 2019 09:21:43 +0100 + +pyside2 (5.11.2-1) unstable; urgency=medium + + [ Raphaël Hertzog ] + * New upstream version 5.11.2 + * Remove patches merged upstream + * Merge fix-PAGESIZE.patch into update-patchelf.patch + * Add patchelf to Build-Depends + * Bump Standards-Version to 4.2.1 + + [ Frédéric Bonnard ] + * Fix hardcoded PAGESIZE for patchelf.cc. Closes: #909265 + + -- Raphaël Hertzog Fri, 28 Sep 2018 15:09:34 +0200 + +pyside2 (5.11.0-4) unstable; urgency=medium + + * Use default llvm-dev and libclang-dev (Closes: #906168) + * Add Cmake config files for Python3 (Closes: #906020) + * Fix debian/libpyside2-5.11.install for triplets that are not *-linux-gnu + (thanks to Adrian Bunk) + * Add an upstream patch to fix build on armel/armhf + + -- Sophie Brun Mon, 27 Aug 2018 12:53:29 +0200 + +pyside2 (5.11.0-3) unstable; urgency=medium + + * More fixes for builds building only arch any or only arch all. + * Really fix the build with dpkg-buildpackage -A. + + -- Raphaël Hertzog Tue, 31 Jul 2018 21:33:04 +0200 + +pyside2 (5.11.0-2) unstable; urgency=medium + + [ Raphaël Hertzog ] + * Fix build with dpkg-buildpackage -A. Closes: #904892 + * Fix python-pyside2 dependencies. Replace python-pyside2.widgets by + python-pyside2.qtwidgets. + + [ Sophie Brun ] + * Drop useless "Testsuite: autopkgtest-pkg-python". + * Enable parallel build. + * Limit QtWebEngine packages to amd64 arm64 armhf i386 mipsel. + * Remove unused lintian-overrides. + * Use python2 only in pyside2-tools. + * Remove big metapackages python-pyside2 and python3-pyside2. + + -- Raphaël Hertzog Tue, 31 Jul 2018 16:37:40 +0200 + +pyside2 (5.11.0-1) unstable; urgency=medium + + * Initial release (Closes: #877871) + + -- Sophie Brun Thu, 26 Jul 2018 17:47:45 +0200 diff --git a/clean b/clean new file mode 100644 index 0000000..007fd64 --- /dev/null +++ b/clean @@ -0,0 +1,6 @@ +build_history/2*/ +pyside3_build/ +pyside3_install/ +sources/pyside2/doc/pyside-config.qdocconf +sources/pyside2/doc/pyside.qdocconf.in +sources/pyside2/doc/qtmodules/pyside-*.qdocconf diff --git a/control b/control new file mode 100644 index 0000000..c1dd970 --- /dev/null +++ b/control @@ -0,0 +1,451 @@ +Source: pyside2 +Section: python +Priority: optional +Maintainer: Debian Qt/KDE Maintainers +Uploaders: Kurt Kremitzki +Build-Depends: chrpath, + cmake (>= 3.1), + debhelper-compat (= 13), + dh-python, + dpkg-dev (>= 1.22.5), + graphviz, + libclang-dev, + libqt5opengl5-dev (>= 5.15), + libqt5svg5-dev (>= 5.15), + libqt5webchannel5-dev (>= 5.15), + libqt5websockets5-dev (>= 5.15), + libqt5xmlpatterns5-dev (>= 5.15), + libxml2-dev, + libxslt1-dev, + llvm-dev, + python3-dev, + python3-distro, + python3-setuptools, + python3-sphinx, + python3-sphinx-rtd-theme, + python3-wheel, + qml-module-qtquick-controls2 (>= 5.15), + qml-module-qtquick-layouts (>= 5.15), + qml-module-qtquick2 (>= 5.15), + qt5-qmake (>= 5.15), + qt5-qmake-bin (>= 5.15), + qtbase5-dev (>= 5.15), + qtbase5-private-dev (>= 5.15), + qtchooser, + qtdeclarative5-dev (>= 5.15), + qtdeclarative5-private-dev (>= 5.15), + qtmultimedia5-dev (>= 5.15), + qttools5-dev (>= 5.15), + qtwebengine5-dev (>= 5.15) [amd64 arm64 armhf i386 mips64el], + xauth, + xvfb +Rules-Requires-Root: no +Standards-Version: 4.7.0 +Homepage: https://wiki.qt.io/Qt_for_Python +Vcs-Git: https://salsa.debian.org/qt-kde-team/qt/pyside2.git +Vcs-Browser: https://salsa.debian.org/qt-kde-team/qt/pyside2 + +Package: python-pyside2-doc +Architecture: all +Section: doc +Depends: ${misc:Depends}, ${sphinxdoc:Depends} +Multi-Arch: foreign +Description: Python bindings for Qt5 (common documentation) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains the common documentation package. + +Package: libpyside2-py3-5.15t64 +Breaks: libpyside2-py3-5.15 (<< ${source:Version}) +Section: libs +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends} +Conflicts: libpyside2-py3-5.11, libpyside2-py3-5.13, libpyside2-py3-5.14 +Replaces: libpyside2-py3-5.15, libpyside2-py3-5.11, libpyside2-py3-5.13, libpyside2-py3-5.14 +Provides: ${t64:Provides}, libpyside2-py3 +Description: Python 3 bindings for Qt5 (base files) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python3 base file used by all modules. + +Package: libpyside2-dev +Section: libdevel +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends}, libpyside2-py3-5.15t64 (= ${binary:Version}) +Description: Python bindings for Qt5 (development files) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package provides the development headers for the libpyside2 library. + +Package: python3-pyside2.qtcore +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends} +Suggests: python-pyside2-doc +Description: Python bindings for Qt5 core module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtCore module. + +Package: shiboken2 +Section: devel +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends} +Description: CPython bindings generator for C++ libraries + Shiboken2 is a bindings generator for C++ libraries that outputs CPython + source code. It collects information from library headers, and then + merges modifications and handwritten code defined in the typesystem + description. + . + Shiboken2 is the binding generator used to create the PySide2 bindings. + +Package: libshiboken2-py3-5.15t64 +Breaks: libshiboken2-py3-5.15 (<< ${source:Version}) +Section: libs +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends} +Conflicts: libshiboken2-py3-5.11, libshiboken2-py3-5.13, libshiboken2-py3-5.14 +Replaces: libshiboken2-py3-5.15, libshiboken2-py3-5.11, libshiboken2-py3-5.13, libshiboken2-py3-5.14 +Provides: ${t64:Provides}, libshiboken2-py3 +Description: CPython bindings generator for C++ libraries (Python3 shared library) + Shiboken2 is a bindings generator for C++ libraries that outputs CPython + source code. It collects information from library headers, and then + merges modifications and handwritten code defined in the typesystem + description. + . + Shiboken2 is the binding generator used to create the PySide2 bindings. + . + This package contains the shared Python 3 library used by shiboken2. + +Package: libshiboken2-dev +Section: libdevel +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends}, + libshiboken2-py3-5.15t64 (= ${binary:Version}), shiboken2 (= ${binary:Version}), python3-dev +Description: CPython bindings generator for C++ libraries (development files) + Shiboken2 is a bindings generator for C++ libraries that outputs CPython + source code. It collects information from library headers, and then + merges modifications and handwritten code defined in the typesystem + description. + . + Shiboken2 is the binding generator used to create the PySide2 bindings. + . + This package provides the development headers for the libshiboken2 library. + +Package: shiboken2-doc +Architecture: all +Section: doc +Depends: ${misc:Depends}, ${sphinxdoc:Depends} +Multi-Arch: foreign +Description: CPython bindings generator for C++ libraries (common documentation) + Shiboken2 is a bindings generator for C++ libraries that outputs CPython + source code. It collects information from library headers, and then + merges modifications and handwritten code defined in the typesystem + description. + . + Shiboken2 is the binding generator used to create the PySide2 bindings. + . + This package contains the common documentation. + +Package: pyside2-tools +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends}, ${python3:Depends}, python3-pyside2.qtcore +Description: development tools for PySide2 (lupdate) + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + PySide2 ships Python bindings for the Qt5 framework. This package ships + the following accompanying tools: + * pyside2-lupdate - update Qt Linguist translation files for PySide + +Package: python3-pyside2.qtwidgets +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore, python3-pyside2.qtgui +Description: Python bindings for Qt5 Widgets module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtWidgets module. + +Package: python3-pyside2.qtquick +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore, python3-pyside2.qtnetwork, python3-pyside2.qtqml, + python3-pyside2.qtgui +Description: Python bindings for Qt5 Quick module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtQuick module. + +Package: python3-pyside2.qtqml +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore, python3-pyside2.qtgui, python3-pyside2.qtnetwork +Description: Python bindings for Qt5 Qml module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtQml module. + +Package: python3-pyside2.qtwebenginecore +Architecture: amd64 arm64 armhf i386 mips64el +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore, python3-pyside2.qtnetwork +Description: Python bindings for Qt5 WebEngineCore module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtWebEngineCore module. + +Package: python3-pyside2.qthelp +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtwidgets, python3-pyside2.qtcore, python3-pyside2.qtgui +Description: Python bindings for Qt5 Help module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtHelp module. + +Package: python3-pyside2.qtnetwork +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore +Description: Python bindings for Qt5 Network module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtNetwork module. + +Package: python3-pyside2.qtmultimediawidgets +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore, python3-pyside2.qtgui, python3-pyside2.qtnetwork, + python3-pyside2.qtwidgets, python3-pyside2.qtmultimedia +Description: Python bindings for Qt5 MultimediaWidgets module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtMultimediaWidgets module. + +Package: python3-pyside2.qtmultimedia +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore, python3-pyside2.qtgui, python3-pyside2.qtnetwork +Description: Python bindings for Qt5 Multimedia module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtMultimedia module. + +Package: python3-pyside2.qtwebchannel +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore +Description: Python bindings for Qt5 WebChannel module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtWebChannel module. + +Package: python3-pyside2.qtprintsupport +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtwidgets, python3-pyside2.qtcore, python3-pyside2.qtgui +Description: Python bindings for Qt5 PrintSupport module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtPrintSupport module. + +Package: python3-pyside2.qtxml +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore +Description: Python bindings for Qt5 Xml module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtXml module. + +Package: python3-pyside2.qttest +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore, python3-pyside2.qtgui, python3-pyside2.qtwidgets +Description: Python bindings for Qt5 Test module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtTest module. + +Package: python3-pyside2.qtwebenginewidgets +Architecture: amd64 arm64 armhf i386 mips64el +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore, python3-pyside2.qtgui, python3-pyside2.qtwidgets, + python3-pyside2.qtnetwork, python3-pyside2.qtwebchannel, + python3-pyside2.qtwebenginecore, python3-pyside2.qtprintsupport +Description: Python bindings for Qt5 WebEngineWidgets module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtWebEngineWidgets module. + +Package: python3-pyside2.qtconcurrent +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore +Description: Python bindings for Qt5 Concurrent module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtConcurrent module. + +Package: python3-pyside2.qtxmlpatterns +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore +Description: Python bindings for Qt5 XmlPatterns module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtXmlPatterns module. + +Package: python3-pyside2.qtuitools +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtwidgets, python3-pyside2.qtxml, python3-pyside2.qtcore, + python3-pyside2.qtgui +Description: Python bindings for Qt5 UiTools module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtUiTools module. + +Package: python3-pyside2.qtopengl +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtwidgets, python3-pyside2.qtcore, python3-pyside2.qtgui +Description: Python bindings for Qt5 OpenGL module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtOpenGL module. + +Package: python3-pyside2.qtsql +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtwidgets, python3-pyside2.qtgui, python3-pyside2.qtcore +Description: Python bindings for Qt5 Sql module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtSql module. + +Package: python3-pyside2.qtgui +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore +Description: Python bindings for Qt5 Gui module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtGui module. + +Package: python3-pyside2.qtsvg +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtwidgets, python3-pyside2.qtgui, python3-pyside2.qtcore +Description: Python bindings for Qt5 Svg module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtSvg module. + +Package: python3-pyside2.qtwebsockets +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore, python3-pyside2.qtnetwork +Description: Python bindings for Qt5 WebSockets module (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtWebSockets module. + +Package: python3-pyside2.qtopenglfunctions +Architecture: any +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtgui, python3-pyside2.qtcore +Description: Python bindings for Qt5 Open GL Functions (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the OpenGLFunctions module. + +Package: python3-pyside2.qtwebengine +Architecture: amd64 arm64 armhf i386 mips64el +Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, + python3-pyside2.qtcore +Description: Python bindings for Qt5 Web Engine (Python 3) + pyside2 provides Python bindings for Qt 5.x framework. + . + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains Python 3 bindings for the QtWebEngine module. diff --git a/copyright b/copyright new file mode 100644 index 0000000..88f22cc --- /dev/null +++ b/copyright @@ -0,0 +1,259 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: pyside2 +Source: https://download.qt.io/official_releases/QtForPython/ + +Files: * +Copyright: 2016-2020 The Qt Company Ltd. +License: GPL-2 or GPL-3 or LGPL-3 + +Files: examples/* +Copyright: 2016-2018 The Qt Company Ltd. + 2011 Arun Srinivasan + 2010-2013 Riverbank Computing Limited. + 2010 Hans-Peter Jansen + 2010 velociraptor Genjix + 2009 Darryl Wallace, 2009 +License: BSD-3-clause + +Files: sources/patchelf/* +Copyright: 2004-2009 Eelco Dolstra +License: GPL-3+ + +Files: sources/patchelf/elf.h +Copyright: 1995-2008 Free Software Foundation, Inc. +License: LGPL-2.1+ + +Files: sources/pyside2/doc/typesystem_doc.xml.in + sources/pyside2/doc/codesnippets/* + sources/pyside2/doc/tutorials/* +Copyright: 2016 The Qt Company Ltd. +License: BSD-3-clause + +Files: sources/pyside2/doc/inheritance_diagram.py +Copyright: 2010-2011 by the PySide team + 2007-2011 by the Sphinx team +License: BSD-2-clause + All rights reserved. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + . + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: sources/pyside2/tests/run_test.sh + sources/pyside2/tests/Qt* + sources/pyside2/tests/mac/qmacstyle_test.py + sources/pyside2/tests/manually/* + sources/pyside2/tests/pysidetest/* + sources/pyside2/tests/signals/* + sources/pyside2/tests/util/* + sources/shiboken2/ApiExtractor/* + sources/shiboken2/generator/* + sources/shiboken2/generatorrunnermacros.h + sources/shiboken2/generators/* + sources/shiboken2/tests/* +Copyright: 2009 Matthias Klose + 2002-2005 Roberto Raggi + 2011 Thomas Perl + 2013 Kitware, Inc. + 2016-2017 The Qt Company Ltd. +License: GPL-3-EXCEPT + +Files: sources/pyside2-tools/* +Copyright: 2016 The Qt Company Ltd. + 2010 Riverbank Computing Limited. + 2009-2011 Nokia Corporation and/or its subsidiary(-ies) + 2009 Torsten Marek + 2002-2007 Detlev Offenbach + 1992-2006 Trolltech AS. All rights reserved. +License: GPL-2 + +Files: debian/* +Copyright: 2018 Sophie Brun +License: GPL-2+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of The Qt Company Ltd nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + +License: GPL-2 + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2" + +License: GPL-3 + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 3 as + published by the Free Software Foundation. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3" + +License: GPL-3+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3" + +License: GPL-3-EXCEPT + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 3 as + published by the Free Software Foundation, annotated with The Qt Company + GPL Exception 1.0: + . + The Qt Company GPL Exception 1.0 + . + Exception 1: + . + As a special exception you may create a larger work which contains the + output of this application and distribute that work under terms of your + choice, so long as the work is not otherwise derived from or based on + this application and so long as the work does not in itself generate + output that contains the output from this application in its original + or modified form. + . + Exception 2: + . + As a special exception, you have permission to combine this application + with Plugins licensed under the terms of your choice, to produce an + executable, and to copy and distribute the resulting executable under + the terms of your choice. However, the executable must be accompanied + by a prominent notice offering all users of the executable the entire + source code to this application, excluding the source code of the + independent modules, but including any changes you have made to this + application, under the terms of this license. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3" + +License: LGPL-2.1+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + . + On Debian systems, the complete text of the Lesser GNU General + Public License version 2.1 can be found in + "/usr/share/common-licenses/LGPL-2.1" + +License: LGPL-3 + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 3 as published by the Free Software Foundation. + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + . + On Debian systems, the complete text of the Lesser GNU General + Public License version 3 can be found in + "/usr/share/common-licenses/LGPL-3" diff --git a/libpyside2-dev.install b/libpyside2-dev.install new file mode 100644 index 0000000..3eb64ff --- /dev/null +++ b/libpyside2-dev.install @@ -0,0 +1,5 @@ +pyside3_install/py3*-relwithdebinfo/include/PySide2 usr/include +pyside3_install/py3*-relwithdebinfo/share/PySide2 usr/share +pyside3_install/py3*-relwithdebinfo/lib/pkgconfig/pyside2.pc usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig +pyside3_install/py3*-relwithdebinfo/lib/libpyside2*.so usr/lib/${DEB_HOST_MULTIARCH} +pyside3_install/py3*-relwithdebinfo/lib/cmake/PySide2* usr/lib/${DEB_HOST_MULTIARCH}/cmake diff --git a/libpyside2-py3-5.15t64.install b/libpyside2-py3-5.15t64.install new file mode 100644 index 0000000..cd81eb8 --- /dev/null +++ b/libpyside2-py3-5.15t64.install @@ -0,0 +1,4 @@ +pyside3_install/py3*-relwithdebinfo/lib/libpyside2*.so.* usr/lib/${DEB_HOST_MULTIARCH} +pyside3_install/py3*-relwithdebinfo/lib/python*/site-packages/PySide2/_git_pyside_version.py usr/lib/python3/dist-packages/PySide2 +pyside3_install/py3*-relwithdebinfo/lib/python*/site-packages/PySide2/__init__.py usr/lib/python3/dist-packages/PySide2 +pyside3_install/py3*-relwithdebinfo/lib/python*/site-packages/PySide2/_config.py usr/lib/python3/dist-packages/PySide2 diff --git a/libpyside2-py3-5.15t64.lintian-overrides b/libpyside2-py3-5.15t64.lintian-overrides new file mode 100644 index 0000000..7705865 --- /dev/null +++ b/libpyside2-py3-5.15t64.lintian-overrides @@ -0,0 +1,3 @@ +# We ship compiled versions for each supported python3 version, with a symlink to the default version +package-name-doesnt-match-sonames * +libpyside2-py3-5.15t64: package-name-doesnt-match-sonames libpyside2-py3-5.15 diff --git a/libshiboken2-dev.install b/libshiboken2-dev.install new file mode 100644 index 0000000..b2dd32a --- /dev/null +++ b/libshiboken2-dev.install @@ -0,0 +1,4 @@ +pyside3_install/py3*-relwithdebinfo/include/shiboken2 usr/include +pyside3_install/py3*-relwithdebinfo/lib/pkgconfig/shiboken2.pc usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig +pyside3_install/py3*-relwithdebinfo/lib/libshiboken2*.so usr/lib/${DEB_HOST_MULTIARCH} +pyside3_install/py3*-relwithdebinfo/lib/cmake/Shiboken2* usr/lib/${DEB_HOST_MULTIARCH}/cmake diff --git a/libshiboken2-py3-5.15t64.install b/libshiboken2-py3-5.15t64.install new file mode 100644 index 0000000..1bc2122 --- /dev/null +++ b/libshiboken2-py3-5.15t64.install @@ -0,0 +1,2 @@ +pyside3_install/py3*-relwithdebinfo/lib/libshiboken2*.so.* usr/lib/${DEB_HOST_MULTIARCH} +pyside3_install/py3*-relwithdebinfo/lib/python3*/site-packages/shiboken2/* usr/lib/python3/dist-packages/shiboken2 diff --git a/libshiboken2-py3-5.15t64.lintian-overrides b/libshiboken2-py3-5.15t64.lintian-overrides new file mode 100644 index 0000000..8018cec --- /dev/null +++ b/libshiboken2-py3-5.15t64.lintian-overrides @@ -0,0 +1,3 @@ +# We ship compiled versions for each supported python3 version, with a symlink to the default version +package-name-doesnt-match-sonames * +libshiboken2-py3-5.15t64: package-name-doesnt-match-sonames libshiboken2-py3-5.15 diff --git a/patches/Do-not-change-RPATH.patch b/patches/Do-not-change-RPATH.patch new file mode 100644 index 0000000..2e3dc19 --- /dev/null +++ b/patches/Do-not-change-RPATH.patch @@ -0,0 +1,37 @@ +From: Dmitry Shachnev +Date: Thu, 25 Jan 2024 14:21:09 +0300 +Subject: Do not change RPATH + +Forwarded: not-needed +--- + build_scripts/main.py | 3 --- + build_scripts/platforms/unix.py | 5 ----- + 2 files changed, 8 deletions(-) + +diff --git a/build_scripts/main.py b/build_scripts/main.py +index 23b37c5..25c0cf3 100644 +--- a/build_scripts/main.py ++++ b/build_scripts/main.py +@@ -631,9 +631,6 @@ class PysideBuild(_build, DistUtilsCommandMixin): + log.info("Created {}".format(build_history)) + + if not OPTION["SKIP_PACKAGING"]: +- # Build patchelf if needed +- self.build_patchelf() +- + # Prepare packages + self.prepare_packages() + +diff --git a/build_scripts/platforms/unix.py b/build_scripts/platforms/unix.py +index b842510..8df0e73 100644 +--- a/build_scripts/platforms/unix.py ++++ b/build_scripts/platforms/unix.py +@@ -220,8 +220,3 @@ def prepare_packages_posix(self, vars): + if config.is_internal_shiboken_generator_build(): + # Copy over clang before rpath patching. + self.prepare_standalone_clang(is_win=False) +- +- # Update rpath to $ORIGIN +- if sys.platform.startswith('linux') or sys.platform.startswith('darwin'): +- rpath_path = "{st_build_dir}/{st_package_name}".format(**vars) +- self.update_rpath(rpath_path, executables) diff --git a/patches/Do-the-transition-to-Python-3.13.patch b/patches/Do-the-transition-to-Python-3.13.patch new file mode 100644 index 0000000..8fb529a --- /dev/null +++ b/patches/Do-the-transition-to-Python-3.13.patch @@ -0,0 +1,24 @@ +From: Christian Tismer +Date: Fri, 7 Jun 2024 14:57:14 +0200 +Subject: Do the transition to Python 3.13 + +Task-number: PYSIDE-2751 +Change-Id: I37b447148787e2923a58c091a5c8ac808d579bc0 +Reviewed-by: Friedemann Kleint +(cherry picked from commit ad18260e583a30505e42b04fd242c52ff36f735c) +--- + build_scripts/config.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/build_scripts/config.py b/build_scripts/config.py +index fb27394..0e7f9fd 100644 +--- a/build_scripts/config.py ++++ b/build_scripts/config.py +@@ -96,6 +96,7 @@ class Config(object): + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', ++ 'Programming Language :: Python :: 3.13', + ] + + self.setup_script_dir = None diff --git a/patches/Final-details-to-enable-3.12-wheel-compatibility.patch b/patches/Final-details-to-enable-3.12-wheel-compatibility.patch new file mode 100644 index 0000000..b40d6aa --- /dev/null +++ b/patches/Final-details-to-enable-3.12-wheel-compatibility.patch @@ -0,0 +1,27 @@ +From: =?utf-8?q?Cristi=C3=A1n_Maureira-Fredes?= + +Date: Tue, 10 Oct 2023 15:52:09 +0200 +Subject: Final details to enable 3.12 wheel compatibility + +Change-Id: I0252c4e73e8c214ef8aa418ddf88bc452c0fdf53 +Pick-to: 6.6 +Task-number: PYSIDE-2230 +Reviewed-by: Friedemann Kleint +(cherry picked from commit 6c7bb7b6e1008909e49bc04d2a48024309a784cc) +--- + build_scripts/config.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build_scripts/config.py b/build_scripts/config.py +index 5fc23d4..fb27394 100644 +--- a/build_scripts/config.py ++++ b/build_scripts/config.py +@@ -138,7 +138,7 @@ class Config(object): + setup_kwargs['zip_safe'] = False + setup_kwargs['cmdclass'] = cmd_class_dict + setup_kwargs['version'] = package_version +- setup_kwargs['python_requires'] = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.12" ++ setup_kwargs['python_requires'] = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.13" + + if quiet: + # Tells distutils / setuptools to be quiet, and only print warnings or errors. diff --git a/patches/Fix-condition-to-allow-3.13-for-wheel-creation.patch b/patches/Fix-condition-to-allow-3.13-for-wheel-creation.patch new file mode 100644 index 0000000..4d0343f --- /dev/null +++ b/patches/Fix-condition-to-allow-3.13-for-wheel-creation.patch @@ -0,0 +1,27 @@ +From: =?utf-8?q?Cristi=C3=A1n_Maureira-Fredes?= + +Date: Thu, 19 Sep 2024 09:25:05 +0200 +Subject: Fix condition to allow 3.13 for wheel creation + +Task-number: PYSIDE-2751 +Pick-to: 6.8 +Change-Id: Iaf6e914bf798371faf5066f4a2d70fe3e2c124e5 +Reviewed-by: Christian Tismer +(cherry picked from commit a86135803fe51e5702444f8b7dcb2a4dccd3a209) +--- + build_scripts/config.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build_scripts/config.py b/build_scripts/config.py +index 0e7f9fd..27844ee 100644 +--- a/build_scripts/config.py ++++ b/build_scripts/config.py +@@ -139,7 +139,7 @@ class Config(object): + setup_kwargs['zip_safe'] = False + setup_kwargs['cmdclass'] = cmd_class_dict + setup_kwargs['version'] = package_version +- setup_kwargs['python_requires'] = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.13" ++ setup_kwargs['python_requires'] = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.14" + + if quiet: + # Tells distutils / setuptools to be quiet, and only print warnings or errors. diff --git a/patches/PyEnum-make-forgiving-duplicates-work-with-Python-3.11.patch b/patches/PyEnum-make-forgiving-duplicates-work-with-Python-3.11.patch new file mode 100644 index 0000000..d62b339 --- /dev/null +++ b/patches/PyEnum-make-forgiving-duplicates-work-with-Python-3.11.patch @@ -0,0 +1,63 @@ +From: Christian Tismer +Date: Tue, 21 Jun 2022 10:22:04 +0200 +Subject: PyEnum: make forgiving duplicates work with Python 3.11 + +There was a silent change in PyEnums that turns Enum attributes +into properties. This does not harm the Python interface but +needed some change in the duplication emulation. + +Furthermore, new internal enums are created with an underscore name. + +The meta class was changed from EnumMeta to EnumType. + +[ChangeLog][shiboken6] The new Python Enums are now compatible with Python 3.11 + +Change-Id: I3b1ab63dc5eed15a75ebd0f42dddf4001f640c00 +Pick-to: 6.3 +Task-number: PYSIDE-1735 +Fixes: PYSIDE-1960 +Reviewed-by: Qt CI Bot +Reviewed-by: Cristian Maureira-Fredes +(cherry picked from commit da2cf031521815a9559ca784beadb70c7a2852d9) +--- + sources/pyside2/tests/QtCore/qenum_test.py | 6 ++++-- + .../files.dir/shibokensupport/signature/lib/enum_sig.py | 3 ++- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/sources/pyside2/tests/QtCore/qenum_test.py b/sources/pyside2/tests/QtCore/qenum_test.py +index f99a893..0981c26 100644 +--- a/sources/pyside2/tests/QtCore/qenum_test.py ++++ b/sources/pyside2/tests/QtCore/qenum_test.py +@@ -197,14 +197,16 @@ class SomeClass(QObject): + + @unittest.skipUnless(HAVE_ENUM, "requires 'enum' module (use 'pip install enum34' for Python 2)") + class TestQEnumMacro(unittest.TestCase): ++ meta_name = "EnumType" if sys.version_info[:2] >= (3, 11) else "EnumMeta" ++ + def testTopLevel(self): + self.assertEqual(type(OuterEnum).__module__, "enum") +- self.assertEqual(type(OuterEnum).__name__, "EnumMeta") ++ self.assertEqual(type(OuterEnum).__name__, self.meta_name) + self.assertEqual(len(OuterEnum.__members__), 2) + + def testSomeClass(self): + self.assertEqual(type(SomeClass.SomeEnum).__module__, "enum") +- self.assertEqual(type(SomeClass.SomeEnum).__name__, "EnumMeta") ++ self.assertEqual(type(SomeClass.SomeEnum).__name__, self.meta_name) + self.assertEqual(len(SomeClass.SomeEnum.__members__), 3) + with self.assertRaises(TypeError): + int(SomeClass.SomeEnum.C) == 6 +diff --git a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py +index 088a93a..2f78718 100644 +--- a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py ++++ b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py +@@ -139,7 +139,8 @@ class ExactEnumerator(object): + functions.append((func_name, thing)) + elif type(type(thing)) is EnumMeta: + # take the real enum name, not what is in the dict +- enums.append((thing_name, type(thing).__qualname__, thing)) ++ if not thing_name.startswith("_"): ++ enums.append((thing_name, type(thing).__qualname__, thing)) + init_signature = getattr(klass, "__signature__", None) + enums.sort(key=lambda tup: tup[1 : 3]) # sort by class then enum value + self.fmt.have_body = bool(subclasses or functions or enums or init_signature) diff --git a/patches/Python-3.12-Fix-the-structure-of-class-property.patch b/patches/Python-3.12-Fix-the-structure-of-class-property.patch new file mode 100644 index 0000000..0eadc11 --- /dev/null +++ b/patches/Python-3.12-Fix-the-structure-of-class-property.patch @@ -0,0 +1,38 @@ +From: Christian Tismer +Date: Tue, 14 Feb 2023 14:46:22 +0100 +Subject: Python 3.12: Fix the structure of class property + +There is a PySide bug in Python 3.10 already: The structure for +classproperty derives from the property structure. This was extended +in Python 3.10, already, but the type generation check was made more +exhaustive in Python 3.12 and recognized that. + +This change is only for making the compiler/C API happy. +In order to use the extension field, it is necessary to do a runtime +check because of the Limited API. + +Task-number: PYSIDE-2230 +Change-Id: I88dcaa11589ff41852f08fa2defa5200a0dd4eb6 +Reviewed-by: Adrian Herrmann +Reviewed-by: Friedemann Kleint +(cherry picked from commit edfd9a5ad174a48f8d7da511dc6a1c69e931a418) +--- + sources/pyside2/libpyside/feature_select.cpp | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/sources/pyside2/libpyside/feature_select.cpp b/sources/pyside2/libpyside/feature_select.cpp +index 3011b35..b9e1470 100644 +--- a/sources/pyside2/libpyside/feature_select.cpp ++++ b/sources/pyside2/libpyside/feature_select.cpp +@@ -671,6 +671,11 @@ typedef struct { + PyObject *prop_set; + PyObject *prop_del; + PyObject *prop_doc; ++#if PY_VERSION_HEX >= 0x030A0000 ++ // Note: This is a problem with Limited API: We have no direct access. ++ // You need to pick it from runtime info. ++ PyObject *prop_name; ++#endif + int getter_doc; + } propertyobject; + diff --git a/patches/Shiboken-Fix-the-oldest-shiboken-bug-ever.patch b/patches/Shiboken-Fix-the-oldest-shiboken-bug-ever.patch new file mode 100644 index 0000000..98315dd --- /dev/null +++ b/patches/Shiboken-Fix-the-oldest-shiboken-bug-ever.patch @@ -0,0 +1,44 @@ +From: Christian Tismer +Date: Tue, 21 Jun 2022 10:22:04 +0200 +Subject: Shiboken: Fix the oldest shiboken bug ever which shows up on Python + 3.11 + +b7df2f1c0 "Fix signal initializer.", 18. May 2010 at 00:55 + +There was a `PySequence_Check` in the evaluation of some signature +function parameter processing, which should have been `PyTuple_Check`. + +Since the new PyEnums are also sequences, the new optimization in +Python 3.11 changed the parameter handling in a correct way and +replaced the argument tuple by a direct single argument of an enum +type. And that is also a sequence ... + +There are probably still dormant issues like this in the codebase +which gives reason to submit a task that checks all Python interface +functions for correctness. + +Change-Id: I45996a0458c3e60795d2eb802eb98f7dd3678d92 +Pick-to: 6.3 +Task-number: PYSIDE-1735 +Task-number: PYSIDE-1987 +Fixes: PYSIDE-1988 +Reviewed-by: Cristian Maureira-Fredes +Reviewed-by: Shyamnath Premnadh +(cherry picked from commit 2720e01f21f3771cb755ef183b8160f691bdb575) +--- + sources/pyside2/libpyside/pysidesignal.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sources/pyside2/libpyside/pysidesignal.cpp b/sources/pyside2/libpyside/pysidesignal.cpp +index 607ce16..6824a71 100644 +--- a/sources/pyside2/libpyside/pysidesignal.cpp ++++ b/sources/pyside2/libpyside/pysidesignal.cpp +@@ -726,7 +726,7 @@ static QByteArray buildSignature(const QByteArray &name, const QByteArray &signa + + static QByteArray parseSignature(PyObject *args) + { +- if (args && (Shiboken::String::check(args) || !PySequence_Check(args))) ++ if (args && (Shiboken::String::check(args) || !PyTuple_Check(args))) + return getTypeName(args); + + QByteArray signature; diff --git a/patches/Stop-using-imp-module.patch b/patches/Stop-using-imp-module.patch new file mode 100644 index 0000000..fd303c2 --- /dev/null +++ b/patches/Stop-using-imp-module.patch @@ -0,0 +1,32 @@ +From: Friedemann Kleint +Date: Thu, 3 Sep 2020 11:14:55 +0200 +Subject: Stop using imp module + +Part of commit e796600c9663a26ccf1929aca8336eb0cb23fe5d. +--- + sources/shiboken2/tests/otherbinding/module_reload_test.py | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/sources/shiboken2/tests/otherbinding/module_reload_test.py b/sources/shiboken2/tests/otherbinding/module_reload_test.py +index 368425c..c63af18 100644 +--- a/sources/shiboken2/tests/otherbinding/module_reload_test.py ++++ b/sources/shiboken2/tests/otherbinding/module_reload_test.py +@@ -29,6 +29,7 @@ + ## + ############################################################################# + ++from importlib import reload + import os + import shutil + import sys +@@ -38,10 +39,6 @@ sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + from shiboken_paths import init_paths + init_paths() + +-from py3kcompat import IS_PY3K +- +-if IS_PY3K: +- from imp import reload + + orig_path = os.path.join(os.path.dirname(__file__)) + workdir = os.getcwd() diff --git a/patches/Support-running-PySide-on-Python-3.12.patch b/patches/Support-running-PySide-on-Python-3.12.patch new file mode 100644 index 0000000..6f3fb3b --- /dev/null +++ b/patches/Support-running-PySide-on-Python-3.12.patch @@ -0,0 +1,297 @@ +From: Christian Tismer +Date: Tue, 14 Feb 2023 14:46:22 +0100 +Subject: Support running PySide on Python 3.12 + +Builtin types no longer have tp_dict set. We need to +use PyType_GetDict, instead. This works without Limited API +at the moment. + +With some great cheating, this works with Limited API, too. +We emulate PyType_GetDict by tp_dict if that is not 0. +Otherwise we create an empty dict. + +Some small changes to Exception handling and longer +warm-up in leaking tests were found, too. + +Pick-to: 6.6 6.5 6.2 +Task-number: PYSIDE-2230 +Change-Id: I8a56de6208ec00979255b39b5784dfc9b4b92def +Reviewed-by: Friedemann Kleint +(cherry picked from commit 441ffbd4fc622e67acd81e9c1c6d3a0b0fbcacf0) +--- + build_scripts/config.py | 3 +- + sources/pyside2/PySide2/support/generate_pyi.py | 8 ++++-- + sources/pyside2/libpyside/feature_select.cpp | 10 ++++--- + sources/pyside2/libpyside/pysideproperty.cpp | 4 +-- + sources/pyside2/libpyside/pysidesignal.cpp | 4 +-- + sources/pyside2/tests/QtWidgets/bug_662.py | 3 +- + sources/pyside2/tests/signals/bug_79.py | 5 ++++ + sources/shiboken2/libshiboken/pep384impl.cpp | 33 ++++++++++++++++++++++ + sources/shiboken2/libshiboken/pep384impl.h | 8 ++++++ + .../shiboken2/libshiboken/signature/signature.cpp | 2 +- + .../libshiboken/signature/signature_helper.cpp | 6 ++-- + .../shibokensupport/signature/errorhandler.py | 6 ++++ + sources/shiboken2/tests/samplebinding/enum_test.py | 2 +- + 13 files changed, 78 insertions(+), 16 deletions(-) + +diff --git a/build_scripts/config.py b/build_scripts/config.py +index f2b4c40..5fc23d4 100644 +--- a/build_scripts/config.py ++++ b/build_scripts/config.py +@@ -94,7 +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.11', ++ 'Programming Language :: Python :: 3.12', + ] + + self.setup_script_dir = None +diff --git a/sources/pyside2/PySide2/support/generate_pyi.py b/sources/pyside2/PySide2/support/generate_pyi.py +index 1956533..fd05b1f 100644 +--- a/sources/pyside2/PySide2/support/generate_pyi.py ++++ b/sources/pyside2/PySide2/support/generate_pyi.py +@@ -116,8 +116,12 @@ class Formatter(Writer): + """ + def _typevar__repr__(self): + return "typing." + self.__name__ +- typing.TypeVar.__repr__ = _typevar__repr__ +- ++ # This is no longer necessary for modern typing versions. ++ # Ignore therefore if the repr is read-only and cannot be changed. ++ try: ++ typing.TypeVar.__repr__ = _typevar__repr__ ++ except TypeError: ++ pass + # Adding a pattern to substitute "Union[T, NoneType]" by "Optional[T]" + # I tried hard to replace typing.Optional by a simple override, but + # this became _way_ too much. +diff --git a/sources/pyside2/libpyside/feature_select.cpp b/sources/pyside2/libpyside/feature_select.cpp +index b9e1470..533c09d 100644 +--- a/sources/pyside2/libpyside/feature_select.cpp ++++ b/sources/pyside2/libpyside/feature_select.cpp +@@ -358,7 +358,8 @@ static bool SelectFeatureSetSubtype(PyTypeObject *type, PyObject *select_id) + * This is the selector for one sublass. We need to call this for + * every subclass until no more subclasses or reaching the wanted id. + */ +- if (Py_TYPE(type->tp_dict) == Py_TYPE(PyType_Type.tp_dict)) { ++ static const auto *pyTypeType_tp_dict = PepType_GetDict(&PyType_Type); ++ if (Py_TYPE(type->tp_dict) == Py_TYPE(pyTypeType_tp_dict)) { + // On first touch, we initialize the dynamic naming. + // The dict type will be replaced after the first call. + if (!replaceClassDict(type)) { +@@ -385,7 +386,8 @@ static inline PyObject *SelectFeatureSet(PyTypeObject *type) + * Generated functions call this directly. + * Shiboken will assign it via a public hook of `basewrapper.cpp`. + */ +- if (Py_TYPE(type->tp_dict) == Py_TYPE(PyType_Type.tp_dict)) { ++ static const auto *pyTypeType_tp_dict = PepType_GetDict(&PyType_Type); ++ if (Py_TYPE(type->tp_dict) == Py_TYPE(pyTypeType_tp_dict)) { + // We initialize the dynamic features by using our own dict type. + if (!replaceClassDict(type)) + return nullptr; +@@ -721,11 +723,11 @@ static bool patch_property_impl() + // Turn `__doc__` into a computed attribute without changing writability. + auto gsp = property_getset; + auto type = &PyProperty_Type; +- auto dict = type->tp_dict; ++ AutoDecRef dict(PepType_GetDict(type)); + AutoDecRef descr(PyDescr_NewGetSet(type, gsp)); + if (descr.isNull()) + return false; +- if (PyDict_SetItemString(dict, gsp->name, descr) < 0) ++ if (PyDict_SetItemString(dict.object(), gsp->name, descr) < 0) + return false; + // Replace property_descr_get/set by slightly changed versions + return true; +diff --git a/sources/pyside2/libpyside/pysideproperty.cpp b/sources/pyside2/libpyside/pysideproperty.cpp +index 86909d3..d2e2c68 100644 +--- a/sources/pyside2/libpyside/pysideproperty.cpp ++++ b/sources/pyside2/libpyside/pysideproperty.cpp +@@ -445,8 +445,8 @@ namespace { + + static PyObject *getFromType(PyTypeObject *type, PyObject *name) + { +- PyObject *attr = nullptr; +- attr = PyDict_GetItem(type->tp_dict, name); ++ AutoDecRef tpDict(PepType_GetDict(type)); ++ auto *attr = PyDict_GetItem(tpDict.object(), name); + if (!attr) { + PyObject *bases = type->tp_bases; + int size = PyTuple_GET_SIZE(bases); +diff --git a/sources/pyside2/libpyside/pysidesignal.cpp b/sources/pyside2/libpyside/pysidesignal.cpp +index 6824a71..f15d7aa 100644 +--- a/sources/pyside2/libpyside/pysidesignal.cpp ++++ b/sources/pyside2/libpyside/pysidesignal.cpp +@@ -670,8 +670,8 @@ void updateSourceObject(PyObject *source) + Py_ssize_t pos = 0; + PyObject *value; + PyObject *key; +- +- while (PyDict_Next(objType->tp_dict, &pos, &key, &value)) { ++ Shiboken::AutoDecRef tpDict(PepType_GetDict(objType)); ++ while (PyDict_Next(tpDict, &pos, &key, &value)) { + if (PyObject_TypeCheck(value, PySideSignalTypeF())) { + Shiboken::AutoDecRef signalInstance(reinterpret_cast(PyObject_New(PySideSignalInstance, PySideSignalInstanceTypeF()))); + instanceInitialize(signalInstance.cast(), key, reinterpret_cast(value), source, 0); +diff --git a/sources/pyside2/tests/QtWidgets/bug_662.py b/sources/pyside2/tests/QtWidgets/bug_662.py +index 7fb97de..ec0e6f9 100644 +--- a/sources/pyside2/tests/QtWidgets/bug_662.py ++++ b/sources/pyside2/tests/QtWidgets/bug_662.py +@@ -40,7 +40,8 @@ from PySide2.QtWidgets import QTextEdit, QApplication + import sys + + class testQTextBlock(unittest.TestCase): +- def tesIterator(self): ++ ++ def testIterator(self): + edit = QTextEdit() + cursor = edit.textCursor() + fmt = QTextCharFormat() +diff --git a/sources/pyside2/tests/signals/bug_79.py b/sources/pyside2/tests/signals/bug_79.py +index ca25fb3..b70c8c5 100644 +--- a/sources/pyside2/tests/signals/bug_79.py ++++ b/sources/pyside2/tests/signals/bug_79.py +@@ -60,6 +60,11 @@ class ConnectTest(unittest.TestCase): + gc.collect() + # if this is no debug build, then we check at least that + # we do not crash any longer. ++ for idx in range(200): ++ # PYSIDE-2230: Warm-up is necessary before measuring, because ++ # the code changes the constant parts after some time. ++ o.selectionModel().destroyed.connect(self.callback) ++ o.selectionModel().destroyed.disconnect(self.callback) + if not skiptest: + total = gettotalrefcount() + for idx in range(1000): +diff --git a/sources/shiboken2/libshiboken/pep384impl.cpp b/sources/shiboken2/libshiboken/pep384impl.cpp +index d12dae3..fed2716 100644 +--- a/sources/shiboken2/libshiboken/pep384impl.cpp ++++ b/sources/shiboken2/libshiboken/pep384impl.cpp +@@ -810,6 +810,39 @@ init_PepRuntime() + PepRuntime_38_flag = 1; + } + ++#ifdef Py_LIMITED_API ++static PyObject *emulatePyType_GetDict(PyTypeObject *type) ++{ ++ if (_PepRuntimeVersion() < 0x030C00 || type->tp_dict) { ++ auto *res = type->tp_dict; ++ Py_XINCREF(res); ++ return res; ++ } ++ // PYSIDE-2230: Here we are really cheating. We don't know how to ++ // access an internal dict, and so we simply pretend ++ // it were an empty dict. This works great for our types. ++ // This was an unexpectedly simple solution :D ++ return PyDict_New(); ++} ++#endif ++ ++// PyType_GetDict: replacement for .tp_dict, which is ++// zero for builtin types since 3.12. ++PyObject *PepType_GetDict(PyTypeObject *type) ++{ ++#if !defined(Py_LIMITED_API) ++# if PY_VERSION_HEX >= 0x030C0000 ++ return PyType_GetDict(type); ++# else ++ // pre 3.12 fallback code, mimicking the addref-behavior. ++ Py_XINCREF(type->tp_dict); ++ return type->tp_dict; ++# endif ++#else ++ return emulatePyType_GetDict(type); ++#endif // Py_LIMITED_API ++} ++ + /***************************************************************************** + * + * Module Initialization +diff --git a/sources/shiboken2/libshiboken/pep384impl.h b/sources/shiboken2/libshiboken/pep384impl.h +index a870d6b..440784e 100644 +--- a/sources/shiboken2/libshiboken/pep384impl.h ++++ b/sources/shiboken2/libshiboken/pep384impl.h +@@ -567,6 +567,14 @@ extern LIBSHIBOKEN_API PyObject *PepMapping_Items(PyObject *o); + + extern LIBSHIBOKEN_API int PepRuntime_38_flag; + ++/***************************************************************************** ++ * ++ * Runtime support for Python 3.12 incompatibility ++ * ++ */ ++ ++LIBSHIBOKEN_API PyObject *PepType_GetDict(PyTypeObject *type); ++ + /***************************************************************************** + * + * Module Initialization +diff --git a/sources/shiboken2/libshiboken/signature/signature.cpp b/sources/shiboken2/libshiboken/signature/signature.cpp +index 191af3d..f817e47 100644 +--- a/sources/shiboken2/libshiboken/signature/signature.cpp ++++ b/sources/shiboken2/libshiboken/signature/signature.cpp +@@ -482,7 +482,7 @@ static PyObject *adjustFuncName(const char *func_name) + + // Find the feature flags + auto type = reinterpret_cast(obtype.object()); +- auto dict = type->tp_dict; ++ AutoDecRef dict(PepType_GetDict(type)); + int id = SbkObjectType_GetReserved(type); + id = id < 0 ? 0 : id; // if undefined, set to zero + auto lower = id & 0x01; +diff --git a/sources/shiboken2/libshiboken/signature/signature_helper.cpp b/sources/shiboken2/libshiboken/signature/signature_helper.cpp +index 0246ec6..05eaa14 100644 +--- a/sources/shiboken2/libshiboken/signature/signature_helper.cpp ++++ b/sources/shiboken2/libshiboken/signature/signature_helper.cpp +@@ -105,7 +105,8 @@ int add_more_getsets(PyTypeObject *type, PyGetSetDef *gsp, PyObject **doc_descr) + */ + assert(PyType_Check(type)); + PyType_Ready(type); +- PyObject *dict = type->tp_dict; ++ AutoDecRef tpDict(PepType_GetDict(type)); ++ auto *dict = tpDict.object(); + for (; gsp->name != nullptr; gsp++) { + PyObject *have_descr = PyDict_GetItemString(dict, gsp->name); + if (have_descr != nullptr) { +@@ -346,7 +347,8 @@ static int _build_func_to_type(PyObject *obtype) + * We also check for hidden methods, see below. + */ + auto *type = reinterpret_cast(obtype); +- PyObject *dict = type->tp_dict; ++ AutoDecRef tpDict(PepType_GetDict(type)); ++ auto *dict = tpDict.object(); + PyMethodDef *meth = type->tp_methods; + + if (meth == nullptr) +diff --git a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/errorhandler.py b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/errorhandler.py +index 47ab89a..3e1266c 100644 +--- a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/errorhandler.py ++++ b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/errorhandler.py +@@ -113,6 +113,12 @@ def seterror_argument(args, func_name, info): + msg = "{func_name}(): {info}".format(**locals()) + err = AttributeError + return err, msg ++ if isinstance(info, Exception): ++ # PYSIDE-2230: Python 3.12 seems to always do normalization. ++ err = type(info) ++ info = info.args[0] ++ msg = f"{func_name}(): {info}" ++ return err, msg + if info and type(info) is dict: + keyword = tuple(info)[0] + msg = "{func_name}(): unsupported keyword '{keyword}'".format(**locals()) +diff --git a/sources/shiboken2/tests/samplebinding/enum_test.py b/sources/shiboken2/tests/samplebinding/enum_test.py +index 0beb720..f2606a4 100644 +--- a/sources/shiboken2/tests/samplebinding/enum_test.py ++++ b/sources/shiboken2/tests/samplebinding/enum_test.py +@@ -95,7 +95,7 @@ class EnumTest(unittest.TestCase): + + def testEnumConstructorWithTooManyParameters(self): + '''Calling the constructor of non-extensible enum with the wrong number of parameters.''' +- self.assertRaises(TypeError, SampleNamespace.InValue, 13, 14) ++ self.assertRaises((TypeError, ValueError), SampleNamespace.InValue, 13, 14) + + def testEnumConstructorWithNonNumberParameter(self): + '''Calling the constructor of non-extensible enum with a string.''' diff --git a/patches/Use-public-version-of-PyLong_AsInt-for-Python-3.13.patch b/patches/Use-public-version-of-PyLong_AsInt-for-Python-3.13.patch new file mode 100644 index 0000000..91948d6 --- /dev/null +++ b/patches/Use-public-version-of-PyLong_AsInt-for-Python-3.13.patch @@ -0,0 +1,22 @@ +From: Dmitry Shachnev +Date: Sat, 4 Jan 2025 21:20:12 +0300 +Subject: Use public version of PyLong_AsInt for Python >= 3.13 + +Forwarded: no +--- + sources/shiboken2/libshiboken/pep384impl.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/sources/shiboken2/libshiboken/pep384impl.h b/sources/shiboken2/libshiboken/pep384impl.h +index 440784e..323715b 100644 +--- a/sources/shiboken2/libshiboken/pep384impl.h ++++ b/sources/shiboken2/libshiboken/pep384impl.h +@@ -183,6 +183,8 @@ LIBSHIBOKEN_API const char *PepType_GetNameStr(PyTypeObject *type); + */ + #ifdef Py_LIMITED_API + LIBSHIBOKEN_API int _PepLong_AsInt(PyObject *); ++#elif PY_VERSION_HEX >= 0x030D0000 ++#define _PepLong_AsInt PyLong_AsInt + #else + #define _PepLong_AsInt _PyLong_AsInt + #endif diff --git a/patches/blacklist-failing-tests.patch b/patches/blacklist-failing-tests.patch new file mode 100644 index 0000000..58c5e67 --- /dev/null +++ b/patches/blacklist-failing-tests.patch @@ -0,0 +1,55 @@ +From: Sophie Brun +Date: Fri, 22 Nov 2019 13:24:54 +0100 +Subject: Blacklist failing tests + +Forwarded: +https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-1146?filter=allopenissues +--- + build_history/blacklist.txt | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/build_history/blacklist.txt b/build_history/blacklist.txt +index 827191a..5565cda 100644 +--- a/build_history/blacklist.txt ++++ b/build_history/blacklist.txt +@@ -22,6 +22,9 @@ + linux + darwin + win32 ++# crash on s390x Debian build, https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-1146 ++[QtCore::qbytearray_test] ++ linux + [QtGui::qmatrix_test] + win32 + [QtWidgets::bug_576] +@@ -64,8 +67,9 @@ + py2 win32 + [QtQml::qquickitem_grabToImage] + darwin ++# Fails on armel, not reproducible on a porter box. + [smart::smart_pointer] +- py2 ++ linux + # PYSIDE-474 + [QtWebEngineWidgets::pyside-474-qtwebengineview] + py2 +@@ -83,6 +87,9 @@ + win32 + linux + darwin ++# crash on s390x Debian build, https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-1146 ++[QtQml::qquickitem_grabToImage] ++ linux + # In addition to a pre-existing windows failure, + # qtlocation/ac899dcc40bb3ad09307583fb7e6befd45a77b33 / QTBUG-66304 introduced + # a failure in 5.14 +@@ -91,7 +98,9 @@ + linux + darwin + # Open GL functions failures on macOS (2/2020) ++# Python 3.12 considers it a failure when no tests are run + [registry::existence_test] ++ linux + darwin + # Incomplehensible effect with feature switching on 3.6, qApp.process_events() + [QtCore::feature_with_uic_test] diff --git a/patches/fix-spelling-errors.patch b/patches/fix-spelling-errors.patch new file mode 100644 index 0000000..941e661 --- /dev/null +++ b/patches/fix-spelling-errors.patch @@ -0,0 +1,22 @@ +From: Sophie Brun +Date: Tue, 5 Nov 2019 10:39:14 +0100 +Subject: Fix spelling errors + +Last-Update: 2018-07-12 +--- + sources/pyside2/libpyside/pysideproperty.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sources/pyside2/libpyside/pysideproperty.cpp b/sources/pyside2/libpyside/pysideproperty.cpp +index 0d0957f..86909d3 100644 +--- a/sources/pyside2/libpyside/pysideproperty.cpp ++++ b/sources/pyside2/libpyside/pysideproperty.cpp +@@ -519,7 +519,7 @@ int setValue(PySideProperty *self, PyObject *source, PyObject *value) + Shiboken::AutoDecRef result(PyObject_CallObject(fdel, args)); + return (result.isNull() ? -1 : 0); + } +- PyErr_SetString(PyExc_AttributeError, "Attibute read only"); ++ PyErr_SetString(PyExc_AttributeError, "Attribute read only"); + return -1; + } + diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..4a43c93 --- /dev/null +++ b/patches/series @@ -0,0 +1,21 @@ +update-sip-import.patch +fix-spelling-errors.patch +blacklist-failing-tests.patch +test-with-current-interpreter.patch +Shiboken-Fix-the-oldest-shiboken-bug-ever.patch +PyEnum-make-forgiving-duplicates-work-with-Python-3.11.patch +Python-3.12-Fix-the-structure-of-class-property.patch +Support-running-PySide-on-Python-3.12.patch +Final-details-to-enable-3.12-wheel-compatibility.patch +Stop-using-imp-module.patch +Do-not-change-RPATH.patch +shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch +shiboken2-clang-Fix-and-simplify-resolveType-helper.patch +shiboken2-clang-Remove-typedef-expansion.patch +shiboken2-clang-Fix-build-with-clang-16.patch +shiboken2-clang-Record-scope-resolution-of-arguments-func.patch +shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch +shiboken2-clang-Write-scope-resolution-for-all-parameters.patch +Do-the-transition-to-Python-3.13.patch +Fix-condition-to-allow-3.13-for-wheel-creation.patch +Use-public-version-of-PyLong_AsInt-for-Python-3.13.patch diff --git a/patches/shiboken2-clang-Fix-and-simplify-resolveType-helper.patch b/patches/shiboken2-clang-Fix-and-simplify-resolveType-helper.patch new file mode 100644 index 0000000..304cff9 --- /dev/null +++ b/patches/shiboken2-clang-Fix-and-simplify-resolveType-helper.patch @@ -0,0 +1,88 @@ +From: Friedemann Kleint +Date: Tue, 25 Apr 2023 10:00:39 +0200 +Subject: shiboken2/clang: Fix and simplify resolveType() helper + +The function had a bug which only manifested with clang 16: +"type" should have been assigned the type of the cursor +obtained from clang_getTypeDeclaration(). With this, the complicated +lookup code in getBaseClass() can be removed. + +Task-number: PYSIDE-2288 +Pick-to: 6.5 +Change-Id: I861e30451b3f4af2ec0c2e4ffa4179a429854533 +Reviewed-by: Christian Tismer +Reviewed-by: Qt CI Bot +--- + .../ApiExtractor/clangparser/clangbuilder.cpp | 39 ++++++++++------------ + 1 file changed, 18 insertions(+), 21 deletions(-) + +diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp +index e8e5bcf..1b4c81c 100644 +--- a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp ++++ b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp +@@ -627,6 +627,9 @@ long clang_EnumDecl_isScoped4(BaseVisitor *bv, const CXCursor &cursor) + #endif // CLANG_NO_ENUMDECL_ISSCOPED + + // Resolve declaration and type of a base class ++// Note: TypeAliasTemplateDecl ("using QVector=QList") is automatically ++// resolved by clang_getTypeDeclaration(), but it stops at ++// TypeAliasDecl / TypedefDecl. + + struct TypeDeclaration + { +@@ -634,19 +637,23 @@ struct TypeDeclaration + CXCursor declaration; + }; + ++static inline bool isTypeAliasDecl(const CXCursor &cursor) ++{ ++ const auto kind = clang_getCursorKind(cursor); ++ return kind == CXCursor_TypeAliasDecl || kind == CXCursor_TypedefDecl; ++} ++ + static TypeDeclaration resolveBaseSpecifier(const CXCursor &cursor) + { + Q_ASSERT(clang_getCursorKind(cursor) == CXCursor_CXXBaseSpecifier); + CXType inheritedType = clang_getCursorType(cursor); + CXCursor decl = clang_getTypeDeclaration(inheritedType); +- if (inheritedType.kind != CXType_Unexposed) { +- while (true) { +- auto kind = clang_getCursorKind(decl); +- if (kind != CXCursor_TypeAliasDecl && kind != CXCursor_TypedefDecl) +- break; +- inheritedType = clang_getTypedefDeclUnderlyingType(decl); +- decl = clang_getTypeDeclaration(inheritedType); +- } ++ auto resolvedType = clang_getCursorType(decl); ++ if (resolvedType.kind != CXType_Invalid && resolvedType.kind != inheritedType.kind) ++ inheritedType = resolvedType; ++ while (isTypeAliasDecl(decl)) { ++ inheritedType = clang_getTypedefDeclUnderlyingType(decl); ++ decl = clang_getTypeDeclaration(inheritedType); + } + return {inheritedType, decl}; + } +@@ -656,20 +663,10 @@ void BuilderPrivate::addBaseClass(const CXCursor &cursor) + { + Q_ASSERT(clang_getCursorKind(cursor) == CXCursor_CXXBaseSpecifier); + // Note: spelling has "struct baseClass", use type +- QString baseClassName; + const auto decl = resolveBaseSpecifier(cursor); +- if (decl.type.kind == CXType_Unexposed) { +- // The type is unexposed when the base class is a template type alias: +- // "class QItemSelection : public QList" where QList is aliased to QVector. +- // Try to resolve via code model. +- TypeInfo info = createTypeInfo(decl.type); +- auto parentScope = m_scopeStack.at(m_scopeStack.size() - 2); // Current is class. +- auto resolved = TypeInfo::resolveType(info, parentScope); +- if (resolved != info) +- baseClassName = resolved.toString(); +- } +- if (baseClassName.isEmpty()) +- baseClassName = getTypeName(decl.type); ++ QString baseClassName = getTypeName(decl.type); ++ if (baseClassName.startsWith(u"std::")) // Simplify "std::" types ++ baseClassName = createTypeInfo(decl.type).toString(); + + auto it = m_cursorClassHash.constFind(decl.declaration); + const CodeModel::AccessPolicy access = accessPolicy(clang_getCXXAccessSpecifier(cursor)); diff --git a/patches/shiboken2-clang-Fix-build-with-clang-16.patch b/patches/shiboken2-clang-Fix-build-with-clang-16.patch new file mode 100644 index 0000000..b07cc33 --- /dev/null +++ b/patches/shiboken2-clang-Fix-build-with-clang-16.patch @@ -0,0 +1,108 @@ +From: Friedemann Kleint +Date: Tue, 25 Apr 2023 14:01:45 +0200 +Subject: shiboken2/clang: Fix build with clang 16 + +clang 16 returns more elaborated types instead of fully qualified type +names. Qualify elaborated types when retrieving the type name. + +[ChangeLog][shiboken6] Support for libclang version 16 has been added. + +Task-number: PYSIDE-2288 +Pick-to: 6.5 5.15 +Change-Id: Ibd428280180967f11d82a72159e744c016afc927 +Reviewed-by: Christian Tismer +(cherry picked from commit 44ef1859214c66861a251d4a0faf5c38dc050850) +--- + .../ApiExtractor/clangparser/clangbuilder.cpp | 2 +- + .../ApiExtractor/clangparser/clangutils.cpp | 23 ++++++++++++++++++++++ + .../ApiExtractor/clangparser/clangutils.h | 1 + + .../shiboken2/ApiExtractor/tests/testtemplates.cpp | 3 +-- + 4 files changed, 26 insertions(+), 3 deletions(-) + +diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp +index 332f1da..ed1e15d 100644 +--- a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp ++++ b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp +@@ -524,7 +524,7 @@ TypeInfo BuilderPrivate::createTypeInfoHelper(const CXType &type) const + typeInfo.setConstant(clang_isConstQualifiedType(nestedType) != 0); + typeInfo.setVolatile(clang_isVolatileQualifiedType(nestedType) != 0); + +- QString typeName = getTypeName(nestedType); ++ QString typeName = getResolvedTypeName(nestedType); + while (TypeInfo::stripLeadingConst(&typeName) + || TypeInfo::stripLeadingVolatile(&typeName)) { + } +diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp +index 57271ef..295ede3 100644 +--- a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp ++++ b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp +@@ -130,6 +130,23 @@ QString getCursorDisplayName(const CXCursor &cursor) + return result; + } + ++static inline bool isBuiltinType(CXTypeKind kind) ++{ ++ return kind >= CXType_FirstBuiltin && kind <= CXType_LastBuiltin; ++} ++ ++// Resolve elaborated types occurring with clang 16 ++static CXType resolveType(const CXType &type) ++{ ++ if (!isBuiltinType(type.kind)) { ++ CXCursor decl = clang_getTypeDeclaration(type); ++ auto resolvedType = clang_getCursorType(decl); ++ if (resolvedType.kind != CXType_Invalid && resolvedType.kind != type.kind) ++ return resolvedType; ++ } ++ return type; ++} ++ + QString getTypeName(const CXType &type) + { + CXString typeSpelling = clang_getTypeSpelling(type); +@@ -138,6 +155,12 @@ QString getTypeName(const CXType &type) + return result; + } + ++// Resolve elaborated types occurring with clang 16 ++QString getResolvedTypeName(const CXType &type) ++{ ++ return getTypeName(resolveType(type)); ++} ++ + Diagnostic::Diagnostic(const QString &m, const CXCursor &c, CXDiagnosticSeverity s) + : message(m), source(Other), severity(s) + { +diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangutils.h b/sources/shiboken2/ApiExtractor/clangparser/clangutils.h +index f7c230a..aacaf63 100644 +--- a/sources/shiboken2/ApiExtractor/clangparser/clangutils.h ++++ b/sources/shiboken2/ApiExtractor/clangparser/clangutils.h +@@ -52,6 +52,7 @@ QString getCursorKindName(CXCursorKind cursorKind); + QString getCursorSpelling(const CXCursor &cursor); + QString getCursorDisplayName(const CXCursor &cursor); + QString getTypeName(const CXType &type); ++QString getResolvedTypeName(const CXType &type); + inline QString getCursorTypeName(const CXCursor &cursor) + { return getTypeName(clang_getCursorType(cursor)); } + inline QString getCursorResultTypeName(const CXCursor &cursor) +diff --git a/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp b/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp +index 9f929c4..fbc5c4c 100644 +--- a/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp ++++ b/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp +@@ -236,7 +236,6 @@ struct List { + const AbstractMetaFunction *erase = list->findFunction(QStringLiteral("erase")); + QVERIFY(erase); + QCOMPARE(erase->arguments().size(), 1); +- QEXPECT_FAIL("", "Clang: Some other code changes the parameter type", Abort); + QCOMPARE(erase->arguments().at(0)->type()->cppSignature(), QLatin1String("List::Iterator")); + } + +@@ -389,7 +388,7 @@ typedef BaseTemplateClass TypeOneClass; + const ComplexTypeEntry* oneType = one->typeEntry(); + const ComplexTypeEntry* baseType = base->typeEntry(); + QCOMPARE(oneType->baseContainerType(), baseType); +- QCOMPARE(one->baseClassNames(), QStringList(QLatin1String("BaseTemplateClass"))); ++ QCOMPARE(one->baseClassNames(), QStringList(QLatin1String("NSpace::BaseTemplateClass"))); + + QVERIFY(one->hasTemplateBaseClassInstantiations()); + AbstractMetaTypeList instantiations = one->templateBaseClassInstantiations(); diff --git a/patches/shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch b/patches/shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch new file mode 100644 index 0000000..62de5a1 --- /dev/null +++ b/patches/shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch @@ -0,0 +1,92 @@ +From: Friedemann Kleint +Date: Tue, 25 Apr 2023 15:30:30 +0200 +Subject: shiboken2/clang: Fix clashes between type name and enumeration + values + +Remove all constant and enum value type entries found in the type lookup +unless it is looking for template arguments; where it may be a +non-type template argument. + +Task-number: PYSIDE-2288 +Pick-to: 6.5 5.15 +Change-Id: If0609ce0d0223f551ed6dee1d1e0ea3ef49d6917 +Reviewed-by: Christian Tismer +(cherry picked from commit e22f717153a5e9855531f45c0bf82ff2461a3f7e) +--- + .../shiboken2/ApiExtractor/abstractmetabuilder.cpp | 21 +++++++++++++++++++-- + .../shiboken2/ApiExtractor/abstractmetabuilder.h | 3 ++- + .../shiboken2/ApiExtractor/typesystem_typedefs.h | 1 + + 3 files changed, 22 insertions(+), 3 deletions(-) + +diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp +index 5a413ec..2f34e16 100644 +--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp ++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp +@@ -2144,6 +2144,13 @@ static bool isNumber(const QString &s) + [](QChar c) { return c.isDigit(); }); + } + ++// A type entry relevant only for non type template "X<5>" ++static bool isNonTypeTemplateArgument(const TypeEntryCPtr &te) ++{ ++ const auto type = te->type(); ++ return type == TypeEntry::EnumValue || type == TypeEntry::ConstantValueType; ++} ++ + AbstractMetaType *AbstractMetaBuilderPrivate::translateTypeStatic(const TypeInfo &_typei, + AbstractMetaClass *currentClass, + AbstractMetaBuilderPrivate *d, +@@ -2271,7 +2278,15 @@ AbstractMetaType *AbstractMetaBuilderPrivate::translateTypeStatic(const TypeInfo + typeInfo.clearInstantiations(); + } + +- const TypeEntries types = findTypeEntries(qualifiedName, name, currentClass, d); ++ TypeEntries types = findTypeEntries(qualifiedName, name, currentClass, d); ++ if (!flags.testFlag(AbstractMetaBuilder::TemplateArgument)) { ++ // Avoid clashes between QByteArray and enum value QMetaType::QByteArray ++ // unless we are looking for template arguments. ++ auto end = std::remove_if(types.begin(), types.end(), ++ isNonTypeTemplateArgument); ++ types.erase(end, types.end()); ++ } ++ + if (types.isEmpty()) { + if (errorMessageIn) { + *errorMessageIn = +@@ -2293,7 +2308,9 @@ AbstractMetaType *AbstractMetaBuilderPrivate::translateTypeStatic(const TypeInfo + const auto &templateArguments = typeInfo.instantiations(); + for (int t = 0, size = templateArguments.size(); t < size; ++t) { + const TypeInfo &ti = templateArguments.at(t); +- AbstractMetaType *targType = translateTypeStatic(ti, currentClass, d, flags, &errorMessage); ++ AbstractMetaType *targType = translateTypeStatic(ti, currentClass, d, ++ flags | AbstractMetaBuilder::TemplateArgument, ++ &errorMessage); + // For non-type template parameters, create a dummy type entry on the fly + // as is done for classes. + if (!targType) { +diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h +index d2dc080..8916eaf 100644 +--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h ++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h +@@ -93,7 +93,8 @@ public: + void setSkipDeprecated(bool value); + + enum TranslateTypeFlag { +- DontResolveType = 0x1 ++ DontResolveType = 0x1, ++ TemplateArgument = 0x2 + }; + Q_DECLARE_FLAGS(TranslateTypeFlags, TranslateTypeFlag); + +diff --git a/sources/shiboken2/ApiExtractor/typesystem_typedefs.h b/sources/shiboken2/ApiExtractor/typesystem_typedefs.h +index 73f92b2..5dcc65c 100644 +--- a/sources/shiboken2/ApiExtractor/typesystem_typedefs.h ++++ b/sources/shiboken2/ApiExtractor/typesystem_typedefs.h +@@ -48,6 +48,7 @@ using CodeSnipList = QVector; + using DocModificationList = QVector; + using FieldModificationList = QVector; + using FunctionModificationList = QVector; ++using TypeEntryCPtr = const TypeEntry *; + using TypeEntries = QVector; + + #endif // TYPESYSTEM_TYPEDEFS_H diff --git a/patches/shiboken2-clang-Record-scope-resolution-of-arguments-func.patch b/patches/shiboken2-clang-Record-scope-resolution-of-arguments-func.patch new file mode 100644 index 0000000..f5b1fc0 --- /dev/null +++ b/patches/shiboken2-clang-Record-scope-resolution-of-arguments-func.patch @@ -0,0 +1,178 @@ +From: Friedemann Kleint +Date: Thu, 27 Apr 2023 12:44:10 +0200 +Subject: shiboken2/clang: Record scope resolution of arguments/function + return + +Add a flag indicating whether a type was specified with a leading "::" +(scope resolution). Such parameters previously caused the function to +rejected due to the "::TypeName" not being found. The type resolution +added for clang 16 strips these qualifiers though, so, the information +needs to be stored. + +Task-number: PYSIDE-2288 +Pick-to: 6.5 5.15 +Change-Id: I27d27c94ec43bcc4cb3b79e6e9ce6706c749a1e9 +Reviewed-by: Christian Tismer +(cherry picked from commit 075d8ad4660f05e6d2583ff1c05e9987ad624bfe) +--- + .../ApiExtractor/clangparser/clangbuilder.cpp | 8 ++++++-- + .../ApiExtractor/clangparser/clangutils.cpp | 11 ++++++++++ + .../ApiExtractor/clangparser/clangutils.h | 1 + + .../shiboken2/ApiExtractor/parser/codemodel.cpp | 24 ++++++++++++++++++++++ + sources/shiboken2/ApiExtractor/parser/codemodel.h | 8 ++++++++ + 5 files changed, 50 insertions(+), 2 deletions(-) + +diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp +index ed1e15d..1b5cc5c 100644 +--- a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp ++++ b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp +@@ -294,7 +294,9 @@ FunctionModelItem BuilderPrivate::createFunction(const CXCursor &cursor, + name = fixTypeName(name); + FunctionModelItem result(new _FunctionModelItem(m_model, name)); + setFileName(cursor, result.data()); +- result->setType(createTypeInfoHelper(clang_getCursorResultType(cursor))); ++ const auto type = clang_getCursorResultType(cursor); ++ result->setType(createTypeInfoHelper(type)); ++ result->setScopeResolution(hasScopeResolution(type)); + result->setFunctionType(t); + result->setScope(m_scope); + result->setStatic(clang_Cursor_getStorageClass(cursor) == CX_SC_Static); +@@ -1031,7 +1033,9 @@ BaseVisitor::StartTokenResult Builder::startToken(const CXCursor &cursor) + if (d->m_currentArgument.isNull() && !d->m_currentFunction.isNull()) { + const QString name = getCursorSpelling(cursor); + d->m_currentArgument.reset(new _ArgumentModelItem(d->m_model, name)); +- d->m_currentArgument->setType(d->createTypeInfo(cursor)); ++ const auto type = clang_getCursorType(cursor); ++ d->m_currentArgument->setScopeResolution(hasScopeResolution(type)); ++ d->m_currentArgument->setType(d->createTypeInfo(type)); + d->m_currentFunction->addArgument(d->m_currentArgument); + QString defaultValueExpression = d->cursorValueExpression(this, cursor); + if (!defaultValueExpression.isEmpty()) { +diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp +index 295ede3..ec6d228 100644 +--- a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp ++++ b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp +@@ -155,6 +155,17 @@ QString getTypeName(const CXType &type) + return result; + } + ++// Quick check for "::Type" ++bool hasScopeResolution(const CXType &type) ++{ ++ CXString typeSpelling = clang_getTypeSpelling(type); ++ const QString spelling = QString::fromUtf8(clang_getCString(typeSpelling)); ++ const bool result = spelling.startsWith(QLatin1String("::")) ++ || spelling.contains(QLatin1String(" ::")); ++ clang_disposeString(typeSpelling); ++ return result; ++} ++ + // Resolve elaborated types occurring with clang 16 + QString getResolvedTypeName(const CXType &type) + { +diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangutils.h b/sources/shiboken2/ApiExtractor/clangparser/clangutils.h +index aacaf63..33f362c 100644 +--- a/sources/shiboken2/ApiExtractor/clangparser/clangutils.h ++++ b/sources/shiboken2/ApiExtractor/clangparser/clangutils.h +@@ -52,6 +52,7 @@ QString getCursorKindName(CXCursorKind cursorKind); + QString getCursorSpelling(const CXCursor &cursor); + QString getCursorDisplayName(const CXCursor &cursor); + QString getTypeName(const CXType &type); ++bool hasScopeResolution(const CXType &type); + QString getResolvedTypeName(const CXType &type); + inline QString getCursorTypeName(const CXCursor &cursor) + { return getTypeName(clang_getCursorType(cursor)); } +diff --git a/sources/shiboken2/ApiExtractor/parser/codemodel.cpp b/sources/shiboken2/ApiExtractor/parser/codemodel.cpp +index dea0812..ba07a01 100644 +--- a/sources/shiboken2/ApiExtractor/parser/codemodel.cpp ++++ b/sources/shiboken2/ApiExtractor/parser/codemodel.cpp +@@ -1121,11 +1121,23 @@ void _ArgumentModelItem::setDefaultValue(bool defaultValue) + m_defaultValue = defaultValue; + } + ++bool _ArgumentModelItem::scopeResolution() const ++{ ++ return m_scopeResolution; ++} ++ ++void _ArgumentModelItem::setScopeResolution(bool v) ++{ ++ m_scopeResolution = v; ++} ++ + #ifndef QT_NO_DEBUG_STREAM + void _ArgumentModelItem::formatDebug(QDebug &d) const + { + _CodeModelItem::formatDebug(d); + d << ", type=" << m_type; ++ if (m_scopeResolution) ++ d << ", [m_scope resolution]"; + if (m_defaultValue) + d << ", defaultValue=\"" << m_defaultValueExpression << '"'; + } +@@ -1200,6 +1212,16 @@ void _FunctionModelItem::setVariadics(bool isVariadics) + m_isVariadics = isVariadics; + } + ++bool _FunctionModelItem::scopeResolution() const ++{ ++ return m_scopeResolution; ++} ++ ++void _FunctionModelItem::setScopeResolution(bool v) ++{ ++ m_scopeResolution = v; ++} ++ + bool _FunctionModelItem::isNoExcept() const + { + return m_exceptionSpecification == ExceptionSpecification::NoExcept; +@@ -1343,6 +1365,8 @@ void _FunctionModelItem::formatDebug(QDebug &d) const + d << " [explicit]"; + if (m_isInvokable) + d << " [invokable]"; ++ if (m_scopeResolution) ++ d << " [scope resolution]"; + formatModelItemList(d, ", arguments=", m_arguments); + if (m_isVariadics) + d << ",..."; +diff --git a/sources/shiboken2/ApiExtractor/parser/codemodel.h b/sources/shiboken2/ApiExtractor/parser/codemodel.h +index b990ad9..85f298c 100644 +--- a/sources/shiboken2/ApiExtractor/parser/codemodel.h ++++ b/sources/shiboken2/ApiExtractor/parser/codemodel.h +@@ -499,6 +499,10 @@ public: + QString defaultValueExpression() const { return m_defaultValueExpression; } + void setDefaultValueExpression(const QString &expr) { m_defaultValueExpression = expr; } + ++ // Argument type has scope resolution "::ArgumentType" ++ bool scopeResolution() const; ++ void setScopeResolution(bool v); ++ + #ifndef QT_NO_DEBUG_STREAM + void formatDebug(QDebug &d) const override; + #endif +@@ -507,6 +511,7 @@ private: + TypeInfo m_type; + QString m_defaultValueExpression; + bool m_defaultValue = false; ++ bool m_scopeResolution = false; + }; + + class _MemberModelItem: public _CodeModelItem +@@ -623,6 +628,8 @@ public: + bool isVariadics() const; + void setVariadics(bool isVariadics); + ++ bool scopeResolution() const; // Return type has scope resolution "::ReturnType" ++ void setScopeResolution(bool v); + + bool isSimilar(const FunctionModelItem &other) const; + +@@ -652,6 +659,7 @@ private: + uint m_isExplicit: 1; + uint m_isVariadics: 1; + uint m_isInvokable : 1; // Qt ++ uint m_scopeResolution: 1; + }; + uint m_flags; + }; diff --git a/patches/shiboken2-clang-Remove-typedef-expansion.patch b/patches/shiboken2-clang-Remove-typedef-expansion.patch new file mode 100644 index 0000000..1426411 --- /dev/null +++ b/patches/shiboken2-clang-Remove-typedef-expansion.patch @@ -0,0 +1,101 @@ +From: Friedemann Kleint +Date: Thu, 20 Apr 2023 11:16:15 +0200 +Subject: shiboken2/clang: Remove typedef expansion + +The functionality will be re-added by a subsequent change +expanding elaborated types. + +Task-number: PYSIDE-2288 +Pick-to: 6.5 5.15 +Change-Id: I3245c6dccba7de0ed1ce0e7820e1edb4567ca3c2 +Reviewed-by: Christian Tismer +(cherry picked from commit 24742dca014109bd3c2a9775fc15ca306ab22c9c) +--- + .../ApiExtractor/clangparser/clangbuilder.cpp | 39 ---------------------- + 1 file changed, 39 deletions(-) + +diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp +index 1b4c81c..332f1da 100644 +--- a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp ++++ b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp +@@ -140,7 +140,6 @@ static bool isSigned(CXTypeKind kind) + class BuilderPrivate { + public: + using CursorClassHash = QHash; +- using CursorTypedefHash = QHash; + using TypeInfoHash = QHash; + + explicit BuilderPrivate(BaseVisitor *bv) : m_baseVisitor(bv), m_model(new CodeModel) +@@ -197,9 +196,6 @@ public: + QString cursorValueExpression(BaseVisitor *bv, const CXCursor &cursor) const; + void addBaseClass(const CXCursor &cursor); + +- template +- void qualifyTypeDef(const CXCursor &typeRefCursor, const QSharedPointer &item) const; +- + bool visitHeader(const char *cFileName) const; + + void setFileName(const CXCursor &cursor, _CodeModelItem *item); +@@ -213,7 +209,6 @@ public: + // classes can be correctly parented in case of forward-declared inner classes + // (QMetaObject::Connection) + CursorClassHash m_cursorClassHash; +- CursorTypedefHash m_cursorTypedefHash; + + mutable TypeInfoHash m_typeInfoHash; // Cache type information + mutable QHash m_templateTypeAliases; +@@ -561,7 +556,6 @@ void BuilderPrivate::addTypeDef(const CXCursor &cursor, const CXType &cxType) + item->setType(createTypeInfo(cxType)); + item->setScope(m_scope); + m_scopeStack.back()->addTypeDef(item); +- m_cursorTypedefHash.insert(cursor, item); + } + + void BuilderPrivate::startTemplateTypeAlias(const CXCursor &cursor) +@@ -703,31 +697,6 @@ static inline CXCursor definitionFromTypeRef(const CXCursor &typeRefCursor) + return clang_getTypeDeclaration(clang_getCursorType(typeRefCursor)); + } + +-// Qualify function arguments or fields that are typedef'ed from another scope: +-// enum ConversionFlag {}; +-// typedef QFlags ConversionFlags; +-// class QTextCodec { +-// enum ConversionFlag {}; +-// typedef QFlags ConversionFlags; +-// struct ConverterState { +-// explicit ConverterState(ConversionFlags); +-// ^^ qualify to QTextCodec::ConversionFlags +-// ConversionFlags m_flags; +-// ^^ ditto +- +-template // ArgumentModelItem, VariableModelItem +-void BuilderPrivate::qualifyTypeDef(const CXCursor &typeRefCursor, const QSharedPointer &item) const +-{ +- TypeInfo type = item->type(); +- if (type.qualifiedName().size() == 1) { // item's type is unqualified. +- const auto it = m_cursorTypedefHash.constFind(definitionFromTypeRef(typeRefCursor)); +- if (it != m_cursorTypedefHash.constEnd() && !it.value()->scope().isEmpty()) { +- type.setQualifiedName(it.value()->scope() + type.qualifiedName()); +- item->setType(type); +- } +- } +-} +- + void BuilderPrivate::setFileName(const CXCursor &cursor, _CodeModelItem *item) + { + const SourceRange range = getCursorRange(cursor); +@@ -1120,14 +1089,6 @@ BaseVisitor::StartTokenResult Builder::startToken(const CXCursor &cursor) + } + break; + case CXCursor_TypeRef: +- if (!d->m_currentFunction.isNull()) { +- if (d->m_currentArgument.isNull()) +- d->qualifyTypeDef(cursor, d->m_currentFunction); // return type +- else +- d->qualifyTypeDef(cursor, d->m_currentArgument); +- } else if (!d->m_currentField.isNull()) { +- d->qualifyTypeDef(cursor, d->m_currentField); +- } + break; + case CXCursor_CXXFinalAttr: + if (!d->m_currentFunction.isNull()) diff --git a/patches/shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch b/patches/shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch new file mode 100644 index 0000000..db9791a --- /dev/null +++ b/patches/shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch @@ -0,0 +1,96 @@ +From: Friedemann Kleint +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 +--- + 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); + diff --git a/patches/shiboken2-clang-Write-scope-resolution-for-all-parameters.patch b/patches/shiboken2-clang-Write-scope-resolution-for-all-parameters.patch new file mode 100644 index 0000000..b0be6fa --- /dev/null +++ b/patches/shiboken2-clang-Write-scope-resolution-for-all-parameters.patch @@ -0,0 +1,62 @@ +From: Friedemann Kleint +Date: Thu, 27 Apr 2023 12:18:39 +0200 +Subject: shiboken2/clang: Write scope resolution for all parameters of native + wrappers + +Make sure types are correct for cases like: + +- QtDBusHelper::QDBusReply::QDBusReply(::QDBusReply) +- Qt3DInput*Event constructors taking the equivalent QtGui classes + (Qt3DInput::QMouseEvent(::QMouseEvent *); + +[ChangeLog][shiboken6] Support for parameters/function return +types with scope resolution has been improved. + +Fixes: PYSIDE-2288 +Pick-to: 6.5 5.15 +Change-Id: Id29758fceb88188f4cd834fbd5a7cc0ab511fb1a +Reviewed-by: Christian Tismer +(cherry picked from commit dd863857436bbeeba4c0a1077f5ad16653296277) +--- + sources/shiboken2/generator/generator.cpp | 24 +++++++++++++----------- + 1 file changed, 13 insertions(+), 11 deletions(-) + +diff --git a/sources/shiboken2/generator/generator.cpp b/sources/shiboken2/generator/generator.cpp +index 6028282..6147b8a 100644 +--- a/sources/shiboken2/generator/generator.cpp ++++ b/sources/shiboken2/generator/generator.cpp +@@ -899,21 +899,23 @@ QString Generator::translateType(const AbstractMetaType *cType, + if (index >= (s.size() - (constLen + 1))) // (VarType const) or (VarType const[*|&]) + s = s.remove(index, constLen); + } +- } else if (options & Generator::ExcludeConst || options & Generator::ExcludeReference) { ++ } else { + AbstractMetaType *copyType = cType->copy(); ++ if (options & Generator::ExcludeConst || options & Generator::ExcludeReference) { ++ if (options & Generator::ExcludeConst) ++ copyType->setConstant(false); + +- if (options & Generator::ExcludeConst) +- copyType->setConstant(false); +- +- if (options & Generator::ExcludeReference) +- copyType->setReferenceType(NoReference); +- ++ if (options & Generator::ExcludeReference) ++ copyType->setReferenceType(NoReference); ++ } + s = copyType->cppSignature(); +- if (!copyType->typeEntry()->isVoid() && !copyType->typeEntry()->isCppPrimitive()) +- s.prepend(QLatin1String("::")); ++ const auto te = copyType->typeEntry(); ++ if (!te->isVoid() && !te->isCppPrimitive()) { // Add scope resolution ++ const auto pos = s.indexOf(te->qualifiedCppName()); // Skip const/volatile ++ Q_ASSERT(pos >= 0); ++ s.insert(pos, QLatin1String("::")); ++ } + delete copyType; +- } else { +- s = cType->cppSignature(); + } + } + diff --git a/patches/test-with-current-interpreter.patch b/patches/test-with-current-interpreter.patch new file mode 100644 index 0000000..642cb20 --- /dev/null +++ b/patches/test-with-current-interpreter.patch @@ -0,0 +1,27 @@ +From: Dmitry Shachnev +Date: Sun, 14 Nov 2021 21:08:50 +0300 +Subject: Find the build directory matching the current interpreter + +This is needed to allow us to run tests with all supported Python versions. +Without this patch, the latest build directory will be always picked, no +matter what the current interpreter is. +--- + testing/buildlog.py | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/testing/buildlog.py b/testing/buildlog.py +index 216282b..5d3aa1f 100644 +--- a/testing/buildlog.py ++++ b/testing/buildlog.py +@@ -94,6 +94,11 @@ class BuildLog(object): + """.format(fpath))) + sys.exit(1) + ++ # We need to find the build directory for the current interpreter ++ py_version = "{}.{}".format(sys.version_info[0], sys.version_info[1]) ++ if py_version not in build_classifiers: ++ continue ++ + if not os.path.exists(build_dir): + rel_dir, low_part = os.path.split(build_dir) + rel_dir, two_part = os.path.split(rel_dir) diff --git a/patches/update-sip-import.patch b/patches/update-sip-import.patch new file mode 100644 index 0000000..2f4958b --- /dev/null +++ b/patches/update-sip-import.patch @@ -0,0 +1,25 @@ +Description: Update import of PyQt5 private sip module and remove Python 2/PyQt4 setapi calls +Author: Kurt Kremitzki +Last-Updated: 2020-12-20 + +--- a/sources/pyside2/tests/tools/list-class-hierarchy.py ++++ b/sources/pyside2/tests/tools/list-class-hierarchy.py +@@ -96,14 +96,10 @@ + for l in libraries: + dictionary = [] + if l =="PyQt5": +- import sip +- sip.setapi('QDate',2) +- sip.setapi('QDateTime',2) +- sip.setapi('QString',2) +- sip.setapi('QTextStream',2) +- sip.setapi('QTime',2) +- sip.setapi('QUrl',2) +- sip.setapi('QVariant',2) ++ try: ++ from PyQt5 import sip ++ except ModuleNotFoundError: ++ import sip + + for m in modules: + exec("from %s import %s" % (l,m), globals(), locals()) diff --git a/pyside2-tools.install b/pyside2-tools.install new file mode 100644 index 0000000..bb4b1fe --- /dev/null +++ b/pyside2-tools.install @@ -0,0 +1 @@ +pyside3_install/py3.*/bin/pyside2-* usr/bin diff --git a/pyside2-tools.manpages b/pyside2-tools.manpages new file mode 100644 index 0000000..ca1b931 --- /dev/null +++ b/pyside2-tools.manpages @@ -0,0 +1,2 @@ +pyside3_install/py3*/share/man/man1/pyside2-* + diff --git a/python-pyside2-doc.docs b/python-pyside2-doc.docs new file mode 100644 index 0000000..2ada6e7 --- /dev/null +++ b/python-pyside2-doc.docs @@ -0,0 +1,3 @@ +README.md +README.pyside2.md +README.shiboken2.md diff --git a/python-pyside2-doc.examples b/python-pyside2-doc.examples new file mode 100644 index 0000000..e39721e --- /dev/null +++ b/python-pyside2-doc.examples @@ -0,0 +1 @@ +examples/* diff --git a/python3-pyside2.qtconcurrent.install b/python3-pyside2.qtconcurrent.install new file mode 100644 index 0000000..ed9eae0 --- /dev/null +++ b/python3-pyside2.qtconcurrent.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtConcurrent.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtcore.install b/python3-pyside2.qtcore.install new file mode 100644 index 0000000..18bfbc7 --- /dev/null +++ b/python3-pyside2.qtcore.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtCore.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtgui.install b/python3-pyside2.qtgui.install new file mode 100644 index 0000000..9c8d25c --- /dev/null +++ b/python3-pyside2.qtgui.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtGui.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qthelp.install b/python3-pyside2.qthelp.install new file mode 100644 index 0000000..8012c75 --- /dev/null +++ b/python3-pyside2.qthelp.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtHelp.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtmultimedia.install b/python3-pyside2.qtmultimedia.install new file mode 100644 index 0000000..e100d1e --- /dev/null +++ b/python3-pyside2.qtmultimedia.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtMultimedia.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtmultimediawidgets.install b/python3-pyside2.qtmultimediawidgets.install new file mode 100644 index 0000000..11420f9 --- /dev/null +++ b/python3-pyside2.qtmultimediawidgets.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtMultimediaWidgets.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtnetwork.install b/python3-pyside2.qtnetwork.install new file mode 100644 index 0000000..cddff59 --- /dev/null +++ b/python3-pyside2.qtnetwork.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtNetwork.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtopengl.install b/python3-pyside2.qtopengl.install new file mode 100644 index 0000000..736e241 --- /dev/null +++ b/python3-pyside2.qtopengl.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtOpenGL.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtopenglfunctions.install b/python3-pyside2.qtopenglfunctions.install new file mode 100644 index 0000000..9b444f7 --- /dev/null +++ b/python3-pyside2.qtopenglfunctions.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtOpenGLFunctions.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtprintsupport.install b/python3-pyside2.qtprintsupport.install new file mode 100644 index 0000000..72eb659 --- /dev/null +++ b/python3-pyside2.qtprintsupport.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtPrintSupport.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtqml.install b/python3-pyside2.qtqml.install new file mode 100644 index 0000000..8116b2d --- /dev/null +++ b/python3-pyside2.qtqml.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtQml.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtquick.install b/python3-pyside2.qtquick.install new file mode 100644 index 0000000..d2045b1 --- /dev/null +++ b/python3-pyside2.qtquick.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtQuick.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtsql.install b/python3-pyside2.qtsql.install new file mode 100644 index 0000000..b50b3e4 --- /dev/null +++ b/python3-pyside2.qtsql.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtSql.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtsvg.install b/python3-pyside2.qtsvg.install new file mode 100644 index 0000000..522de6c --- /dev/null +++ b/python3-pyside2.qtsvg.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtSvg.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qttest.install b/python3-pyside2.qttest.install new file mode 100644 index 0000000..bc16f74 --- /dev/null +++ b/python3-pyside2.qttest.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtTest.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtuitools.install b/python3-pyside2.qtuitools.install new file mode 100644 index 0000000..9bbb6db --- /dev/null +++ b/python3-pyside2.qtuitools.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtUiTools.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtwebchannel.install b/python3-pyside2.qtwebchannel.install new file mode 100644 index 0000000..97ab7cf --- /dev/null +++ b/python3-pyside2.qtwebchannel.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtWebChannel.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtwebengine.install b/python3-pyside2.qtwebengine.install new file mode 100644 index 0000000..4430a23 --- /dev/null +++ b/python3-pyside2.qtwebengine.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtWebEngine.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtwebenginecore.install b/python3-pyside2.qtwebenginecore.install new file mode 100644 index 0000000..efe85a2 --- /dev/null +++ b/python3-pyside2.qtwebenginecore.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtWebEngineCore.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtwebenginewidgets.install b/python3-pyside2.qtwebenginewidgets.install new file mode 100644 index 0000000..3dbc143 --- /dev/null +++ b/python3-pyside2.qtwebenginewidgets.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtWebEngineWidgets.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtwebsockets.install b/python3-pyside2.qtwebsockets.install new file mode 100644 index 0000000..54f3e1b --- /dev/null +++ b/python3-pyside2.qtwebsockets.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtWebSockets.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtwidgets.install b/python3-pyside2.qtwidgets.install new file mode 100644 index 0000000..ff9a2ce --- /dev/null +++ b/python3-pyside2.qtwidgets.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtWidgets.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtxml.install b/python3-pyside2.qtxml.install new file mode 100644 index 0000000..714f2b4 --- /dev/null +++ b/python3-pyside2.qtxml.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtXml.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/python3-pyside2.qtxmlpatterns.install b/python3-pyside2.qtxmlpatterns.install new file mode 100644 index 0000000..a4b464d --- /dev/null +++ b/python3-pyside2.qtxmlpatterns.install @@ -0,0 +1 @@ +pyside3_install/py*-relwithdebinfo/lib/python3*/site-packages/PySide2/QtXmlPatterns.*.so usr/lib/python3/dist-packages/PySide2 diff --git a/rules b/rules new file mode 100755 index 0000000..f928389 --- /dev/null +++ b/rules @@ -0,0 +1,63 @@ +#!/usr/bin/make -f + +include /usr/share/dpkg/default.mk + +# Safety measure to ensure package names match SONAMEs +PYSIDE_MAJOR := $(shell echo $(DEB_VERSION_UPSTREAM) | cut -d. -f1-2) +ifeq ($(shell awk '/Package:/ {print $$2}' debian/control | grep -- '-$(PYSIDE_MAJOR)\(t64\)\?$$'),) + $(error Please update package names for major version $(PYSIDE_MAJOR)) +endif +ifeq ($(shell ls debian/lib* | grep -- -$(PYSIDE_MAJOR)),) + $(error Please update files debian/lib*.* for major version $(PYSIDE_MAJOR)) +endif +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + OPTION_JOBS = --parallel=$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +endif + +export PYBUILD_NAME=pyside2 +export PYBUILD_SYSTEM=distutils +export PYBUILD_BUILD_ARGS=--relwithdebinfo --verbose-build --no-examples --build-tests --doc-build-online --ignore-git $(OPTION_JOBS) + +export MAIN_VERSION_UPSTREAM := $(shell echo $(DEB_VERSION_UPSTREAM)) +export DEB_BUILD_MAINT_OPTIONS = hardening=+all +# Add CPPFLAGS to CXXFLAGS as CMake ignores CPPFLAGS by default +CXXFLAGS+=$(CPPFLAGS) + +# Work around buildd bug (https://bugs.debian.org/842565) +undefine XDG_RUNTIME_DIR + +%: + dh $@ --with python3,sphinxdoc --buildsystem=pybuild + +override_dh_auto_install: + # Don't use pybuild install process, we take over this step to + # split files in the way we want it. But we echo the list of files + # built to make it easier to update *.install files. + echo ">>> In pyside*_{package,install}" + -find pyside*_install pyside*_build + +override_dh_makeshlibs: + dh_makeshlibs -VUpstream-Version + +override_dh_install-indep: + dh_install -X.doctrees + +override_dh_install-arch: + dh_install + # remove RUNPATH setup in shiboken2 + chrpath -d debian/shiboken2/usr/bin/shiboken2 + # change the library path in pkg-info/*.pc and in *.cmake files: + # during the build the path is setup to the build dir + # /build/pyside2* (required to find lib during the build) but it's + # not what we need + debian/set-paths + +override_dh_auto_test: +ifneq (,$(filter $(DEB_HOST_ARCH), mips64el ppc64el)) + # See https://bugs.debian.org/868745, https://bugs.debian.org/1061679 + -QSG_NO_DEPTH_BUFFER=1 xvfb-run -a dh_auto_test -- --system=custom \ + --test-args '{interpreter} testrunner.py test' +else + xvfb-run -a dh_auto_test -- --system=custom \ + --test-args '{interpreter} testrunner.py test' +endif diff --git a/set-paths b/set-paths new file mode 100755 index 0000000..9e334a2 --- /dev/null +++ b/set-paths @@ -0,0 +1,42 @@ +#!/bin/sh + +# Replace build directory value by install directory value +package="libshiboken2-dev" +for directory in "cmake/Shiboken2-$MAIN_VERSION_UPSTREAM" "pkgconfig"; do + sed -i "s|build.*relwithdebinfo/lib|usr/lib/$DEB_HOST_MULTIARCH|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|build.*relwithdebinfo|usr|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|\${PACKAGE_PREFIX_DIR}|/usr|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|\${_IMPORT_PREFIX}/lib|\${_IMPORT_PREFIX}/$DEB_HOST_MULTIARCH|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|\${_IMPORT_PREFIX}/include|\${_IMPORT_PREFIX}/../include|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|libshiboken2.*\.so|libshiboken2\${PYTHON_CONFIG_SUFFIX}.so|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/Shiboken2Targets-*.cmake; +done + +package="libpyside2-dev" +for directory in "pkgconfig" "cmake/PySide2-$MAIN_VERSION_UPSTREAM"; do + sed -i "s|build.*relwithdebinfo/lib|usr/lib/$DEB_HOST_MULTIARCH|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|build.*relwithdebinfo|usr|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|\${PACKAGE_PREFIX_DIR}|/usr|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|\${_IMPORT_PREFIX}/lib|\${_IMPORT_PREFIX}/$DEB_HOST_MULTIARCH|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|\${_IMPORT_PREFIX}/include|\${_IMPORT_PREFIX}/../include|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/*; + sed -i "s|libpyside2.*\.so|libpyside2\${PYTHON_CONFIG_SUFFIX}.so|" \ + debian/$package/usr/lib/$DEB_HOST_MULTIARCH/$directory/PySide2Targets-*.cmake; +done + +# Set correctly the python path for pyside2 (Python3) +sed -i "s|^set_and_check(PYSIDE_PYTHONPATH.*|set_and_check(PYSIDE_PYTHONPATH \"/usr/lib/python3/dist-packages/PySide2\")|" \ + debian/libpyside2-dev/usr/lib/$DEB_HOST_MULTIARCH/cmake/PySide2-$MAIN_VERSION_UPSTREAM/PySide2Config.cpython-3*-$DEB_HOST_MULTIARCH.cmake + +# Set correctly the python path for shiboken2 (Python3) +sed -i "s|^set_and_check(SHIBOKEN_PYTHON_MODULE_DIR.*|set_and_check(SHIBOKEN_PYTHON_MODULE_DIR \"/usr/lib/python3/dist-packages/shiboken2\")|" \ + debian/libshiboken2-dev/usr/lib/$DEB_HOST_MULTIARCH/cmake/Shiboken2-$MAIN_VERSION_UPSTREAM/Shiboken2Config.cpython-3*-$DEB_HOST_MULTIARCH.cmake diff --git a/shiboken2-doc.docs b/shiboken2-doc.docs new file mode 100644 index 0000000..bc427a5 --- /dev/null +++ b/shiboken2-doc.docs @@ -0,0 +1 @@ +pyside3_build/py3*-relwithdebinfo/shiboken2/doc/html diff --git a/shiboken2.install b/shiboken2.install new file mode 100644 index 0000000..335f3c4 --- /dev/null +++ b/shiboken2.install @@ -0,0 +1 @@ +pyside3_install/py3*-relwithdebinfo/bin/shiboken2 usr/bin diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/options b/source/options new file mode 100644 index 0000000..cb61fa5 --- /dev/null +++ b/source/options @@ -0,0 +1 @@ +extend-diff-ignore = "^[^/]*[.]egg-info/" diff --git a/tests/control b/tests/control new file mode 100644 index 0000000..0db5537 --- /dev/null +++ b/tests/control @@ -0,0 +1,98 @@ +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtcore PySide2.QtCore +Depends: python3-pyside2.qtcore, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtwidgets PySide2.QtWidgets +Depends: python3-pyside2.qtwidgets, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtquick PySide2.QtQuick +Depends: python3-pyside2.qtquick, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtqml PySide2.QtQml +Depends: python3-pyside2.qtqml, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtwebenginecore PySide2.QtWebEngineCore +Depends: python3-pyside2.qtwebenginecore, python3 +Restrictions: allow-stderr, superficial +Architecture: amd64 arm64 armhf i386 mips64el + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qthelp PySide2.QtHelp +Depends: python3-pyside2.qthelp, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtnetwork PySide2.QtNetwork +Depends: python3-pyside2.qtnetwork, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtmultimediawidgets PySide2.QtMultimediaWidgets +Depends: python3-pyside2.qtmultimediawidgets, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtmultimedia PySide2.QtMultimedia +Depends: python3-pyside2.qtmultimedia, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtwebchannel PySide2.QtWebChannel +Depends: python3-pyside2.qtwebchannel, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtprintsupport PySide2.QtPrintSupport +Depends: python3-pyside2.qtprintsupport, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtxml PySide2.QtXml +Depends: python3-pyside2.qtxml, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qttest PySide2.QtTest +Depends: python3-pyside2.qttest, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtwebenginewidgets PySide2.QtWebEngineWidgets +Depends: python3-pyside2.qtwebenginewidgets, python3 +Restrictions: allow-stderr, superficial +Architecture: amd64 arm64 armhf i386 mips64el + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtconcurrent PySide2.QtConcurrent +Depends: python3-pyside2.qtconcurrent, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtxmlpatterns PySide2.QtXmlPatterns +Depends: python3-pyside2.qtxmlpatterns, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtuitools PySide2.QtUiTools +Depends: python3-pyside2.qtuitools, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtopengl PySide2.QtOpenGL +Depends: python3-pyside2.qtopengl, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtsql PySide2.QtSql +Depends: python3-pyside2.qtsql, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtgui PySide2.QtGui +Depends: python3-pyside2.qtgui, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtsvg PySide2.QtSvg +Depends: python3-pyside2.qtsvg, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtwebsockets PySide2.QtWebSockets +Depends: python3-pyside2.qtwebsockets, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtopenglfunctions PySide2.QtOpenGLFunctions +Depends: python3-pyside2.qtopenglfunctions, python3 +Restrictions: allow-stderr, superficial + +Test-Command: debian/tests/test_install_python3.sh python3-pyside2.qtwebengine PySide2.QtWebEngine +Depends: python3-pyside2.qtwebengine, python3 +Restrictions: allow-stderr, superficial +Architecture: amd64 arm64 armhf i386 mips64el diff --git a/tests/control.gen b/tests/control.gen new file mode 100755 index 0000000..c3a4140 --- /dev/null +++ b/tests/control.gen @@ -0,0 +1,21 @@ +#!/bin/sh + +# Remove debian/tests/control +rm -f debian/tests/control + +# Create the basic (import) test for Python 3 modules +for binary_package in $(dh_listpackages|grep "python3-pyside2.qt"); do + module_name=$(echo $binary_package|awk -F. '{print $2}') + # find import_name + import_name=$(find sources/pyside2/PySide2/ -maxdepth 1 -type d| xargs -n 1 basename|grep -i ^$module_name$) + echo "Test-Command: debian/tests/test_install_python3.sh $binary_package PySide2.$import_name +Depends: $binary_package, python3 +Restrictions: allow-stderr, superficial" >>debian/tests/control + architecture=$(sed -n "/^Package: ${binary_package}$/{n; p}" debian/control) + if [ "$architecture" != 'Architecture: any' ]; then + echo "$architecture" >>debian/tests/control + fi + echo "" >>debian/tests/control +done + +sed -i '$d' debian/tests/control diff --git a/tests/test_install_python3.sh b/tests/test_install_python3.sh new file mode 100755 index 0000000..d74a4c9 --- /dev/null +++ b/tests/test_install_python3.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +echo "Testing python3 package $1" +for py in $(py3versions -d 2>/dev/null) ; do + cd "$AUTOPKGTEST_TMP" ; + echo "Testing with $py:" ; + $py -c "import $2; print($2)" ; +done diff --git a/watch b/watch new file mode 100644 index 0000000..9fe24da --- /dev/null +++ b/watch @@ -0,0 +1,2 @@ +version=4 +https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-([\d\.]+)-src/ pyside-setup-.*-src-@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate