From f5e5d04dd005d1e4110d43d6703ae6d967b6d7d6 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Wed, 16 Jun 2021 22:58:45 -0400 Subject: [PATCH] Rebuild with sip 5; remove unused Python 2 support for clarity --- python-qt5.spec | 260 ++++-------------------------------------------- 1 file changed, 22 insertions(+), 238 deletions(-) diff --git a/python-qt5.spec b/python-qt5.spec index cb2c468..5df6681 100644 --- a/python-qt5.spec +++ b/python-qt5.spec @@ -2,12 +2,6 @@ %global with_python3 1 %global python3_dbus_dir %(%{__python3} -c "import dbus.mainloop; print(dbus.mainloop.__path__[0])" 2>/dev/null || echo "%{python3_sitearch}/dbus/mainloop") %endif -# sip too old for python2 in EPEL -%if 0%{?fedora} < 32 && 0%{?rhel} < 9 -%global with_python2 1 -%global python2_dbus_dir %(%{__python2} -c "import dbus.mainloop; print(dbus.mainloop.__path__[0])" 2>/dev/null || echo "%{python2_sitearch}/dbus/mainloop") -%global enginio 1 -%endif # enable/disable individual modules # drop power64, it's not supported yet (than) @@ -22,18 +16,6 @@ %global rpm_macros_dir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) -## f29+ no longer using separate sipdir for python3 -%global py3_sipdir %{_datadir}/sip/PyQt5 -#if 0%%{?fedora} < 29 -#global py3_sipdir %%{_datadir}/python3-sip/PyQt5 -#endif - -%if 0%{?rhel} == 7 -%global py3_sip %{_bindir}/python3-sip -%endif - -%global sip_ver 4.19.23 - # see also https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/JQQ66XJSIT2FGTK2YQY7AXMEH5IXMPUX/ %undefine _strict_symbol_defs_build @@ -42,7 +24,7 @@ Summary: PyQt5 is Python bindings for Qt5 Name: python-qt5 Version: 5.15.0 -Release: 9%{?dist} +Release: 10%{?dist} License: GPLv3 Url: http://www.riverbankcomputing.com/software/pyqt/ @@ -58,9 +40,8 @@ Source4: pyuic5.sh ## upstream patches ## upstreamable patches -Patch0: python-qt5_sipdir.patch # support newer Qt5 releases -Patch1: PyQt5-Timeline.patch +Patch0: PyQt5-Timeline.patch BuildRequires: make BuildRequires: chrpath @@ -93,23 +74,11 @@ BuildRequires: pkgconfig(Qt5X11Extras) BuildRequires: pkgconfig(Qt5Xml) pkgconfig(Qt5XmlPatterns) BuildRequires: pkgconfig(Qt5WebChannel) BuildRequires: pkgconfig(Qt5WebSockets) -%if 0%{?with_python2} -BuildRequires: python27 -BuildRequires: python2-enum34 -%if 0%{?fedora} > 27 -%global python2_dbus python2-dbus -%else -%global python2_dbus dbus-python -%endif -BuildRequires: %{python2_dbus} -BuildRequires: python2-pyqt5-sip >= %{sip_ver} -BuildRequires: python2-sip-devel >= %{sip_ver} -%endif # with_python2 %if 0%{?with_python3} BuildRequires: python%{python3_pkgversion}-devel python%{python3_pkgversion} BuildRequires: python%{python3_pkgversion}-dbus -BuildRequires: python%{python3_pkgversion}-pyqt5-sip >= %{sip_ver} -BuildRequires: python%{python3_pkgversion}-sip-devel >= %{sip_ver} +BuildRequires: %{py3_dist PyQt-builder} >= 1.1.0 +BuildRequires: %{py3_dist sip} >= 5.3 %endif # with_python3 # when split out @@ -122,45 +91,6 @@ Obsoletes: python-qt5 < 5.5.1-10 %global __provides_exclude_from ^(%{_qt5_plugindir}/.*\\.so)$ -%if 0%{?with_python2} -%package -n python2-qt5 -Summary: Python 2 bindings for Qt5 -Requires: python2-qt5-base%{?_isa} = %{version}-%{release} -BuildRequires: python27 -Requires: python2-enum34 -Provides: python2-PyQt5 = %{version}-%{release} -Provides: python2-PyQt5%{?_isa} = %{version}-%{release} -%{?python_provide:%python_provide python2-qt5} - -%description -n python2-qt5 -%{summary}. - -%package -n python2-qt5-base -Summary: Python bindings for Qt5 base -Requires: %{name}-rpm-macros = %{version}-%{release} -%{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}} -%{?_sip_api:Requires: python2-pyqt5-sip-api(%{_sip_api_major}) >= %{_sip_api}} -Requires: %{python2_dbus} -Obsoletes: python-qt5 < 5.5.1-10 -Provides: python2-PyQt5-base = %{version}-%{release} -Provides: python2-PyQt5-base%{?_isa} = %{version}-%{release} -%{?python_provide:%python_provide python2-qt5-base} -%description -n python2-qt5-base -%{summary}. - -%package -n python2-qt5-devel -Summary: Development files for %{name} -Requires: python2-qt5%{?_isa} = %{version}-%{release} -Requires: qt5-qtbase-devel -Requires: python2-sip-devel -Provides: PyQt5-devel = %{version}-%{release} -Provides: python2-PyQt5-devel = %{version}-%{release} -%{?python_provide:%python_provide python2-qt5-devel} -%description -n python2-qt5-devel -Files needed to build other bindings for C++ classes that inherit from -any of the Qt5 classes. -%endif - %package rpm-macros Summary: RPM macros %{name} # when split out @@ -188,11 +118,6 @@ Requires: python%{python3_pkgversion}-qt5-base%{?_isa} = %{version}-%{release} %package -n python%{python3_pkgversion}-qt5-base Summary: Python 3 bindings for Qt5 base %{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}} -%if 0%{?_python3_sip_api_major} -%{?_python3_sip_api:Requires: python%{python3_pkgversion}-pyqt5-sip-api(%{_python3_sip_api_major}) >= %{_python3_sip_api}} -%else -%{?_sip_api:Requires: python%{python3_pkgversion}-pyqt5-sip-api(%{_sip_api_major}) >= %{_sip_api}} -%endif Provides: python%{python3_pkgversion}-PyQt5-base = %{version}-%{release} Provides: python%{python3_pkgversion}-PyQt5-base%{?_isa} = %{version}-%{release} Requires: %{name}-rpm-macros = %{version}-%{release} @@ -205,7 +130,7 @@ Requires: python%{python3_pkgversion}-dbus Summary: Development files for python3-qt5 Requires: python%{python3_pkgversion}-qt5%{?_isa} = %{version}-%{release} Requires: qt5-qtbase-devel -Requires: python%{python3_pkgversion}-sip-devel +Requires: %{py3_dist sip} >= 5.3 Provides: python%{python3_pkgversion}-PyQt5-devel = %{version}-%{release} %{?python_provide:%python_provide python%{python3_pkgversion}-qt5-devel} %description -n python%{python3_pkgversion}-qt5-devel @@ -220,17 +145,6 @@ BuildArch: noarch %{summary}. %if 0%{?webengine} -%if 0%{?with_python2} -%package -n python2-qt5-webengine -Summary: Python bindings for Qt5 WebEngine -BuildRequires: pkgconfig(Qt5WebEngine) -Obsoletes: python-qt5 < 5.5.1-10 -Requires: python2-qt5%{?_isa} = %{version}-%{release} -%{?python_provide:%python_provide python2-qt5-webengine} -%description -n python2-qt5-webengine -%{summary}. -%endif - %package -n python%{python3_pkgversion}-qt5-webengine Summary: Python3 bindings for Qt5 WebEngine BuildRequires: pkgconfig(Qt5WebEngine) @@ -243,19 +157,6 @@ Requires: python%{python3_pkgversion}-qt5%{?_isa} = %{version}-%{release} %endif %if 0%{?webkit} -%if 0%{?with_python2} -%package -n python2-qt5-webkit -Summary: Python bindings for Qt5 Webkit -BuildRequires: pkgconfig(Qt5WebKit) -BuildRequires: pkgconfig(Qt5WebKitWidgets) -Obsoletes: python3-webkit < 5.5.1-12 -Obsoletes: python-qt5 < 5.5.1-10 -Requires: python2-qt5%{?_isa} = %{version}-%{release} -%{?python_provide:%python_provide python2-qt5-webkit} -%description -n python2-qt5-webkit -%{summary}. -%endif - %package -n python%{python3_pkgversion}-qt5-webkit Summary: Python3 bindings for Qt5 Webkit BuildRequires: pkgconfig(Qt5WebKit) @@ -272,7 +173,6 @@ Requires: python%{python3_pkgversion}-qt5%{?_isa} = %{version}-%{release} %setup -q -n PyQt5-%{version}%{?snap:.%{snap}} %patch0 -p1 -%patch1 -p1 %build @@ -280,48 +180,25 @@ Requires: python%{python3_pkgversion}-qt5%{?_isa} = %{version}-%{release} PATH=%{_qt5_bindir}:$PATH ; export PATH -# Python 2 build: -%if 0%{?with_python2} -mkdir %{_target_platform} -# copy sources, seems pure shadow build support broke with 5.9 -- rex -cp -a * %{_target_platform}/ ||: -pushd %{_target_platform} -%{__python2} ./configure.py \ - --assume-shared \ - --confirm-license \ - --no-designer-plugin \ - --no-qml-plugin \ - --qmake=%{_qt5_qmake} \ - %{!?with_python3:--no-qsci-api}%{?with_python3:--qsci-api --qsci-api-destdir=%{_qt5_datadir}/qsci} \ - --verbose \ - --dbus=%{_includedir}/dbus-1.0/ \ - QMAKE_CFLAGS_RELEASE="%{optflags}" \ - QMAKE_CXXFLAGS_RELEASE="%{optflags} `pkg-config --cflags dbus-python`" \ - QMAKE_LFLAGS_RELEASE="%{?__global_ldflags}" - -%make_build -popd -%endif # with_python2 - # Python 3 build: %if 0%{?with_python3} mkdir %{_target_platform}-python3 cp -a * %{_target_platform}-python3/ ||: pushd %{_target_platform}-python3 -%{__python3} ./configure.py \ - --assume-shared \ +sip-build \ + --no-make \ + --qt-shared \ --confirm-license \ --qmake=%{_qt5_qmake} \ - %{?with_python2:--no-qsci-api}%{!?with_python2:--qsci-api --qsci-api-destdir=%{_qt5_datadir}/qsci} \ - %{?py3_sip:--sip=%{_bindir}/python3-sip} \ - %{?py3_sipdir:--sipdir=%{py3_sipdir}} \ + --api-dir=%{_qt5_datadir}/qsci/api/python \ --verbose \ --dbus=%{_includedir}/dbus-1.0/ \ - QMAKE_CFLAGS_RELEASE="%{optflags}" \ - QMAKE_CXXFLAGS_RELEASE="%{optflags} `pkg-config --cflags dbus-python`" \ - QMAKE_LFLAGS_RELEASE="%{?__global_ldflags}" + --pep484-pyi \ + --qmake-setting 'QMAKE_CFLAGS_RELEASE="%{optflags}"' \ + --qmake-setting 'QMAKE_CXXFLAGS_RELEASE="%{optflags} `pkg-config --cflags dbus-python`"' \ + --qmake-setting 'QMAKE_LFLAGS_RELEASE="%{?__global_ldflags}"' -%make_build +%make_build -C build popd %endif # with_python3 @@ -330,17 +207,11 @@ popd # Python 3 build: %if 0%{?with_python3} -%make_install INSTALL_ROOT=%{buildroot} -C %{_target_platform}-python3 +%make_install INSTALL_ROOT=%{buildroot} -C %{_target_platform}-python3/build if [ "%{_prefix}" != "/usr" ]; then cp -ru %{buildroot}/usr/* %{buildroot}%{_prefix}/ rm -rf %{buildroot}/usr/* fi -%if "%py3_sipdir" == "%{_datadir}/sip/PyQt5" -# copy files to old location for compat purposes temporarily -mkdir -p %{buildroot}%{_datadir}/python3-sip -cp -alf %{buildroot}%{py3_sipdir} \ - %{buildroot}%{_datadir}/python3-sip/PyQt5 -%endif if [ "%{_prefix}" != "/usr" ]; then cp -ru %{buildroot}/usr/* %{buildroot}%{_prefix}/ || echo "Nothing to copy" @@ -358,22 +229,6 @@ find %{buildroot} -type f -name '*.so' | xargs chmod a+rx #done %endif # with_python3 -# Python 2 build: -%if 0%{?with_python2} -%make_install INSTALL_ROOT=%{buildroot} -C %{_target_platform} -if [ "%{_prefix}" != "/usr" ]; then - cp -ru %{buildroot}/usr/* %{buildroot}%{_prefix}/ - rm -rf %{buildroot}/usr/* -fi -# ensure .so modules are executable for proper -debuginfo extraction -find %{buildroot} -type f -name '*.so' | xargs chmod a+rx -#for i in %%{buildroot}%%{python2_sitearch}/PyQt5/*.so %%{buildroot}%%{python2_dbus_dir}/pyqt5.so ; do -#test -x $i || chmod a+rx $i -#done -%endif # with_python2 - -# remove Python3 code from Python2 directory, fixes FTBFS like PyQt4 (#564633) -rm -rfv %{buildroot}%{python2_sitearch}/PyQt5/uic/port_v3/ # remove Python2 code from Python3 directory (for when/if we support python3 here) rm -rfv %{buildroot}%{python3_sitearch}/PyQt5/uic/port_v2/ @@ -400,77 +255,6 @@ sed -i \ %{buildroot}%{_bindir}/{pyrcc5,pylupdate5,pyuic5} %endif -%if 0%{?with_python2} -%files -n python2-qt5 -%if 0%{?enginio} -%{python2_sitearch}/PyQt5/Enginio.so -%endif -%{python2_sitearch}/PyQt5/QtBluetooth.so -%{python2_sitearch}/PyQt5/QtDesigner.so -%{python2_sitearch}/PyQt5/QtHelp.so -%{python2_sitearch}/PyQt5/QtLocation.so -%{python2_sitearch}/PyQt5/QtMultimedia.so -%{python2_sitearch}/PyQt5/QtMultimediaWidgets.so -%{python2_sitearch}/PyQt5/QtNfc.so -%{python2_sitearch}/PyQt5/QtPositioning.so -%{python2_sitearch}/PyQt5/QtQml.so -%{python2_sitearch}/PyQt5/QtQuick.so -%{python2_sitearch}/PyQt5/QtQuickWidgets.so -%{python2_sitearch}/PyQt5/QtSensors.so -%{python2_sitearch}/PyQt5/QtSerialPort.so -%{python2_sitearch}/PyQt5/QtSvg.so -%{python2_sitearch}/PyQt5/QtWebChannel.so -%{python2_sitearch}/PyQt5/QtWebSockets.so -%{python2_sitearch}/PyQt5/QtX11Extras.so -%{python2_sitearch}/PyQt5/QtXmlPatterns.so - -%files -n python2-qt5-base -%doc NEWS README -%license LICENSE -%{python2_dbus_dir}/pyqt5.so -%dir %{python2_sitearch}/PyQt5/ -%{python2_sitearch}/PyQt5-%{version}%{?snap:.%{snap}}.dist-info -%{python2_sitearch}/PyQt5/__init__.py* -%{python2_sitearch}/PyQt5/Qt.so -%{python2_sitearch}/PyQt5/QtCore.so -%{python2_sitearch}/PyQt5/QtDBus.so -%{python2_sitearch}/PyQt5/QtGui.so -%{python2_sitearch}/PyQt5/QtNetwork.so -%{python2_sitearch}/PyQt5/QtOpenGL.so -%{python2_sitearch}/PyQt5/QtPrintSupport.so -%{python2_sitearch}/PyQt5/QtSql.so -%{python2_sitearch}/PyQt5/QtTest.so -%{python2_sitearch}/PyQt5/QtWidgets.so -%{python2_sitearch}/PyQt5/QtXml.so -%{python2_sitearch}/PyQt5/_QOpenGLFunctions_2_0.so -%{python2_sitearch}/PyQt5/_QOpenGLFunctions_2_1.so -%{python2_sitearch}/PyQt5/_QOpenGLFunctions_4_1_Core.so -# *was* in -devel -%{_bindir}/pylupdate5 -%{_bindir}/pyrcc5 -%{_bindir}/pyuic5 -%{python2_sitearch}/PyQt5/uic/ -%{python2_sitearch}/PyQt5/pylupdate.so -%{python2_sitearch}/PyQt5/pylupdate_main.py* -%{python2_sitearch}/PyQt5/pyrcc.so -%{python2_sitearch}/PyQt5/pyrcc_main.py* - -%if 0%{?webengine} -%files -n python2-qt5-webengine -%{python2_sitearch}/PyQt5/QtWebEngine.* -%{python2_sitearch}/PyQt5/QtWebEngineCore.* -%{python2_sitearch}/PyQt5/QtWebEngineWidgets.* -%endif - -%if 0%{?webkit} -%files -n python2-qt5-webkit -%{python2_sitearch}/PyQt5/QtWebKit.* -%{python2_sitearch}/PyQt5/QtWebKitWidgets.* -%endif - -%files -n python2-qt5-devel -%{_datadir}/sip/PyQt5/ -%endif %files rpm-macros %{rpm_macros_dir}/macros.pyqt5 @@ -502,7 +286,7 @@ sed -i \ %files -n python%{python3_pkgversion}-qt5-base %doc NEWS README %license LICENSE -%{python3_dbus_dir}/pyqt5.so +%{python3_dbus_dir}/pyqt5.abi3.so %dir %{python3_sitearch}/PyQt5/ %{python3_sitearch}/PyQt5-%{version}%{?snap:.%{snap}}.dist-info %{python3_sitearch}/PyQt5/__pycache__/__init__.* @@ -529,10 +313,10 @@ sed -i \ %{_bindir}/pylupdate5 %{_bindir}/pyrcc5 %{_bindir}/pyuic5 -%{python3_sitearch}/PyQt5/pylupdate.so +%{python3_sitearch}/PyQt5/pylupdate.abi3.so %{python3_sitearch}/PyQt5/pylupdate_main.py* %{python3_sitearch}/PyQt5/__pycache__/pylupdate_main* -%{python3_sitearch}/PyQt5/pyrcc.so +%{python3_sitearch}/PyQt5/pyrcc.abi3.so %{python3_sitearch}/PyQt5/pyrcc_main.py* %{python3_sitearch}/PyQt5/__pycache__/pyrcc_main* @@ -550,10 +334,7 @@ sed -i \ %endif %files -n python%{python3_pkgversion}-qt5-devel -%{py3_sipdir}/ -# compat location -%dir %{_datadir}/python3-sip/ -%{_datadir}/python3-sip/PyQt5/ +%{python3_sitearch}/PyQt5/bindings/ %endif # with_python3 %files doc @@ -567,6 +348,9 @@ sed -i \ %changelog +* Sun Jun 06 2021 Scott Talbert - 5.15.0-10 +- Rebuild with sip 5; remove unused Python 2 support for clarity + * Thu Jun 03 2021 Python Maint - 5.15.0-9 - Rebuilt for Python 3.10