Compare commits

2 Commits
1.1 ... main

8 changed files with 1419 additions and 57 deletions

View File

@@ -1,30 +0,0 @@
From ee6c2c30eca67004e2b05f55ee1d82c3ab44b966 Mon Sep 17 00:00:00 2001
From: Christophe Marin <christophe@krop.fr>
Date: Sun, 2 Feb 2025 12:59:19 +0100
Subject: [PATCH] Fix build with Qt 6.8.2
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes:
/home/abuild/rpmbuild/BUILD/python-PyQt6-6.8.0-build/PyQt6-6.8.0/build/QtCore/sipQtCoreQStringConverterBase.cpp:58:52: error: use of deleted function constexpr QStringConverterBase::QStringConverterBase(const QStringConverterBase&)
---
sip/QtCore/qstringconverter_base.sip | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sip/QtCore/qstringconverter_base.sip b/sip/QtCore/qstringconverter_base.sip
index d0c790f..6f7c301 100644
--- a/sip/QtCore/qstringconverter_base.sip
+++ b/sip/QtCore/qstringconverter_base.sip
@@ -22,7 +22,7 @@
%If (Qt_6_4_0 -)
-class QStringConverterBase
+class QStringConverterBase /NoDefaultCtors/
{
%TypeHeaderCode
#include <qstringconverter_base.h>
--
2.48.1

BIN
PyQt6-6.8.0.tar.gz (Stored with Git LFS)

Binary file not shown.

1293
PyQt6-Qt6.9.0.patch Normal file

File diff suppressed because it is too large Load Diff

4
_multibuild Normal file
View File

@@ -0,0 +1,4 @@
<multibuild>
<flavor>qt6pdf</flavor>
</multibuild>

View File

@@ -0,0 +1,14 @@
Index: pyqt6-6.8.1/project.py
===================================================================
--- pyqt6-6.8.1.orig/project.py
+++ pyqt6-6.8.1/project.py
@@ -180,7 +180,8 @@ del find_qt
'win32': 'Windows',
}
- self.bindings['QtCore'].tags.append(
+ if QtCore in self.bindings:
+ self.bindings['QtCore'].tags.append(
platform_tags_map.get(self.py_platform, 'Linux'))
# Make sure the bindings are buildable.

BIN
pyqt6-6.8.1.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -1,3 +1,24 @@
-------------------------------------------------------------------
Fri Apr 25 07:44:03 UTC 2025 - Antonio Larrosa <alarrosa@suse.com>
- Split the package to build the Qt6Pdf bindings as a separate
flavor. This allows to build most of the bindings in SLFO but
only build the Qt6Pdf bindings (which need qt6-webengine) in
Backports.
- Add patch to allow building only the Qt6Pdf bindings without
having to build Qt6Core too:
* fix-build-without-qtcore.patch
-------------------------------------------------------------------
Thu Apr 3 17:05:34 UTC 2025 - Ben Greiner <code@bnavigator.de>
- Update to 6.8.1
* Added the QtStateMachine module.
* Bug fixes.
- Drop 0001-Fix-build-with-Qt-6.8.2.patch
- Add PyQt6-Qt6.9.0.patch in order to build with Qt 6.9.0. This is
basically PyQt6 6.9.0.dev2504021615 without the version bump
-------------------------------------------------------------------
Sun Feb 2 12:00:43 UTC 2025 - Christophe Marin <christophe@krop.fr>

View File

@@ -19,21 +19,42 @@
%define plainpython python
%define mname PyQt6
%define pyqt_build_for_qt6 1
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "qt6pdf"
%define pkg_suffix -qt6pdf
%bcond_without qt6pdf
%if (0%{?suse_version} == 1600 && !0%{?is_opensuse}) || 0%{?suse_version} < 1600
# SLFO and SLE15 don't have cmake(Qt6Pdf)
ExclusiveArch: do_not_build
%endif
%ifnarch aarch64 x86_64 riscv64
# qt6-pdf-devel is built in qt6-webengine with ExclusiveArch
ExclusiveArch: do_not_build
%endif
%else
%bcond_with qt6pdf
%endif
%{?sle15_python_module_pythons}
Name: python-%{mname}
Version: 6.8.0
Name: python-%{mname}%{?pkg_suffix}
Version: 6.8.1
Release: 0
Summary: Python bindings for Qt 6
License: GPL-3.0-only OR SUSE-GPL-2.0-with-FLOSS-exception OR NonFree
Group: Development/Libraries/Python
URL: https://www.riverbankcomputing.com/software/pyqt
Source: https://files.pythonhosted.org/packages/source/P/PyQt6/PyQt6-%{version}.tar.gz
Source: https://files.pythonhosted.org/packages/source/P/PyQt6/pyqt6-%{version}.tar.gz
# PATCH-FIX-OPENSUSE - disable-rpaths.diff - Disable RPATH when building PyQt6.
Patch0: disable-rpaths.diff
# PATCH-FIX-OPENSUSE - install binary dbus mainloop integration in arch dependent directory
Patch1: 0001-Use-a-noarch-wrapper-for-dbus-mainloop-integration.patch
# PATCH-FIX-UPSTREAM - fix build failure with Qt 6.8.2
Patch2: 0001-Fix-build-with-Qt-6.8.2.patch
# PATCH-FIX-UPSTREAM PyQt6-Qt6.9.0.patch -- this is basically 6.9.0.dev2504021615 without the version bump
Patch2: PyQt6-Qt6.9.0.patch
# PATCH-FIX-UPSTREAM fix-build-without-qtcore.patch -- Allow building only the Qt6Pdf bindings
Patch3: fix-build-without-qtcore.patch
BuildRequires: %{python_module PyQt6-sip >= 13.8}
BuildRequires: %{python_module dbus-python-devel >= 0.8}
BuildRequires: %{python_module devel >= 3.9}
@@ -47,6 +68,11 @@ BuildRequires: python-pyqt-rpm-macros
BuildRequires: python-rpm-macros
BuildRequires: qt6-base-devel
BuildRequires: qt6-macros
%if %{with qt6pdf}
BuildRequires: cmake(Qt6Pdf)
BuildRequires: cmake(Qt6PdfWidgets)
BuildRequires: %{python_module PyQt6-devel}
%else
BuildRequires: cmake(Qt6Bluetooth)
BuildRequires: cmake(Qt6Designer)
BuildRequires: cmake(Qt6DBus)
@@ -57,14 +83,6 @@ BuildRequires: cmake(Qt6Network)
BuildRequires: cmake(Qt6Nfc)
BuildRequires: cmake(Qt6OpenGL)
BuildRequires: cmake(Qt6OpenGLWidgets)
%if %{?suse_version} >= 1550
# no pdf headers in 15.X
%ifarch aarch64 x86_64 riscv64
# qt6-pdf-devel is built in qt6-webengine with ExclusiveArch
BuildRequires: cmake(Qt6Pdf)
BuildRequires: cmake(Qt6PdfWidgets)
%endif
%endif
BuildRequires: cmake(Qt6Positioning)
BuildRequires: cmake(Qt6PrintSupport)
BuildRequires: cmake(Qt6Qml)
@@ -80,6 +98,7 @@ BuildRequires: cmake(Qt6SerialPort)
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 155000
BuildRequires: cmake(Qt6SpatialAudio)
%endif
BuildRequires: cmake(Qt6StateMachine)
BuildRequires: cmake(Qt6Sql)
BuildRequires: cmake(Qt6Svg)
BuildRequires: cmake(Qt6SvgWidgets)
@@ -91,9 +110,15 @@ BuildRequires: cmake(Qt6WebChannel)
BuildRequires: cmake(Qt6WebSockets)
BuildRequires: cmake(Qt6Widgets)
BuildRequires: cmake(Qt6Xml)
%endif
Requires: python-PyQt6-sip >= %(rpm -q --whatprovides python-PyQt6-sip --qf "%%{version}")
Requires: python-dbus-python >= %(rpm -q --whatprovides python-dbus-python --qf "%%{version}")
%if %{with qt6pdf}
Requires: python-PyQt6
%else
Recommends: python-PyQt6-qt6pdf
Provides: python-qt6 = %{version}-%{release}
%endif
%python_subpackages
%description
@@ -107,6 +132,10 @@ Requires: python-dbus-python-devel >= 0.8
Requires: python-devel
Requires: qt6-base-devel
Requires: qt6-macros
%if %{with qt6pdf}
Requires: cmake(Qt6Pdf)
Requires: cmake(Qt6PdfWidgets)
%else
Requires: cmake(Qt6Bluetooth)
Requires: cmake(Qt6Designer)
Requires: cmake(Qt6DBus)
@@ -117,14 +146,6 @@ Requires: cmake(Qt6Network)
Requires: cmake(Qt6Nfc)
Requires: cmake(Qt6OpenGL)
Requires: cmake(Qt6OpenGLWidgets)
%if %{?suse_version} >= 1550
# no pdf headers in 15.X
%ifarch aarch64 x86_64 riscv64
# qt6-pdf-devel is built in qt6-webengine with ExclusiveArch
Requires: cmake(Qt6Pdf)
Requires: cmake(Qt6PdfWidgets)
%endif
%endif
Requires: cmake(Qt6Positioning)
Requires: cmake(Qt6PrintSupport)
Requires: cmake(Qt6Qml)
@@ -151,14 +172,19 @@ Requires: cmake(Qt6WebChannel)
Requires: cmake(Qt6WebSockets)
Requires: cmake(Qt6Widgets)
Requires: cmake(Qt6Xml)
%endif
Requires: %plainpython(abi) = %{python_version}
Requires(post): update-alternatives
Requires(postun):update-alternatives
# If and which version of sip is required depends on the project trying
# to build against PyQt6.
%if %{with qt6pdf}
Requires: python-PyQt6-devel
%else
Recommends: python-sip-devel
Recommends: python-qscintilla-qt6
Provides: python-qt6-devel = %{version}-%{release}
%endif
%description devel
PyQt is a set of Python bindings for the Qt framework.
@@ -178,7 +204,7 @@ PyQt is a set of Python bindings for the Qt framework.
This package contains programming examples for PyQt6.
%prep
%autosetup -p1 -n PyQt6-%{version}
%autosetup -p1 -n pyqt6-%{version}
dos2unix examples/quick/models/*/view.qml
dos2unix examples/multimedia*/*/*.ui
@@ -189,17 +215,42 @@ dos2unix examples/multimedia*/*/*.ui
-s %{quote:--pep484-pyi \
--confirm-license \
--qt-shared \
--qmake-setting 'QMAKE_CXXFLAGS_RELEASE=%{optflags} -DQT_NO_INT128'}}
--qmake-setting 'QMAKE_CXXFLAGS_RELEASE=%{optflags} -DQT_NO_INT128'\
%if %{with qt6pdf}
--enable QtPdf \
%endif
%{nil}
}}
%install
%pyqt_install
%if %{without qt6pdf}
%pyqt_install_examples %mname
%python_clone -a %{buildroot}%{_bindir}/pyuic6
%python_clone -a %{buildroot}%{_bindir}/pylupdate6
%else
# We have to remove installed files that aren't part of qt6pdf
rm %{buildroot}%{_bindir}/pyuic6 \
%{buildroot}%{_bindir}/pylupdate6
rm -Rf %{buildroot}%{_qt6_datadir}/qsci
%{python_expand
rm -Rf %{buildroot}%{$python_sitelib}/dbus \
%{buildroot}%{$python_sitearch}/PyQt6/uic \
%{buildroot}%{$python_sitearch}/PyQt6/lupdate \
%{buildroot}%{$python_sitearch}/PyQt6-%{version}.dist-info
rm %{buildroot}%{$python_sitearch}/PyQt6/__init__.py \
%{buildroot}%{$python_sitearch}/PyQt6/dbus_mainloop.abi3.so \
%{buildroot}%{$python_sitearch}/PyQt6/py.typed \
%{buildroot}%{$python_sitearch}/PyQt6/sip.pyi
}
%endif
%python_expand %fdupes %{buildroot}%{$python_sitearch}
%if %{without qt6pdf}
%check
export PYTHONDONTWRITEBYTECODE=1 # boo#1047218
%{python_expand # there is no test suite. If it compiles and imports, it should be okay.
@@ -213,8 +264,11 @@ $python -c 'from PyQt6 import QtCore; assert QtCore.PYQT_VERSION_STR == "%{versi
%postun devel
%python_uninstall_alternative pyuic6
%endif
%files %{python_files}
%license LICENSE
%if %{without qt6pdf}
%doc README.md NEWS ChangeLog
%{python_sitearch}/PyQt6/
%{python_sitearch}/PyQt6-%{version}.dist-info/
@@ -224,9 +278,15 @@ $python -c 'from PyQt6 import QtCore; assert QtCore.PYQT_VERSION_STR == "%{versi
%dir %{_qt6_pluginsdir}/PyQt6/
%{_qt6_pluginsdir}/PyQt6/libpy%{python_bin_suffix}qt6qmlplugin.so
%exclude %pyqt6_sipdir
%exclude %{python_sitearch}/PyQt6/QtPdf.*
%else
%{python_sitearch}/PyQt6/QtPdf.*
%endif
%files %{python_files devel}
%license LICENSE
%pyqt6_sipdir
%if %{without qt6pdf}
%python_alternative %{_bindir}/pyuic6
%python_alternative %{_bindir}/pylupdate6
%dir %{_qt6_pluginsdir}/designer/
@@ -235,7 +295,6 @@ $python -c 'from PyQt6 import QtCore; assert QtCore.PYQT_VERSION_STR == "%{versi
%dir %{_qt6_datadir}/qsci/api/
%dir %{_qt6_datadir}/qsci/api/python_%{python_bin_suffix}/
%{_qt6_datadir}/qsci/api/python_%{python_bin_suffix}/PyQt6.api
%pyqt6_sipdir
%files %{python_files doc}
%license LICENSE
@@ -243,5 +302,6 @@ $python -c 'from PyQt6 import QtCore; assert QtCore.PYQT_VERSION_STR == "%{versi
%exclude %{_docdir}/%{python_prefix}-%{mname}/README.md
%exclude %{_docdir}/%{python_prefix}-%{mname}/NEWS
%exclude %{_docdir}/%{python_prefix}-%{mname}/ChangeLog
%endif
%changelog