Import pyside2_5.15.16-3.1.debian.tar.xz
authorGraham Inggs <ginggs@debian.org>
Sat, 25 Jan 2025 16:33:38 +0000 (16:33 +0000)
committerGraham Inggs <ginggs@debian.org>
Sat, 25 Jan 2025 16:33:38 +0000 (16:33 +0000)
[dgit import tarball pyside2 5.15.16-3.1 pyside2_5.15.16-3.1.debian.tar.xz]

70 files changed:
changelog [new file with mode: 0644]
clean [new file with mode: 0644]
control [new file with mode: 0644]
copyright [new file with mode: 0644]
libpyside2-dev.install [new file with mode: 0644]
libpyside2-py3-5.15t64.install [new file with mode: 0644]
libpyside2-py3-5.15t64.lintian-overrides [new file with mode: 0644]
libshiboken2-dev.install [new file with mode: 0644]
libshiboken2-py3-5.15t64.install [new file with mode: 0644]
libshiboken2-py3-5.15t64.lintian-overrides [new file with mode: 0644]
patches/Do-not-change-RPATH.patch [new file with mode: 0644]
patches/Do-the-transition-to-Python-3.13.patch [new file with mode: 0644]
patches/Final-details-to-enable-3.12-wheel-compatibility.patch [new file with mode: 0644]
patches/Fix-condition-to-allow-3.13-for-wheel-creation.patch [new file with mode: 0644]
patches/PyEnum-make-forgiving-duplicates-work-with-Python-3.11.patch [new file with mode: 0644]
patches/Python-3.12-Fix-the-structure-of-class-property.patch [new file with mode: 0644]
patches/Shiboken-Fix-the-oldest-shiboken-bug-ever.patch [new file with mode: 0644]
patches/Stop-using-imp-module.patch [new file with mode: 0644]
patches/Support-running-PySide-on-Python-3.12.patch [new file with mode: 0644]
patches/Use-public-version-of-PyLong_AsInt-for-Python-3.13.patch [new file with mode: 0644]
patches/blacklist-failing-tests.patch [new file with mode: 0644]
patches/fix-spelling-errors.patch [new file with mode: 0644]
patches/series [new file with mode: 0644]
patches/shiboken2-clang-Fix-and-simplify-resolveType-helper.patch [new file with mode: 0644]
patches/shiboken2-clang-Fix-build-with-clang-16.patch [new file with mode: 0644]
patches/shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch [new file with mode: 0644]
patches/shiboken2-clang-Record-scope-resolution-of-arguments-func.patch [new file with mode: 0644]
patches/shiboken2-clang-Remove-typedef-expansion.patch [new file with mode: 0644]
patches/shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch [new file with mode: 0644]
patches/shiboken2-clang-Write-scope-resolution-for-all-parameters.patch [new file with mode: 0644]
patches/test-with-current-interpreter.patch [new file with mode: 0644]
patches/update-sip-import.patch [new file with mode: 0644]
pyside2-tools.install [new file with mode: 0644]
pyside2-tools.manpages [new file with mode: 0644]
python-pyside2-doc.docs [new file with mode: 0644]
python-pyside2-doc.examples [new file with mode: 0644]
python3-pyside2.qtconcurrent.install [new file with mode: 0644]
python3-pyside2.qtcore.install [new file with mode: 0644]
python3-pyside2.qtgui.install [new file with mode: 0644]
python3-pyside2.qthelp.install [new file with mode: 0644]
python3-pyside2.qtmultimedia.install [new file with mode: 0644]
python3-pyside2.qtmultimediawidgets.install [new file with mode: 0644]
python3-pyside2.qtnetwork.install [new file with mode: 0644]
python3-pyside2.qtopengl.install [new file with mode: 0644]
python3-pyside2.qtopenglfunctions.install [new file with mode: 0644]
python3-pyside2.qtprintsupport.install [new file with mode: 0644]
python3-pyside2.qtqml.install [new file with mode: 0644]
python3-pyside2.qtquick.install [new file with mode: 0644]
python3-pyside2.qtsql.install [new file with mode: 0644]
python3-pyside2.qtsvg.install [new file with mode: 0644]
python3-pyside2.qttest.install [new file with mode: 0644]
python3-pyside2.qtuitools.install [new file with mode: 0644]
python3-pyside2.qtwebchannel.install [new file with mode: 0644]
python3-pyside2.qtwebengine.install [new file with mode: 0644]
python3-pyside2.qtwebenginecore.install [new file with mode: 0644]
python3-pyside2.qtwebenginewidgets.install [new file with mode: 0644]
python3-pyside2.qtwebsockets.install [new file with mode: 0644]
python3-pyside2.qtwidgets.install [new file with mode: 0644]
python3-pyside2.qtxml.install [new file with mode: 0644]
python3-pyside2.qtxmlpatterns.install [new file with mode: 0644]
rules [new file with mode: 0755]
set-paths [new file with mode: 0755]
shiboken2-doc.docs [new file with mode: 0644]
shiboken2.install [new file with mode: 0644]
source/format [new file with mode: 0644]
source/options [new file with mode: 0644]
tests/control [new file with mode: 0644]
tests/control.gen [new file with mode: 0755]
tests/test_install_python3.sh [new file with mode: 0755]
watch [new file with mode: 0644]

diff --git a/changelog b/changelog
new file mode 100644 (file)
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 <ginggs@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <vorlon@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <marillat@debian.org>  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 <marillat@debian.org>  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 <marillat@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <kkremitzki@debian.org>  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 <kkremitzki@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <mitya57@debian.org>  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 <kkremitzki@debian.org>  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 <mitya57@debian.org>  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 <kurt@kwk.systems>  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 <locutusofborg@debian.org>  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 <plugwash@p10link.net> for the patch.
+
+  [ Kurt Kremitzki ]
+  * Add CMake sed for pyside2 include path
+  * Add CMake sed for multi-Python version support
+
+ -- Kurt Kremitzki <kurt@kwk.systems>  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 <locutusofborg@debian.org>  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 <locutusofborg@debian.org>  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 <sophie@freexian.com>  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 <sophie@freexian.com>  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 <seb@debian.org>  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 <seb@debian.org>  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 <hertzog@debian.org>  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 <sophie@freexian.com>  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 <hertzog@debian.org>  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 <hertzog@debian.org>  Tue, 31 Jul 2018 16:37:40 +0200
+
+pyside2 (5.11.0-1) unstable; urgency=medium
+
+  * Initial release (Closes: #877871)
+
+ -- Sophie Brun <sophie@freexian.com>  Thu, 26 Jul 2018 17:47:45 +0200
diff --git a/clean b/clean
new file mode 100644 (file)
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 (file)
index 0000000..c1dd970
--- /dev/null
+++ b/control
@@ -0,0 +1,451 @@
+Source: pyside2
+Section: python
+Priority: optional
+Maintainer: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
+Uploaders: Kurt Kremitzki <kkremitzki@debian.org>
+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 (file)
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 <rulfzid@gmail.com>
+           2010-2013 Riverbank Computing Limited.
+          2010 Hans-Peter Jansen <hpj@urpla.net>
+          2010 velociraptor Genjix <aphidia@hotmail.com>
+          2009 Darryl Wallace, 2009 <wallacdj@gmail.com>
+License: BSD-3-clause
+
+Files: sources/patchelf/*
+Copyright: 2004-2009 Eelco Dolstra <e.dolstra@tudelft.nl>
+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 <doko@debian.org>
+           2002-2005 Roberto Raggi <roberto@kdevelop.org>
+           2011 Thomas Perl <m@thp.io>
+          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 <detlev@die-offenbachs.de>
+           1992-2006 Trolltech AS. All rights reserved.
+License: GPL-2
+
+Files: debian/*
+Copyright: 2018 Sophie Brun <sophie@freexian.com>
+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 <https://www.gnu.org/licenses/>
+ .
+ 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 <http://www.gnu.org/licenses/>
+ .
+ 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 <http://www.gnu.org/licenses/>
+ .
+ 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 <http://www.gnu.org/licenses/>
+ .
+ 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 <http://www.gnu.org/licenses/>
+ .
+ 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 (file)
index 0000000..3eb64ff
--- /dev/null
@@ -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 (file)
index 0000000..cd81eb8
--- /dev/null
@@ -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 (file)
index 0000000..7705865
--- /dev/null
@@ -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 (file)
index 0000000..b2dd32a
--- /dev/null
@@ -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 (file)
index 0000000..1bc2122
--- /dev/null
@@ -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 (file)
index 0000000..8018cec
--- /dev/null
@@ -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 (file)
index 0000000..2e3dc19
--- /dev/null
@@ -0,0 +1,37 @@
+From: Dmitry Shachnev <mitya57@debian.org>
+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 (file)
index 0000000..8fb529a
--- /dev/null
@@ -0,0 +1,24 @@
+From: Christian Tismer <tismer@stackless.com>
+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 <Friedemann.Kleint@qt.io>
+(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 (file)
index 0000000..b40d6aa
--- /dev/null
@@ -0,0 +1,27 @@
+From: =?utf-8?q?Cristi=C3=A1n_Maureira-Fredes?=
+ <Cristian.Maureira-Fredes@qt.io>
+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 <Friedemann.Kleint@qt.io>
+(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 (file)
index 0000000..4d0343f
--- /dev/null
@@ -0,0 +1,27 @@
+From: =?utf-8?q?Cristi=C3=A1n_Maureira-Fredes?=
+ <cristian.maureira-fredes@qt.io>
+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 <tismer@stackless.com>
+(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 (file)
index 0000000..d62b339
--- /dev/null
@@ -0,0 +1,63 @@
+From: Christian Tismer <tismer@stackless.com>
+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 <qt_ci_bot@qt-project.org>
+Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
+(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 (file)
index 0000000..0eadc11
--- /dev/null
@@ -0,0 +1,38 @@
+From: Christian Tismer <tismer@stackless.com>
+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 <adrian.herrmann@qt.io>
+Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
+(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 (file)
index 0000000..98315dd
--- /dev/null
@@ -0,0 +1,44 @@
+From: Christian Tismer <tismer@stackless.com>
+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 <cristian.maureira-fredes@qt.io>
+Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
+(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 (file)
index 0000000..fd303c2
--- /dev/null
@@ -0,0 +1,32 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+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 (file)
index 0000000..6f3fb3b
--- /dev/null
@@ -0,0 +1,297 @@
+From: Christian Tismer <tismer@stackless.com>
+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 <Friedemann.Kleint@qt.io>
+(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 *>(PyObject_New(PySideSignalInstance, PySideSignalInstanceTypeF())));
+             instanceInitialize(signalInstance.cast<PySideSignalInstance *>(), key, reinterpret_cast<PySideSignal *>(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 <static type>.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<PyTypeObject *>(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<PyTypeObject *>(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 (file)
index 0000000..91948d6
--- /dev/null
@@ -0,0 +1,22 @@
+From: Dmitry Shachnev <mitya57@debian.org>
+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 (file)
index 0000000..58c5e67
--- /dev/null
@@ -0,0 +1,55 @@
+From: Sophie Brun <sophie@freexian.com>
+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 (file)
index 0000000..941e661
--- /dev/null
@@ -0,0 +1,22 @@
+From: Sophie Brun <sophie@freexian.com>
+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 (file)
index 0000000..4a43c93
--- /dev/null
@@ -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 (file)
index 0000000..304cff9
--- /dev/null
@@ -0,0 +1,88 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+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 <tismer@stackless.com>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+---
+ .../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<T>=QList<T>") 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<X>" 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 (file)
index 0000000..b07cc33
--- /dev/null
@@ -0,0 +1,108 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+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 <tismer@stackless.com>
+(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<TypeOne> TypeOneClass;
+     const ComplexTypeEntry* oneType = one->typeEntry();
+     const ComplexTypeEntry* baseType = base->typeEntry();
+     QCOMPARE(oneType->baseContainerType(), baseType);
+-    QCOMPARE(one->baseClassNames(), QStringList(QLatin1String("BaseTemplateClass<TypeOne>")));
++    QCOMPARE(one->baseClassNames(), QStringList(QLatin1String("NSpace::BaseTemplateClass<NSpace::TypeOne>")));
+     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 (file)
index 0000000..62de5a1
--- /dev/null
@@ -0,0 +1,92 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+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 <tismer@stackless.com>
+(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<CodeSnip>;
+ using DocModificationList = QVector<DocModification>;
+ using FieldModificationList = QVector<FieldModification>;
+ using FunctionModificationList = QVector<FunctionModification>;
++using TypeEntryCPtr = const TypeEntry *;
+ using TypeEntries = QVector<const TypeEntry *>;
+ #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 (file)
index 0000000..f5b1fc0
--- /dev/null
@@ -0,0 +1,178 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+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 <tismer@stackless.com>
+(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 (file)
index 0000000..1426411
--- /dev/null
@@ -0,0 +1,101 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+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 <tismer@stackless.com>
+(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<CXCursor, ClassModelItem>;
+-    using CursorTypedefHash = QHash<CXCursor, TypeDefModelItem>;
+     using TypeInfoHash = QHash<CXType, TypeInfo>;
+     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 <class Item>
+-    void qualifyTypeDef(const CXCursor &typeRefCursor, const QSharedPointer<Item> &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<QString, TemplateTypeAliasModelItem> 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<ConversionFlag> ConversionFlags;
+-// class QTextCodec {
+-//      enum ConversionFlag {};
+-//      typedef QFlags<ConversionFlag> ConversionFlags;
+-//      struct ConverterState {
+-//          explicit ConverterState(ConversionFlags);
+-//                                  ^^ qualify to QTextCodec::ConversionFlags
+-//          ConversionFlags m_flags;
+-//                          ^^ ditto
+-
+-template <class Item> // ArgumentModelItem, VariableModelItem
+-void BuilderPrivate::qualifyTypeDef(const CXCursor &typeRefCursor, const QSharedPointer<Item> &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 (file)
index 0000000..db9791a
--- /dev/null
@@ -0,0 +1,96 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Thu, 27 Apr 2023 13:00:37 +0200
+Subject: shiboken2/clang: Suppress class scope look up for parameters with
+ scope resolution
+
+Add a flag to AbstractMetaBuilderPrivate::findTypeEntriesHelper()
+to suppress the class scope look in case scope resolution.
+
+Task-number: PYSIDE-2288
+Pick-to: 6.5 5.15
+Change-Id: I04a4810d03845fb48393c5efed3641220bd12d87
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+---
+ sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp | 16 ++++++++++++----
+ sources/shiboken2/ApiExtractor/abstractmetabuilder.h   |  3 ++-
+ sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h |  1 +
+ 3 files changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
+index 2f34e16..4bf4ab4 100644
+--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
+@@ -1845,7 +1845,10 @@ AbstractMetaFunction *AbstractMetaBuilderPrivate::traverseFunction(const Functio
+             return nullptr;
+         }
+-        AbstractMetaType *type = translateType(returnType, currentClass, {}, &errorMessage);
++        TranslateTypeFlags flags;
++        if (functionItem->scopeResolution())
++            flags.setFlag(AbstractMetaBuilder::NoClassScopeLookup);
++        AbstractMetaType *type = translateType(returnType, currentClass, flags, &errorMessage);
+         if (!type) {
+             const QString reason = msgUnmatchedReturnType(functionItem, errorMessage);
+             qCWarning(lcShiboken, "%s",
+@@ -1880,7 +1883,10 @@ AbstractMetaFunction *AbstractMetaBuilderPrivate::traverseFunction(const Functio
+             return nullptr;
+         }
+-        AbstractMetaType *metaType = translateType(arg->type(), currentClass, {}, &errorMessage);
++        TranslateTypeFlags flags;
++        if (arg->scopeResolution())
++            flags.setFlag(AbstractMetaBuilder::NoClassScopeLookup);
++        AbstractMetaType *metaType = translateType(arg->type(), currentClass, flags, &errorMessage);
+         if (!metaType) {
+             // If an invalid argument has a default value, simply remove it
+             // unless the function is virtual (since the override in the
+@@ -2073,11 +2079,13 @@ static const TypeEntry* findTypeEntryUsingContext(const AbstractMetaClass* metaC
+ // Helper for translateTypeStatic()
+ TypeEntries AbstractMetaBuilderPrivate::findTypeEntries(const QString &qualifiedName,
+                                                         const QString &name,
++                                                        TranslateTypeFlags flags,
+                                                         AbstractMetaClass *currentClass,
+                                                         AbstractMetaBuilderPrivate *d)
+ {
+     // 5.1 - Try first using the current scope
+-    if (currentClass) {
++    if (currentClass != nullptr
++        && !flags.testFlag(AbstractMetaBuilder::NoClassScopeLookup)) {
+         if (auto type = findTypeEntryUsingContext(currentClass, qualifiedName))
+             return {type};
+@@ -2278,7 +2286,7 @@ AbstractMetaType *AbstractMetaBuilderPrivate::translateTypeStatic(const TypeInfo
+         typeInfo.clearInstantiations();
+     }
+-    TypeEntries types = findTypeEntries(qualifiedName, name, currentClass, d);
++    TypeEntries types = findTypeEntries(qualifiedName, name, flags, currentClass, d);
+     if (!flags.testFlag(AbstractMetaBuilder::TemplateArgument)) {
+         // Avoid clashes between QByteArray and enum value QMetaType::QByteArray
+         // unless we are looking for template arguments.
+diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
+index 8916eaf..f333ad5 100644
+--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
+@@ -94,7 +94,8 @@ public:
+     enum TranslateTypeFlag {
+         DontResolveType = 0x1,
+-        TemplateArgument = 0x2
++        TemplateArgument = 0x2,
++        NoClassScopeLookup = 0x4
+     };
+     Q_DECLARE_FLAGS(TranslateTypeFlags, TranslateTypeFlag);
+diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h b/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
+index 8468950..8ddd369 100644
+--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
+@@ -154,6 +154,7 @@ public:
+                                                  TranslateTypeFlags flags = {},
+                                                  QString *errorMessageIn = nullptr);
+     static TypeEntries findTypeEntries(const QString &qualifiedName, const QString &name,
++                                       TranslateTypeFlags flags = {},
+                                        AbstractMetaClass *currentClass = nullptr,
+                                        AbstractMetaBuilderPrivate *d = nullptr);
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 (file)
index 0000000..b0be6fa
--- /dev/null
@@ -0,0 +1,62 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+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<void>)
+- 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 <tismer@stackless.com>
+(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 (file)
index 0000000..642cb20
--- /dev/null
@@ -0,0 +1,27 @@
+From: Dmitry Shachnev <mitya57@debian.org>
+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 (file)
index 0000000..2f4958b
--- /dev/null
@@ -0,0 +1,25 @@
+Description: Update import of PyQt5 private sip module and remove Python 2/PyQt4 setapi calls
+Author: Kurt Kremitzki <kkremitzki@debian.org>
+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 (file)
index 0000000..bb4b1fe
--- /dev/null
@@ -0,0 +1 @@
+pyside3_install/py3.*/bin/pyside2-* usr/bin
diff --git a/pyside2-tools.manpages b/pyside2-tools.manpages
new file mode 100644 (file)
index 0000000..ca1b931
--- /dev/null
@@ -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 (file)
index 0000000..2ada6e7
--- /dev/null
@@ -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 (file)
index 0000000..e39721e
--- /dev/null
@@ -0,0 +1 @@
+examples/*
diff --git a/python3-pyside2.qtconcurrent.install b/python3-pyside2.qtconcurrent.install
new file mode 100644 (file)
index 0000000..ed9eae0
--- /dev/null
@@ -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 (file)
index 0000000..18bfbc7
--- /dev/null
@@ -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 (file)
index 0000000..9c8d25c
--- /dev/null
@@ -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 (file)
index 0000000..8012c75
--- /dev/null
@@ -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 (file)
index 0000000..e100d1e
--- /dev/null
@@ -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 (file)
index 0000000..11420f9
--- /dev/null
@@ -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 (file)
index 0000000..cddff59
--- /dev/null
@@ -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 (file)
index 0000000..736e241
--- /dev/null
@@ -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 (file)
index 0000000..9b444f7
--- /dev/null
@@ -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 (file)
index 0000000..72eb659
--- /dev/null
@@ -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 (file)
index 0000000..8116b2d
--- /dev/null
@@ -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 (file)
index 0000000..d2045b1
--- /dev/null
@@ -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 (file)
index 0000000..b50b3e4
--- /dev/null
@@ -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 (file)
index 0000000..522de6c
--- /dev/null
@@ -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 (file)
index 0000000..bc16f74
--- /dev/null
@@ -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 (file)
index 0000000..9bbb6db
--- /dev/null
@@ -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 (file)
index 0000000..97ab7cf
--- /dev/null
@@ -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 (file)
index 0000000..4430a23
--- /dev/null
@@ -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 (file)
index 0000000..efe85a2
--- /dev/null
@@ -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 (file)
index 0000000..3dbc143
--- /dev/null
@@ -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 (file)
index 0000000..54f3e1b
--- /dev/null
@@ -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 (file)
index 0000000..ff9a2ce
--- /dev/null
@@ -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 (file)
index 0000000..714f2b4
--- /dev/null
@@ -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 (file)
index 0000000..a4b464d
--- /dev/null
@@ -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 (executable)
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 (executable)
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 (file)
index 0000000..bc427a5
--- /dev/null
@@ -0,0 +1 @@
+pyside3_build/py3*-relwithdebinfo/shiboken2/doc/html
diff --git a/shiboken2.install b/shiboken2.install
new file mode 100644 (file)
index 0000000..335f3c4
--- /dev/null
@@ -0,0 +1 @@
+pyside3_install/py3*-relwithdebinfo/bin/shiboken2 usr/bin
diff --git a/source/format b/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/source/options b/source/options
new file mode 100644 (file)
index 0000000..cb61fa5
--- /dev/null
@@ -0,0 +1 @@
+extend-diff-ignore = "^[^/]*[.]egg-info/"
diff --git a/tests/control b/tests/control
new file mode 100644 (file)
index 0000000..0db5537
--- /dev/null
@@ -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 (executable)
index 0000000..c3a4140
--- /dev/null
@@ -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 (executable)
index 0000000..d74a4c9
--- /dev/null
@@ -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 (file)
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