diff --git a/.gitignore b/.gitignore index f7b1e4a..9f9eb15 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ /sip-4.19.22.tar.gz /sip-4.19.23.tar.gz /sip-4.19.24.tar.gz +/sip-4.19.25.tar.gz diff --git a/sip-4.18-no_rpath.patch b/sip-4.18-no_rpath.patch index 406a26c..0ae91e4 100644 --- a/sip-4.18-no_rpath.patch +++ b/sip-4.18-no_rpath.patch @@ -1,7 +1,7 @@ -diff -up sip-4.18/siputils.py.no_rpath sip-4.18/siputils.py ---- sip-4.18/siputils.py.no_rpath 2015-03-25 06:00:24.000000000 -0500 -+++ sip-4.18/siputils.py 2016-04-13 11:34:48.179894616 -0500 -@@ -435,7 +435,7 @@ class Makefile: +diff -rupN --no-dereference sip-4.19.25/siputils.py sip-4.19.25-new/siputils.py +--- sip-4.19.25/siputils.py 2021-10-21 13:45:54.808566613 +0200 ++++ sip-4.19.25-new/siputils.py 2021-10-21 13:45:54.812566611 +0200 +@@ -436,7 +436,7 @@ class Makefile: if l_dir in ("", ".", ".."): continue @@ -10,7 +10,7 @@ diff -up sip-4.18/siputils.py.no_rpath sip-4.18/siputils.py if self._python: incdir.append(self.config.py_inc_dir) -@@ -612,7 +612,7 @@ class Makefile: +@@ -613,7 +613,7 @@ class Makefile: # Handle library directories. libdir_qt = self.optional_list("LIBDIR_QT") libdir.extend(libdir_qt) diff --git a/sip-4.18-no_strip.patch b/sip-4.18-no_strip.patch index 3273311..326759e 100644 --- a/sip-4.18-no_strip.patch +++ b/sip-4.18-no_strip.patch @@ -1,7 +1,7 @@ -diff -up sip-4.18/siputils.py.no_strip sip-4.18/siputils.py ---- sip-4.18/siputils.py.no_strip 2015-03-25 06:00:24.000000000 -0500 -+++ sip-4.18/siputils.py 2016-04-13 11:34:23.718690341 -0500 -@@ -1469,7 +1469,7 @@ class ModuleMakefile(Makefile): +diff -rupN --no-dereference sip-4.19.25/siputils.py sip-4.19.25-new/siputils.py +--- sip-4.19.25/siputils.py 2021-02-26 16:17:35.156108000 +0100 ++++ sip-4.19.25-new/siputils.py 2021-10-21 13:45:54.780566626 +0200 +@@ -1473,7 +1473,7 @@ class ModuleMakefile(Makefile): """ def __init__(self, configuration, build_file, install_dir=None, static=0, console=0, qt=0, opengl=0, threaded=0, warnings=1, debug=0, @@ -10,7 +10,7 @@ diff -up sip-4.18/siputils.py.no_strip sip-4.18/siputils.py export_all=0, universal=None, arch=None, deployment_target=None): """Initialise an instance of a module Makefile. -@@ -1780,7 +1780,7 @@ class SIPModuleMakefile(ModuleMakefile): +@@ -1784,7 +1784,7 @@ class SIPModuleMakefile(ModuleMakefile): """ def __init__(self, configuration, build_file, install_dir=None, static=0, console=0, qt=0, opengl=0, threaded=0, warnings=1, debug=0, diff --git a/sip-4.19.18-no_hardcode_sip_so.patch b/sip-4.19.18-no_hardcode_sip_so.patch index b6fe637..86c453c 100644 --- a/sip-4.19.18-no_hardcode_sip_so.patch +++ b/sip-4.19.18-no_hardcode_sip_so.patch @@ -1,7 +1,7 @@ -diff -up sip-4.19.18/configure.py.orig sip-4.19.18/configure.py ---- sip-4.19.18/configure.py.orig 2019-07-04 12:28:08.000000000 -0400 -+++ sip-4.19.18/configure.py 2019-08-27 21:56:33.871428348 -0400 -@@ -447,7 +447,7 @@ def create_makefiles(macros): +diff -rupN --no-dereference sip-4.19.25/configure.py sip-4.19.25-new/configure.py +--- sip-4.19.25/configure.py 2021-02-26 16:28:41.621025600 +0100 ++++ sip-4.19.25-new/configure.py 2021-10-21 13:45:54.845566597 +0200 +@@ -449,7 +449,7 @@ def create_makefiles(macros): if sys.platform == 'win32': mod = 'sip.lib' if opts.static else 'sip.pyd' else: diff --git a/sip-4.19.25-ftbfs-python-3.15.patch b/sip-4.19.25-ftbfs-python-3.15.patch new file mode 100644 index 0000000..31ec6b9 --- /dev/null +++ b/sip-4.19.25-ftbfs-python-3.15.patch @@ -0,0 +1,20 @@ +diff -up sip-4.19.25/siplib/qtlib.c.pyweekref_getobject sip-4.19.25/siplib/qtlib.c +--- sip-4.19.25/siplib/qtlib.c.pyweekref_getobject 2021-02-26 16:17:35.136483000 +0100 ++++ sip-4.19.25/siplib/qtlib.c 2025-11-12 18:23:13.020805318 +0100 +@@ -24,6 +24,16 @@ + + #include "sipint.h" + ++// Fix FTBFS with python3.15 ++#if PY_VERSION_HEX >= 0x30F00A1 ++static inline PyObject *compat_PyWeakref_GetObject(PyObject *ref) { ++ PyObject *obj = NULL; ++ if (PyWeakref_GetRef(ref, &obj) < 0) ++ return NULL; ++ return obj; ++} ++#define PyWeakref_GetObject compat_PyWeakref_GetObject ++#endif + + /* This is how Qt "types" signals and slots. */ + #define isQtSlot(s) (*(s) == '1') diff --git a/sip-4.19.25-py_ssize_t_clean.patch b/sip-4.19.25-py_ssize_t_clean.patch new file mode 100644 index 0000000..a6f10db --- /dev/null +++ b/sip-4.19.25-py_ssize_t_clean.patch @@ -0,0 +1,52 @@ +From: Jochen Sprickerhof +Date: Fri, 5 Nov 2021 09:13:14 +0100 +Subject: Make parser not break on py_ssize_t_clean directive from SIP v6.4 + +--- + sipgen/metasrc/lexer.l | 1 + + sipgen/metasrc/parser.y | 13 +++++++++++++ + 2 files changed, 14 insertions(+) + +diff --git a/sipgen/metasrc/lexer.l b/sipgen/metasrc/lexer.l +index a52b018..c328202 100644 +--- a/sipgen/metasrc/lexer.l ++++ b/sipgen/metasrc/lexer.l +@@ -174,6 +174,7 @@ SIP_QOBJECT {return TK_QOBJECT;} + timestamp {return TK_TIMESTAMP;} + type {return TK_TYPE;} + use_argument_names {return TK_USEARGNAMES;} ++py_ssize_t_clean {return TK_PYSSIZETCLEAN;} + use_limited_api {return TK_USELIMITEDAPI;} + all_raise_py_exception {return TK_ALLRAISEPYEXC;} + call_super_init {return TK_CALLSUPERINIT;} +diff --git a/sipgen/metasrc/parser.y b/sipgen/metasrc/parser.y +index 5623dca..2d98380 100644 +--- a/sipgen/metasrc/parser.y ++++ b/sipgen/metasrc/parser.y +@@ -389,6 +389,7 @@ static scopedNameDef *fullyQualifiedName(scopedNameDef *snd); + %token TK_TIMESTAMP + %token TK_TYPE + %token TK_USEARGNAMES ++%token TK_PYSSIZETCLEAN + %token TK_USELIMITEDAPI + %token TK_ALLRAISEPYEXC + %token TK_CALLSUPERINIT +@@ -2012,6 +2013,18 @@ module_arg: TK_KWARGS '=' TK_STRING_VALUE { + $$.call_super_init = -1; + $$.def_error_handler = NULL; + } ++ | TK_PYSSIZETCLEAN '=' bool_value { ++ $$.token = TK_PYSSIZETCLEAN; ++ ++ $$.c_module = FALSE; ++ $$.kwargs = defaultKwArgs; ++ $$.name = NULL; ++ $$.use_arg_names = FALSE; ++ $$.use_limited_api = FALSE; ++ $$.all_raise_py_exc = FALSE; ++ $$.call_super_init = -1; ++ $$.def_error_handler = NULL; ++ } + | TK_USELIMITEDAPI '=' bool_value { + $$.token = TK_USELIMITEDAPI; + diff --git a/sip-4.19.25-pyframe_getback.patch b/sip-4.19.25-pyframe_getback.patch new file mode 100644 index 0000000..30bab23 --- /dev/null +++ b/sip-4.19.25-pyframe_getback.patch @@ -0,0 +1,13 @@ +diff --git a/siplib/siplib.c b/siplib/siplib.c +index db52b68..8019e97 100644 +--- a/siplib/siplib.c ++++ b/siplib/siplib.c +@@ -13747,7 +13747,7 @@ static struct _frame *sip_api_get_frame(int depth) + + while (frame != NULL && depth > 0) + { +- frame = frame->f_back; ++ frame = PyFrame_GetBack(frame); + --depth; + } + diff --git a/sip.spec b/sip.spec index f04eee0..c4c77e6 100644 --- a/sip.spec +++ b/sip.spec @@ -37,13 +37,21 @@ %global wx_siplib 1 %endif +# Stop building PyQt5.sip on F35+ +%if 0%{?fedora} && 0%{?fedora} >= 35 +%global pyqt5_sip 0 +%else +%global pyqt5_sip 1 +%endif + Summary: SIP - Python/C++ Bindings Generator Name: sip -Version: 4.19.24 -Release: 3%{?dist} +Version: 4.19.25 +Release: 19%{?dist} # sipgen/parser.{c.h} is GPLv3+ with exceptions (bison) -License: GPLv2 or GPLv3 and (GPLv3+ with exceptions) +# Automatically converted from old format: GPLv2 or GPLv3 and (GPLv3+ with exceptions) - review is highly recommended. +License: GPL-2.0-only OR GPL-3.0-only AND (LicenseRef-Callaway-GPLv3+-with-exceptions) Url: https://riverbankcomputing.com/software/sip/intro Source0: https://riverbankcomputing.com/static/Downloads/sip/%{version}/sip-%{version}%{?snap:.%{snap}}.tar.gz @@ -61,6 +69,12 @@ Patch51: sip-4.18-no_rpath.patch #Patch52: sip-4.19.3-python3_sip_bin.patch # Avoid hardcoding sip.so (needed for wxpython's siplib.so) Patch53: sip-4.19.18-no_hardcode_sip_so.patch +# Recognize the py_ssize_t_clean directive to avoid FTBFS with PyQt 5.15.6 +Patch54: sip-4.19.25-py_ssize_t_clean.patch +# Fix error: invalid use of undefined type 'struct _frame' +Patch55: sip-4.19.25-pyframe_getback.patch +# Fix error: implicit declaration of function ‘PyWeakref_GetObject’ +Patch56: sip-4.19.25-ftbfs-python-3.15.patch # extracted from sip.h, SIP_API_MAJOR_NR SIP_API_MINOR_NR defines Source1: macros.sip @@ -71,6 +85,10 @@ Source1: macros.sip BuildRequires: make BuildRequires: gcc-c++ BuildRequires: sed +BuildRequires: bison +BuildRequires: flex + +BuildRequires: python-setuptools Obsoletes: sip-macros < %{version}-%{release} Provides: sip-macros = %{version}-%{release} @@ -177,6 +195,7 @@ Provides: python%{python3_pkgversion}-pyqt4-sip-api(%{_sip_api_major})%{?_isa} = %description -n python%{python3_pkgversion}-pyqt4-sip This is the Python 3 build of pyqt4-SIP. +%if %{?pyqt5_sip} %package -n python%{python3_pkgversion}-pyqt5-sip Summary: SIP - Python 3/C++ Bindings Generator for pyqt5 BuildRequires: python%{python3_pkgversion}-devel @@ -184,6 +203,7 @@ Provides: python%{python3_pkgversion}-pyqt5-sip-api(%{_sip_api_major}) = %{_sip_ Provides: python%{python3_pkgversion}-pyqt5-sip-api(%{_sip_api_major})%{?_isa} = %{_sip_api} %description -n python%{python3_pkgversion}-pyqt5-sip This is the Python 3 build of pyqt5-SIP. +%endif %if %{?wx_siplib} %package -n python%{python3_pkgversion}-wx-siplib @@ -204,12 +224,17 @@ This is the Python 3 build of wx-siplib. %setup -q -n %{name}-%{version}%{?snap:.%{snap}} -%patch50 -p1 -b .no_strip -%patch51 -p1 -b .no_rpath -%patch53 -p1 -b .no_sip_so +%patch -P50 -p1 -b .no_strip +%patch -P51 -p1 -b .no_rpath +%patch -P53 -p1 -b .no_sip_so +%patch -P54 -p1 -b .py_ssize_t_clean +%patch -P55 -p1 -b .pyframe_getback +%patch -P56 -p1 -b .pyweekref_getobject %build +flex --outfile=sipgen/lexer.c sipgen/metasrc/lexer.l +bison --yacc --defines=sipgen/parser.h --output=sipgen/parser.c sipgen/metasrc/parser.y %if %{with python2} %if 0%{?no_namespace} mkdir %{_target_platform}-python2 @@ -277,6 +302,7 @@ pushd %{_target_platform}-python3-pyqt4 %make_build popd +%if %{?pyqt5_sip} mkdir %{_target_platform}-python3-pyqt5 pushd %{_target_platform}-python3-pyqt5 %{__python3} ../configure.py \ @@ -286,6 +312,7 @@ pushd %{_target_platform}-python3-pyqt5 %make_build popd +%endif %if %{?wx_siplib} sed -i -e 's|target = sip|target = siplib|g' siplib/siplib.sbf @@ -312,7 +339,9 @@ sed -i -e 's|target = siplib|target = sip|g' siplib/siplib.sbf %make_install -C %{_target_platform}-python3 %endif %make_install -C %{_target_platform}-python3-pyqt4 +%if %{?pyqt5_sip} %make_install -C %{_target_platform}-python3-pyqt5 +%endif %if %{?wx_siplib} %make_install -C %{_target_platform}-python3-wx mv %{buildroot}%{python3_sitearch}/wx/sip.pyi %{buildroot}%{python3_sitearch}/wx/siplib.pyi @@ -434,12 +463,14 @@ popd %{python3_sitearch}/PyQt4/sip.* %{python3_sitearch}/PyQt4_sip-%{version}.dist-info/ +%if %{?pyqt5_sip} %files -n python%{python3_pkgversion}-pyqt5-sip %doc NEWS README %license LICENSE LICENSE-GPL2 LICENSE-GPL3 %dir %{python3_sitearch}/PyQt5/ %{python3_sitearch}/PyQt5/sip.* %{python3_sitearch}/PyQt5_sip-%{version}.dist-info/ +%endif %if %{?wx_siplib} %files -n python%{python3_pkgversion}-wx-siplib @@ -453,6 +484,72 @@ popd %changelog +* Thu Nov 27 2025 Than Ngo - 4.19.25-19 +- Fix rhbz#2414555 - error: implicit declaration of function ‘PyWeakref_GetObject’ + +* Fri Sep 19 2025 Python Maint - 4.19.25-18 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Fri Aug 15 2025 Python Maint - 4.19.25-17 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Fri Jul 25 2025 Fedora Release Engineering - 4.19.25-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Mon Jun 02 2025 Python Maint - 4.19.25-15 +- Rebuilt for Python 3.14 + +* Sun Jan 19 2025 Fedora Release Engineering - 4.19.25-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Sep 04 2024 Miroslav Suchý - 4.19.25-13 +- convert license to SPDX + +* Sat Jul 20 2024 Fedora Release Engineering - 4.19.25-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 07 2024 Python Maint - 4.19.25-11 +- Rebuilt for Python 3.13 + +* Sat Jan 27 2024 Fedora Release Engineering - 4.19.25-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jul 22 2023 Fedora Release Engineering - 4.19.25-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jun 13 2023 Python Maint - 4.19.25-8 +- Rebuilt for Python 3.12 + +* Tue Mar 07 2023 Than Ngo - 4.19.25-7 +- fixed bz#2154988, fails to build with Python 3.12: ModuleNotFoundError: No module named 'distutils' + +* Sat Jan 21 2023 Fedora Release Engineering - 4.19.25-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Jul 23 2022 Fedora Release Engineering - 4.19.25-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jun 13 2022 Python Maint - 4.19.25-4 +- Rebuilt for Python 3.11 + +* Sat Jan 22 2022 Fedora Release Engineering - 4.19.25-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Nov 08 2021 Scott Talbert - 4.19.25-2 +- Recognize the py_ssize_t_clean directive to avoid FTBFS with PyQt 5.15.6 + +* Thu Oct 21 2021 Sandro Mani - 4.19.25-1 +- Update to 4.19.25 + +* Fri Jul 23 2021 Fedora Release Engineering - 4.19.24-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jun 14 2021 Scott Talbert - 4.19.24-5 +- Stop building python3-pyqt5-sip package on F35+ - replaced by separate pkg + +* Thu Jun 03 2021 Python Maint - 4.19.24-4 +- Rebuilt for Python 3.10 + * Wed Jan 27 2021 Fedora Release Engineering - 4.19.24-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources index f458ce7..bd8dd5d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sip-4.19.24.tar.gz) = c9acf8c66da6ff24ffaeed254c11deabbc587cea0eb50164f2016199af30b85980f96a2d754ae5e7fe080f9076673b1abc82e2a6a41ff2ac442fb2b326fca1c0 +SHA512 (sip-4.19.25.tar.gz) = 60fb4133c68869bf0993144978b4847d94a0f9c7b477f64a346ea133cfe35bc11820204ab327dcf9a929b6f65a26d16cc7efbce65e49967c3347b39376e57001