From 3b059fb6f110462532be241d51990cfe560a7741 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 24 Nov 2021 17:26:33 +0100 Subject: [PATCH 01/54] Disable PHP test, it fails with PHP 8.1 --- swig.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/swig.spec b/swig.spec index fbc65b9..8d35689 100644 --- a/swig.spec +++ b/swig.spec @@ -18,7 +18,8 @@ %{!?guile:%global guile 0} %{!?lualang:%global lualang 1} %{!?perllang:%global perllang 1} -%{!?phplang:%global phplang 1} +# Disable PHP test it fails with 8.1.0 +%{!?phplang:%global phplang 0} # Disable Ruby test failed with swig 4.0.0 on s390 %ifarch s390x %{power64} %{!?rubylang:%global rubylang 0} @@ -53,7 +54,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 10%{?dist} +Release: 11%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -346,6 +347,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Nov 24 2021 Jitka Plesnikova - 4.0.2-11 +- Disable PHP test, it fails with PHP 8.1 + * Thu Oct 07 2021 Jitka Plesnikova - 4.0.2-10 - Enable Python tests From a2bd7ba1ee01bf0dd31268f2d0f6033d54e79db1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jan 2022 02:03:26 +0000 Subject: [PATCH 02/54] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 8d35689..73caa38 100644 --- a/swig.spec +++ b/swig.spec @@ -54,7 +54,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 11%{?dist} +Release: 12%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -347,6 +347,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Jan 22 2022 Fedora Release Engineering - 4.0.2-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Wed Nov 24 2021 Jitka Plesnikova - 4.0.2-11 - Disable PHP test, it fails with PHP 8.1 From 4adf2d12844890a556117691302141ca7317a205 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Sat, 22 Jan 2022 10:32:40 +0100 Subject: [PATCH 03/54] Fix tests against GCC12, enable Guile tests --- ....0.2-gcc-12-warning-fix-in-test-case.patch | 26 +++++++++++++++++++ swig.spec | 15 +++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 swig-4.0.2-gcc-12-warning-fix-in-test-case.patch diff --git a/swig-4.0.2-gcc-12-warning-fix-in-test-case.patch b/swig-4.0.2-gcc-12-warning-fix-in-test-case.patch new file mode 100644 index 0000000..44e6b16 --- /dev/null +++ b/swig-4.0.2-gcc-12-warning-fix-in-test-case.patch @@ -0,0 +1,26 @@ +From 76d5a9ec270a763c892ae28070e391cf99e0b7cd Mon Sep 17 00:00:00 2001 +From: William S Fulton +Date: Tue, 18 Jan 2022 21:37:02 +0000 +Subject: [PATCH] gcc-12 warning fix in test-case + +Closes #2145 +--- + Examples/test-suite/nested_class.i | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Examples/test-suite/nested_class.i b/Examples/test-suite/nested_class.i +index b10c33949..c778a12cf 100644 +--- a/Examples/test-suite/nested_class.i ++++ b/Examples/test-suite/nested_class.i +@@ -201,7 +201,7 @@ struct Outer { + Integer xx; + } MultipleInstanceAnonDerived1, MultipleInstanceAnonDerived2, *MultipleInstanceAnonDerived3, MultipleInstanceAnonDerived4[2]; + +-#if defined(__GNUC__) || defined(_MSC_VER) || defined(SWIG) ++#if (defined(__GNUC__) && __GNUC__ < 12) || defined(_MSC_VER) || defined(SWIG) + /* some compilers do not accept these */ + struct : public InnerMultiple { + Integer xx; +-- +2.31.1 + diff --git a/swig.spec b/swig.spec index 8d35689..5db556e 100644 --- a/swig.spec +++ b/swig.spec @@ -15,7 +15,7 @@ %endif %{!?tcl:%global tcl 1} -%{!?guile:%global guile 0} +%{!?guile:%global guile 1} %{!?lualang:%global lualang 1} %{!?perllang:%global perllang 1} # Disable PHP test it fails with 8.1.0 @@ -54,7 +54,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 11%{?dist} +Release: 12%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -77,13 +77,18 @@ Patch4: swig-4.0.2-Support-PHP8.patch Patch5: swig-octave-6.patch # Fix overload_simple_cast test with Python 3.10 GH#2044 Patch6: swig-4.0.2-Fix-overload_simple_cast-test-with-Python-3.10.patch +# gcc-12 warning fix in test-case +Patch7: swig-4.0.2-gcc-12-warning-fix-in-test-case.patch +BuildRequires: coreutils +BuildRequires: findutils BuildRequires: make BuildRequires: perl-interpreter, pcre-devel BuildRequires: python%{python3_pkgversion}-devel BuildRequires: autoconf, automake, gawk, dos2unix BuildRequires: gcc-c++ BuildRequires: help2man +BuildRequires: sed BuildRequires: perl-devel BuildRequires: perl(base) BuildRequires: perl(Config) @@ -217,6 +222,9 @@ done %if ! %{golang} --without-go \ %endif +%if ! %{guile} + --without-guile \ +%endif %if %{octave} --with-octave=%{_bindir}/octave \ --without-maximum-compile-warnings \ @@ -347,6 +355,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Jan 21 2022 Jitka Plesnikova - 4.0.2-12 +- Fix tests against GCC12, enable Guile tests + * Wed Nov 24 2021 Jitka Plesnikova - 4.0.2-11 - Disable PHP test, it fails with PHP 8.1 From c972358d3644a960a06ba327d8b6856192b59327 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 8 Feb 2022 12:16:55 +0100 Subject: [PATCH 04/54] Enable Ruby tests on all arches --- swig.spec | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/swig.spec b/swig.spec index dac8c84..25b3297 100644 --- a/swig.spec +++ b/swig.spec @@ -3,6 +3,7 @@ %if %{without testsuite} %global tcl 0 +%global guile 0 %global lualang 0 %global perllang 0 %global phplang 0 @@ -20,12 +21,7 @@ %{!?perllang:%global perllang 1} # Disable PHP test it fails with 8.1.0 %{!?phplang:%global phplang 0} -# Disable Ruby test failed with swig 4.0.0 on s390 -%ifarch s390x %{power64} -%{!?rubylang:%global rubylang 0} -%else %{!?rubylang:%global rubylang 1} -%endif %{!?python3lang:%global python3lang 1} %if 0%{?rhel} @@ -38,6 +34,7 @@ %{!?Rlang:%global Rlang 1} %bcond_without build_ccache_swig %endif + %ifarch aarch64 %{arm} %{mips} ppc %{power64} s390 s390x %{!?javalang:%global javalang 0} %else From f74f288cd00d6b02e58a820174c197b6c70cf63a Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 3 Mar 2022 09:17:44 +0100 Subject: [PATCH 05/54] Disable Java tests --- swig.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/swig.spec b/swig.spec index 25b3297..868a083 100644 --- a/swig.spec +++ b/swig.spec @@ -38,7 +38,9 @@ %ifarch aarch64 %{arm} %{mips} ppc %{power64} s390 s390x %{!?javalang:%global javalang 0} %else -%{!?javalang:%global javalang 1} +# Disable tests failing with java-17-openjdk +# it will pass with swig 4.1.0 +%{!?javalang:%global javalang 0} %endif # Do not run Go tests, they failed with 4.0.0 on ppc64le @@ -51,7 +53,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 13%{?dist} +Release: 14%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -352,6 +354,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Feb 24 2022 Jitka Plesnikova - 4.0.2-14 +- Disable Java tests + * Sat Jan 22 2022 Jitka Plesnikova - 4.0.2-13 - Fix tests against GCC12, enable Guile tests From 1fe0c72f6bca8c27f8374b996c5c503a9a31cea8 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Tue, 31 May 2022 21:58:09 -0600 Subject: [PATCH 06/54] Rebuild for octave 7.1 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 868a083..389b5d8 100644 --- a/swig.spec +++ b/swig.spec @@ -53,7 +53,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 14%{?dist} +Release: 15%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -354,6 +354,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Jun 01 2022 Orion Poplawski - 4.0.2-15 +- Rebuild for octave 7.1 + * Thu Feb 24 2022 Jitka Plesnikova - 4.0.2-14 - Disable Java tests From 37afcecc7cacc1509d5e7e55f8bfeb78b6ee97be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= Date: Sat, 18 Jun 2022 12:22:12 +0200 Subject: [PATCH 07/54] Rebuilt for CVE-2022-1996, CVE-2022-24675, CVE-2022-28327, CVE-2022-27191, CVE-2022-29526, CVE-2022-30629 --- swig.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 389b5d8..0234e69 100644 --- a/swig.spec +++ b/swig.spec @@ -53,7 +53,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 15%{?dist} +Release: 16%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -354,6 +354,10 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Jun 18 2022 Robert-André Mauchin - 4.0.2-16 +- Rebuilt for CVE-2022-1996, CVE-2022-24675, CVE-2022-28327, CVE-2022-27191, + CVE-2022-29526, CVE-2022-30629 + * Wed Jun 01 2022 Orion Poplawski - 4.0.2-15 - Rebuild for octave 7.1 From 1d2ecc9240a9aeb04db18f3f7f38462634226d9f Mon Sep 17 00:00:00 2001 From: Maxwell G Date: Tue, 19 Jul 2022 13:59:09 -0500 Subject: [PATCH 08/54] Rebuild for CVE-2022-{1705,32148,30631,30633,28131,30635,30632,30630,1962} in golang --- swig.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 0234e69..bcc22a6 100644 --- a/swig.spec +++ b/swig.spec @@ -53,7 +53,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 16%{?dist} +Release: 17%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -354,6 +354,10 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Jul 19 2022 Maxwell G - 4.0.2-17 +- Rebuild for CVE-2022-{1705,32148,30631,30633,28131,30635,30632,30630,1962} in + golang + * Sat Jun 18 2022 Robert-André Mauchin - 4.0.2-16 - Rebuilt for CVE-2022-1996, CVE-2022-24675, CVE-2022-28327, CVE-2022-27191, CVE-2022-29526, CVE-2022-30629 From cff75cf870a85e34767334d3eb98fd9d2f1a3c7e Mon Sep 17 00:00:00 2001 From: Maxwell G Date: Thu, 21 Jul 2022 15:27:35 -0500 Subject: [PATCH 09/54] Exclude golang extension from i686 --- swig.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/swig.spec b/swig.spec index bcc22a6..6b02e1d 100644 --- a/swig.spec +++ b/swig.spec @@ -44,7 +44,7 @@ %endif # Do not run Go tests, they failed with 4.0.0 on ppc64le -%ifarch %{ix86} x86_64 %{arm} aarch64 +%ifarch x86_64 %{arm} aarch64 %{!?golang:%global golang 1} %else %{!?golang:%global golang 0} @@ -53,7 +53,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 17%{?dist} +Release: 18%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -354,6 +354,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Jul 21 2022 Maxwell G - 4.0.2-18 +- Exclude golang extension from i686 + * Tue Jul 19 2022 Maxwell G - 4.0.2-17 - Rebuild for CVE-2022-{1705,32148,30631,30633,28131,30635,30632,30630,1962} in golang From f1e63a86403734fe82ea8ce9f8040d76ab8f6c18 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 25 Oct 2022 14:11:18 +0200 Subject: [PATCH 10/54] Update to 4.1.0 --- .gitignore | 1 + sources | 2 +- ...har-typecheck-typemap-to-accept-Null.patch | 82 - ...ad_simple_cast-test-with-Python-3.10.patch | 23 - ...ed-directed-methods-with-non-void-re.patch | 101 - swig-4.0.2-Improve-PHP-object-creation.patch | 82 - swig-4.0.2-Support-PHP8.patch | 409 ---- ....0.2-gcc-12-warning-fix-in-test-case.patch | 26 - swig-Upgrade-to-support-newer-NodeJS.patch | 1863 ----------------- swig.spec | 39 +- 10 files changed, 16 insertions(+), 2612 deletions(-) delete mode 100644 swig-4.0.2-Fix-char-typecheck-typemap-to-accept-Null.patch delete mode 100644 swig-4.0.2-Fix-overload_simple_cast-test-with-Python-3.10.patch delete mode 100644 swig-4.0.2-Fix-overloaded-directed-methods-with-non-void-re.patch delete mode 100644 swig-4.0.2-Improve-PHP-object-creation.patch delete mode 100644 swig-4.0.2-Support-PHP8.patch delete mode 100644 swig-4.0.2-gcc-12-warning-fix-in-test-case.patch delete mode 100644 swig-Upgrade-to-support-newer-NodeJS.patch diff --git a/.gitignore b/.gitignore index 2286b59..13374dc 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ swig-2.0.0.tar.gz /swig-4.0.0.tar.gz /swig-4.0.1.tar.gz /swig-4.0.2.tar.gz +/swig-4.1.0.tar.gz diff --git a/sources b/sources index f9f798f..c9baee1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.0.2.tar.gz) = 05e7da70ce6d9a733b96c0bcfa3c1b82765bd859f48c74759bbf4bb1467acb1809caa310cba5e2b3280cd704fca249eaa0624821dffae1d2a75097c7f55d14ed +SHA512 (swig-4.1.0.tar.gz) = a7d43d6aa764923826786081a3f2e25aa0f8345e1169c1e57bf02d01f6f41c92d8db0f360ec86e0e428ef5a21d1b5cd3edb7e4b71d0beff3e6611e344b5c22b1 diff --git a/swig-4.0.2-Fix-char-typecheck-typemap-to-accept-Null.patch b/swig-4.0.2-Fix-char-typecheck-typemap-to-accept-Null.patch deleted file mode 100644 index b293d2f..0000000 --- a/swig-4.0.2-Fix-char-typecheck-typemap-to-accept-Null.patch +++ /dev/null @@ -1,82 +0,0 @@ -From b7dedecfdd708c5323addc1b28e16cc727e01980 Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Thu, 18 Mar 2021 10:53:58 +1300 -Subject: [PATCH] php: Fix char* typecheck typemap to accept Null - -The corresponding in typemap already does. - -Fixes #1655, reported by CJSlominski. ---- - CHANGES.current | 4 ++++ - Examples/test-suite/overload_polymorphic.i | 3 +++ - .../test-suite/php/overload_polymorphic_runme.php | 14 ++++++++++++++ - Lib/php/php.swg | 5 ++++- - 4 files changed, 25 insertions(+), 1 deletion(-) - create mode 100644 Examples/test-suite/php/overload_polymorphic_runme.php - -#diff --git a/CHANGES.current b/CHANGES.current -#index 58fd05a56..f287e3d60 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.1.0 (in progress) -# =========================== -# -#+2021-03-18: olly -#+ #1655 [PHP] Fix char* typecheck typemap to accept PHP Null like the -#+ corresponding in typemap does. -#+ -# 2021-03-18: olly -# #1900, #1905 [PHP] Fix wrapping of overloaded directed methods with -# non-void return. -diff --git a/Examples/test-suite/overload_polymorphic.i b/Examples/test-suite/overload_polymorphic.i -index ac004f948..72aabd840 100644 ---- a/Examples/test-suite/overload_polymorphic.i -+++ b/Examples/test-suite/overload_polymorphic.i -@@ -23,4 +23,7 @@ class Unknown; - int test2(Unknown* unknown) { return 0; } - int test2(Base* base) { return 1; } - -+int test3(const char*, const Base* = 0, bool = false) { return 0; } -+int test3(Base&, const char* = 0, const Base* = 0, bool = false) { return 1; } -+ - %} -diff --git a/Examples/test-suite/php/overload_polymorphic_runme.php b/Examples/test-suite/php/overload_polymorphic_runme.php -new file mode 100644 -index 000000000..0afe16808 ---- /dev/null -+++ b/Examples/test-suite/php/overload_polymorphic_runme.php -@@ -0,0 +1,14 @@ -+ -diff --git a/Lib/php/php.swg b/Lib/php/php.swg -index 4eba6be2a..ccfd371ab 100644 ---- a/Lib/php/php.swg -+++ b/Lib/php/php.swg -@@ -465,7 +465,10 @@ - %php_typecheck(double,SWIG_TYPECHECK_DOUBLE,IS_DOUBLE) - %php_typecheck(char,SWIG_TYPECHECK_CHAR,IS_STRING) - --%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) char *, char *&, char [] -+%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) char *, char *& -+ " $1 = (Z_TYPE($input) == IS_STRING || Z_TYPE($input) == IS_NULL); " -+ -+%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) char [] - " $1 = (Z_TYPE($input) == IS_STRING); " - - %typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE --- -2.26.3 - diff --git a/swig-4.0.2-Fix-overload_simple_cast-test-with-Python-3.10.patch b/swig-4.0.2-Fix-overload_simple_cast-test-with-Python-3.10.patch deleted file mode 100644 index a3c8cff..0000000 --- a/swig-4.0.2-Fix-overload_simple_cast-test-with-Python-3.10.patch +++ /dev/null @@ -1,23 +0,0 @@ -From a2850397ba3eec5d4c58304cf8277ca535919760 Mon Sep 17 00:00:00 2001 -From: Julien Schueller -Date: Thu, 5 Aug 2021 14:05:10 +0200 -Subject: [PATCH] [Python] Fix overload_simple_cast test with 3.10 - -Closes #2044 ---- - Examples/test-suite/python/python_overload_simple_cast_runme.py | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/Examples/test-suite/python/python_overload_simple_cast_runme.py b/Examples/test-suite/python/python_overload_simple_cast_runme.py -index fc398ab29b9..7a0174af8a2 100644 ---- a/Examples/test-suite/python/python_overload_simple_cast_runme.py -+++ b/Examples/test-suite/python/python_overload_simple_cast_runme.py -@@ -9,6 +9,8 @@ def __init__(self, x): - def __int__(self): - return self.x - -+ def __index__(self): -+ return self.x - - class Ad: - diff --git a/swig-4.0.2-Fix-overloaded-directed-methods-with-non-void-re.patch b/swig-4.0.2-Fix-overloaded-directed-methods-with-non-void-re.patch deleted file mode 100644 index 1cc5e91..0000000 --- a/swig-4.0.2-Fix-overloaded-directed-methods-with-non-void-re.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 2e7da86b2ced479e48741cc8713479dee426be61 Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Wed, 9 Dec 2020 09:48:55 +1300 -Subject: [PATCH] php: Fix overloaded directed methods with non-void return - -We were treating such methods like constructors and assigning to the -internal _cPtr, which just seems bizarrely wrong. - -Fixes #1900 ---- - CHANGES.current | 4 ++++ - Examples/test-suite/director_overload.i | 11 ++++++++++- - .../test-suite/php/director_overload_runme.php | 18 ++++++++++++++++++ - Source/Modules/php.cxx | 4 ++-- - 4 files changed, 34 insertions(+), 3 deletions(-) - create mode 100644 Examples/test-suite/php/director_overload_runme.php - -#diff --git a/CHANGES.current b/CHANGES.current -#index acaea3aea..58fd05a56 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.1.0 (in progress) -# =========================== -# -#+2021-03-18: olly -#+ #1900, #1905 [PHP] Fix wrapping of overloaded directed methods with -#+ non-void return. -#+ -# 2021-03-11: murillo128 -# #1498 [Javascript] Support type conversion. -# -diff --git a/Examples/test-suite/director_overload.i b/Examples/test-suite/director_overload.i -index 604ffe5ca..d6feb122b 100644 ---- a/Examples/test-suite/director_overload.i -+++ b/Examples/test-suite/director_overload.i -@@ -47,5 +47,14 @@ public: - virtual void notover(int *p) const {} - }; - --%} -+class OverloadedGetSet -+{ -+ int v; -+public: -+ OverloadedGetSet() : v(42) { } -+ virtual ~OverloadedGetSet() { } -+ virtual int rw() const { return v; } -+ virtual void rw(int new_v) { v = new_v; } -+}; - -+%} -diff --git a/Examples/test-suite/php/director_overload_runme.php b/Examples/test-suite/php/director_overload_runme.php -new file mode 100644 -index 000000000..f5fc56b65 ---- /dev/null -+++ b/Examples/test-suite/php/director_overload_runme.php -@@ -0,0 +1,18 @@ -+ -+rw(), 42, "get_set() initial value not 42"); -+check::equal($o->rw(7), null, "get_set() failed to set"); -+check::equal($o->rw(), 7, "get_set() didn't return back set value"); -+ -+check::done(); -+?> -diff --git a/Source/Modules/php.cxx b/Source/Modules/php.cxx -index 1edbd874c..eaae32d63 100644 ---- a/Source/Modules/php.cxx -+++ b/Source/Modules/php.cxx -@@ -1566,7 +1566,7 @@ public: - Printf(prepare, "case %d: ", ++last_handled_i); - } - if (non_void_return) { -- if ((!directorsEnabled() || !Swig_directorclass(n)) && !constructor) { -+ if (!constructor) { - Append(prepare, "$r="); - } else if (wrapperType == staticmemberfn || wrapperType == staticmembervar) { - Append(prepare, "$r="); -@@ -1590,7 +1590,7 @@ public: - if (had_a_case) - Printf(prepare, "default: "); - if (non_void_return) { -- if ((!directorsEnabled() || !Swig_directorclass(n)) && !constructor) { -+ if (!constructor) { - Append(prepare, "$r="); - } else if (wrapperType == staticmemberfn || wrapperType == staticmembervar) { - Append(prepare, "$r="); --- -2.26.3 - diff --git a/swig-4.0.2-Improve-PHP-object-creation.patch b/swig-4.0.2-Improve-PHP-object-creation.patch deleted file mode 100644 index 2239053..0000000 --- a/swig-4.0.2-Improve-PHP-object-creation.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 71475b0af9677deeaf6fe55c0c5f53fec9f730d2 Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Thu, 18 Mar 2021 15:50:52 +1300 -Subject: [PATCH] Improve PHP object creation - -Reportedly the code we were using in the directorin case gave segfaults -in PHP 7.2 and later - we've been unable to reproduce these, but the new -approach is also simpler and should be bit faster too. - -Fixes #1527, #1975 ---- - CHANGES.current | 6 ++++++ - Lib/php/phprun.swg | 14 +++++--------- - 2 files changed, 11 insertions(+), 9 deletions(-) - -#diff --git a/CHANGES.current b/CHANGES.current -#index f287e3d60..79d41001f 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,12 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.1.0 (in progress) -# =========================== -# -#+2021-03-19: olly -#+ #1527 [PHP] Improve PHP object creation in directorin case. -#+ Reportedly the code we were using in this case gave segfaults in -#+ PHP 7.2 and later - we've been unable to reproduce these, but the -#+ new approach is also simpler and should be bit faster too. -#+ -# 2021-03-18: olly -# #1655 [PHP] Fix char* typecheck typemap to accept PHP Null like the -# corresponding in typemap does. -diff --git a/Lib/php/phprun.swg b/Lib/php/phprun.swg -index a07a1b9f8..f3a4e6ad1 100644 ---- a/Lib/php/phprun.swg -+++ b/Lib/php/phprun.swg -@@ -90,15 +90,13 @@ SWIG_SetPointerZval(zval *z, void *ptr, swig_type_info *type, int newobject) { - } else { - /* - * Wrap the resource in an object, the resource will be accessible -- * via the "_cPtr" member. This is currently only used by -+ * via the "_cPtr" property. This code path is currently only used by - * directorin typemaps. - */ -- zval resource; - zend_class_entry *ce = NULL; - const char *type_name = type->name+3; /* +3 so: _p_Foo -> Foo */ - size_t type_name_len; - const char * p; -- HashTable * ht; - - /* Namespace__Foo -> Foo */ - /* FIXME: ugly and goes wrong for classes with __ in their names. */ -@@ -107,7 +105,6 @@ SWIG_SetPointerZval(zval *z, void *ptr, swig_type_info *type, int newobject) { - } - type_name_len = strlen(type_name); - -- ZVAL_RES(&resource, zend_register_resource(value, *(int *)(type->clientdata))); - if (SWIG_PREFIX_LEN > 0) { - zend_string * classname = zend_string_alloc(SWIG_PREFIX_LEN + type_name_len, 0); - memcpy(classname->val, SWIG_PREFIX, SWIG_PREFIX_LEN); -@@ -121,13 +118,12 @@ SWIG_SetPointerZval(zval *z, void *ptr, swig_type_info *type, int newobject) { - } - if (ce == NULL) { - /* class does not exist */ -- ce = zend_standard_class_def; -+ object_init(z); -+ } else { -+ object_init_ex(z, ce); - } - -- ALLOC_HASHTABLE(ht); -- zend_hash_init(ht, 1, NULL, NULL, 0); -- zend_hash_str_update(ht, "_cPtr", sizeof("_cPtr") - 1, &resource); -- object_and_properties_init(z, ce, ht); -+ add_property_resource_ex(z, "_cPtr", sizeof("_cPtr") - 1, zend_register_resource(value, *(int *)(type->clientdata))); - } - return; - } --- -2.26.3 - diff --git a/swig-4.0.2-Support-PHP8.patch b/swig-4.0.2-Support-PHP8.patch deleted file mode 100644 index 56e9831..0000000 --- a/swig-4.0.2-Support-PHP8.patch +++ /dev/null @@ -1,409 +0,0 @@ -From 3584c7d49cb598ce79d5e285d6c17b2dedfe3ecb Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Wed, 17 Mar 2021 12:45:17 +1300 -Subject: [PATCH 1/4] Add initial support for PHP8 - -Testcase director_overload2 is failing, but the rest of the testsuite -passes. ---- - .travis.yml | 4 ++ - Doc/Manual/Php.html | 6 +- - Doc/Manual/Preprocessor.html | 2 +- - Doc/Manual/SWIG.html | 2 +- - Examples/Makefile.in | 6 +- - .../php/evil_diamond_prop_runme.php | 2 +- - Lib/cdata.i | 2 +- - Lib/exception.i | 2 +- - Lib/php/phprun.swg | 8 ++- - Source/Modules/php.cxx | 55 +++++++++++++++---- - configure.ac | 10 ++-- - 11 files changed, 72 insertions(+), 27 deletions(-) - -#diff --git a/.travis.yml b/.travis.yml -#index 8c293c2f9fb..9477bed946f 100644 -#--- a/.travis.yml -#+++ b/.travis.yml -#@@ -154,6 +154,10 @@ matrix: -# os: linux -# env: SWIGLANG=php VER=7.4 -# dist: xenial -#+ - compiler: gcc -#+ os: linux -#+ env: SWIGLANG=php VER=8.0 -#+ dist: xenial -# - compiler: gcc -# os: linux -# env: SWIGLANG=python # 2.7 -diff --git a/Doc/Manual/Php.html b/Doc/Manual/Php.html -index 09c514e944a..4b91958894a 100644 ---- a/Doc/Manual/Php.html -+++ b/Doc/Manual/Php.html -@@ -51,12 +51,12 @@

32 SWIG and PHP

- -

- In this chapter, we discuss SWIG's support of PHP. SWIG currently supports --generating wrappers for PHP7. Support for PHP5 was removed in SWIG 4.0.0 --and support for PHP4 was removed in SWIG 1.3.37. -+generating wrappers for PHP7 and PHP8. Support for PHP5 was removed in SWIG -+4.0.0 and support for PHP4 was removed in SWIG 1.3.37. -

- -

--Currently any PHP7 release should work. -+Currently any PHP7 or PHP8 release should work. -

- -

-diff --git a/Doc/Manual/Preprocessor.html b/Doc/Manual/Preprocessor.html -index 51cc0637836..0c704bde959 100644 ---- a/Doc/Manual/Preprocessor.html -+++ b/Doc/Manual/Preprocessor.html -@@ -123,7 +123,7 @@

11.3 Conditional Compilation5.1 Running SWIG

- -lua - Generate Lua wrappers - -octave - Generate Octave wrappers - -perl5 - Generate Perl 5 wrappers -- -php7 - Generate PHP 7 wrappers -+ -php7 - Generate PHP 7 or later wrappers - -python - Generate Python wrappers - -r - Generate R (aka GNU S) wrappers - -ruby - Generate Ruby wrappers -diff --git a/Examples/Makefile.in b/Examples/Makefile.in -index 3f6140b5e79..3978a959836 100644 ---- a/Examples/Makefile.in -+++ b/Examples/Makefile.in -@@ -1045,7 +1045,7 @@ ruby_clean: - rm -f *.@OBJEXT@ *$(RUBY_SO) - - ################################################################## --##### PHP7 ###### -+##### PHP ###### - ################################################################## - - PHP = @PHP@ -@@ -1058,7 +1058,7 @@ PHP_SCRIPT = $(SRCDIR)$(RUNME).php - # ------------------------------------------------------------------- - - php: $(SRCDIR_SRCS) -- $(SWIG) -php7 $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) -+ $(SWIG) -php $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) $(PHP_INCLUDE) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO) - -@@ -1067,7 +1067,7 @@ php: $(SRCDIR_SRCS) - # -------------------------------------------------------------------- - - php_cpp: $(SRCDIR_SRCS) -- $(SWIG) -php7 -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) -+ $(SWIG) -php -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PHP_INCLUDE) - $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO) - -diff --git a/Examples/test-suite/php/evil_diamond_prop_runme.php b/Examples/test-suite/php/evil_diamond_prop_runme.php -index 9bdb7435f1c..645328affda 100644 ---- a/Examples/test-suite/php/evil_diamond_prop_runme.php -+++ b/Examples/test-suite/php/evil_diamond_prop_runme.php -@@ -31,7 +31,7 @@ - check::equal(1,$spam->_foo,"1==spam->_foo"); - check::equal(2,$spam->_bar,"2==spam->_bar"); - // multiple inheritance not supported in PHP --set_error_handler(NULL, 0); // Don't complain that _baz is unknown. -+set_error_handler(function () {return true;}, E_NOTICE|E_WARNING); // Don't complain that _baz is unknown. - check::equal(null,$spam->_baz,"null==spam->_baz"); - restore_error_handler(); - check::equal(4,$spam->_spam,"4==spam->_spam"); -diff --git a/Lib/cdata.i b/Lib/cdata.i -index f18ed4af53c..cd15266431e 100644 ---- a/Lib/cdata.i -+++ b/Lib/cdata.i -@@ -21,7 +21,7 @@ typedef struct SWIGCDATA { - } - %typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH); - --#elif SWIGPHP7 -+#elif SWIGPHP - - %typemap(out) SWIGCDATA { - ZVAL_STRINGL($result, $1.data, $1.len); -diff --git a/Lib/exception.i b/Lib/exception.i -index ee9ce9bc632..3d6eeccdf2e 100644 ---- a/Lib/exception.i -+++ b/Lib/exception.i -@@ -12,7 +12,7 @@ - %insert("runtime") "swigerrors.swg" - - --#ifdef SWIGPHP7 -+#ifdef SWIGPHP - %{ - #include "zend_exceptions.h" - #define SWIG_exception(code, msg) do { zend_throw_exception(NULL, (char*)msg, code); goto thrown; } while (0) -diff --git a/Lib/php/phprun.swg b/Lib/php/phprun.swg -index f3a4e6ad1a9..04919878743 100644 ---- a/Lib/php/phprun.swg -+++ b/Lib/php/phprun.swg -@@ -12,8 +12,8 @@ extern "C" { - #include "zend_exceptions.h" - #include "php.h" - --#if PHP_MAJOR_VERSION != 7 --# error These bindings need PHP7 - to generate PHP5 bindings use: SWIG < 4.0.0 and swig -php5 -+#if PHP_MAJOR_VERSION < 7 -+# error These bindings need PHP 7 or later - to generate PHP5 bindings use: SWIG < 4.0.0 and swig -php5 - #endif - - #include "ext/standard/php_string.h" -@@ -200,7 +200,11 @@ SWIG_ConvertPtr(zval *z, void **ptr, swig_type_info *ty, int flags) { - - switch (Z_TYPE_P(z)) { - case IS_OBJECT: { -+#if PHP_MAJOR_VERSION < 8 - HashTable * ht = Z_OBJ_HT_P(z)->get_properties(z); -+#else -+ HashTable * ht = Z_OBJ_HT_P(z)->get_properties(Z_OBJ_P(z)); -+#endif - if (ht) { - zval * _cPtr = zend_hash_str_find(ht, "_cPtr", sizeof("_cPtr") - 1); - if (_cPtr) { -diff --git a/Source/Modules/php.cxx b/Source/Modules/php.cxx -index eaae32d633b..d8ee75b45fb 100644 ---- a/Source/Modules/php.cxx -+++ b/Source/Modules/php.cxx -@@ -473,6 +473,20 @@ class PHP : public Language { - s_arginfo = NewString("/* arginfo subsection */\n"); - arginfo_used = NewHash(); - -+ // Add arginfo we'll definitely need for *_alter_newobject and *_get_newobject. -+ SetFlag(arginfo_used, "1"); -+ Append(s_arginfo, -+ "ZEND_BEGIN_ARG_INFO_EX(swig_arginfo_1, 0, 0, 0)\n" -+ " ZEND_ARG_INFO(0,arg1)\n" -+ "ZEND_END_ARG_INFO()\n"); -+ -+ SetFlag(arginfo_used, "2"); -+ Append(s_arginfo, -+ "ZEND_BEGIN_ARG_INFO_EX(swig_arginfo_2, 0, 0, 0)\n" -+ " ZEND_ARG_INFO(0,arg1)\n" -+ " ZEND_ARG_INFO(0,arg2)\n" -+ "ZEND_END_ARG_INFO()\n"); -+ - /* start the function entry section */ - s_entry = NewString("/* entry subsection */\n"); - -@@ -653,8 +667,8 @@ class PHP : public Language { - } - Printv(f_begin, s_vdecl, s_wrappers, NIL); - Printv(f_begin, all_cs_entry, "\n\n", s_arginfo, "\n\n", s_entry, -- " SWIG_ZEND_NAMED_FE(swig_", module, "_alter_newobject,_wrap_swig_", module, "_alter_newobject,NULL)\n" -- " SWIG_ZEND_NAMED_FE(swig_", module, "_get_newobject,_wrap_swig_", module, "_get_newobject,NULL)\n" -+ " SWIG_ZEND_NAMED_FE(swig_", module, "_alter_newobject,_wrap_swig_", module, "_alter_newobject,swig_arginfo_2)\n" -+ " SWIG_ZEND_NAMED_FE(swig_", module, "_get_newobject,_wrap_swig_", module, "_get_newobject,swig_arginfo_1)\n" - " ZEND_FE_END\n};\n\n", NIL); - Printv(f_begin, s_init, NIL); - Delete(s_header); -@@ -689,25 +703,46 @@ class PHP : public Language { - - // We want to only emit each different arginfo once, as that reduces the - // size of both the generated source code and the compiled extension -- // module. To do this, we name the arginfo to encode the number of -- // parameters and which (if any) are passed by reference by using a -- // sequence of 0s (for non-reference) and 1s (for by references). -+ // module. The parameters at this level are just named arg1, arg2, etc -+ // so we generate an arginfo name with the number of parameters and a -+ // bitmap value saying which (if any) are passed by reference. - ParmList *l = Getattr(n, "parms"); -- String * arginfo_code = NewStringEmpty(); -+ unsigned long bitmap = 0, bit = 1; -+ int n_params = 0; -+ bool overflowed = false; - for (Parm *p = l; p; p = Getattr(p, "tmap:in:next")) { - /* Ignored parameters */ - if (checkAttribute(p, "tmap:in:numinputs", "0")) { - continue; - } -- Append(arginfo_code, GetFlag(p, "tmap:in:byref") ? "1" : "0"); -+ ++n_params; -+ if (GetFlag(p, "tmap:in:byref")) { -+ bitmap |= bit; -+ if (bit == 0) overflowed = true; -+ } -+ bit <<= 1; -+ } -+ String * arginfo_code; -+ if (overflowed) { -+ // We overflowed the bitmap so just generate a unique name - this only -+ // happens for a function with more parameters than bits in a long -+ // where a high numbered parameter is passed by reference, so should be -+ // rare in practice. -+ static int overflowed_counter = 0; -+ arginfo_code = NewStringf("z%d", ++overflowed_counter); -+ } else if (bitmap == 0) { -+ // No parameters passed by reference. -+ arginfo_code = NewStringf("%d", n_params); -+ } else { -+ arginfo_code = NewStringf("%d_%lx", n_params, bitmap); - } - - if (!GetFlag(arginfo_used, arginfo_code)) { -- // Not had this one before, so emit it. -+ // Not had this one before so emit it. - SetFlag(arginfo_used, arginfo_code); - Printf(s_arginfo, "ZEND_BEGIN_ARG_INFO_EX(swig_arginfo_%s, 0, 0, 0)\n", arginfo_code); -- for (const char * p = Char(arginfo_code); *p; ++p) { -- Printf(s_arginfo, " ZEND_ARG_PASS_INFO(%c)\n", *p); -+ for (Parm *p = l; p; p = Getattr(p, "tmap:in:next")) { -+ Printf(s_arginfo, " ZEND_ARG_INFO(%d,%s)\n", GetFlag(p, "tmap:in:byref"), Getattr(p, "lname")); - } - Printf(s_arginfo, "ZEND_END_ARG_INFO()\n"); - } -diff --git a/configure.ac b/configure.ac -index 7d5824a06b5..1894001c521 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2021,7 +2021,7 @@ AC_SUBST(RUBYSO) - AC_SUBST(RUBYDYNAMICLINKING) - - #------------------------------------------------------------------------- --# Look for PHP7 -+# Look for PHP - #------------------------------------------------------------------------- - - PHPBIN= -@@ -2035,7 +2035,7 @@ if test x"${PHPBIN}" = xno; then - PHP= - else - if test "x$PHPBIN" = xyes; then -- AC_CHECK_PROGS(PHP, [php7.3 php7.2 php7.1 php7.0 php]) -+ AC_CHECK_PROGS(PHP, [php8.0 php7.4 php7.3 php7.2 php7.1 php7.0 php]) - else - PHP=$PHPBIN - fi -@@ -2046,12 +2046,14 @@ else - case $PHP in - *7.*) - PHPCONFIG=`echo "$PHP"|sed 's/7\...*$/-config&/'` ;; -+ *8.*) -+ PHPCONFIG=`echo "$PHP"|sed 's/8\...*$/-config&/'` ;; - *) - PHPCONFIG=$PHP-config ;; - esac - php_version=`$PHPCONFIG --version 2>/dev/null` - case $php_version in -- 7.*) -+ 7.*|8.*) - PHPINC=`$PHPCONFIG --includes 2>/dev/null` - if test -n "$PHPINC"; then - AC_MSG_RESULT($PHPINC) -@@ -2062,7 +2064,7 @@ else - "") - AC_MSG_RESULT([could not find $PHPCONFIG or obtain PHP version from it]) ;; - *) -- AC_MSG_RESULT([found PHP $php_version - not PHP 7]) ;; -+ AC_MSG_RESULT([found PHP $php_version - not PHP 7 or 8]) ;; - esac - fi - fi - -From fd96627b2fc65353c03b160efd60fdce864d386c Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Wed, 17 Mar 2021 13:00:02 +1300 -Subject: [PATCH 2/4] Temporary hack so testsuite passes for PHP8 - ---- - Examples/test-suite/director_overload2.i | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/Examples/test-suite/director_overload2.i b/Examples/test-suite/director_overload2.i -index e467c18cea6..ddfa65bb4d3 100644 ---- a/Examples/test-suite/director_overload2.i -+++ b/Examples/test-suite/director_overload2.i -@@ -14,11 +14,15 @@ struct OverloadDerived1 : OverloadBase { - virtual void nnn(int vvv) {} - #if defined(__SUNPRO_CC) - virtual void nnn() {} -+#elif defined(SWIGPHP) // FIXME: Hack to stop director_overload2 failing for PHP8 -+ virtual void nnn() {} - #endif - }; - struct OverloadDerived2 : OverloadBase { - #if defined(__SUNPRO_CC) - virtual void nnn(int vvv) {} -+#elif defined(SWIGPHP) // FIXME: Hack to stop director_overload2 failing for PHP8 -+ virtual void nnn(int vvv) {} - #endif - virtual void nnn() {} - }; - -From 4c3e85fbd47f804b5956bf37f0073795296ddde2 Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Sun, 21 Mar 2021 10:43:06 +1300 -Subject: [PATCH 3/4] Clarify what SWIGPHP7 means - ---- - Doc/Manual/Preprocessor.html | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Doc/Manual/Preprocessor.html b/Doc/Manual/Preprocessor.html -index 0c704bde959..7611ea40c2b 100644 ---- a/Doc/Manual/Preprocessor.html -+++ b/Doc/Manual/Preprocessor.html -@@ -123,7 +123,7 @@

11.3 Conditional Compilation -Date: Sun, 21 Mar 2021 10:54:17 +1300 -Subject: [PATCH 4/4] Update CHANGES.current and RELEASENOTES re PHP8 - ---- - CHANGES.current | 3 +++ - RELEASENOTES | 3 +++ - 2 files changed, 6 insertions(+) - -#diff --git a/CHANGES.current b/CHANGES.current -#index 79d41001f0a..6ae5689ee37 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,9 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.1.0 (in progress) -# =========================== -# -#+2021-03-21: olly -#+ #1929, #1978 [PHP] Add support for PHP 8. -#+ -# 2021-03-19: olly -# #1527 [PHP] Improve PHP object creation in directorin case. -# Reportedly the code we were using in this case gave segfaults in -diff --git a/RELEASENOTES b/RELEASENOTES -index cc3ba07121d..55590108759 100644 ---- a/RELEASENOTES -+++ b/RELEASENOTES -@@ -7,6 +7,9 @@ Release Notes - Detailed release notes are available with the release and are also - published on the SWIG web site at http://swig.org/release.html. - -+SWIG-4.2.0 summary: -+- Add PHP 8 support. -+ - SWIG-4.0.2 summary: - - A few fixes around doxygen comment handling. - - Ruby 2.7 support added. diff --git a/swig-4.0.2-gcc-12-warning-fix-in-test-case.patch b/swig-4.0.2-gcc-12-warning-fix-in-test-case.patch deleted file mode 100644 index 44e6b16..0000000 --- a/swig-4.0.2-gcc-12-warning-fix-in-test-case.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 76d5a9ec270a763c892ae28070e391cf99e0b7cd Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Tue, 18 Jan 2022 21:37:02 +0000 -Subject: [PATCH] gcc-12 warning fix in test-case - -Closes #2145 ---- - Examples/test-suite/nested_class.i | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Examples/test-suite/nested_class.i b/Examples/test-suite/nested_class.i -index b10c33949..c778a12cf 100644 ---- a/Examples/test-suite/nested_class.i -+++ b/Examples/test-suite/nested_class.i -@@ -201,7 +201,7 @@ struct Outer { - Integer xx; - } MultipleInstanceAnonDerived1, MultipleInstanceAnonDerived2, *MultipleInstanceAnonDerived3, MultipleInstanceAnonDerived4[2]; - --#if defined(__GNUC__) || defined(_MSC_VER) || defined(SWIG) -+#if (defined(__GNUC__) && __GNUC__ < 12) || defined(_MSC_VER) || defined(SWIG) - /* some compilers do not accept these */ - struct : public InnerMultiple { - Integer xx; --- -2.31.1 - diff --git a/swig-Upgrade-to-support-newer-NodeJS.patch b/swig-Upgrade-to-support-newer-NodeJS.patch deleted file mode 100644 index e3338ef..0000000 --- a/swig-Upgrade-to-support-newer-NodeJS.patch +++ /dev/null @@ -1,1863 +0,0 @@ -From 5e1bdcfd6e5bd8353993433bd0efb4a3cb3ca639 Mon Sep 17 00:00:00 2001 -From: Alexandre Lissy -Date: Thu, 25 Apr 2019 12:29:19 +0200 -Subject: [PATCH] Upgrade SWIG to support NodeJS v12, v13 / V8 v7.6, v7.8 - runtime - ---- - .travis.yml | 35 ++++++++ - Examples/test-suite/javascript/Makefile.in | 15 +++- - .../javascript/abstract_access_runme.js | 4 +- - .../javascript/abstract_inherit_runme.js | 4 +- - .../javascript/abstract_typedef2_runme.js | 4 +- - .../javascript/abstract_typedef_runme.js | 4 +- - .../javascript/abstract_virtual_runme.js | 4 +- - .../javascript/array_member_runme.js | 4 +- - .../javascript/arrays_global_runme.js | 4 +- - .../test-suite/javascript/callback_runme.js | 4 +- - .../javascript/char_binary_runme.js | 4 +- - .../javascript/char_strings_runme.js | 4 +- - .../javascript/class_ignore_runme.js | 4 +- - .../javascript/class_scope_weird_runme.js | 4 +- - .../javascript/complextest_runme.js | 4 +- - .../test-suite/javascript/constover_runme.js | 4 +- - .../javascript/constructor_copy_runme.js | 4 +- - ...cpp11_strongly_typed_enumerations_runme.js | 4 +- - .../test-suite/javascript/cpp_enum_runme.js | 4 +- - .../javascript/cpp_namespace_runme.js | 4 +- - .../test-suite/javascript/cpp_static_runme.js | 4 +- - .../javascript/director_alternating_runme.js | 4 +- - .../test-suite/javascript/disown_runme.js | 4 +- - .../javascript/dynamic_cast_runme.js | 4 +- - .../test-suite/javascript/empty_c_runme.js | 4 +- - Examples/test-suite/javascript/empty_runme.js | 3 +- - .../javascript/enum_template_runme.js | 4 +- - .../test-suite/javascript/infinity_runme.js | 4 +- - .../namespace_virtual_method_runme.js | 4 +- - .../javascript/native_directive_runme.js | 4 +- - .../javascript/nspace_extend_runme.js | 4 +- - .../test-suite/javascript/nspace_runme.js | 4 +- - .../javascript/null_pointer_runme.js | 4 +- - .../javascript/overload_copy_runme.js | 4 +- - .../javascript/overload_null_runme.js | 4 +- - .../javascript/preproc_include_runme.js | 4 +- - .../test-suite/javascript/preproc_runme.js | 4 +- - .../test-suite/javascript/rename1_runme.js | 4 +- - .../test-suite/javascript/rename2_runme.js | 4 +- - .../test-suite/javascript/rename3_runme.js | 4 +- - .../test-suite/javascript/rename4_runme.js | 4 +- - .../javascript/rename_scope_runme.js | 4 +- - .../javascript/rename_simple_runme.js | 4 +- - .../javascript/ret_by_value_runme.js | 4 +- - .../javascript/string_simple_runme.js | 4 +- - .../javascript/struct_value_runme.js | 4 +- - .../javascript/swig_exception_runme.js | 4 +- - .../javascript/template_static_runme.js | 4 +- - .../javascript/typedef_class_runme.js | 4 +- - .../javascript/typedef_inherit_runme.js | 4 +- - .../javascript/typedef_scope_runme.js | 4 +- - .../javascript/typemap_arrays_runme.js | 4 +- - .../javascript/typemap_delete_runme.js | 4 +- - .../javascript/typemap_namespace_runme.js | 4 +- - .../javascript/typemap_ns_using_runme.js | 4 +- - .../test-suite/javascript/using1_runme.js | 4 +- - .../test-suite/javascript/using2_runme.js | 4 +- - .../test-suite/javascript/varargs_runme.js | 4 +- - Lib/javascript/v8/javascriptcode.swg | 30 ++++--- - Lib/javascript/v8/javascriptcomplex.swg | 10 +-- - Lib/javascript/v8/javascripthelpers.swg | 26 +++--- - Lib/javascript/v8/javascriptinit.swg | 4 +- - Lib/javascript/v8/javascriptprimtypes.swg | 28 +++---- - Lib/javascript/v8/javascriptrun.swg | 80 +++++++++++++------ - Lib/javascript/v8/javascriptruntime.swg | 5 ++ - Lib/javascript/v8/javascriptstrings.swg | 10 +-- - Lib/javascript/v8/javascripttypemaps.swg | 2 +- - Source/Modules/javascript.cxx | 4 +- - Tools/javascript/v8_shell.cxx | 18 ++--- - Tools/testflags.py | 5 +- - Tools/travis-linux-install.sh | 7 +- - 71 files changed, 358 insertions(+), 144 deletions(-) - -diff --git a/.travis.yml b/.travis.yml -index 32c6656dd2..a53da19f68 100644 ---- a/.travis.yml -+++ b/.travis.yml -@@ -112,6 +112,41 @@ matrix: - env: SWIGLANG=javascript ENGINE=node VER=10 CPP11=1 - sudo: required - dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=12.8.1 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=12.10.0 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=12.14.1 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=13.1.0 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=node VER=13.6.0 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=electron VER=12.14.1 ELECTRON_VER=7.0.1 CPP11=1 -+ sudo: required -+ dist: xenial -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=javascript ENGINE=electron VER=12.14.1 ELECTRON_VER=7.1.8 CPP11=1 -+ sudo: required -+ dist: xenial - - compiler: gcc - os: linux - env: SWIGLANG=javascript ENGINE=jsc -diff --git a/Examples/test-suite/javascript/Makefile.in b/Examples/test-suite/javascript/Makefile.in -index 8127415f12..b780a9e9cf 100644 ---- a/Examples/test-suite/javascript/Makefile.in -+++ b/Examples/test-suite/javascript/Makefile.in -@@ -16,6 +16,17 @@ top_builddir = @top_builddir@ - SWIGEXE = $(top_builddir)/swig - SWIG_LIB_DIR = $(top_srcdir)/Lib - -+ifeq (electron, $(ENGINE)) -+NODE_DISTURL = --disturl=https://electronjs.org/headers -+NODE_RUNTIME = --runtime=electron -+NODE_ABI_TARGET = --target=${ELECTRON_VER} -+ENGINE = -+NODEJS = electron -+else -+NODE_DISTURL = -+NODE_RUNTIME = -+endif -+ - ifneq (, $(ENGINE)) - JSENGINE=$(ENGINE) - else -@@ -66,14 +77,14 @@ ifeq (node,$(JSENGINE)) - $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' \ - SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ - SWIGOPT='-javascript $(SWIGOPT) -o $*_wrap.cxx $(srcdir)/../$*.i' swiginvoke && \ -- MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) --loglevel=silent --directory $* configure build 1>>/dev/null -+ MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) $(NODE_ABI_TARGET) $(NODE_DISTURL) $(NODE_RUNTIME) --loglevel=silent --directory $* configure build 1>>/dev/null - - swig_and_compile_cpp = \ - $(setup_node) && \ - $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' \ - SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ - SWIGOPT='-c++ -javascript $(SWIGOPT) $(srcdir)/../$*.i' swiginvoke && \ -- MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) --loglevel=silent --directory $* configure build 1>>/dev/null -+ MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) $(NODE_ABI_TARGET) $(NODE_DISTURL) $(NODE_RUNTIME) --loglevel=silent --directory $* configure build 1>>/dev/null - - run_testcase = \ - if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \ -diff --git a/Examples/test-suite/javascript/abstract_access_runme.js b/Examples/test-suite/javascript/abstract_access_runme.js -index f61bb4358b..b2b5e95fb4 100644 ---- a/Examples/test-suite/javascript/abstract_access_runme.js -+++ b/Examples/test-suite/javascript/abstract_access_runme.js -@@ -1,6 +1,8 @@ --var abstract_access = require("abstract_access"); -+var abstract_access = require("./abstract_access"); - - var d = new abstract_access.D() - if (d.do_x() != 1) { - throw "Error"; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/abstract_inherit_runme.js b/Examples/test-suite/javascript/abstract_inherit_runme.js -index f732e87673..6f58400373 100644 ---- a/Examples/test-suite/javascript/abstract_inherit_runme.js -+++ b/Examples/test-suite/javascript/abstract_inherit_runme.js -@@ -1,4 +1,4 @@ --var abstract_inherit = require("abstract_inherit"); -+var abstract_inherit = require("./abstract_inherit"); - - // Shouldn't be able to instantiate any of these classes - // since none of them implements the pure virtual function -@@ -38,3 +38,5 @@ try { - if (!caughtException) { - throw new Error("Spam should be instantiated as it is abstract"); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/abstract_typedef2_runme.js b/Examples/test-suite/javascript/abstract_typedef2_runme.js -index d8a533ab1d..f1c293818d 100644 ---- a/Examples/test-suite/javascript/abstract_typedef2_runme.js -+++ b/Examples/test-suite/javascript/abstract_typedef2_runme.js -@@ -1,6 +1,8 @@ --var abstract_typedef2 = require("abstract_typedef2"); -+var abstract_typedef2 = require("./abstract_typedef2"); - - var a = new abstract_typedef2.A_UF(); - - if (a == undefined) - throw "Error"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/abstract_typedef_runme.js b/Examples/test-suite/javascript/abstract_typedef_runme.js -index 286328fa8c..09b271218c 100644 ---- a/Examples/test-suite/javascript/abstract_typedef_runme.js -+++ b/Examples/test-suite/javascript/abstract_typedef_runme.js -@@ -1,4 +1,4 @@ --var abstract_typedef = require("abstract_typedef"); -+var abstract_typedef = require("./abstract_typedef"); - - var e = new abstract_typedef.Engine(); - var a = new abstract_typedef.A() -@@ -6,3 +6,5 @@ var a = new abstract_typedef.A() - if (a.write(e) != 1) { - throw "Error"; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/abstract_virtual_runme.js b/Examples/test-suite/javascript/abstract_virtual_runme.js -index 9a9ce99885..f0d505d922 100644 ---- a/Examples/test-suite/javascript/abstract_virtual_runme.js -+++ b/Examples/test-suite/javascript/abstract_virtual_runme.js -@@ -1,4 +1,4 @@ --var abstract_virtual = require("abstract_virtual"); -+var abstract_virtual = require("./abstract_virtual"); - - d = new abstract_virtual.D() - -@@ -9,3 +9,5 @@ e = new abstract_virtual.E() - - if (e == undefined) - throw "Error"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/array_member_runme.js b/Examples/test-suite/javascript/array_member_runme.js -index 3d9bb0e5b3..64d158df59 100644 ---- a/Examples/test-suite/javascript/array_member_runme.js -+++ b/Examples/test-suite/javascript/array_member_runme.js -@@ -1,4 +1,4 @@ --var array_member = require("array_member"); -+var array_member = require("./array_member"); - - var f = new array_member.Foo(); - f.data = array_member.global_data; -@@ -20,3 +20,5 @@ for (var i=0; i<8; i++){ - throw "Bad array assignment (2)"; - } - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/arrays_global_runme.js b/Examples/test-suite/javascript/arrays_global_runme.js -index 0cbb28efba..db4ac20526 100644 ---- a/Examples/test-suite/javascript/arrays_global_runme.js -+++ b/Examples/test-suite/javascript/arrays_global_runme.js -@@ -1,4 +1,4 @@ --var arrays_global = require("arrays_global"); -+var arrays_global = require("./arrays_global"); - - arrays_global.array_i = arrays_global.array_const_i; - -@@ -16,3 +16,5 @@ arrays_global.BeginString_FIX44f; - arrays_global.test_a("hello","hi","chello","chi"); - - arrays_global.test_b("1234567","hi"); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/callback_runme.js b/Examples/test-suite/javascript/callback_runme.js -index 0218886419..aa22cd21fd 100644 ---- a/Examples/test-suite/javascript/callback_runme.js -+++ b/Examples/test-suite/javascript/callback_runme.js -@@ -1,4 +1,4 @@ --var callback = require("callback"); -+var callback = require("./callback"); - - if (callback.foo(2) !== 2) { - throw new Error("Failed."); -@@ -28,3 +28,5 @@ var a = new callback.A(); - if (callback.foobarm(3, a, callback.A.foom_cb_ptr) != a.foom(3)) { - throw new Error("Failed."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/char_binary_runme.js b/Examples/test-suite/javascript/char_binary_runme.js -index 01b72ebe14..8b7e400349 100644 ---- a/Examples/test-suite/javascript/char_binary_runme.js -+++ b/Examples/test-suite/javascript/char_binary_runme.js -@@ -1,4 +1,4 @@ --var char_binary = require("char_binary"); -+var char_binary = require("./char_binary"); - - var t = new char_binary.Test(); - if (t.strlen('hile') != 4) { -@@ -46,3 +46,5 @@ if (char_binary.var_namet != "hola") { - throw("bad pointer case (2)"); - } - char_binary.delete_pchar(pc); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/char_strings_runme.js b/Examples/test-suite/javascript/char_strings_runme.js -index fe17cb9827..0cbe81e542 100644 ---- a/Examples/test-suite/javascript/char_strings_runme.js -+++ b/Examples/test-suite/javascript/char_strings_runme.js -@@ -1,4 +1,4 @@ --var char_strings = require("char_strings"); -+var char_strings = require("./char_strings"); - - var assertIsEqual = function(expected, actual) { - if (expected !== actual) { -@@ -9,3 +9,5 @@ var assertIsEqual = function(expected, actual) { - assertIsEqual("hi there", char_strings.CharPingPong("hi there")); - assertIsEqual("hi there", char_strings.CharArrayPingPong("hi there")); - assertIsEqual("hi there", char_strings.CharArrayDimsPingPong("hi there")); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/class_ignore_runme.js b/Examples/test-suite/javascript/class_ignore_runme.js -index ffbe021c71..938a19fc8d 100644 ---- a/Examples/test-suite/javascript/class_ignore_runme.js -+++ b/Examples/test-suite/javascript/class_ignore_runme.js -@@ -1,6 +1,8 @@ --var class_ignore = require("class_ignore"); -+var class_ignore = require("./class_ignore"); - - a = new class_ignore.Bar(); - - if (class_ignore.do_blah(a) != "Bar::blah") - throw "Error"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/class_scope_weird_runme.js b/Examples/test-suite/javascript/class_scope_weird_runme.js -index 73c118d617..325fefbac5 100644 ---- a/Examples/test-suite/javascript/class_scope_weird_runme.js -+++ b/Examples/test-suite/javascript/class_scope_weird_runme.js -@@ -1,6 +1,8 @@ --var class_scope_weird = require("class_scope_weird"); -+var class_scope_weird = require("./class_scope_weird"); - - f = new class_scope_weird.Foo(); - g = new class_scope_weird.Foo(3); - if (f.bar(3) != 3) - throw RuntimeError; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/complextest_runme.js b/Examples/test-suite/javascript/complextest_runme.js -index 1d9825f3b2..7e3e3e984b 100644 ---- a/Examples/test-suite/javascript/complextest_runme.js -+++ b/Examples/test-suite/javascript/complextest_runme.js -@@ -1,4 +1,4 @@ --var complextest = require("complextest"); -+var complextest = require("./complextest"); - - a = [-1,2]; - -@@ -29,3 +29,5 @@ v.add(1); - // TODO: how to check validity? - complextest.CopyHalf(v); - complextest.CopyHalfRef(v); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/constover_runme.js b/Examples/test-suite/javascript/constover_runme.js -index 9b192b5ff7..bae3344072 100644 ---- a/Examples/test-suite/javascript/constover_runme.js -+++ b/Examples/test-suite/javascript/constover_runme.js -@@ -1,4 +1,4 @@ --var constover = require("constover"); -+var constover = require("./constover"); - - p = constover.test("test"); - if (p != "test") { -@@ -31,3 +31,5 @@ p = f.test_pconstm("test"); - if (p != "test_pconstmethod") { - throw "member-test_pconstm failed!"; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/constructor_copy_runme.js b/Examples/test-suite/javascript/constructor_copy_runme.js -index 179b9fb406..0d811470f1 100644 ---- a/Examples/test-suite/javascript/constructor_copy_runme.js -+++ b/Examples/test-suite/javascript/constructor_copy_runme.js -@@ -1,4 +1,4 @@ --var constructor_copy = require("constructor_copy"); -+var constructor_copy = require("./constructor_copy"); - - f1 = new constructor_copy.Foo1(3); - f11 = new constructor_copy.Foo1(f1); -@@ -40,3 +40,5 @@ try { - if (good == 0) { - throw "Error: should not allow calling copy ctor for Bard"; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/cpp11_strongly_typed_enumerations_runme.js b/Examples/test-suite/javascript/cpp11_strongly_typed_enumerations_runme.js -index ad9d4e8833..241e38b768 100644 ---- a/Examples/test-suite/javascript/cpp11_strongly_typed_enumerations_runme.js -+++ b/Examples/test-suite/javascript/cpp11_strongly_typed_enumerations_runme.js -@@ -1,4 +1,4 @@ --var cpp11_strongly_typed_enumerations = require("cpp11_strongly_typed_enumerations"); -+var cpp11_strongly_typed_enumerations = require("./cpp11_strongly_typed_enumerations"); - - function enumCheck(actual, expected) { - if (actual != expected) { -@@ -163,3 +163,5 @@ enumCheck(class1.class1Test2(cpp11_strongly_typed_enumerations.Class1.Enum12_Val - enumCheck(cpp11_strongly_typed_enumerations.globalTest1(cpp11_strongly_typed_enumerations.Enum1_Val5a), 13); - enumCheck(cpp11_strongly_typed_enumerations.globalTest2(cpp11_strongly_typed_enumerations.Class1.Enum12_Val5c), 1121); - //enumCheck(globalTest3(cpp11_strongly_typed_enumerations.Class1.Struct1_Enum12_Val5f), 3121); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/cpp_enum_runme.js b/Examples/test-suite/javascript/cpp_enum_runme.js -index 8a248c372a..990f703c39 100644 ---- a/Examples/test-suite/javascript/cpp_enum_runme.js -+++ b/Examples/test-suite/javascript/cpp_enum_runme.js -@@ -1,4 +1,4 @@ --var cpp_enum = require("cpp_enum"); -+var cpp_enum = require("./cpp_enum"); - - var f = new cpp_enum.Foo() - -@@ -26,3 +26,5 @@ if(cpp_enum.Foo.hi != cpp_enum.Hello){ - throw "Error"; - } - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/cpp_namespace_runme.js b/Examples/test-suite/javascript/cpp_namespace_runme.js -index a6ab799646..69e74ae4ed 100644 ---- a/Examples/test-suite/javascript/cpp_namespace_runme.js -+++ b/Examples/test-suite/javascript/cpp_namespace_runme.js -@@ -1,4 +1,4 @@ --var cpp_namespace = require("cpp_namespace"); -+var cpp_namespace = require("./cpp_namespace"); - - var n = cpp_namespace.fact(4); - if (n != 24){ -@@ -45,3 +45,5 @@ if (cpp_namespace.do_method3(t4,40) != "Test4::method"){ - if (cpp_namespace.do_method3(t5,40) != "Test5::method"){ - throw ("Bad return value error!"); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/cpp_static_runme.js b/Examples/test-suite/javascript/cpp_static_runme.js -index c7917e12ea..e78b7016bd 100644 ---- a/Examples/test-suite/javascript/cpp_static_runme.js -+++ b/Examples/test-suite/javascript/cpp_static_runme.js -@@ -1,4 +1,4 @@ --var cpp_static = require("cpp_static"); -+var cpp_static = require("./cpp_static"); - - cpp_static.StaticFunctionTest.static_func(); - cpp_static.StaticFunctionTest.static_func_2(1); -@@ -7,3 +7,5 @@ cpp_static.StaticMemberTest.static_int = 10; - if (cpp_static.StaticMemberTest.static_int != 10) - throw "error"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/director_alternating_runme.js b/Examples/test-suite/javascript/director_alternating_runme.js -index cff288d35c..40da25af0c 100644 ---- a/Examples/test-suite/javascript/director_alternating_runme.js -+++ b/Examples/test-suite/javascript/director_alternating_runme.js -@@ -1,5 +1,7 @@ --var director_alternating = require("director_alternating"); -+var director_alternating = require("./director_alternating"); - - id = director_alternating.getBar().id(); - if (id != director_alternating.idFromGetBar()) - throw ("Error, Got wrong id: " + str(id)); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/disown_runme.js b/Examples/test-suite/javascript/disown_runme.js -index ea742b51e5..1950a2fb6c 100644 ---- a/Examples/test-suite/javascript/disown_runme.js -+++ b/Examples/test-suite/javascript/disown_runme.js -@@ -1,4 +1,4 @@ --var disown = require("disown"); -+var disown = require("./disown"); - - var a = new disown.A(); - var tmp = a.thisown; -@@ -20,3 +20,5 @@ b.acquire(a); - if (a.thisown) { - throw new Error("Failed."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/dynamic_cast_runme.js b/Examples/test-suite/javascript/dynamic_cast_runme.js -index 32eabcf8b0..b807a93ca2 100644 ---- a/Examples/test-suite/javascript/dynamic_cast_runme.js -+++ b/Examples/test-suite/javascript/dynamic_cast_runme.js -@@ -1,4 +1,4 @@ --var dynamic_cast = require("dynamic_cast"); -+var dynamic_cast = require("./dynamic_cast"); - - var f = new dynamic_cast.Foo(); - var b = new dynamic_cast.Bar(); -@@ -10,3 +10,5 @@ var a = dynamic_cast.do_test(y); - if (a != "Bar::test") { - throw new Error("Failed."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/empty_c_runme.js b/Examples/test-suite/javascript/empty_c_runme.js -index 1cc22e4ce7..61d57853bf 100644 ---- a/Examples/test-suite/javascript/empty_c_runme.js -+++ b/Examples/test-suite/javascript/empty_c_runme.js -@@ -1 +1,3 @@ --var empty_c = require("empty_c"); -+var empty_c = require("./empty_c"); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/empty_runme.js b/Examples/test-suite/javascript/empty_runme.js -index 7894379bee..a16eed15a1 100644 ---- a/Examples/test-suite/javascript/empty_runme.js -+++ b/Examples/test-suite/javascript/empty_runme.js -@@ -1 +1,2 @@ --var empty = require("empty"); -\ No newline at end of file -+var empty = require("./empty"); -+process.exit(0); -diff --git a/Examples/test-suite/javascript/enum_template_runme.js b/Examples/test-suite/javascript/enum_template_runme.js -index 1e71e5f640..c44b813644 100644 ---- a/Examples/test-suite/javascript/enum_template_runme.js -+++ b/Examples/test-suite/javascript/enum_template_runme.js -@@ -1,4 +1,4 @@ --var enum_template = require("enum_template"); -+var enum_template = require("./enum_template"); - - if (enum_template.MakeETest() != 1) - throw "RuntimeError"; -@@ -6,3 +6,5 @@ if (enum_template.MakeETest() != 1) - if (enum_template.TakeETest(0) != null) - throw "RuntimeError"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/infinity_runme.js b/Examples/test-suite/javascript/infinity_runme.js -index 8ebe496a6b..4bef97a1c1 100644 ---- a/Examples/test-suite/javascript/infinity_runme.js -+++ b/Examples/test-suite/javascript/infinity_runme.js -@@ -1,5 +1,7 @@ --var infinity = require("infinity"); -+var infinity = require("./infinity"); - - infinity.initialise_MYINFINITY(); - var my_infinity = infinity.INFINITY; - var ret_val = infinity.use_infinity(my_infinity); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/namespace_virtual_method_runme.js b/Examples/test-suite/javascript/namespace_virtual_method_runme.js -index 4f1e05c848..9dfe33a3ea 100644 ---- a/Examples/test-suite/javascript/namespace_virtual_method_runme.js -+++ b/Examples/test-suite/javascript/namespace_virtual_method_runme.js -@@ -1,3 +1,5 @@ --var namespace_virtual_method = require("namespace_virtual_method"); -+var namespace_virtual_method = require("./namespace_virtual_method"); - - x = new namespace_virtual_method.Spam(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/native_directive_runme.js b/Examples/test-suite/javascript/native_directive_runme.js -index 5c1d69cf17..c7573cf7d8 100644 ---- a/Examples/test-suite/javascript/native_directive_runme.js -+++ b/Examples/test-suite/javascript/native_directive_runme.js -@@ -1,4 +1,4 @@ --var native_directive = require("native_directive"); -+var native_directive = require("./native_directive"); - - (function main() { - var s = "abc.DEF-123"; -@@ -7,3 +7,5 @@ var native_directive = require("native_directive"); - if (native_directive.CountAlphaCharacters(s) !== 6) - throw "CountAlphaCharacters failed"; - })(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/nspace_extend_runme.js b/Examples/test-suite/javascript/nspace_extend_runme.js -index 8cabfe9457..b7daf883a9 100644 ---- a/Examples/test-suite/javascript/nspace_extend_runme.js -+++ b/Examples/test-suite/javascript/nspace_extend_runme.js -@@ -1,4 +1,4 @@ --var nspace_extend = require("nspace_extend"); -+var nspace_extend = require("./nspace_extend"); - - // constructors and destructors - var color1 = new nspace_extend.Outer.Inner1.Color(); -@@ -25,3 +25,5 @@ created = nspace_extend.Outer.Inner2.Color.create(); - var col1 = new nspace_extend.Outer.Inner1.Color(); - var col2 = nspace_extend.Outer.Inner2.Color.create(); - col2.colors(col1, col1, col2, col2, col2); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/nspace_runme.js b/Examples/test-suite/javascript/nspace_runme.js -index 993610dd62..5402b13af9 100644 ---- a/Examples/test-suite/javascript/nspace_runme.js -+++ b/Examples/test-suite/javascript/nspace_runme.js -@@ -1,4 +1,4 @@ --var nspace = require("nspace"); -+var nspace = require("./nspace"); - - var color1 = new nspace.Outer.Inner1.Color(); - var color = new nspace.Outer.Inner1.Color(color1); -@@ -74,3 +74,5 @@ var blue3 = new nspace.Outer.Inner3.Blue(); - blue3.blueInstanceMethod(); - var blue4 = new nspace.Outer.Inner4.Blue(); - blue4.blueInstanceMethod(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/null_pointer_runme.js b/Examples/test-suite/javascript/null_pointer_runme.js -index 8a9b611867..25d1e535f4 100644 ---- a/Examples/test-suite/javascript/null_pointer_runme.js -+++ b/Examples/test-suite/javascript/null_pointer_runme.js -@@ -1,4 +1,4 @@ --var null_pointer = require("null_pointer"); -+var null_pointer = require("./null_pointer"); - - if (!null_pointer.funk(null)) { - throw new Error("Javascript 'null' should be converted into NULL."); -@@ -7,3 +7,5 @@ if (!null_pointer.funk(null)) { - if (null_pointer.getnull() != null) { - throw new Error("NULL should be converted into Javascript 'null'."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/overload_copy_runme.js b/Examples/test-suite/javascript/overload_copy_runme.js -index e2f6107884..a1e1459317 100644 ---- a/Examples/test-suite/javascript/overload_copy_runme.js -+++ b/Examples/test-suite/javascript/overload_copy_runme.js -@@ -1,4 +1,6 @@ --var overload_copy = require("overload_copy"); -+var overload_copy = require("./overload_copy"); - - f = new overload_copy.Foo(); - g = new overload_copy.Foo(f); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/overload_null_runme.js b/Examples/test-suite/javascript/overload_null_runme.js -index f1e35cac76..74d855248e 100644 ---- a/Examples/test-suite/javascript/overload_null_runme.js -+++ b/Examples/test-suite/javascript/overload_null_runme.js -@@ -1,6 +1,6 @@ - // There are no typecheck typemaps in Javascript yet, so most of this test - // does not actually worked - the check functions have thus been commented out. --var overload_null = require("overload_null"); -+var overload_null = require("./overload_null"); - - var check = function(expected, actual) { - if (expected !== actual) { -@@ -47,3 +47,5 @@ check(20, o.byval2forwardptr(x)); - check(21, o.byval1forwardref(x)); - - check(22, o.byval2forwardref(x)); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/preproc_include_runme.js b/Examples/test-suite/javascript/preproc_include_runme.js -index 5ec72b842d..8d4e8601f6 100644 ---- a/Examples/test-suite/javascript/preproc_include_runme.js -+++ b/Examples/test-suite/javascript/preproc_include_runme.js -@@ -1,4 +1,4 @@ --var preproc_include = require("preproc_include"); -+var preproc_include = require("./preproc_include"); - - if (preproc_include.multiply10(10) != 100) - throw "RuntimeError"; -@@ -21,3 +21,5 @@ if (preproc_include.multiply60(10) != 600) - if (preproc_include.multiply70(10) != 700) - throw "RuntimeError"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/preproc_runme.js b/Examples/test-suite/javascript/preproc_runme.js -index 167ca5ac1c..15e026d8a6 100644 ---- a/Examples/test-suite/javascript/preproc_runme.js -+++ b/Examples/test-suite/javascript/preproc_runme.js -@@ -1,4 +1,4 @@ --var preproc = require("preproc"); -+var preproc = require("./preproc"); - - if (preproc.endif != 1) - throw "RuntimeError"; -@@ -12,3 +12,5 @@ if (preproc.defined != 1) - if (2*preproc.one != preproc.two) - throw "RuntimeError"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename1_runme.js b/Examples/test-suite/javascript/rename1_runme.js -index 7b2ac37b6d..4741673c90 100644 ---- a/Examples/test-suite/javascript/rename1_runme.js -+++ b/Examples/test-suite/javascript/rename1_runme.js -@@ -1,4 +1,4 @@ --var rename = require("rename1"); -+var rename = require("./rename1"); - - function part1() { - var xyz = new rename.XYZInt(); -@@ -62,3 +62,5 @@ part2(); - part3(); - part4(); - part5(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename2_runme.js b/Examples/test-suite/javascript/rename2_runme.js -index 040c798bb5..6f6a7d3814 100644 ---- a/Examples/test-suite/javascript/rename2_runme.js -+++ b/Examples/test-suite/javascript/rename2_runme.js -@@ -1,4 +1,4 @@ --var rename = require("rename2"); -+var rename = require("./rename2"); - - function part1() { - var xyz = new rename.XYZInt(); -@@ -62,3 +62,5 @@ part2(); - part3(); - part4(); - part5(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename3_runme.js b/Examples/test-suite/javascript/rename3_runme.js -index fb9393b037..fcac4dfe02 100644 ---- a/Examples/test-suite/javascript/rename3_runme.js -+++ b/Examples/test-suite/javascript/rename3_runme.js -@@ -1,4 +1,4 @@ --var rename = require("rename3"); -+var rename = require("./rename3"); - - function part1() { - var xyz = new rename.XYZInt(); -@@ -62,3 +62,5 @@ part2(); - part3(); - part4(); - part5(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename4_runme.js b/Examples/test-suite/javascript/rename4_runme.js -index 1c3d8e77f5..9bf1c45a24 100644 ---- a/Examples/test-suite/javascript/rename4_runme.js -+++ b/Examples/test-suite/javascript/rename4_runme.js -@@ -1,4 +1,4 @@ --var rename = require("rename4"); -+var rename = require("./rename4"); - - function part1() { - var xyz = new rename.XYZInt(); -@@ -62,3 +62,5 @@ part2(); - part3(); - part4(); - part5(); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename_scope_runme.js b/Examples/test-suite/javascript/rename_scope_runme.js -index fea4d2ca99..dffbcded7d 100644 ---- a/Examples/test-suite/javascript/rename_scope_runme.js -+++ b/Examples/test-suite/javascript/rename_scope_runme.js -@@ -1,4 +1,4 @@ --var rename_scope = require("rename_scope"); -+var rename_scope = require("./rename_scope"); - - var a = new rename_scope.Natural_UP(); - var b = new rename_scope.Natural_BP(); -@@ -15,3 +15,5 @@ var f = rename_scope.equals; - if (f === undefined) { - throw new Error("Equality operator has not been renamed."); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/rename_simple_runme.js b/Examples/test-suite/javascript/rename_simple_runme.js -index 21350cd3ee..9d39f1a62e 100644 ---- a/Examples/test-suite/javascript/rename_simple_runme.js -+++ b/Examples/test-suite/javascript/rename_simple_runme.js -@@ -1,4 +1,4 @@ --var rename_simple = require("rename_simple"); -+var rename_simple = require("./rename_simple"); - var NewStruct = rename_simple.NewStruct; - - var s = new NewStruct(); -@@ -48,3 +48,5 @@ rename_simple.NewGlobalVariable = 6666; - if (rename_simple.NewGlobalVariable !== 6666) { - throw new Error("rename_simple.NewGlobalVariable: Expected 6666, was " + rename_simple.NewGlobalVariable); - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/ret_by_value_runme.js b/Examples/test-suite/javascript/ret_by_value_runme.js -index 9d0840602a..e0eec07cf7 100644 ---- a/Examples/test-suite/javascript/ret_by_value_runme.js -+++ b/Examples/test-suite/javascript/ret_by_value_runme.js -@@ -1,4 +1,4 @@ --var ret_by_value = require("ret_by_value"); -+var ret_by_value = require("./ret_by_value"); - - a = ret_by_value.get_test(); - if (a.myInt != 100) -@@ -6,3 +6,5 @@ if (a.myInt != 100) - - if (a.myShort != 200) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/string_simple_runme.js b/Examples/test-suite/javascript/string_simple_runme.js -index 71fbb7bd07..21668fc05f 100644 ---- a/Examples/test-suite/javascript/string_simple_runme.js -+++ b/Examples/test-suite/javascript/string_simple_runme.js -@@ -1,4 +1,4 @@ --var string_simple = require("string_simple"); -+var string_simple = require("./string_simple"); - - // Test unicode string - var str = "olé"; -@@ -8,3 +8,5 @@ var copy = string_simple.copy_str(str); - if (str !== copy) { - throw "Error: copy is not equal: original="+str+", copy="+copy; - } -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/struct_value_runme.js b/Examples/test-suite/javascript/struct_value_runme.js -index 5b171b8fed..d277481ed0 100644 ---- a/Examples/test-suite/javascript/struct_value_runme.js -+++ b/Examples/test-suite/javascript/struct_value_runme.js -@@ -1,4 +1,4 @@ --var struct_value = require("struct_value"); -+var struct_value = require("./struct_value"); - - b = new struct_value.Bar(); - -@@ -9,3 +9,5 @@ throw "RuntimeError"; - b.b.x = 3; - if (b.b.x != 3) - throw "RuntimeError" -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/swig_exception_runme.js b/Examples/test-suite/javascript/swig_exception_runme.js -index 55435e9477..257dedc8fc 100644 ---- a/Examples/test-suite/javascript/swig_exception_runme.js -+++ b/Examples/test-suite/javascript/swig_exception_runme.js -@@ -1,4 +1,4 @@ --var swig_exception = require("swig_exception"); -+var swig_exception = require("./swig_exception"); - - var c = new swig_exception.Circle(10); - var s = new swig_exception.Square(10); -@@ -28,3 +28,5 @@ if (swig_exception.Shape.nshapes != 0) { - throw "Shape.nshapes should be 0, actually " + swig_exception.Shape.nshapes; - } - */ -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/template_static_runme.js b/Examples/test-suite/javascript/template_static_runme.js -index d6106138ae..aa3e548b8d 100644 ---- a/Examples/test-suite/javascript/template_static_runme.js -+++ b/Examples/test-suite/javascript/template_static_runme.js -@@ -1,3 +1,5 @@ --var template_static = require("template_static"); -+var template_static = require("./template_static"); - - template_static.Foo.bar_double(1); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typedef_class_runme.js b/Examples/test-suite/javascript/typedef_class_runme.js -index 64e0051c37..5d6df5b6b7 100644 ---- a/Examples/test-suite/javascript/typedef_class_runme.js -+++ b/Examples/test-suite/javascript/typedef_class_runme.js -@@ -1,7 +1,9 @@ --var typedef_class = require("typedef_class"); -+var typedef_class = require("./typedef_class"); - - a = new typedef_class.RealA(); - a.a = 3; - - b = new typedef_class.B(); - b.testA(a); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typedef_inherit_runme.js b/Examples/test-suite/javascript/typedef_inherit_runme.js -index 7590e1e6ec..b13c59a030 100644 ---- a/Examples/test-suite/javascript/typedef_inherit_runme.js -+++ b/Examples/test-suite/javascript/typedef_inherit_runme.js -@@ -1,4 +1,4 @@ --var typedef_inherit = require("typedef_inherit"); -+var typedef_inherit = require("./typedef_inherit"); - - a = new typedef_inherit.Foo(); - b = new typedef_inherit.Bar(); -@@ -21,3 +21,5 @@ if (x != "Spam::blah") - x = typedef_inherit.do_blah2(d); - if (x != "Grok::blah") - print ("Whoa! Bad return" + x); -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typedef_scope_runme.js b/Examples/test-suite/javascript/typedef_scope_runme.js -index 5c1368ab78..e8b2a8255c 100644 ---- a/Examples/test-suite/javascript/typedef_scope_runme.js -+++ b/Examples/test-suite/javascript/typedef_scope_runme.js -@@ -1,4 +1,4 @@ --var typedef_scope = require("typedef_scope"); -+var typedef_scope = require("./typedef_scope"); - - b = new typedef_scope.Bar(); - x = b.test1(42,"hello"); -@@ -10,3 +10,5 @@ if (x != "hello") - print("Failed!!"); - - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typemap_arrays_runme.js b/Examples/test-suite/javascript/typemap_arrays_runme.js -index 610ecdd9c7..c333f43930 100644 ---- a/Examples/test-suite/javascript/typemap_arrays_runme.js -+++ b/Examples/test-suite/javascript/typemap_arrays_runme.js -@@ -1,5 +1,7 @@ --var typemap_arrays = require("typemap_arrays"); -+var typemap_arrays = require("./typemap_arrays"); - - if (typemap_arrays.sumA(null) != 60) - throw "RuntimeError, Sum is wrong"; - -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typemap_delete_runme.js b/Examples/test-suite/javascript/typemap_delete_runme.js -index 1d42ce4daf..72252fe013 100644 ---- a/Examples/test-suite/javascript/typemap_delete_runme.js -+++ b/Examples/test-suite/javascript/typemap_delete_runme.js -@@ -1,5 +1,7 @@ --var typemap_delete = require("typemap_delete"); -+var typemap_delete = require("./typemap_delete"); - - r = new typemap_delete.Rect(123); - if (r.val != 123) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typemap_namespace_runme.js b/Examples/test-suite/javascript/typemap_namespace_runme.js -index 2aa3580249..962e54afa4 100644 ---- a/Examples/test-suite/javascript/typemap_namespace_runme.js -+++ b/Examples/test-suite/javascript/typemap_namespace_runme.js -@@ -1,7 +1,9 @@ --var typemap_namespace = require("typemap_namespace"); -+var typemap_namespace = require("./typemap_namespace"); - - if (typemap_namespace.test1("hello") != "hello") - throw "RuntimeError"; - - if (typemap_namespace.test2("hello") != "hello") - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/typemap_ns_using_runme.js b/Examples/test-suite/javascript/typemap_ns_using_runme.js -index 7e4019ab24..e97ea473c6 100644 ---- a/Examples/test-suite/javascript/typemap_ns_using_runme.js -+++ b/Examples/test-suite/javascript/typemap_ns_using_runme.js -@@ -1,4 +1,6 @@ --var typemap_ns_using = require("typemap_ns_using"); -+var typemap_ns_using = require("./typemap_ns_using"); - - if (typemap_ns_using.spam(37) != 37) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/using1_runme.js b/Examples/test-suite/javascript/using1_runme.js -index 2415156f08..68917b0156 100644 ---- a/Examples/test-suite/javascript/using1_runme.js -+++ b/Examples/test-suite/javascript/using1_runme.js -@@ -1,4 +1,6 @@ --var using1 = require("using1"); -+var using1 = require("./using1"); - - if (using1.spam(37) != 37) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/using2_runme.js b/Examples/test-suite/javascript/using2_runme.js -index 2ef08faca1..001f551403 100644 ---- a/Examples/test-suite/javascript/using2_runme.js -+++ b/Examples/test-suite/javascript/using2_runme.js -@@ -1,4 +1,6 @@ --var using2 = require("using2"); -+var using2 = require("./using2"); - - if (using2.spam(37) != 37) - throw "RuntimeError"; -+ -+process.exit(0); -diff --git a/Examples/test-suite/javascript/varargs_runme.js b/Examples/test-suite/javascript/varargs_runme.js -index fc6d945c1a..66348f2983 100644 ---- a/Examples/test-suite/javascript/varargs_runme.js -+++ b/Examples/test-suite/javascript/varargs_runme.js -@@ -1,4 +1,4 @@ --var varargs = require("varargs"); -+var varargs = require("./varargs"); - - if (varargs.test("Hello") != "Hello") { - throw new Error("Failed"); -@@ -42,3 +42,5 @@ try { - if (!thrown) { - throw new Error("Failed"); - } -+ -+process.exit(0); -diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg -index c4aaf3db0c..c2aacc61a5 100644 ---- a/Lib/javascript/v8/javascriptcode.swg -+++ b/Lib/javascript/v8/javascriptcode.swg -@@ -11,7 +11,7 @@ - static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle self = args.Holder(); -+ v8::Local self = args.Holder(); - $jslocals - if(args.Length() != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); - $jscode -@@ -53,7 +53,7 @@ static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - - OverloadErrorHandler errorHandler; -- v8::Handle self; -+ v8::Local self; - - // switch all cases by means of series of if-returns. - $jsdispatchcases -@@ -78,7 +78,7 @@ fail: - static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args, V8ErrorHandler &SWIGV8_ErrorHandler) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle self = args.Holder(); -+ v8::Local self = args.Holder(); - $jslocals - if(args.Length() != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); - $jscode -@@ -226,7 +226,7 @@ static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8Pr - #endif - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - $jslocals - $jscode - SWIGV8_RETURN_INFO(jsresult, info); -@@ -271,7 +271,7 @@ fail: - static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - $jslocals - if(args.Length() != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper."); - -@@ -296,7 +296,7 @@ fail: - static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - OverloadErrorHandler errorHandler; - $jscode - -@@ -320,7 +320,7 @@ static SwigV8ReturnValue $jswrapper(const SwigV8Arguments &args, V8ErrorHandler - { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - $jslocals - $jscode - SWIGV8_RETURN(jsresult); -@@ -374,7 +374,7 @@ fail: - %fragment("jsv8_define_class_template", "templates") - %{ - /* Name: $jsmangledname, Type: $jsmangledtype, Dtor: $jsdtor */ -- v8::Handle $jsmangledname_class = SWIGV8_CreateClassTemplate("$jsmangledname"); -+ v8::Local $jsmangledname_class = SWIGV8_CreateClassTemplate("$jsmangledname"); - SWIGV8_SET_CLASS_TEMPL($jsmangledname_clientData.class_templ, $jsmangledname_class); - $jsmangledname_clientData.dtor = $jsdtor; - if (SWIGTYPE_$jsmangledtype->clientdata == 0) { -@@ -420,11 +420,15 @@ fail: - %fragment("jsv8_create_class_instance", "templates") - %{ - /* Class: $jsname ($jsmangledname) */ -- v8::Handle $jsmangledname_class_0 = SWIGV8_CreateClassTemplate("$jsname"); -+ v8::Local $jsmangledname_class_0 = SWIGV8_CreateClassTemplate("$jsname"); - $jsmangledname_class_0->SetCallHandler($jsctor); - $jsmangledname_class_0->Inherit($jsmangledname_class); -+#if (SWIG_V8_VERSION < 0x0705) - $jsmangledname_class_0->SetHiddenPrototype(true); -- v8::Handle $jsmangledname_obj = $jsmangledname_class_0->GetFunction(); -+ v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(); -+#else -+ v8::Local $jsmangledname_obj = $jsmangledname_class_0->GetFunction(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked(); -+#endif - %} - - /* ----------------------------------------------------------------------------- -@@ -435,7 +439,11 @@ fail: - * ----------------------------------------------------------------------------- */ - %fragment("jsv8_register_class", "templates") - %{ -+#if (SWIG_V8_VERSION < 0x0706) - $jsparent_obj->Set(SWIGV8_SYMBOL_NEW("$jsname"), $jsmangledname_obj); -+#else -+ $jsparent_obj->Set(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW("$jsname"), $jsmangledname_obj); -+#endif - %} - - /* ----------------------------------------------------------------------------- -@@ -444,7 +452,7 @@ fail: - * ----------------------------------------------------------------------------- */ - %fragment("jsv8_create_namespace", "templates") - %{ -- v8::Handle $jsmangledname_obj = SWIGV8_OBJECT_NEW(); -+ v8::Local $jsmangledname_obj = SWIGV8_OBJECT_NEW(); - %} - - /* ----------------------------------------------------------------------------- -diff --git a/Lib/javascript/v8/javascriptcomplex.swg b/Lib/javascript/v8/javascriptcomplex.swg -index d3b4aaffa6..533e548131 100644 ---- a/Lib/javascript/v8/javascriptcomplex.swg -+++ b/Lib/javascript/v8/javascriptcomplex.swg -@@ -12,7 +12,7 @@ - %fragment(SWIG_From_frag(Type),"header", - fragment=SWIG_From_frag(double)) - { --SWIGINTERNINLINE v8::Handle -+SWIGINTERNINLINE v8::Local - SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) - { - SWIGV8_HANDLESCOPE_ESC(); -@@ -32,12 +32,12 @@ SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) - fragment=SWIG_AsVal_frag(double)) - { - SWIGINTERN int --SWIG_AsVal_dec(Type) (v8::Handle o, Type* val) -+SWIG_AsVal_dec(Type) (v8::Local o, Type* val) - { - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { -- v8::Handle array = v8::Handle::Cast(o); -+ v8::Local array = v8::Local::Cast(o); - - if(array->Length() != 2) SWIG_Error(SWIG_TypeError, "Illegal argument for complex: must be array[2]."); - double re, im; -@@ -74,12 +74,12 @@ SWIG_AsVal_dec(Type) (v8::Handle o, Type* val) - %fragment(SWIG_AsVal_frag(Type),"header", - fragment=SWIG_AsVal_frag(float)) { - SWIGINTERN int --SWIG_AsVal_dec(Type) (v8::Handle o, Type* val) -+SWIG_AsVal_dec(Type) (v8::Local o, Type* val) - { - SWIGV8_HANDLESCOPE(); - - if (o->IsArray()) { -- v8::Handle array = v8::Handle::Cast(o); -+ v8::Local array = v8::Local::Cast(o); - - if(array->Length() != 2) SWIG_Error(SWIG_TypeError, "Illegal argument for complex: must be array[2]."); - double re, im; -diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg -index 80fbd7aa1a..0cd24a1942 100644 ---- a/Lib/javascript/v8/javascripthelpers.swg -+++ b/Lib/javascript/v8/javascripthelpers.swg -@@ -21,19 +21,19 @@ typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; - /** - * Creates a class template for a class with specified initialization function. - */ --SWIGRUNTIME v8::Handle SWIGV8_CreateClassTemplate(const char* symbol) { -+SWIGRUNTIME v8::Local SWIGV8_CreateClassTemplate(const char* symbol) { - SWIGV8_HANDLESCOPE_ESC(); - - v8::Local class_templ = SWIGV8_FUNCTEMPLATE_NEW_VOID(); - class_templ->SetClassName(SWIGV8_SYMBOL_NEW(symbol)); - -- v8::Handle inst_templ = class_templ->InstanceTemplate(); -+ v8::Local inst_templ = class_templ->InstanceTemplate(); - inst_templ->SetInternalFieldCount(1); - -- v8::Handle equals_templ = class_templ->PrototypeTemplate(); -+ v8::Local equals_templ = class_templ->PrototypeTemplate(); - equals_templ->Set(SWIGV8_SYMBOL_NEW("equals"), SWIGV8_FUNCTEMPLATE_NEW(_SWIGV8_wrap_equals)); - -- v8::Handle cptr_templ = class_templ->PrototypeTemplate(); -+ v8::Local cptr_templ = class_templ->PrototypeTemplate(); - cptr_templ->Set(SWIGV8_SYMBOL_NEW("getCPtr"), SWIGV8_FUNCTEMPLATE_NEW(_wrap_getCPtr)); - - SWIGV8_ESCAPE(class_templ); -@@ -42,33 +42,39 @@ SWIGRUNTIME v8::Handle SWIGV8_CreateClassTemplate(const ch - /** - * Registers a class method with given name for a given class template. - */ --SWIGRUNTIME void SWIGV8_AddMemberFunction(v8::Handle class_templ, const char* symbol, -+SWIGRUNTIME void SWIGV8_AddMemberFunction(v8::Local class_templ, const char* symbol, - SwigV8FunctionCallback _func) { -- v8::Handle proto_templ = class_templ->PrototypeTemplate(); -+ v8::Local proto_templ = class_templ->PrototypeTemplate(); - proto_templ->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)); - } - - /** - * Registers a class property with given name for a given class template. - */ --SWIGRUNTIME void SWIGV8_AddMemberVariable(v8::Handle class_templ, const char* symbol, -+SWIGRUNTIME void SWIGV8_AddMemberVariable(v8::Local class_templ, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { -- v8::Handle proto_templ = class_templ->InstanceTemplate(); -+ v8::Local proto_templ = class_templ->InstanceTemplate(); - proto_templ->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); - } - - /** - * Registers a class method with given name for a given object. - */ --SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle obj, const char* symbol, -+SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Local obj, const char* symbol, - const SwigV8FunctionCallback& _func) { -+#if (SWIG_V8_VERSION < 0x0705) - obj->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction()); -+#elif (SWIG_V8_VERSION < 0x0706) -+ obj->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked()); -+#else -+ obj->Set(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked()); -+#endif - } - - /** - * Registers a class method with given name for a given object. - */ --SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle obj, const char* symbol, -+SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Local obj, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { - #if (V8_MAJOR_VERSION-0) < 5 - obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); -diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg -index 8faf2dd8e1..450aa9c6d9 100644 ---- a/Lib/javascript/v8/javascriptinit.swg -+++ b/Lib/javascript/v8/javascriptinit.swg -@@ -70,14 +70,14 @@ extern "C" - #if (NODE_MODULE_VERSION < 0x000C) - void SWIGV8_INIT (v8::Handle exports) - #else --void SWIGV8_INIT (v8::Handle exports, v8::Handle /*module*/) -+void SWIGV8_INIT (v8::Local exports, v8::Local /*module*/) - #endif - { - SWIG_InitializeModule(static_cast(&exports)); - - SWIGV8_HANDLESCOPE(); - -- v8::Handle exports_obj = exports; -+ v8::Local exports_obj = exports; - %} - - -diff --git a/Lib/javascript/v8/javascriptprimtypes.swg b/Lib/javascript/v8/javascriptprimtypes.swg -index f76be983b1..24f5daf7c5 100644 ---- a/Lib/javascript/v8/javascriptprimtypes.swg -+++ b/Lib/javascript/v8/javascriptprimtypes.swg -@@ -6,7 +6,7 @@ - - %fragment(SWIG_From_frag(bool),"header") { - SWIGINTERNINLINE --v8::Handle -+v8::Local - SWIG_From_dec(bool)(bool value) - { - return SWIGV8_BOOLEAN_NEW(value); -@@ -16,7 +16,7 @@ SWIG_From_dec(bool)(bool value) - %fragment(SWIG_AsVal_frag(bool),"header", - fragment=SWIG_AsVal_frag(long)) { - SWIGINTERN --int SWIG_AsVal_dec(bool)(v8::Handle obj, bool *val) -+int SWIG_AsVal_dec(bool)(v8::Local obj, bool *val) - { - if(!obj->IsBoolean()) { - return SWIG_ERROR; -@@ -31,7 +31,7 @@ int SWIG_AsVal_dec(bool)(v8::Handle obj, bool *val) - - %fragment(SWIG_From_frag(int),"header") { - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(int)(int value) -+v8::Local SWIG_From_dec(int)(int value) - { - return SWIGV8_INT32_NEW(value); - } -@@ -39,7 +39,7 @@ v8::Handle SWIG_From_dec(int)(int value) - - %fragment(SWIG_AsVal_frag(int),"header") { - SWIGINTERN --int SWIG_AsVal_dec(int)(v8::Handle valRef, int* val) -+int SWIG_AsVal_dec(int)(v8::Local valRef, int* val) - { - if (!valRef->IsNumber()) { - return SWIG_TypeError; -@@ -54,7 +54,7 @@ int SWIG_AsVal_dec(int)(v8::Handle valRef, int* val) - - %fragment(SWIG_From_frag(long),"header") { - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(long)(long value) -+v8::Local SWIG_From_dec(long)(long value) - { - return SWIGV8_NUMBER_NEW(value); - } -@@ -63,7 +63,7 @@ v8::Handle SWIG_From_dec(long)(long value) - %fragment(SWIG_AsVal_frag(long),"header", - fragment="SWIG_CanCastAsInteger") { - SWIGINTERN --int SWIG_AsVal_dec(long)(v8::Handle obj, long* val) -+int SWIG_AsVal_dec(long)(v8::Local obj, long* val) - { - if (!obj->IsNumber()) { - return SWIG_TypeError; -@@ -79,7 +79,7 @@ int SWIG_AsVal_dec(long)(v8::Handle obj, long* val) - %fragment(SWIG_From_frag(unsigned long),"header", - fragment=SWIG_From_frag(long)) { - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(unsigned long)(unsigned long value) -+v8::Local SWIG_From_dec(unsigned long)(unsigned long value) - { - return (value > LONG_MAX) ? - SWIGV8_INTEGER_NEW_UNS(value) : SWIGV8_INTEGER_NEW(%numeric_cast(value,long)); -@@ -89,7 +89,7 @@ v8::Handle SWIG_From_dec(unsigned long)(unsigned long value) - %fragment(SWIG_AsVal_frag(unsigned long),"header", - fragment="SWIG_CanCastAsInteger") { - SWIGINTERN --int SWIG_AsVal_dec(unsigned long)(v8::Handle obj, unsigned long *val) -+int SWIG_AsVal_dec(unsigned long)(v8::Local obj, unsigned long *val) - { - if(!obj->IsNumber()) { - return SWIG_TypeError; -@@ -115,7 +115,7 @@ int SWIG_AsVal_dec(unsigned long)(v8::Handle obj, unsigned long *val) - fragment="SWIG_LongLongAvailable") { - %#ifdef SWIG_LONG_LONG_AVAILABLE - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(long long)(long long value) -+v8::Local SWIG_From_dec(long long)(long long value) - { - return SWIGV8_NUMBER_NEW(value); - } -@@ -128,7 +128,7 @@ v8::Handle SWIG_From_dec(long long)(long long value) - fragment="SWIG_LongLongAvailable") { - %#ifdef SWIG_LONG_LONG_AVAILABLE - SWIGINTERN --int SWIG_AsVal_dec(long long)(v8::Handle obj, long long* val) -+int SWIG_AsVal_dec(long long)(v8::Local obj, long long* val) - { - if (!obj->IsNumber()) { - return SWIG_TypeError; -@@ -148,7 +148,7 @@ int SWIG_AsVal_dec(long long)(v8::Handle obj, long long* val) - fragment="SWIG_LongLongAvailable") { - %#ifdef SWIG_LONG_LONG_AVAILABLE - SWIGINTERNINLINE --v8::Handle SWIG_From_dec(unsigned long long)(unsigned long long value) -+v8::Local SWIG_From_dec(unsigned long long)(unsigned long long value) - { - return (value > LONG_MAX) ? - SWIGV8_INTEGER_NEW_UNS(value) : SWIGV8_INTEGER_NEW(%numeric_cast(value,long)); -@@ -162,7 +162,7 @@ v8::Handle SWIG_From_dec(unsigned long long)(unsigned long long value - fragment="SWIG_LongLongAvailable") { - %#ifdef SWIG_LONG_LONG_AVAILABLE - SWIGINTERN --int SWIG_AsVal_dec(unsigned long long)(v8::Handle obj, unsigned long long *val) -+int SWIG_AsVal_dec(unsigned long long)(v8::Local obj, unsigned long long *val) - { - if(!obj->IsNumber()) { - return SWIG_TypeError; -@@ -185,7 +185,7 @@ int SWIG_AsVal_dec(unsigned long long)(v8::Handle obj, unsigned long - - %fragment(SWIG_From_frag(double),"header") { - SWIGINTERN --v8::Handle SWIG_From_dec(double) (double val) -+v8::Local SWIG_From_dec(double) (double val) - { - return SWIGV8_NUMBER_NEW(val); - } -@@ -193,7 +193,7 @@ v8::Handle SWIG_From_dec(double) (double val) - - %fragment(SWIG_AsVal_frag(double),"header") { - SWIGINTERN --int SWIG_AsVal_dec(double)(v8::Handle obj, double *val) -+int SWIG_AsVal_dec(double)(v8::Local obj, double *val) - { - if(!obj->IsNumber()) { - return SWIG_TypeError; -diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg -index 2452f4040d..db6299a84e 100644 ---- a/Lib/javascript/v8/javascriptrun.swg -+++ b/Lib/javascript/v8/javascriptrun.swg -@@ -10,7 +10,11 @@ - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031803) - #define SWIGV8_STRING_NEW2(cstr, len) v8::String::New(cstr, len) - #else -+#if (SWIG_V8_VERSION < 0x0706) - #define SWIGV8_STRING_NEW2(cstr, len) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::String::kNormalString, len) -+#else -+#define SWIGV8_STRING_NEW2(cstr, len) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), cstr, v8::NewStringType::kNormal, len)).ToLocalChecked() -+#endif - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) -@@ -47,12 +51,18 @@ typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfo; - #define SWIGV8_THROW_EXCEPTION(err) v8::ThrowException(err) - #define SWIGV8_STRING_NEW(str) v8::String::New(str) - #define SWIGV8_SYMBOL_NEW(sym) v8::String::NewSymbol(sym) -+#elif (SWIG_V8_VERSION < 0x0706) -+#define SWIGV8_ADJUST_MEMORY(size) v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(size) -+#define SWIGV8_CURRENT_CONTEXT() v8::Isolate::GetCurrent()->GetCurrentContext() -+#define SWIGV8_THROW_EXCEPTION(err) v8::Isolate::GetCurrent()->ThrowException(err) -+#define SWIGV8_STRING_NEW(str) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::String::kNormalString) -+#define SWIGV8_SYMBOL_NEW(sym) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::String::kNormalString) - #else - #define SWIGV8_ADJUST_MEMORY(size) v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(size) - #define SWIGV8_CURRENT_CONTEXT() v8::Isolate::GetCurrent()->GetCurrentContext() - #define SWIGV8_THROW_EXCEPTION(err) v8::Isolate::GetCurrent()->ThrowException(err) --#define SWIGV8_STRING_NEW(str) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str) --#define SWIGV8_SYMBOL_NEW(sym) v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym) -+#define SWIGV8_STRING_NEW(str) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str, v8::NewStringType::kNormal)).ToLocalChecked() -+#define SWIGV8_SYMBOL_NEW(sym) (v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), sym, v8::NewStringType::kNormal)).ToLocalChecked() - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032318) -@@ -107,7 +117,7 @@ typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfo; - #define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue() - #define SWIGV8_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(buffer, len) - #define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length() --#else -+#elif (SWIG_V8_VERSION < 0x0706) - #define SWIGV8_TO_OBJECT(handle) (handle)->ToObject(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() - #define SWIGV8_TO_STRING(handle) (handle)->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() - #define SWIGV8_NUMBER_VALUE(handle) (handle)->NumberValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() -@@ -115,6 +125,14 @@ typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfo; - #define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() - #define SWIGV8_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(v8::Isolate::GetCurrent(), buffer, len) - #define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length(v8::Isolate::GetCurrent()) -+#else -+#define SWIGV8_TO_OBJECT(handle) (handle)->ToObject(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() -+#define SWIGV8_TO_STRING(handle) (handle)->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked() -+#define SWIGV8_NUMBER_VALUE(handle) (handle)->NumberValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() -+#define SWIGV8_INTEGER_VALUE(handle) (handle)->IntegerValue(SWIGV8_CURRENT_CONTEXT()).ToChecked() -+#define SWIGV8_BOOLEAN_VALUE(handle) (handle)->BooleanValue(v8::Isolate::GetCurrent()) -+#define SWIGV8_WRITE_UTF8(handle, buffer, len) (handle)->WriteUtf8(v8::Isolate::GetCurrent(), buffer, len) -+#define SWIGV8_UTF8_LENGTH(handle) (handle)->Utf8Length(v8::Isolate::GetCurrent()) - #endif - - /* --------------------------------------------------------------------------- -@@ -163,7 +181,7 @@ public: - SWIGV8_THROW_EXCEPTION(err); - } - } -- v8::Handle err; -+ v8::Local err; - }; - - /* --------------------------------------------------------------------------- -@@ -228,13 +246,13 @@ public: - - SWIGRUNTIME v8::Persistent SWIGV8_SWIGTYPE_Proxy_class_templ; - --SWIGRUNTIME int SWIG_V8_ConvertInstancePtr(v8::Handle objRef, void **ptr, swig_type_info *info, int flags) { -+SWIGRUNTIME int SWIG_V8_ConvertInstancePtr(v8::Local objRef, void **ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE(); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) -- v8::Handle cdataRef = objRef->GetInternalField(0); -+ v8::Local cdataRef = objRef->GetInternalField(0); - SWIGV8_Proxy *cdata = static_cast(v8::External::Unwrap(cdataRef)); - #else - SWIGV8_Proxy *cdata = static_cast(objRef->GetAlignedPointerFromInternalField(0)); -@@ -280,11 +298,11 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo valRef, void **ptr) { -+SWIGRUNTIME int SWIG_V8_GetInstancePtr(v8::Local valRef, void **ptr) { - if(!valRef->IsObject()) { - return SWIG_TypeError; - } -- v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); -+ v8::Local objRef = SWIGV8_TO_OBJECT(valRef); - - if(objRef->InternalFieldCount() < 1) return SWIG_ERROR; - -@@ -304,7 +322,7 @@ SWIGRUNTIME int SWIG_V8_GetInstancePtr(v8::Handle valRef, void **ptr) - return SWIG_OK; - } - --SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, swig_type_info *info, int flags) { -+SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Local obj, void *ptr, swig_type_info *info, int flags) { - SWIGV8_Proxy *cdata = new SWIGV8_Proxy(); - cdata->swigCObject = ptr; - cdata->swigCMemOwn = (flags & SWIG_POINTER_OWN) ? 1 : 0; -@@ -361,13 +379,15 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, sw - cdata->handle.MarkIndependent(); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) - cdata->handle.MarkIndependent(v8::Isolate::GetCurrent()); --#else -+#elif (SWIG_V8_VERSION < 0x0706) - cdata->handle.MarkIndependent(); -+// Looks like future versions do not require that anymore: -+// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 - #endif - - } - --SWIGRUNTIME int SWIG_V8_ConvertPtr(v8::Handle valRef, void **ptr, swig_type_info *info, int flags) { -+SWIGRUNTIME int SWIG_V8_ConvertPtr(v8::Local valRef, void **ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE(); - - /* special case: JavaScript null => C NULL pointer */ -@@ -378,14 +398,14 @@ SWIGRUNTIME int SWIG_V8_ConvertPtr(v8::Handle valRef, void **ptr, swi - if(!valRef->IsObject()) { - return SWIG_TypeError; - } -- v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); -+ v8::Local objRef = SWIGV8_TO_OBJECT(valRef); - return SWIG_V8_ConvertInstancePtr(objRef, ptr, info, flags); - } - --SWIGRUNTIME v8::Handle SWIG_V8_NewPointerObj(void *ptr, swig_type_info *info, int flags) { -+SWIGRUNTIME v8::Local SWIG_V8_NewPointerObj(void *ptr, swig_type_info *info, int flags) { - SWIGV8_HANDLESCOPE_ESC(); - -- v8::Handle class_templ; -+ v8::Local class_templ; - - if (ptr == NULL) { - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) -@@ -412,8 +432,11 @@ SWIGRUNTIME v8::Handle SWIG_V8_NewPointerObj(void *ptr, swig_type_inf - } - #endif - --// v8::Handle result = class_templ->InstanceTemplate()->NewInstance(); -+#if (SWIG_V8_VERSION < 0x0705) - v8::Local result = class_templ->InstanceTemplate()->NewInstance(); -+#else -+ v8::Local result = class_templ->InstanceTemplate()->NewInstance(SWIGV8_CURRENT_CONTEXT()).ToLocalChecked(); -+#endif - SWIGV8_SetPrivateData(result, ptr, info, flags); - - SWIGV8_ESCAPE(result); -@@ -433,7 +456,7 @@ SWIGRUNTIME v8::Handle SWIG_V8_NewPointerObj(void *ptr, swig_type_inf - SWIGRUNTIME SwigV8ReturnValue _SWIGV8_wrap_equals(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - void *arg1 = (void *) 0 ; - void *arg2 = (void *) 0 ; - bool result; -@@ -463,7 +486,7 @@ fail: - SWIGRUNTIME SwigV8ReturnValue _wrap_getCPtr(const SwigV8Arguments &args) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle jsresult; -+ v8::Local jsresult; - void *arg1 = (void *) 0 ; - long result; - int res1; -@@ -502,10 +525,10 @@ public: - }; - - SWIGRUNTIMEINLINE --int SwigV8Packed_Check(v8::Handle valRef) { -+int SwigV8Packed_Check(v8::Local valRef) { - SWIGV8_HANDLESCOPE(); - -- v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); -+ v8::Local objRef = SWIGV8_TO_OBJECT(valRef); - if(objRef->InternalFieldCount() < 1) return false; - #if (V8_MAJOR_VERSION-0) < 5 - v8::Handle flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); -@@ -519,13 +542,13 @@ int SwigV8Packed_Check(v8::Handle valRef) { - } - - SWIGRUNTIME --swig_type_info *SwigV8Packed_UnpackData(v8::Handle valRef, void *ptr, size_t size) { -+swig_type_info *SwigV8Packed_UnpackData(v8::Local valRef, void *ptr, size_t size) { - if (SwigV8Packed_Check(valRef)) { - SWIGV8_HANDLESCOPE(); - - SwigV8PackedData *sobj; - -- v8::Handle objRef = SWIGV8_TO_OBJECT(valRef); -+ v8::Local objRef = SWIGV8_TO_OBJECT(valRef); - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) - v8::Handle cdataRef = objRef->GetInternalField(0); -@@ -542,7 +565,7 @@ swig_type_info *SwigV8Packed_UnpackData(v8::Handle valRef, void *ptr, - } - - SWIGRUNTIME --int SWIGV8_ConvertPacked(v8::Handle valRef, void *ptr, size_t sz, swig_type_info *ty) { -+int SWIGV8_ConvertPacked(v8::Local valRef, void *ptr, size_t sz, swig_type_info *ty) { - swig_type_info *to = SwigV8Packed_UnpackData(valRef, ptr, sz); - if (!to) return SWIG_ERROR; - if (ty) { -@@ -590,7 +613,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo SWIGV8_NewPackedObj(void *data, size_t size, swig_type_info *type) { -+v8::Local SWIGV8_NewPackedObj(void *data, size_t size, swig_type_info *type) { - SWIGV8_HANDLESCOPE_ESC(); - - SwigV8PackedData *cdata = new SwigV8PackedData(data, size, type); -@@ -636,8 +659,10 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - cdata->handle.MarkIndependent(); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) - cdata->handle.MarkIndependent(v8::Isolate::GetCurrent()); --#else -+#elif (SWIG_V8_VERSION < 0x0706) - cdata->handle.MarkIndependent(); -+// Looks like future versions do not require that anymore: -+// https://monorail-prod.appspot.com/p/chromium/issues/detail?id=923361#c11 - #endif - - SWIGV8_ESCAPE(obj); -@@ -657,7 +682,7 @@ SWIGRUNTIME - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) - v8::Handle SWIGV8_AppendOutput(v8::Handle result, v8::Handle obj) { - #else --v8::Handle SWIGV8_AppendOutput(v8::Local result, v8::Handle obj) { -+v8::Local SWIGV8_AppendOutput(v8::Local result, v8::Local obj) { - #endif - SWIGV8_HANDLESCOPE_ESC(); - -@@ -669,7 +694,12 @@ v8::Handle SWIGV8_AppendOutput(v8::Local result, v8::Handl - #else - v8::Local arr = v8::Local::Cast(result); - #endif -+ -+#if (SWIG_V8_VERSION < 0x0706) - arr->Set(arr->Length(), obj); -+#else -+ arr->Set(SWIGV8_CURRENT_CONTEXT(), arr->Length(), obj); -+#endif - - SWIGV8_ESCAPE(arr); - } -diff --git a/Lib/javascript/v8/javascriptruntime.swg b/Lib/javascript/v8/javascriptruntime.swg -index c78e04efbb..773014f2a5 100644 ---- a/Lib/javascript/v8/javascriptruntime.swg -+++ b/Lib/javascript/v8/javascriptruntime.swg -@@ -56,6 +56,11 @@ - %insert(runtime) %{ - #include - -+#if defined(V8_MAJOR_VERSION) && defined(V8_MINOR_VERSION) -+#undef SWIG_V8_VERSION -+#define SWIG_V8_VERSION (V8_MAJOR_VERSION * 256 + V8_MINOR_VERSION) -+#endif -+ - #include - #include - #include -diff --git a/Lib/javascript/v8/javascriptstrings.swg b/Lib/javascript/v8/javascriptstrings.swg -index e767a6d662..61a937fa52 100644 ---- a/Lib/javascript/v8/javascriptstrings.swg -+++ b/Lib/javascript/v8/javascriptstrings.swg -@@ -4,10 +4,10 @@ - * ------------------------------------------------------------ */ - %fragment("SWIG_AsCharPtrAndSize", "header", fragment="SWIG_pchar_descriptor") { - SWIGINTERN int --SWIG_AsCharPtrAndSize(v8::Handle valRef, char** cptr, size_t* psize, int *alloc) -+SWIG_AsCharPtrAndSize(v8::Local valRef, char** cptr, size_t* psize, int *alloc) - { - if(valRef->IsString()) { -- v8::Handle js_str = SWIGV8_TO_STRING(valRef); -+ v8::Local js_str = SWIGV8_TO_STRING(valRef); - - size_t len = SWIGV8_UTF8_LENGTH(js_str) + 1; - char* cstr = new char[len]; -@@ -20,7 +20,7 @@ SWIG_AsCharPtrAndSize(v8::Handle valRef, char** cptr, size_t* psize, - return SWIG_OK; - } else { - if(valRef->IsObject()) { -- v8::Handle obj = SWIGV8_TO_OBJECT(valRef); -+ v8::Local obj = SWIGV8_TO_OBJECT(valRef); - // try if the object is a wrapped char[] - swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); - if (pchar_descriptor) { -@@ -41,7 +41,7 @@ SWIG_AsCharPtrAndSize(v8::Handle valRef, char** cptr, size_t* psize, - } - - %fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { --SWIGINTERNINLINE v8::Handle -+SWIGINTERNINLINE v8::Local - SWIG_FromCharPtrAndSize(const char* carray, size_t size) - { - if (carray) { -@@ -49,7 +49,7 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size) - // TODO: handle extra long strings - return SWIGV8_UNDEFINED(); - } else { -- v8::Handle js_str = SWIGV8_STRING_NEW2(carray, size); -+ v8::Local js_str = SWIGV8_STRING_NEW2(carray, size); - return js_str; - } - } else { -diff --git a/Lib/javascript/v8/javascripttypemaps.swg b/Lib/javascript/v8/javascripttypemaps.swg -index 4601698e03..fbe7849cd2 100644 ---- a/Lib/javascript/v8/javascripttypemaps.swg -+++ b/Lib/javascript/v8/javascripttypemaps.swg -@@ -25,7 +25,7 @@ - - /* Javascript types */ - --#define SWIG_Object v8::Handle -+#define SWIG_Object v8::Local - #define VOID_Object SWIGV8_UNDEFINED() - - /* Overload of the output/constant/exception/dirout handling */ -diff --git a/Source/Modules/javascript.cxx b/Source/Modules/javascript.cxx -index d2b33b1b42..450ebbd497 100644 ---- a/Source/Modules/javascript.cxx -+++ b/Source/Modules/javascript.cxx -@@ -548,7 +548,7 @@ void JAVASCRIPT::main(int argc, char *argv[]) { - } - Swig_mark_arg(i); - engine = JSEmitter::JavascriptCore; -- } else if (strcmp(argv[i], "-node") == 0) { -+ } else if ((strcmp(argv[i], "-node") == 0) || (strcmp(argv[i], "-electron") == 0)) { - if (engine != -1) { - Printf(stderr, ERR_MSG_ONLY_ONE_ENGINE_PLEASE); - SWIG_exit(-1); -@@ -594,7 +594,7 @@ void JAVASCRIPT::main(int argc, char *argv[]) { - } - default: - { -- Printf(stderr, "SWIG Javascript: Unknown engine. Please specify one of '-jsc', '-v8' or '-node'.\n"); -+ Printf(stderr, "SWIG Javascript: Unknown engine. Please specify one of '-jsc', '-v8' or '-node/-electron'.\n"); - SWIG_exit(-1); - break; - } -diff --git a/Tools/javascript/v8_shell.cxx b/Tools/javascript/v8_shell.cxx -index 5001bc25a6..8067247a41 100644 ---- a/Tools/javascript/v8_shell.cxx -+++ b/Tools/javascript/v8_shell.cxx -@@ -9,7 +9,7 @@ - - #include "js_shell.h" - --typedef int (*V8ExtensionInitializer) (v8::Handle module); -+typedef int (*V8ExtensionInitializer) (v8::Local module); - - // Note: these typedefs and defines are used to deal with v8 API changes since version 3.19.00 - -@@ -87,7 +87,7 @@ class V8Shell: public JSShell { - - private: - -- v8::Handle Import(const std::string &moduleName); -+ v8::Local Import(const std::string &moduleName); - - SwigV8Context CreateShellContext(); - -@@ -135,7 +135,7 @@ bool V8Shell::RunScript(const std::string &scriptPath) { - - // Store a pointer to this shell for later use - -- v8::Handle global = context->Global(); -+ v8::Local global = context->Global(); - v8::Local __shell__ = SWIGV8_EXTERNAL_NEW((void*) (long) this); - - global->SetHiddenValue(SWIGV8_STRING_NEW("__shell__"), __shell__); -@@ -215,7 +215,7 @@ bool V8Shell::ExecuteScript(const std::string &source, const std::string &name) - SWIGV8_HANDLESCOPE(); - - v8::TryCatch try_catch; -- v8::Handle script = v8::Script::Compile(SWIGV8_STRING_NEW(source.c_str()), SWIGV8_STRING_NEW(name.c_str())); -+ v8::Local script = v8::Script::Compile(SWIGV8_STRING_NEW(source.c_str()), SWIGV8_STRING_NEW(name.c_str())); - - // Stop if script is empty - if (script.IsEmpty()) { -@@ -224,7 +224,7 @@ bool V8Shell::ExecuteScript(const std::string &source, const std::string &name) - return false; - } - -- v8::Handle result = script->Run(); -+ v8::Local result = script->Run(); - - // Print errors that happened during execution. - if (try_catch.HasCaught()) { -@@ -241,7 +241,7 @@ bool V8Shell::DisposeEngine() { - - SwigV8Context V8Shell::CreateShellContext() { - // Create a template for the global object. -- v8::Handle global = v8::ObjectTemplate::New(); -+ v8::Local global = v8::ObjectTemplate::New(); - - // Bind global functions - global->Set(SWIGV8_STRING_NEW("print"), SWIGV8_FUNCTEMPLATE_NEW(V8Shell::Print)); -@@ -258,7 +258,7 @@ SwigV8Context V8Shell::CreateShellContext() { - #endif - } - --v8::Handle V8Shell::Import(const std::string &module_path) -+v8::Local V8Shell::Import(const std::string &module_path) - { - SWIGV8_HANDLESCOPE_ESC(); - -@@ -319,7 +319,7 @@ SwigV8ReturnValue V8Shell::Require(const SwigV8Arguments &args) { - v8::Local __shell__ = v8::Local::Cast(hidden); - V8Shell *_this = (V8Shell *) (long) __shell__->Value(); - -- v8::Handle module = _this->Import(moduleName); -+ v8::Local module = _this->Import(moduleName); - - SWIGV8_RETURN(module); - } -@@ -345,7 +345,7 @@ void V8Shell::ReportException(v8::TryCatch *try_catch) { - - v8::String::Utf8Value exception(try_catch->Exception()); - const char *exception_string = V8Shell::ToCString(exception); -- v8::Handle message = try_catch->Message(); -+ v8::Local message = try_catch->Message(); - if (message.IsEmpty()) { - // V8 didn't provide any extra information about this error; just - // print the exception. -diff --git a/Tools/testflags.py b/Tools/testflags.py -index f3d216b59a..64528d6925 100755 ---- a/Tools/testflags.py -+++ b/Tools/testflags.py -@@ -41,7 +41,10 @@ def get_cxxflags(language, std, compiler): - "go":"-Werror " + cxx_common, - "guile":"-Werror " + cxx_common, - "java":"-Werror " + cxx_common, -- "javascript":"-Werror " + cxx_common + " -Wno-error=unused-function", # Until overload_rename is fixed for node -+ "javascript":"-Werror " + cxx_common + -+ " -Wno-error=unused-function" + # Until overload_rename is fixed for node -+ " -Wno-error=unused-result -Wno-unused-result", # Until proper update of latest NodeJS / V8 -+ # " -Wno-error=cast-function-type" + Only in GCC 8.x+ - "lua":"-Werror " + cxx_common, - "mzscheme":"-Werror " + cxx_common, - "ocaml":"-Werror " + cxx_common, -diff --git a/Tools/travis-linux-install.sh b/Tools/travis-linux-install.sh -index c8347d27a4..04683572af 100755 ---- a/Tools/travis-linux-install.sh -+++ b/Tools/travis-linux-install.sh -@@ -33,7 +33,7 @@ case "$SWIGLANG" in - ;; - "javascript") - case "$ENGINE" in -- "node") -+ "node"|"electron") - travis_retry wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash - export NVM_DIR="$HOME/.nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" -@@ -45,6 +45,11 @@ case "$SWIGLANG" in - else - travis_retry npm install -g node-gyp - fi -+ -+ if [ ! -z "$ELECTRON_VER" ] ; then -+ travis_retry npm install -g electron@$ELECTRON_VER -+ fi -+ - ;; - "jsc") - travis_retry sudo apt-get install -qq libwebkitgtk-dev - diff --git a/swig.spec b/swig.spec index 6b02e1d..b0ce663 100644 --- a/swig.spec +++ b/swig.spec @@ -16,34 +16,32 @@ %endif %{!?tcl:%global tcl 1} -%{!?guile:%global guile 1} %{!?lualang:%global lualang 1} %{!?perllang:%global perllang 1} -# Disable PHP test it fails with 8.1.0 -%{!?phplang:%global phplang 0} +%{!?phplang:%global phplang 1} %{!?rubylang:%global rubylang 1} %{!?python3lang:%global python3lang 1} %if 0%{?rhel} %{!?golang:%global golang 0} +%{!?guile:%global guile 0} %{!?octave:%global octave 0} %{!?Rlang:%global Rlang 0} %bcond_with build_ccache_swig %else +%{!?guile:%global guile 1} %{!?octave:%global octave 1} %{!?Rlang:%global Rlang 1} %bcond_without build_ccache_swig %endif -%ifarch aarch64 %{arm} %{mips} ppc %{power64} s390 s390x +%ifarch i686 %{!?javalang:%global javalang 0} %else -# Disable tests failing with java-17-openjdk -# it will pass with swig 4.1.0 -%{!?javalang:%global javalang 0} +%{!?javalang:%global javalang 1} %endif -# Do not run Go tests, they failed with 4.0.0 on ppc64le +# Do not run Go tests, they failed with 4.0.0 on ppc64le, s390 %ifarch x86_64 %{arm} aarch64 %{!?golang:%global golang 1} %else @@ -52,8 +50,8 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.0.2 -Release: 18%{?dist} +Version: 4.1.0 +Release: 1%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -65,24 +63,10 @@ Source3: ccache-swig.sh Source4: ccache-swig.csh %endif -# https://github.com/swig/swig/pull/1702 -Patch0: swig-Upgrade-to-support-newer-NodeJS.patch -# Backport PHP 7.x and 8 updates -Patch1: swig-4.0.2-Fix-overloaded-directed-methods-with-non-void-re.patch -Patch2: swig-4.0.2-Fix-char-typecheck-typemap-to-accept-Null.patch -Patch3: swig-4.0.2-Improve-PHP-object-creation.patch -Patch4: swig-4.0.2-Support-PHP8.patch -# octave 6 support - rebased version of https://github.com/swig/swig/pull/2020 -Patch5: swig-octave-6.patch -# Fix overload_simple_cast test with Python 3.10 GH#2044 -Patch6: swig-4.0.2-Fix-overload_simple_cast-test-with-Python-3.10.patch -# gcc-12 warning fix in test-case -Patch7: swig-4.0.2-gcc-12-warning-fix-in-test-case.patch - BuildRequires: coreutils BuildRequires: findutils BuildRequires: make -BuildRequires: perl-interpreter, pcre-devel +BuildRequires: perl-interpreter, pcre2-devel BuildRequires: python%{python3_pkgversion}-devel BuildRequires: autoconf, automake, gawk, dos2unix BuildRequires: gcc-c++ @@ -114,7 +98,9 @@ BuildRequires: octave-devel %if %{golang} BuildRequires: golang BuildRequires: golang-bin +%ifnarch s390x BuildRequires: golang-shared +%endif BuildRequires: golang-src %endif %if %{lualang} @@ -354,6 +340,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Oct 25 2022 Jitka Plesnikova - 4.1.0-1 +- Update to 4.1.0 + * Thu Jul 21 2022 Maxwell G - 4.0.2-18 - Exclude golang extension from i686 From 5a104ce6fb376e636f5465315100a10985e04ac6 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 1 Dec 2022 13:32:40 +0100 Subject: [PATCH 11/54] Update to 4.1.1 --- .gitignore | 1 + sources | 2 +- swig-octave-6.patch | 346 -------------------------------------------- swig.spec | 5 +- 4 files changed, 6 insertions(+), 348 deletions(-) delete mode 100644 swig-octave-6.patch diff --git a/.gitignore b/.gitignore index 13374dc..7e4e128 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ swig-2.0.0.tar.gz /swig-4.0.1.tar.gz /swig-4.0.2.tar.gz /swig-4.1.0.tar.gz +/swig-4.1.1.tar.gz diff --git a/sources b/sources index c9baee1..fbb7d4d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.1.0.tar.gz) = a7d43d6aa764923826786081a3f2e25aa0f8345e1169c1e57bf02d01f6f41c92d8db0f360ec86e0e428ef5a21d1b5cd3edb7e4b71d0beff3e6611e344b5c22b1 +SHA512 (swig-4.1.1.tar.gz) = 1cea1918455a75ebc9b2653dd1715bd5dcd974554955f324295c6a6f14c0a715651b221b85fad4a8af5197e0c75bfe7b590bc6ba7178c26245fbbd9a7e110100 diff --git a/swig-octave-6.patch b/swig-octave-6.patch deleted file mode 100644 index f3cc909..0000000 --- a/swig-octave-6.patch +++ /dev/null @@ -1,346 +0,0 @@ -From 582e3a3fee8a7cfe5903da1c4b0db8e40d5d2deb Mon Sep 17 00:00:00 2001 -From: Robert Fries -Date: Wed, 12 May 2021 19:44:17 -0400 -Subject: [PATCH 2/5] Allow swig wrapped modules to compile with -Bsymbolic - ---- - Lib/octave/octrun.swg | 8 ++++++++ - Lib/octave/octruntime.swg | 2 ++ - 2 files changed, 10 insertions(+) - -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index 1069e0e54b7..a7291df1478 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -1178,6 +1178,10 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - #endif - { return ptr->print(os, pr_as_read_syntax); } - -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ static void set_type_id(int type_id) { t_id=type_id; } -+#endif -+ - virtual type_conv_info numeric_conversion_function(void) const { - return octave_base_value::type_conv_info (default_numeric_conversion_function, - octave_scalar::static_type_id ()); -@@ -1285,6 +1289,10 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - # endif - #endif - -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ static void set_type_id(int type_id) { t_id=type_id; } -+#endif -+ - private: - #if !SWIG_OCTAVE_PREREQ(4,0,0) - DECLARE_OCTAVE_ALLOCATOR; -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index a397fb7c189..ca69e44c48f 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -295,9 +295,11 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - for (int i = 0; i < types.numel(); ++i) { - if (types(i) == octave_swig_ref::static_type_name()) { - register_octave_swig_ref = false; -+ octave_swig_ref::set_type_id(i); - } - if (types(i) == octave_swig_packed::static_type_name()) { - register_octave_swig_packed = false; -+ octave_swig_packed::set_type_id(i); - } - } - if (register_octave_swig_ref) { - -From 2536f07ec26a06adb4290747cd229928b569ed72 Mon Sep 17 00:00:00 2001 -From: Robert Fries -Date: Wed, 12 May 2021 19:45:24 -0400 -Subject: [PATCH 3/5] Octave module lets examples and tests work with Octave-6 - * Try-catch replacement for check of error_state * Add execute method in - addition to call * Replace oct_mach_info with octave::mach_info * Call - from interpreter: global_varval global_assign * Assign a global name - requires locating the stack which requires interpreter to tree evaluator - to callStack * Do not use discard_error_messages or - discard_warning_messages - ---- - Lib/octave/octcontainer.swg | 11 +++++- - Lib/octave/octrun.swg | 69 ++++++++++++++++++++++++++++++++++--- - Lib/octave/octruntime.swg | 12 +++++-- - 3 files changed, 83 insertions(+), 9 deletions(-) - -diff --git a/Lib/octave/octcontainer.swg b/Lib/octave/octcontainer.swg -index 80d593f4fd5..85954acb031 100644 ---- a/Lib/octave/octcontainer.swg -+++ b/Lib/octave/octcontainer.swg -@@ -569,8 +569,17 @@ namespace swig { - } else { - return octseq.check() ? SWIG_OK : SWIG_ERROR; - } -- } catch (std::exception& e) { -+ } -+%#if SWIG_OCTAVE_PREREQ(6,0,0) -+ catch (octave::execution_exception& exec) { -+ } -+%#endif -+ catch (std::exception& e) { -+%#if SWIG_OCTAVE_PREREQ(6,0,0) -+ if (seq) // Know that octave is not in an error state -+%#else - if (seq&&!error_state) -+%#endif - error("swig type error: %s",e.what()); - return SWIG_ERROR; - } -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index a7291df1478..68bdeea0993 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -171,7 +171,16 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - - octave_function* function_value(bool = false) { return this; } - -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -+ return execute(tw,nargout,args); -+ } -+#endif -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ octave_value_list execute(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -+#else - octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -+#endif - octave_value_list all_args; - all_args.append(first_args); - all_args.append(args); -@@ -456,10 +465,20 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - // Fill in dim_vector - for (int k=0;k a; -+ try { -+ a = out.int_vector_value(); -+ } -+ catch (octave::execution_exception& oee) { -+ return dim_vector(1,1); -+ } -+#else - Array a = out.int_vector_value(); - if (error_state) return dim_vector(1,1); -+#endif - dim_vector d; - d.resize(a.numel() < 2 ? 2 : a.numel()); - d(0) = d(1) = 1; -@@ -874,7 +903,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - } - - virtual bool load_binary (std::istream& is, bool swap, -- oct_mach_info::float_format fmt) { -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ octave::mach_info::float_format fmt) { -+#else -+ oct_mach_info::float_format fmt) { -+#endif - return true; - } - -@@ -1142,7 +1175,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - { return ptr->save_binary(os, save_as_floats); } - - virtual bool load_binary (std::istream& is, bool swap, -- oct_mach_info::float_format fmt) -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ octave::mach_info::float_format fmt) -+#else -+ oct_mach_info::float_format fmt) -+#endif - { return ptr->load_binary(is, swap, fmt); } - - #if defined (HAVE_HDF5) -@@ -1261,7 +1298,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - } - - virtual bool load_binary (std::istream& is, bool swap, -- oct_mach_info::float_format fmt) { -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ octave::mach_info::float_format fmt) { -+#else -+ oct_mach_info::float_format fmt) { -+#endif - return true; - } - -@@ -1515,16 +1556,24 @@ SWIGRUNTIMEINLINE void SWIG_Octave_SetConstant(octave_swig_type *module_ns, cons - } - - SWIGRUNTIMEINLINE octave_value SWIG_Octave_GetGlobalValue(std::string name) { -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ octave::interpreter *interp = octave::interpreter::the_interpreter (); -+ return interp->global_varval(name); -+#else - #if SWIG_OCTAVE_PREREQ(4,4,0) - octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); - return symtab.global_varval(name); - #else - return get_global_value(name, true); - #endif -+#endif - } - - SWIGRUNTIME void SWIG_Octave_SetGlobalValue(std::string name, const octave_value& value) { --#if SWIG_OCTAVE_PREREQ(4,4,0) -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ octave::interpreter *interp = octave::interpreter::the_interpreter (); -+ interp->global_assign(name, value); -+#elif SWIG_OCTAVE_PREREQ(4,4,0) - octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); - symtab.global_assign(name, value); - #else -@@ -1534,10 +1583,20 @@ SWIGRUNTIME void SWIG_Octave_SetGlobalValue(std::string name, const octave_value - - SWIGRUNTIME void SWIG_Octave_LinkGlobalValue(std::string name) { - #if SWIG_OCTAVE_PREREQ(4,4,0) -- octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); - octave::symbol_scope symscope = octave::interpreter::the_interpreter()->get_current_scope(); -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ octave::interpreter *interp = octave::interpreter::the_interpreter (); -+ interp->assign(name, interp->global_varval(name)); -+ octave::tree_evaluator& tree_eval = interp->get_evaluator(); -+ octave::call_stack& callStack = tree_eval.get_call_stack(); -+ std::shared_ptr stackFrame = callStack.get_current_stack_frame(); -+ octave::symbol_record sym=symscope.lookup_symbol(name); -+ stackFrame->mark_global(sym); -+#else -+ octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); - symscope.assign(name, symtab.global_varval(name)); - symscope.mark_global(name); -+#endif - #else - #if !SWIG_OCTAVE_PREREQ(3,2,0) - link_to_global_variable(curr_sym_tab->lookup(name, true)); -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index ca69e44c48f..e76151f146b 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -19,7 +19,8 @@ static bool SWIG_init_user(octave_swig_type* module_ns); - SWIGINTERN bool SWIG_Octave_LoadModule(std::string name) { - bool retn = false; - { --#if SWIG_OCTAVE_PREREQ(4,2,0) -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+#elif SWIG_OCTAVE_PREREQ(4,2,0) - octave::unwind_protect frame; - frame.protect_var(discard_error_messages); discard_error_messages = true; - frame.protect_var(discard_warning_messages); discard_warning_messages = true; -@@ -62,7 +63,8 @@ SWIGINTERN bool SWIG_Octave_LoadModule(std::string name) { - SWIGINTERN bool SWIG_Octave_InstallFunction(octave_function *octloadfcn, std::string name) { - bool retn = false; - { --#if SWIG_OCTAVE_PREREQ(4,2,0) -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+#elif SWIG_OCTAVE_PREREQ(4,2,0) - octave::unwind_protect frame; - frame.protect_var(discard_error_messages); discard_error_messages = true; - frame.protect_var(discard_warning_messages); discard_warning_messages = true; -@@ -316,7 +318,11 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - SWIG_InitializeModule(0); - SWIG_PropagateClientData(); - --#if SWIG_OCTAVE_PREREQ(4,4,0) -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); -+ octave::call_stack& stack = tree_eval.get_call_stack(); -+ octave_function *me = stack.current_function(); -+#elif SWIG_OCTAVE_PREREQ(4,4,0) - octave::call_stack& stack = octave::interpreter::the_interpreter()->get_call_stack(); - octave_function *me = stack.current(); - #else - -From 0bf0d58c52e477cae99986b7c7a656c09d50aa43 Mon Sep 17 00:00:00 2001 -From: Robert Fries -Date: Wed, 12 May 2021 20:22:30 -0400 -Subject: [PATCH 4/5] Additional changes due to name changes in octave-6 * - is_map to isstruct, is_object to isobject - ---- - Lib/octave/octrun.swg | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index 68bdeea0993..e95f9e9de6b 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -660,7 +660,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - return true; - } - -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ virtual bool isstruct() const { -+#else - virtual bool is_map() const { -+#endif - return true; - } - -@@ -808,7 +812,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - return as_value(); - } - -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ virtual bool isobject() const { -+#else - virtual bool is_object() const { -+#endif - return true; - } - -@@ -1117,8 +1125,13 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - bool is_defined() const - { return ptr->is_defined(); } - -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ virtual bool isstruct() const -+ { return ptr->isstruct(); } -+#else - virtual bool is_map() const - { return ptr->is_map(); } -+#endif - - virtual octave_value subsref(const std::string &ops, const std::list < octave_value_list > &idx) - { return ptr->subsref(ops, idx); } -@@ -1129,8 +1142,13 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - octave_value subsasgn(const std::string &ops, const std::list < octave_value_list > &idx, const octave_value &rhs) - { return ptr->subsasgn(ops, idx, rhs); } - -+#if SWIG_OCTAVE_PREREQ(6,0,0) -+ virtual bool isobject() const -+ { return ptr->isobject(); } -+#else - virtual bool is_object() const - { return ptr->is_object(); } -+#endif - - virtual bool is_string() const - { return ptr->is_string(); } - diff --git a/swig.spec b/swig.spec index b0ce663..350c3b7 100644 --- a/swig.spec +++ b/swig.spec @@ -50,7 +50,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.1.0 +Version: 4.1.1 Release: 1%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ @@ -340,6 +340,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Dec 01 2022 Jitka Plesnikova - 4.1.1-1 +- Update to 4.1.1 + * Tue Oct 25 2022 Jitka Plesnikova - 4.1.0-1 - Update to 4.1.0 From 3fe391e859156c4588794ddb544d74f4e7a200fd Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 20 Dec 2022 14:45:23 +0100 Subject: [PATCH 12/54] Update license to SPDX format --- swig.spec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/swig.spec b/swig.spec index 350c3b7..70fda15 100644 --- a/swig.spec +++ b/swig.spec @@ -52,7 +52,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 Release: 1%{?dist} -License: GPLv3+ and BSD +License: GPL-3.0-or-later AND BSD-3-Clause URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz # Define the part of man page sections @@ -135,7 +135,7 @@ testing and prototyping C/C++ software. %if %{with build_ccache_swig} %package -n ccache-swig Summary: Fast compiler cache -License: GPLv2+ +License: GPL-2.0-or-later Requires: swig Conflicts: swig < 3.0.8-2 @@ -147,7 +147,7 @@ being done again. ccache-swig is ccache plus support for SWIG. %package doc Summary: Documentation files for SWIG -License: BSD +License: BSD-3-Clause BuildArch: noarch %description doc @@ -155,7 +155,7 @@ This package contains documentation for SWIG and useful examples %package gdb Summary: Commands for easier debugging of SWIG -License: BSD +License: BSD-3-Clause Requires: swig %description gdb From f50f0e420e6bb9d5c9011049922e6729975cbdae Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Thu, 12 Jan 2023 17:51:55 +0100 Subject: [PATCH 13/54] Port configure script to C99 Related to: --- swig-configure-c99.patch | 52 ++++++++++++++++++++++++++++++++++++++++ swig.spec | 6 ++++- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 swig-configure-c99.patch diff --git a/swig-configure-c99.patch b/swig-configure-c99.patch new file mode 100644 index 0000000..b1d42c9 --- /dev/null +++ b/swig-configure-c99.patch @@ -0,0 +1,52 @@ +Add missing #include directives to obtain additional function +prototypes. This avoids altering the result of this test with C99 +compilers which do not support implicit function declarations. + +Submitted upstream: + +diff --git a/CCache/configure b/CCache/configure +index 829db3db32ca442a..66f60da79446541e 100755 +--- a/CCache/configure ++++ b/CCache/configure +@@ -4135,6 +4135,9 @@ else $as_nop + + #include + #include ++#include ++#include ++#include + void foo(const char *format, ...) { + va_list ap; + int len; +@@ -4149,7 +4152,7 @@ void foo(const char *format, ...) { + + exit(0); + } +-main() { foo("hello"); } ++int main(void) { foo("hello"); } + + _ACEOF + if ac_fn_c_try_run "$LINENO" +diff --git a/CCache/configure.ac b/CCache/configure.ac +index 2db3553ce796ec21..9afd49e8370d4cac 100644 +--- a/CCache/configure.ac ++++ b/CCache/configure.ac +@@ -63,6 +63,9 @@ AC_CACHE_CHECK([for C99 vsnprintf],ccache_cv_HAVE_C99_VSNPRINTF,[ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include + #include ++#include ++#include ++#include + void foo(const char *format, ...) { + va_list ap; + int len; +@@ -77,7 +80,7 @@ void foo(const char *format, ...) { + + exit(0); + } +-main() { foo("hello"); } ++int main(void) { foo("hello"); } + ]])],[ccache_cv_HAVE_C99_VSNPRINTF=yes],[ccache_cv_HAVE_C99_VSNPRINTF=no],[ccache_cv_HAVE_C99_VSNPRINTF=cross])]) + if test x"$ccache_cv_HAVE_C99_VSNPRINTF" = x"yes"; then + AC_DEFINE(HAVE_C99_VSNPRINTF, 1, [ ]) diff --git a/swig.spec b/swig.spec index 70fda15..c05badf 100644 --- a/swig.spec +++ b/swig.spec @@ -51,7 +51,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 1%{?dist} +Release: 2%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -62,6 +62,7 @@ Source2: description-ccache.h2m Source3: ccache-swig.sh Source4: ccache-swig.csh %endif +Patch0: swig-configure-c99.patch BuildRequires: coreutils BuildRequires: findutils @@ -340,6 +341,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Jan 12 2023 Florian Weimer - 4.1.1-2 +- Port configure script to C99 + * Thu Dec 01 2022 Jitka Plesnikova - 4.1.1-1 - Update to 4.1.1 From 474931b3797e6df7da0023780547c6d919b269df Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 21 Jan 2023 04:26:17 +0000 Subject: [PATCH 14/54] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index c05badf..480c859 100644 --- a/swig.spec +++ b/swig.spec @@ -51,7 +51,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 2%{?dist} +Release: 3%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -341,6 +341,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Jan 21 2023 Fedora Release Engineering - 4.1.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Thu Jan 12 2023 Florian Weimer - 4.1.1-2 - Port configure script to C99 From fa8219acb6e0b3273798fe1a6a4a1b4b88bc9aa2 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 2 Feb 2023 09:58:02 +0100 Subject: [PATCH 15/54] Disable PHP test on i686 --- swig.spec | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 480c859..c656294 100644 --- a/swig.spec +++ b/swig.spec @@ -18,7 +18,12 @@ %{!?tcl:%global tcl 1} %{!?lualang:%global lualang 1} %{!?perllang:%global perllang 1} +# https://github.com/swig/swig/issues/2490 +%ifarch i686 +%{!?phplang:%global phplang 0} +%else %{!?phplang:%global phplang 1} +%endif %{!?rubylang:%global rubylang 1} %{!?python3lang:%global python3lang 1} @@ -51,7 +56,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 3%{?dist} +Release: 4%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -341,6 +346,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Feb 02 2023 Jitka Plesnikova - 4.1.1-4 +- Disable PHP test on i686 + * Sat Jan 21 2023 Fedora Release Engineering - 4.1.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 4043e54fe78dee34a1065e73a2a7fd94118b365f Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Wed, 15 Mar 2023 20:18:51 -0600 Subject: [PATCH 16/54] Add patch to support octave 8.1 --- 2512.patch | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ swig.spec | 7 ++++- 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 2512.patch diff --git a/2512.patch b/2512.patch new file mode 100644 index 0000000..8563775 --- /dev/null +++ b/2512.patch @@ -0,0 +1,81 @@ +From 8d211ca6732cd0745b196b63ceeedc6cd4f5225c Mon Sep 17 00:00:00 2001 +From: Andrea L +Date: Tue, 14 Mar 2023 22:08:30 +0100 +Subject: [PATCH 1/3] Update octruntime.swg to work with Octave v8.1.0 + +--- + Lib/octave/octruntime.swg | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg +index e76151f146b..3a41ba02576 100644 +--- a/Lib/octave/octruntime.swg ++++ b/Lib/octave/octruntime.swg +@@ -318,8 +318,10 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { + SWIG_InitializeModule(0); + SWIG_PropagateClientData(); + +-#if SWIG_OCTAVE_PREREQ(6,0,0) ++if SWIG_OCTAVE_PREREQ(8,0,0) + octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); ++ octave_function *me = tree_eval.current_function(); ++#elif SWIG_OCTAVE_PREREQ(6,0,0) octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); + octave::call_stack& stack = tree_eval.get_call_stack(); + octave_function *me = stack.current_function(); + #elif SWIG_OCTAVE_PREREQ(4,4,0) + +From e8fa1a5018b7ec2c52f98d2161331f3f17489c83 Mon Sep 17 00:00:00 2001 +From: Andrea L +Date: Tue, 14 Mar 2023 22:13:21 +0100 +Subject: [PATCH 2/3] Update octrun.swg to work with Octave v8.1.0 + +--- + Lib/octave/octrun.swg | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg +index 2973318c44c..27389d57731 100644 +--- a/Lib/octave/octrun.swg ++++ b/Lib/octave/octrun.swg +@@ -1630,8 +1630,12 @@ SWIGRUNTIME void SWIG_Octave_LinkGlobalValue(std::string name) { + octave::interpreter *interp = octave::interpreter::the_interpreter (); + interp->assign(name, interp->global_varval(name)); + octave::tree_evaluator& tree_eval = interp->get_evaluator(); ++#if SWIG_OCTAVE_PREREQ(8,0,0) ++ std::shared_ptr stackFrame = tree_eval.get_current_stack_frame(); ++#else + octave::call_stack& callStack = tree_eval.get_call_stack(); +- std::shared_ptr stackFrame = callStack.get_current_stack_frame(); ++ std::shared_ptr stackFrame = tree_eval.get_current_stack_frame(); ++#endif + octave::symbol_record sym=symscope.lookup_symbol(name); + stackFrame->mark_global(sym); + #else + +From ae072d6585bc95ca16cdc0e19f4e227a2ba0a2eb Mon Sep 17 00:00:00 2001 +From: Andrea L +Date: Tue, 14 Mar 2023 22:38:21 +0100 +Subject: [PATCH 3/3] Update octruntime.swg + +--- + Lib/octave/octruntime.swg | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg +index 3a41ba02576..94e2ca4fb9b 100644 +--- a/Lib/octave/octruntime.swg ++++ b/Lib/octave/octruntime.swg +@@ -318,10 +318,11 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { + SWIG_InitializeModule(0); + SWIG_PropagateClientData(); + +-if SWIG_OCTAVE_PREREQ(8,0,0) ++#if SWIG_OCTAVE_PREREQ(8,0,0) + octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); + octave_function *me = tree_eval.current_function(); +-#elif SWIG_OCTAVE_PREREQ(6,0,0) octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); ++#elif SWIG_OCTAVE_PREREQ(6,0,0) ++ octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); + octave::call_stack& stack = tree_eval.get_call_stack(); + octave_function *me = stack.current_function(); + #elif SWIG_OCTAVE_PREREQ(4,4,0) diff --git a/swig.spec b/swig.spec index c656294..c854efb 100644 --- a/swig.spec +++ b/swig.spec @@ -56,7 +56,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 4%{?dist} +Release: 5%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -68,6 +68,8 @@ Source3: ccache-swig.sh Source4: ccache-swig.csh %endif Patch0: swig-configure-c99.patch +# Octave 8.1 support +Patch1: https://patch-diff.githubusercontent.com/raw/swig/swig/pull/2512.patch BuildRequires: coreutils BuildRequires: findutils @@ -346,6 +348,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Mar 16 2023 Orion Poplawski - 4.1.1-5 +- Add patch to support octave 8.1 + * Thu Feb 02 2023 Jitka Plesnikova - 4.1.1-4 - Disable PHP test on i686 From bad99c26676cebd0492c53aec8a38585d79b9111 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 27 Mar 2023 11:58:59 +0200 Subject: [PATCH 17/54] Use local copy of Octave 8.1 patch --- 2512.patch => swig-octave-8.1.patch | 0 swig.spec | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) rename 2512.patch => swig-octave-8.1.patch (100%) diff --git a/2512.patch b/swig-octave-8.1.patch similarity index 100% rename from 2512.patch rename to swig-octave-8.1.patch diff --git a/swig.spec b/swig.spec index c854efb..574a61c 100644 --- a/swig.spec +++ b/swig.spec @@ -69,7 +69,8 @@ Source4: ccache-swig.csh %endif Patch0: swig-configure-c99.patch # Octave 8.1 support -Patch1: https://patch-diff.githubusercontent.com/raw/swig/swig/pull/2512.patch +# https://patch-diff.githubusercontent.com/raw/swig/swig/pull/2512.patch +Patch1: swig-octave-8.1.patch BuildRequires: coreutils BuildRequires: findutils From 1e5ff9449ea0b21294e610a012dae37c895c0004 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Sat, 8 Apr 2023 17:10:50 -0600 Subject: [PATCH 18/54] Rebuild with octave 8.1.0 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 574a61c..c488fa6 100644 --- a/swig.spec +++ b/swig.spec @@ -56,7 +56,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 5%{?dist} +Release: 6%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -349,6 +349,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Apr 08 2023 Orion Poplawski - 4.1.1-6 +- Rebuild with octave 8.1.0 + * Thu Mar 16 2023 Orion Poplawski - 4.1.1-5 - Add patch to support octave 8.1 From 3b57be16db46bf1f3a563e561c8a2366535475c6 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Tue, 20 Jun 2023 08:45:17 -0600 Subject: [PATCH 19/54] Enable OCaml support. Add patch for OCaml 5.0.0. --- swig-ocaml-5.0.patch | 43 +++++++++++++++++++++++++++++++++++++++++++ swig.spec | 21 +++++++++++++++++++-- 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 swig-ocaml-5.0.patch diff --git a/swig-ocaml-5.0.patch b/swig-ocaml-5.0.patch new file mode 100644 index 0000000..820921a --- /dev/null +++ b/swig-ocaml-5.0.patch @@ -0,0 +1,43 @@ +--- swig-4.1.1/Lib/ocaml/ocamlrundec.swg.orig 2022-11-30 00:35:05.000000000 -0700 ++++ swig-4.1.1/Lib/ocaml/ocamlrundec.swg 2023-07-04 07:09:10.733716151 -0600 +@@ -14,7 +14,7 @@ SWIGEXT { + #else + #define SWIGEXT + #endif +-#define value caml_value_t ++#define caml_value_t value + #define CAML_VALUE caml_value_t + #define CAML_NAME_SPACE + #include +@@ -80,11 +80,15 @@ SWIGEXT { + /* Also an l-value. */ + #endif + ++#ifndef CAML_LOCAL_ROOTS ++#define CAML_LOCAL_ROOTS caml_local_roots ++#endif ++ + #ifdef CAMLreturn0 + #undef CAMLreturn0 + #endif + #define CAMLreturn0 do{ \ +- caml_local_roots = caml__frame; \ ++ CAML_LOCAL_ROOTS = caml__frame; \ + return; \ + }while (0) + +@@ -93,12 +97,12 @@ SWIGEXT { + #endif + #define CAMLreturn(result) do{ \ + caml_value_t caml__temp_result = (result); \ +- caml_local_roots = caml__frame; \ ++ CAML_LOCAL_ROOTS = caml__frame; \ + return (caml__temp_result); \ + }while(0) + + #define CAMLreturn_type(result) do{ \ +- caml_local_roots = caml__frame; \ ++ CAML_LOCAL_ROOTS = caml__frame; \ + return result; \ + }while(0) + diff --git a/swig.spec b/swig.spec index c488fa6..7647153 100644 --- a/swig.spec +++ b/swig.spec @@ -13,6 +13,7 @@ %global octave 0 %global Rlang 0 %global javalang 0 +%global ocamllang 0 %endif %{!?tcl:%global tcl 1} @@ -26,6 +27,7 @@ %endif %{!?rubylang:%global rubylang 1} %{!?python3lang:%global python3lang 1} +%{!?ocamllang:%global ocamllang 1} %if 0%{?rhel} %{!?golang:%global golang 0} @@ -56,9 +58,9 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 6%{?dist} +Release: 7%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause -URL: http://swig.sourceforge.net/ +URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz # Define the part of man page sections Source1: description.h2m @@ -71,6 +73,9 @@ Patch0: swig-configure-c99.patch # Octave 8.1 support # https://patch-diff.githubusercontent.com/raw/swig/swig/pull/2512.patch Patch1: swig-octave-8.1.patch +# OCaml 5.0 support +# https://github.com/swig/swig/pull/2649 +Patch2: swig-ocaml-5.0.patch BuildRequires: coreutils BuildRequires: findutils @@ -127,6 +132,10 @@ BuildRequires: java, java-devel %if %{phplang} BuildRequires: php, php-devel %endif +%if %{ocamllang} +BuildRequires: ocaml +BuildRequires: ocaml-findlib +%endif %description Simplified Wrapper and Interface Generator (SWIG) is a software @@ -189,7 +198,11 @@ done # AC_CHECK_PROGS requires just the name, so use for configure # --with-python3=python3 --with-2to3=2to3 %configure \ +%if %{ocamllang} + --with-ocaml \ +%else --without-ocaml \ +%endif %if %{python3lang} --with-python3=python3 \ --with-2to3=2to3 \ @@ -349,6 +362,10 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Jun 20 2023 Jerry James - 4.1.1-7 +- Enable OCaml support +- Add patch for OCaml 5.0.0 + * Sat Apr 08 2023 Orion Poplawski - 4.1.1-6 - Rebuild with octave 8.1.0 From a88b74f2ba694451202f76a3a3eb5ec65360ecfb Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 11 Jul 2023 11:28:03 +0100 Subject: [PATCH 20/54] ExcludeArch i686 (https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/SPML7CUBSZNI36NLXGVHEG7DNHU3EWOJ/) --- swig.spec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/swig.spec b/swig.spec index 7647153..dcf0584 100644 --- a/swig.spec +++ b/swig.spec @@ -27,7 +27,12 @@ %endif %{!?rubylang:%global rubylang 1} %{!?python3lang:%global python3lang 1} +# OCaml packages not built on i686 since OCaml 5 / Fedora 39. +%ifarch %{ix86} +%{!?ocamllang:%global ocamllang 0} +%else %{!?ocamllang:%global ocamllang 1} +%endif %if 0%{?rhel} %{!?golang:%global golang 0} From cfa2a17e5e8aca08fd6d03ba4e22b2c87f614618 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 11 Jul 2023 23:51:07 +0100 Subject: [PATCH 21/54] OCaml 5.0 rebuild for Fedora 39 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index dcf0584..67f6ca2 100644 --- a/swig.spec +++ b/swig.spec @@ -63,7 +63,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 7%{?dist} +Release: 8%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -367,6 +367,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Jul 11 2023 Richard W.M. Jones - 4.1.1-8 +- OCaml 5.0 rebuild for Fedora 39 + * Tue Jun 20 2023 Jerry James - 4.1.1-7 - Enable OCaml support - Add patch for OCaml 5.0.0 From 4fcc29d0a37f586cb1f616551d25e78bd753cbd5 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Wed, 12 Jul 2023 22:21:36 -0600 Subject: [PATCH 22/54] Add patch for python 3.12 --- swig-python-3.12.patch | 22 ++++++++++++++++++++++ swig.spec | 5 +++++ 2 files changed, 27 insertions(+) create mode 100644 swig-python-3.12.patch diff --git a/swig-python-3.12.patch b/swig-python-3.12.patch new file mode 100644 index 0000000..6958adc --- /dev/null +++ b/swig-python-3.12.patch @@ -0,0 +1,22 @@ +Immortal objects now have a fixed refcount, which makes this test fail: + +checking python testcase langobj (with run test) +Traceback (most recent call last): + File "/builddir/build/BUILD/swig-4.1.1/Examples/test-suite/python/./langobj_runme.py", line 13, in + raise RuntimeError +RuntimeError +make[1]: *** [Makefile:123: langobj.cpptest] Error 1 + +See https://peps.python.org/pep-0683/ for more information. + +--- swig-4.1.1/Examples/test-suite/python/langobj_runme.py.orig 2022-11-30 00:35:05.000000000 -0700 ++++ swig-4.1.1/Examples/test-suite/python/langobj_runme.py 2023-07-12 15:48:18.745852293 -0600 +@@ -2,7 +2,7 @@ import sys + from langobj import * + + +-x = "hello" ++x = (1,2) + rx = sys.getrefcount(x) + v = identity(x) + rv = sys.getrefcount(v) diff --git a/swig.spec b/swig.spec index 67f6ca2..cc49db2 100644 --- a/swig.spec +++ b/swig.spec @@ -81,6 +81,8 @@ Patch1: swig-octave-8.1.patch # OCaml 5.0 support # https://github.com/swig/swig/pull/2649 Patch2: swig-ocaml-5.0.patch +# Fix a test that is broken with python 3.12 +Patch3: swig-python-3.12.patch BuildRequires: coreutils BuildRequires: findutils @@ -367,6 +369,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Jul 12 2023 Jerry James - 4.1.1-8 +- Add patch for python 3.12 + * Tue Jul 11 2023 Richard W.M. Jones - 4.1.1-8 - OCaml 5.0 rebuild for Fedora 39 From 3cfcd3fd2e39aa5b3f7dc58a4d3ffff96a6be27d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jul 2023 02:57:15 +0000 Subject: [PATCH 23/54] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index cc49db2..53a4d90 100644 --- a/swig.spec +++ b/swig.spec @@ -63,7 +63,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 8%{?dist} +Release: 9%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -369,6 +369,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Jul 22 2023 Fedora Release Engineering - 4.1.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Wed Jul 12 2023 Jerry James - 4.1.1-8 - Add patch for python 3.12 From bef85e9f4f221808647bc4fb577d5e86ea58c3f4 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 5 Oct 2023 15:52:16 +0100 Subject: [PATCH 24/54] OCaml 5.1 rebuild for Fedora 40 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 53a4d90..b225d3a 100644 --- a/swig.spec +++ b/swig.spec @@ -63,7 +63,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 9%{?dist} +Release: 10%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -369,6 +369,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Oct 05 2023 Richard W.M. Jones - 4.1.1-10 +- OCaml 5.1 rebuild for Fedora 40 + * Sat Jul 22 2023 Fedora Release Engineering - 4.1.1-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 6463e51599f3551c378e853798ce5c50fa233754 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 11 Oct 2023 08:56:02 +0200 Subject: [PATCH 25/54] Fix PHP test, it fails with PHP 8.3 --- ...case-director_finalizer-with-PHP-8.3.patch | 40 +++++++++++++++++++ swig.spec | 7 +++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch diff --git a/swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch b/swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch new file mode 100644 index 0000000..de9fc33 --- /dev/null +++ b/swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch @@ -0,0 +1,40 @@ +From 4a85d0479392f5e1d5ec8623b66d7b52b8209043 Mon Sep 17 00:00:00 2001 +From: Olly Betts +Date: Wed, 11 Oct 2023 09:16:06 +1300 +Subject: [PATCH] [PHP] Fix testcase director_finalizer with PHP 8.3 + +Fixes #2685 +--- + Examples/test-suite/php/director_finalizer_runme.php | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Examples/test-suite/php/director_finalizer_runme.php b/Examples/test-suite/php/director_finalizer_runme.php +index f3a0c2c40..689f445d2 100644 +--- a/Examples/test-suite/php/director_finalizer_runme.php ++++ b/Examples/test-suite/php/director_finalizer_runme.php +@@ -17,7 +17,7 @@ class MyFoo extends Foo { + if ($this->thisown) { + $this->orStatus(2); + } +- if (method_exists(get_parent_class(), "__destruct")) { ++ if (method_exists(parent::class, "__destruct")) { + parent::__destruct(); + } + } +diff --git a/configure.ac b/configure.ac +index b9c1a2888..c06002872 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1835,7 +1835,7 @@ if test x"${PHPBIN}" = xno; then + PHP= + else + if test "x$PHPBIN" = xyes; then +- AC_CHECK_PROGS(PHP, [php8.1 php8.0 php7.4 php7.3 php7.2 php7.1 php7.0 php]) ++ AC_CHECK_PROGS(PHP, [php8.3 php8.2 php8.1 php8.0 php7.4 php7.3 php7.2 php7.1 php7.0 php]) + else + PHP=$PHPBIN + fi +-- +2.41.0 + diff --git a/swig.spec b/swig.spec index b225d3a..ebf6f42 100644 --- a/swig.spec +++ b/swig.spec @@ -63,7 +63,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 10%{?dist} +Release: 11%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -83,6 +83,8 @@ Patch1: swig-octave-8.1.patch Patch2: swig-ocaml-5.0.patch # Fix a test that is broken with python 3.12 Patch3: swig-python-3.12.patch +# Fix a test that is broken with PHP 8.3 +Patch4: swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch BuildRequires: coreutils BuildRequires: findutils @@ -369,6 +371,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Oct 11 2023 Jitka Plesnikova - 4.1.1-11 +- Fix PHP test, it fails with PHP 8.3 + * Thu Oct 05 2023 Richard W.M. Jones - 4.1.1-10 - OCaml 5.1 rebuild for Fedora 40 From d32feca3e62a18c5faef63d370caf1cd55042dfe Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Fri, 20 Oct 2023 14:04:28 +0200 Subject: [PATCH 26/54] Stop using Python's 2to3 --- swig.spec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/swig.spec b/swig.spec index ebf6f42..0fed7f3 100644 --- a/swig.spec +++ b/swig.spec @@ -63,7 +63,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 11%{?dist} +Release: 12%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -204,8 +204,6 @@ done # Disable maximum compile warnings when octave is supported, because Octave # code produces lots of the warnings demanded by strict ISO C and ISO C++. # It causes that log had more then 600M. -# AC_CHECK_PROGS requires just the name, so use for configure -# --with-python3=python3 --with-2to3=2to3 %configure \ %if %{ocamllang} --with-ocaml \ @@ -214,7 +212,6 @@ done %endif %if %{python3lang} --with-python3=python3 \ - --with-2to3=2to3 \ %else --without-python3 \ %endif @@ -371,6 +368,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Oct 20 2023 Jitka Plesnikova - 4.1.1-11 +- Stop using Python's 2to3 + * Wed Oct 11 2023 Jitka Plesnikova - 4.1.1-11 - Fix PHP test, it fails with PHP 8.3 From 8b63a5b179421b87d08398cc53f02f537cbae748 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 7 Dec 2023 19:29:08 +0100 Subject: [PATCH 27/54] Fix PHP director_classes testcase failures on x86 --- ...tor_classes-testcase-failures-on-x86.patch | 228 ++++++++++++++++++ swig.spec | 14 +- 2 files changed, 235 insertions(+), 7 deletions(-) create mode 100644 swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch diff --git a/swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch b/swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch new file mode 100644 index 0000000..5a8ced4 --- /dev/null +++ b/swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch @@ -0,0 +1,228 @@ +From 5f8b9135cc2de52369a509792db578156368932f Mon Sep 17 00:00:00 2001 +From: Olly Betts +Date: Sun, 19 Nov 2023 21:26:28 +1300 +Subject: [PATCH] Fix director_classes testcase failures on x86 + +Adjust the floating point constants to be 1.125 and 2.25 (which +can be exactly represented in base-2 floating point) instead of +1.1 and 2.2 (which can't). This avoids problems on platforms where +floating point calculations suffer from excess precision, the most +commonly used of which is x86 when using 387 FP instructions. +--- + .../test-suite/csharp/director_classes_runme.cs | 16 ++++++++-------- + Examples/test-suite/d/director_classes_runme.2.d | 16 ++++++++-------- + Examples/test-suite/director_classes.i | 8 ++++---- + .../test-suite/java/director_classes_runme.java | 16 ++++++++-------- + .../test-suite/php/director_classes_runme.php | 2 +- + 5 files changed, 29 insertions(+), 29 deletions(-) + +diff --git a/Examples/test-suite/csharp/director_classes_runme.cs b/Examples/test-suite/csharp/director_classes_runme.cs +index cea4949c6..25bb35968 100644 +--- a/Examples/test-suite/csharp/director_classes_runme.cs ++++ b/Examples/test-suite/csharp/director_classes_runme.cs +@@ -21,8 +21,8 @@ Base - FullyOverloaded(int 10) + Base - FullyOverloaded(bool 1) + Base - SemiOverloaded(int -678) + Base - SemiOverloaded(bool 1) +-Base - DefaultParms(10, 2.2) +-Base - DefaultParms(10, 1.1) ++Base - DefaultParms(10, 2.25) ++Base - DefaultParms(10, 1.125) + -------------------------------- + Derived - Val(444.555) + Derived - Ref(444.555) +@@ -32,8 +32,8 @@ Derived - FullyOverloaded(int 10) + Derived - FullyOverloaded(bool 1) + Derived - SemiOverloaded(int -678) + Base - SemiOverloaded(bool 1) +-Derived - DefaultParms(10, 2.2) +-Derived - DefaultParms(10, 1.1) ++Derived - DefaultParms(10, 2.25) ++Derived - DefaultParms(10, 1.125) + -------------------------------- + CSharpDerived - Val(444.555) + CSharpDerived - Ref(444.555) +@@ -43,8 +43,8 @@ CSharpDerived - FullyOverloaded(int 10) + CSharpDerived - FullyOverloaded(bool True) + CSharpDerived - SemiOverloaded(-678) + Base - SemiOverloaded(bool 1) +-CSharpDerived - DefaultParms(10, 2.2) +-CSharpDerived - DefaultParms(10, 1.1) ++CSharpDerived - DefaultParms(10, 2.25) ++CSharpDerived - DefaultParms(10, 1.125) + ------------ Finish ------------ + */ + +@@ -113,7 +113,7 @@ public class runme + if (myCaller.SemiOverloadedCall(true) != "Base" + "::SemiOverloaded(bool)") throw new Exception("failed"); + + // Default parameters methods test +- if (NAMESPACE + myCaller.DefaultParmsCall(10, 2.2) != myBase.GetType() + "::DefaultParms(int, double)") throw new Exception("failed"); ++ if (NAMESPACE + myCaller.DefaultParmsCall(10, 2.25) != myBase.GetType() + "::DefaultParms(int, double)") throw new Exception("failed"); + if (myBase.GetType() == typeof(CSharpDerived)) { // special handling for C# derived classes, there is no way to do this any other way + if (NAMESPACE + myCaller.DefaultParmsCall(10) != myBase.GetType() + "::DefaultParms(int, double)") throw new Exception("failed"); + } else { +@@ -182,7 +182,7 @@ public class CSharpDerived : Base + public override String DefaultParms(int x) + { + if (director_classes.PrintDebug) Console.WriteLine("CSharpDerived - DefaultParms({0})", x); +- return DefaultParms(x, 1.1/*use C++ default here*/); ++ return DefaultParms(x, 1.125/*use C++ default here*/); + } + } + +diff --git a/Examples/test-suite/d/director_classes_runme.2.d b/Examples/test-suite/d/director_classes_runme.2.d +index b16fa5461..5e9588b31 100644 +--- a/Examples/test-suite/d/director_classes_runme.2.d ++++ b/Examples/test-suite/d/director_classes_runme.2.d +@@ -23,8 +23,8 @@ + * Base - FullyOverloaded(bool 1) + * Base - SemiOverloaded(int -678) + * Base - SemiOverloaded(bool 1) +- * Base - DefaultParms(10, 2.2) +- * Base - DefaultParms(10, 1.1) ++ * Base - DefaultParms(10, 2.25) ++ * Base - DefaultParms(10, 1.125) + * -------------------------------- + * Derived - Val(444.555) + * Derived - Ref(444.555) +@@ -34,8 +34,8 @@ + * Derived - FullyOverloaded(bool 1) + * Derived - SemiOverloaded(int -678) + * Base - SemiOverloaded(bool 1) +- * Derived - DefaultParms(10, 2.2) +- * Derived - DefaultParms(10, 1.1) ++ * Derived - DefaultParms(10, 2.25) ++ * Derived - DefaultParms(10, 1.125) + * -------------------------------- + * DDerived - Val(444.555) + * DDerived - Ref(444.555) +@@ -45,8 +45,8 @@ + * DDerived - FullyOverloaded(bool true) + * DDerived - SemiOverloaded(-678) + * Base - SemiOverloaded(bool 1) +- * DDerived - DefaultParms(10, 2.2) +- * DDerived - DefaultParms(10, 1.1) ++ * DDerived - DefaultParms(10, 2.25) ++ * DDerived - DefaultParms(10, 1.125) + * ------------ Finish ------------ + */ + module director_classes_runme; +@@ -111,7 +111,7 @@ void makeCalls(Caller myCaller, Base myBase) { + enforce(myCaller.SemiOverloadedCall(true) == "Base" ~ "::SemiOverloaded(bool)", "[7] failed"); + + // Default parameters methods test +- enforce(myCaller.DefaultParmsCall(10, 2.2) == myBaseType ~ "::DefaultParms(int, double)", "[8] failed"); ++ enforce(myCaller.DefaultParmsCall(10, 2.25) == myBaseType ~ "::DefaultParms(int, double)", "[8] failed"); + if (myBase.classinfo == DDerived.classinfo) { // special handling for D derived classes, there is no other way to do this + enforce(myCaller.DefaultParmsCall(10) == myBaseType ~ "::DefaultParms(int, double)", "[9] failed"); + } else { +@@ -173,6 +173,6 @@ public class DDerived : Base { + // only here to ensure consistent behavior for calls from C++ and D code. + public override string DefaultParms(int x) { + if (PrintDebug) writefln("DDerived - DefaultParms(%s)", x); +- return DefaultParms(x, 1.1/*use C++ default here*/); ++ return DefaultParms(x, 1.125/*use C++ default here*/); + } + } +diff --git a/Examples/test-suite/director_classes.i b/Examples/test-suite/director_classes.i +index 52342bfc8..f8c4e68e2 100644 +--- a/Examples/test-suite/director_classes.i ++++ b/Examples/test-suite/director_classes.i +@@ -56,10 +56,10 @@ public: + virtual std::string SemiOverloaded(int x) { if (PrintDebug) std::cout << "Base - SemiOverloaded(int " << x << ")" << std::endl; return "Base::SemiOverloaded(int)"; } + virtual std::string SemiOverloaded(bool x) { if (PrintDebug) std::cout << "Base - SemiOverloaded(bool " << x << ")" << std::endl; return "Base::SemiOverloaded(bool)"; } + +- virtual std::string DefaultParms(int x, double y = 1.1) { ++ virtual std::string DefaultParms(int x, double y = 1.125) { + if (PrintDebug) std::cout << "Base - DefaultParms(" << x << ", " << y << ")" << std::endl; + std::string ret("Base::DefaultParms(int"); +- if (y!=1.1) ++ if (y!=1.125) + ret = ret + std::string(", double"); + ret = ret + std::string(")"); + return ret; +@@ -82,10 +82,10 @@ public: + virtual std::string SemiOverloaded(int x) { if (PrintDebug) std::cout << "Derived - SemiOverloaded(int " << x << ")" << std::endl; return "Derived::SemiOverloaded(int)"; } + // No SemiOverloaded(bool x) + +- virtual std::string DefaultParms(int x, double y = 1.1) { ++ virtual std::string DefaultParms(int x, double y = 1.125) { + if (PrintDebug) std::cout << "Derived - DefaultParms(" << x << ", " << y << ")" << std::endl; + std::string ret("Derived::DefaultParms(int"); +- if (y!=1.1) ++ if (y!=1.125) + ret = ret + std::string(", double"); + ret = ret + std::string(")"); + return ret; +diff --git a/Examples/test-suite/java/director_classes_runme.java b/Examples/test-suite/java/director_classes_runme.java +index 9ee6302de..292cded7f 100644 +--- a/Examples/test-suite/java/director_classes_runme.java ++++ b/Examples/test-suite/java/director_classes_runme.java +@@ -21,8 +21,8 @@ Base - FullyOverloaded(int 10) + Base - FullyOverloaded(bool 1) + Base - SemiOverloaded(int -678) + Base - SemiOverloaded(bool 1) +-Base - DefaultParms(10, 2.2) +-Base - DefaultParms(10, 1.1) ++Base - DefaultParms(10, 2.25) ++Base - DefaultParms(10, 1.125) + -------------------------------- + Derived - Val(444.555) + Derived - Ref(444.555) +@@ -32,8 +32,8 @@ Derived - FullyOverloaded(int 10) + Derived - FullyOverloaded(bool 1) + Derived - SemiOverloaded(int -678) + Base - SemiOverloaded(bool 1) +-Derived - DefaultParms(10, 2.2) +-Derived - DefaultParms(10, 1.1) ++Derived - DefaultParms(10, 2.25) ++Derived - DefaultParms(10, 1.125) + -------------------------------- + JavaDerived - Val(444.555) + JavaDerived - Ref(444.555) +@@ -43,8 +43,8 @@ JavaDerived - FullyOverloaded(int 10) + JavaDerived - FullyOverloaded(bool True) + JavaDerived - SemiOverloaded(-678) + Base - SemiOverloaded(bool 1) +-JavaDerived - DefaultParms(10, 2.2) +-JavaDerived - DefaultParms(10, 1.1) ++JavaDerived - DefaultParms(10, 2.25) ++JavaDerived - DefaultParms(10, 1.125) + ------------ Finish ------------ + */ + +@@ -128,7 +128,7 @@ public class director_classes_runme { + if (!myCaller.SemiOverloadedCall(true).equals("Base" + "::SemiOverloaded(bool)")) throw new RuntimeException("failed"); + + // Default parameters methods test +- if (!(myCaller.DefaultParmsCall(10, 2.2)).equals(baseSimpleName + "::DefaultParms(int, double)")) throw new RuntimeException("failed"); ++ if (!(myCaller.DefaultParmsCall(10, 2.25)).equals(baseSimpleName + "::DefaultParms(int, double)")) throw new RuntimeException("failed"); + if (myBase instanceof JavaDerived) { // special handling for Java derived classes, there is no way to do this any other way + if (!myCaller.DefaultParmsCall(10).equals(baseSimpleName + "::DefaultParms(int, double)")) throw new RuntimeException("failed"); + } else { +@@ -210,7 +210,7 @@ class JavaDerived extends Base + public String DefaultParms(int x) + { + if (director_classes.getPrintDebug()) System.out.println("JavaDerived - DefaultParms(" + x + ")"); +- return DefaultParms(x, 1.1/*use C++ default here*/); ++ return DefaultParms(x, 1.125/*use C++ default here*/); + } + } + +diff --git a/Examples/test-suite/php/director_classes_runme.php b/Examples/test-suite/php/director_classes_runme.php +index 170e10f26..c25d85d17 100644 +--- a/Examples/test-suite/php/director_classes_runme.php ++++ b/Examples/test-suite/php/director_classes_runme.php +@@ -31,7 +31,7 @@ if (PHP_MAJOR_VERSION < 8) { + $rv = preg_replace('/Base/', 'PHPDerived', $rv); + return $rv; + } +- function DefaultParms($x, $y = 1.1) { ++ function DefaultParms($x, $y = 1.125) { + $rv = parent::DefaultParms($x, $y); + $rv = preg_replace('/Base/', 'PHPDerived', $rv); + return $rv; +-- +2.43.0 + diff --git a/swig.spec b/swig.spec index 0fed7f3..4b5243b 100644 --- a/swig.spec +++ b/swig.spec @@ -19,12 +19,7 @@ %{!?tcl:%global tcl 1} %{!?lualang:%global lualang 1} %{!?perllang:%global perllang 1} -# https://github.com/swig/swig/issues/2490 -%ifarch i686 -%{!?phplang:%global phplang 0} -%else %{!?phplang:%global phplang 1} -%endif %{!?rubylang:%global rubylang 1} %{!?python3lang:%global python3lang 1} # OCaml packages not built on i686 since OCaml 5 / Fedora 39. @@ -63,7 +58,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 12%{?dist} +Release: 13%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -85,6 +80,8 @@ Patch2: swig-ocaml-5.0.patch Patch3: swig-python-3.12.patch # Fix a test that is broken with PHP 8.3 Patch4: swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch +# Fix director_classes testcase failures on x86 +Patch5: swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch BuildRequires: coreutils BuildRequires: findutils @@ -368,7 +365,10 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog -* Fri Oct 20 2023 Jitka Plesnikova - 4.1.1-11 +* Thu Dec 07 2023 Jitka Plesnikova - 4.1.1-13 +- Fix PHP director_classes testcase failures on x86 + +* Fri Oct 20 2023 Jitka Plesnikova - 4.1.1-12 - Stop using Python's 2to3 * Wed Oct 11 2023 Jitka Plesnikova - 4.1.1-11 From ed86a8d4911583b5282863422ba9b59fca95a6e8 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 12 Dec 2023 12:25:11 +0000 Subject: [PATCH 28/54] OCaml 5.1.1 rebuild for Fedora 40 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 4b5243b..6800c8e 100644 --- a/swig.spec +++ b/swig.spec @@ -58,7 +58,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 13%{?dist} +Release: 14%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -365,6 +365,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Dec 12 2023 Richard W.M. Jones - 4.1.1-14 +- OCaml 5.1.1 rebuild for Fedora 40 + * Thu Dec 07 2023 Jitka Plesnikova - 4.1.1-13 - Fix PHP director_classes testcase failures on x86 From f77b41fc2ebad319ae54a1dfb3aeef1046c9b371 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 18 Dec 2023 13:34:53 +0000 Subject: [PATCH 29/54] OCaml 5.1.1 + s390x code gen fix for Fedora 40 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 6800c8e..a60db55 100644 --- a/swig.spec +++ b/swig.spec @@ -58,7 +58,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.1.1 -Release: 14%{?dist} +Release: 15%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -365,6 +365,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Dec 18 2023 Richard W.M. Jones - 4.1.1-15 +- OCaml 5.1.1 + s390x code gen fix for Fedora 40 + * Tue Dec 12 2023 Richard W.M. Jones - 4.1.1-14 - OCaml 5.1.1 rebuild for Fedora 40 From 5a53f0765316cb20f06256356b81e8da6fcf7a70 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 23 Jan 2024 12:50:48 +0100 Subject: [PATCH 30/54] 4.2.0 bump (rhbz#2256296) --- .gitignore | 1 + sources | 2 +- ...ndling-friend-constructor-destructor.patch | 105 ++++++++ swig-Friends-testcase-fix.patch | 30 +++ ...tor_classes-testcase-failures-on-x86.patch | 228 ------------------ ...case-director_finalizer-with-PHP-8.3.patch | 40 --- ...n-fix-add-in-missing-SwigPyIterator_.patch | 39 +++ swig-Ruby-Adjust-external-runtime-fix.patch | 108 +++++++++ ...Ruby-Tcl-Fix-external-runtime-output.patch | 90 +++++++ swig-configure-c99.patch | 52 ---- swig-octave-8.1.patch | 81 ------- swig-python-3.12.patch | 22 -- swig.spec | 30 ++- 13 files changed, 391 insertions(+), 437 deletions(-) create mode 100644 swig-Fix-seg-fault-handling-friend-constructor-destructor.patch create mode 100644 swig-Friends-testcase-fix.patch delete mode 100644 swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch delete mode 100644 swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch create mode 100644 swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch create mode 100644 swig-Ruby-Adjust-external-runtime-fix.patch create mode 100644 swig-Ruby-Tcl-Fix-external-runtime-output.patch delete mode 100644 swig-configure-c99.patch delete mode 100644 swig-octave-8.1.patch delete mode 100644 swig-python-3.12.patch diff --git a/.gitignore b/.gitignore index 7e4e128..d3d48ad 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ swig-2.0.0.tar.gz /swig-4.0.2.tar.gz /swig-4.1.0.tar.gz /swig-4.1.1.tar.gz +/swig-4.2.0.tar.gz diff --git a/sources b/sources index fbb7d4d..6c6bc19 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.1.1.tar.gz) = 1cea1918455a75ebc9b2653dd1715bd5dcd974554955f324295c6a6f14c0a715651b221b85fad4a8af5197e0c75bfe7b590bc6ba7178c26245fbbd9a7e110100 +SHA512 (swig-4.2.0.tar.gz) = b7f508b25bc6e882ed6123f6c7ad12b02a7b74de09ac6e5789968e9c2f51407d1e3dafd5ea495087b4fb0f447ecce17e6070471479c67c4265166d8342a10862 diff --git a/swig-Fix-seg-fault-handling-friend-constructor-destructor.patch b/swig-Fix-seg-fault-handling-friend-constructor-destructor.patch new file mode 100644 index 0000000..2ebc211 --- /dev/null +++ b/swig-Fix-seg-fault-handling-friend-constructor-destructor.patch @@ -0,0 +1,105 @@ +From c7ab6a01c6582b92db9328e2f3daa67081f05f6e Mon Sep 17 00:00:00 2001 +From: William S Fulton +Date: Fri, 12 Jan 2024 08:45:26 +0000 +Subject: [PATCH] Fix seg fault handling friend constructor/destructor + declarations + +Closes #2749 +--- + CHANGES.current | 3 ++ + Examples/test-suite/friends.i | 34 +++++++++++++++++++++++ + Examples/test-suite/php/friends_runme.php | 2 +- + Source/CParse/parser.y | 5 +++- + 4 files changed, 42 insertions(+), 2 deletions(-) + +#diff --git a/CHANGES.current b/CHANGES.current +#index 030aa0b19..f235d9a09 100644 +#--- a/CHANGES.current +#+++ b/CHANGES.current +#@@ -7,6 +7,9 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ +# Version 4.2.1 (in progress) +# =========================== +# +#+2024-01-12: wsfulton +#+ #2749 Fix seg fault handling friend constructor/destructor declarations. +#+ +# 2024-01-12: olly +# [Ruby,Tcl] #2751 Fix -external-runtime output to define +# SWIG_snprintf (bug introduced in 4.2.0). +diff --git a/Examples/test-suite/friends.i b/Examples/test-suite/friends.i +index a2a5151e0..879f3b3bc 100644 +--- a/Examples/test-suite/friends.i ++++ b/Examples/test-suite/friends.i +@@ -148,6 +148,40 @@ + } + } + ++%inline %{ ++ class CModelParameterSpecies; ++ class CModelParameterCompartment { ++ CModelParameterSpecies *species; ++ public: ++ int getSpeciesVal(); ++ CModelParameterCompartment(); ++ ~CModelParameterCompartment(); ++ }; ++ class CModelParameterSpecies ++ { ++ int private_val; ++ public: ++ // Friend function-declarations are silently ignored (including constructor and destructor declarations) ++ friend CModelParameterCompartment::~CModelParameterCompartment(); ++ friend CModelParameterCompartment::CModelParameterCompartment(); ++ friend int CModelParameterCompartment::getSpeciesVal(); ++ }; ++%} ++ ++%{ ++CModelParameterCompartment::~CModelParameterCompartment() { ++ species = new CModelParameterSpecies(); ++ species->private_val = 1; ++} ++CModelParameterCompartment::CModelParameterCompartment() { ++ species->private_val = 0; ++ delete species; ++} ++int CModelParameterCompartment::getSpeciesVal() { ++ return species->private_val; ++} ++%} ++ + // Use this version with extra qualifiers to test SWIG as some compilers accept this + namespace ns1 { + namespace ns2 { +diff --git a/Examples/test-suite/php/friends_runme.php b/Examples/test-suite/php/friends_runme.php +index f0ef5df58..2e5d3b1fd 100644 +--- a/Examples/test-suite/php/friends_runme.php ++++ b/Examples/test-suite/php/friends_runme.php +@@ -3,7 +3,7 @@ + require "tests.php"; + + check::functions(array('globalscope','mix','get_val2','get_val3','bas','baz','bar','get_val1','set')); +-check::classes(array('friends','Foo','A','B','D_i','D_d')); ++check::classes(array('friends','Foo','A','B','D_i','D_d','CModelParameterCompartment','CModelParameterSpecies')); + // No new vars + check::globals(array()); + +diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y +index e5a79f128..edf38c360 100644 +--- a/Source/CParse/parser.y ++++ b/Source/CParse/parser.y +@@ -4732,7 +4732,10 @@ cpp_member : cpp_member_no_dox + */ + + cpp_constructor_decl : storage_class type LPAREN parms RPAREN ctor_end { +- if (inclass || extendmode) { ++ /* Cannot be a constructor declaration/definition if parsed as a friend destructor/constructor ++ or a badly declared friend function without return type */ ++ int isfriend = Strstr($1, "friend") != NULL; ++ if (!isfriend && (inclass || extendmode)) { + String *name = SwigType_templateprefix($2); /* A constructor can optionally be declared with template parameters before C++20, strip these off */ + SwigType *decl = NewStringEmpty(); + $$ = new_node("constructor"); +-- +2.43.0 + diff --git a/swig-Friends-testcase-fix.patch b/swig-Friends-testcase-fix.patch new file mode 100644 index 0000000..7862c55 --- /dev/null +++ b/swig-Friends-testcase-fix.patch @@ -0,0 +1,30 @@ +From 2d39d558734cd49b960410c8894b76aa59af60cc Mon Sep 17 00:00:00 2001 +From: William S Fulton +Date: Tue, 16 Jan 2024 08:24:46 +0000 +Subject: [PATCH] Friends testcase fix + +--- + Examples/test-suite/friends.i | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Examples/test-suite/friends.i b/Examples/test-suite/friends.i +index e37a8c11f..0efffd1cb 100644 +--- a/Examples/test-suite/friends.i ++++ b/Examples/test-suite/friends.i +@@ -166,11 +166,11 @@ + %} + + %{ +-CModelParameterCompartment::~CModelParameterCompartment() { ++CModelParameterCompartment::CModelParameterCompartment() { + species = new CModelParameterSpecies(); + species->private_val = 1; + } +-CModelParameterCompartment::CModelParameterCompartment() { ++CModelParameterCompartment::~CModelParameterCompartment() { + species->private_val = 0; + delete species; + } +-- +2.43.0 + diff --git a/swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch b/swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch deleted file mode 100644 index 5a8ced4..0000000 --- a/swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch +++ /dev/null @@ -1,228 +0,0 @@ -From 5f8b9135cc2de52369a509792db578156368932f Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Sun, 19 Nov 2023 21:26:28 +1300 -Subject: [PATCH] Fix director_classes testcase failures on x86 - -Adjust the floating point constants to be 1.125 and 2.25 (which -can be exactly represented in base-2 floating point) instead of -1.1 and 2.2 (which can't). This avoids problems on platforms where -floating point calculations suffer from excess precision, the most -commonly used of which is x86 when using 387 FP instructions. ---- - .../test-suite/csharp/director_classes_runme.cs | 16 ++++++++-------- - Examples/test-suite/d/director_classes_runme.2.d | 16 ++++++++-------- - Examples/test-suite/director_classes.i | 8 ++++---- - .../test-suite/java/director_classes_runme.java | 16 ++++++++-------- - .../test-suite/php/director_classes_runme.php | 2 +- - 5 files changed, 29 insertions(+), 29 deletions(-) - -diff --git a/Examples/test-suite/csharp/director_classes_runme.cs b/Examples/test-suite/csharp/director_classes_runme.cs -index cea4949c6..25bb35968 100644 ---- a/Examples/test-suite/csharp/director_classes_runme.cs -+++ b/Examples/test-suite/csharp/director_classes_runme.cs -@@ -21,8 +21,8 @@ Base - FullyOverloaded(int 10) - Base - FullyOverloaded(bool 1) - Base - SemiOverloaded(int -678) - Base - SemiOverloaded(bool 1) --Base - DefaultParms(10, 2.2) --Base - DefaultParms(10, 1.1) -+Base - DefaultParms(10, 2.25) -+Base - DefaultParms(10, 1.125) - -------------------------------- - Derived - Val(444.555) - Derived - Ref(444.555) -@@ -32,8 +32,8 @@ Derived - FullyOverloaded(int 10) - Derived - FullyOverloaded(bool 1) - Derived - SemiOverloaded(int -678) - Base - SemiOverloaded(bool 1) --Derived - DefaultParms(10, 2.2) --Derived - DefaultParms(10, 1.1) -+Derived - DefaultParms(10, 2.25) -+Derived - DefaultParms(10, 1.125) - -------------------------------- - CSharpDerived - Val(444.555) - CSharpDerived - Ref(444.555) -@@ -43,8 +43,8 @@ CSharpDerived - FullyOverloaded(int 10) - CSharpDerived - FullyOverloaded(bool True) - CSharpDerived - SemiOverloaded(-678) - Base - SemiOverloaded(bool 1) --CSharpDerived - DefaultParms(10, 2.2) --CSharpDerived - DefaultParms(10, 1.1) -+CSharpDerived - DefaultParms(10, 2.25) -+CSharpDerived - DefaultParms(10, 1.125) - ------------ Finish ------------ - */ - -@@ -113,7 +113,7 @@ public class runme - if (myCaller.SemiOverloadedCall(true) != "Base" + "::SemiOverloaded(bool)") throw new Exception("failed"); - - // Default parameters methods test -- if (NAMESPACE + myCaller.DefaultParmsCall(10, 2.2) != myBase.GetType() + "::DefaultParms(int, double)") throw new Exception("failed"); -+ if (NAMESPACE + myCaller.DefaultParmsCall(10, 2.25) != myBase.GetType() + "::DefaultParms(int, double)") throw new Exception("failed"); - if (myBase.GetType() == typeof(CSharpDerived)) { // special handling for C# derived classes, there is no way to do this any other way - if (NAMESPACE + myCaller.DefaultParmsCall(10) != myBase.GetType() + "::DefaultParms(int, double)") throw new Exception("failed"); - } else { -@@ -182,7 +182,7 @@ public class CSharpDerived : Base - public override String DefaultParms(int x) - { - if (director_classes.PrintDebug) Console.WriteLine("CSharpDerived - DefaultParms({0})", x); -- return DefaultParms(x, 1.1/*use C++ default here*/); -+ return DefaultParms(x, 1.125/*use C++ default here*/); - } - } - -diff --git a/Examples/test-suite/d/director_classes_runme.2.d b/Examples/test-suite/d/director_classes_runme.2.d -index b16fa5461..5e9588b31 100644 ---- a/Examples/test-suite/d/director_classes_runme.2.d -+++ b/Examples/test-suite/d/director_classes_runme.2.d -@@ -23,8 +23,8 @@ - * Base - FullyOverloaded(bool 1) - * Base - SemiOverloaded(int -678) - * Base - SemiOverloaded(bool 1) -- * Base - DefaultParms(10, 2.2) -- * Base - DefaultParms(10, 1.1) -+ * Base - DefaultParms(10, 2.25) -+ * Base - DefaultParms(10, 1.125) - * -------------------------------- - * Derived - Val(444.555) - * Derived - Ref(444.555) -@@ -34,8 +34,8 @@ - * Derived - FullyOverloaded(bool 1) - * Derived - SemiOverloaded(int -678) - * Base - SemiOverloaded(bool 1) -- * Derived - DefaultParms(10, 2.2) -- * Derived - DefaultParms(10, 1.1) -+ * Derived - DefaultParms(10, 2.25) -+ * Derived - DefaultParms(10, 1.125) - * -------------------------------- - * DDerived - Val(444.555) - * DDerived - Ref(444.555) -@@ -45,8 +45,8 @@ - * DDerived - FullyOverloaded(bool true) - * DDerived - SemiOverloaded(-678) - * Base - SemiOverloaded(bool 1) -- * DDerived - DefaultParms(10, 2.2) -- * DDerived - DefaultParms(10, 1.1) -+ * DDerived - DefaultParms(10, 2.25) -+ * DDerived - DefaultParms(10, 1.125) - * ------------ Finish ------------ - */ - module director_classes_runme; -@@ -111,7 +111,7 @@ void makeCalls(Caller myCaller, Base myBase) { - enforce(myCaller.SemiOverloadedCall(true) == "Base" ~ "::SemiOverloaded(bool)", "[7] failed"); - - // Default parameters methods test -- enforce(myCaller.DefaultParmsCall(10, 2.2) == myBaseType ~ "::DefaultParms(int, double)", "[8] failed"); -+ enforce(myCaller.DefaultParmsCall(10, 2.25) == myBaseType ~ "::DefaultParms(int, double)", "[8] failed"); - if (myBase.classinfo == DDerived.classinfo) { // special handling for D derived classes, there is no other way to do this - enforce(myCaller.DefaultParmsCall(10) == myBaseType ~ "::DefaultParms(int, double)", "[9] failed"); - } else { -@@ -173,6 +173,6 @@ public class DDerived : Base { - // only here to ensure consistent behavior for calls from C++ and D code. - public override string DefaultParms(int x) { - if (PrintDebug) writefln("DDerived - DefaultParms(%s)", x); -- return DefaultParms(x, 1.1/*use C++ default here*/); -+ return DefaultParms(x, 1.125/*use C++ default here*/); - } - } -diff --git a/Examples/test-suite/director_classes.i b/Examples/test-suite/director_classes.i -index 52342bfc8..f8c4e68e2 100644 ---- a/Examples/test-suite/director_classes.i -+++ b/Examples/test-suite/director_classes.i -@@ -56,10 +56,10 @@ public: - virtual std::string SemiOverloaded(int x) { if (PrintDebug) std::cout << "Base - SemiOverloaded(int " << x << ")" << std::endl; return "Base::SemiOverloaded(int)"; } - virtual std::string SemiOverloaded(bool x) { if (PrintDebug) std::cout << "Base - SemiOverloaded(bool " << x << ")" << std::endl; return "Base::SemiOverloaded(bool)"; } - -- virtual std::string DefaultParms(int x, double y = 1.1) { -+ virtual std::string DefaultParms(int x, double y = 1.125) { - if (PrintDebug) std::cout << "Base - DefaultParms(" << x << ", " << y << ")" << std::endl; - std::string ret("Base::DefaultParms(int"); -- if (y!=1.1) -+ if (y!=1.125) - ret = ret + std::string(", double"); - ret = ret + std::string(")"); - return ret; -@@ -82,10 +82,10 @@ public: - virtual std::string SemiOverloaded(int x) { if (PrintDebug) std::cout << "Derived - SemiOverloaded(int " << x << ")" << std::endl; return "Derived::SemiOverloaded(int)"; } - // No SemiOverloaded(bool x) - -- virtual std::string DefaultParms(int x, double y = 1.1) { -+ virtual std::string DefaultParms(int x, double y = 1.125) { - if (PrintDebug) std::cout << "Derived - DefaultParms(" << x << ", " << y << ")" << std::endl; - std::string ret("Derived::DefaultParms(int"); -- if (y!=1.1) -+ if (y!=1.125) - ret = ret + std::string(", double"); - ret = ret + std::string(")"); - return ret; -diff --git a/Examples/test-suite/java/director_classes_runme.java b/Examples/test-suite/java/director_classes_runme.java -index 9ee6302de..292cded7f 100644 ---- a/Examples/test-suite/java/director_classes_runme.java -+++ b/Examples/test-suite/java/director_classes_runme.java -@@ -21,8 +21,8 @@ Base - FullyOverloaded(int 10) - Base - FullyOverloaded(bool 1) - Base - SemiOverloaded(int -678) - Base - SemiOverloaded(bool 1) --Base - DefaultParms(10, 2.2) --Base - DefaultParms(10, 1.1) -+Base - DefaultParms(10, 2.25) -+Base - DefaultParms(10, 1.125) - -------------------------------- - Derived - Val(444.555) - Derived - Ref(444.555) -@@ -32,8 +32,8 @@ Derived - FullyOverloaded(int 10) - Derived - FullyOverloaded(bool 1) - Derived - SemiOverloaded(int -678) - Base - SemiOverloaded(bool 1) --Derived - DefaultParms(10, 2.2) --Derived - DefaultParms(10, 1.1) -+Derived - DefaultParms(10, 2.25) -+Derived - DefaultParms(10, 1.125) - -------------------------------- - JavaDerived - Val(444.555) - JavaDerived - Ref(444.555) -@@ -43,8 +43,8 @@ JavaDerived - FullyOverloaded(int 10) - JavaDerived - FullyOverloaded(bool True) - JavaDerived - SemiOverloaded(-678) - Base - SemiOverloaded(bool 1) --JavaDerived - DefaultParms(10, 2.2) --JavaDerived - DefaultParms(10, 1.1) -+JavaDerived - DefaultParms(10, 2.25) -+JavaDerived - DefaultParms(10, 1.125) - ------------ Finish ------------ - */ - -@@ -128,7 +128,7 @@ public class director_classes_runme { - if (!myCaller.SemiOverloadedCall(true).equals("Base" + "::SemiOverloaded(bool)")) throw new RuntimeException("failed"); - - // Default parameters methods test -- if (!(myCaller.DefaultParmsCall(10, 2.2)).equals(baseSimpleName + "::DefaultParms(int, double)")) throw new RuntimeException("failed"); -+ if (!(myCaller.DefaultParmsCall(10, 2.25)).equals(baseSimpleName + "::DefaultParms(int, double)")) throw new RuntimeException("failed"); - if (myBase instanceof JavaDerived) { // special handling for Java derived classes, there is no way to do this any other way - if (!myCaller.DefaultParmsCall(10).equals(baseSimpleName + "::DefaultParms(int, double)")) throw new RuntimeException("failed"); - } else { -@@ -210,7 +210,7 @@ class JavaDerived extends Base - public String DefaultParms(int x) - { - if (director_classes.getPrintDebug()) System.out.println("JavaDerived - DefaultParms(" + x + ")"); -- return DefaultParms(x, 1.1/*use C++ default here*/); -+ return DefaultParms(x, 1.125/*use C++ default here*/); - } - } - -diff --git a/Examples/test-suite/php/director_classes_runme.php b/Examples/test-suite/php/director_classes_runme.php -index 170e10f26..c25d85d17 100644 ---- a/Examples/test-suite/php/director_classes_runme.php -+++ b/Examples/test-suite/php/director_classes_runme.php -@@ -31,7 +31,7 @@ if (PHP_MAJOR_VERSION < 8) { - $rv = preg_replace('/Base/', 'PHPDerived', $rv); - return $rv; - } -- function DefaultParms($x, $y = 1.1) { -+ function DefaultParms($x, $y = 1.125) { - $rv = parent::DefaultParms($x, $y); - $rv = preg_replace('/Base/', 'PHPDerived', $rv); - return $rv; --- -2.43.0 - diff --git a/swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch b/swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch deleted file mode 100644 index de9fc33..0000000 --- a/swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 4a85d0479392f5e1d5ec8623b66d7b52b8209043 Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Wed, 11 Oct 2023 09:16:06 +1300 -Subject: [PATCH] [PHP] Fix testcase director_finalizer with PHP 8.3 - -Fixes #2685 ---- - Examples/test-suite/php/director_finalizer_runme.php | 2 +- - configure.ac | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Examples/test-suite/php/director_finalizer_runme.php b/Examples/test-suite/php/director_finalizer_runme.php -index f3a0c2c40..689f445d2 100644 ---- a/Examples/test-suite/php/director_finalizer_runme.php -+++ b/Examples/test-suite/php/director_finalizer_runme.php -@@ -17,7 +17,7 @@ class MyFoo extends Foo { - if ($this->thisown) { - $this->orStatus(2); - } -- if (method_exists(get_parent_class(), "__destruct")) { -+ if (method_exists(parent::class, "__destruct")) { - parent::__destruct(); - } - } -diff --git a/configure.ac b/configure.ac -index b9c1a2888..c06002872 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1835,7 +1835,7 @@ if test x"${PHPBIN}" = xno; then - PHP= - else - if test "x$PHPBIN" = xyes; then -- AC_CHECK_PROGS(PHP, [php8.1 php8.0 php7.4 php7.3 php7.2 php7.1 php7.0 php]) -+ AC_CHECK_PROGS(PHP, [php8.3 php8.2 php8.1 php8.0 php7.4 php7.3 php7.2 php7.1 php7.0 php]) - else - PHP=$PHPBIN - fi --- -2.41.0 - diff --git a/swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch b/swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch new file mode 100644 index 0000000..8b286ab --- /dev/null +++ b/swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch @@ -0,0 +1,39 @@ +From 95140fa417a4350e2a0ff51c6933667199949442 Mon Sep 17 00:00:00 2001 +From: William S Fulton +Date: Mon, 8 Jan 2024 19:31:49 +0000 +Subject: [PATCH] Python Regression fix - add in missing SwigPyIterator_T + fragment + +Closes #2744 +--- + CHANGES.current | 3 +++ + Lib/python/std_map.i | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +#diff --git a/CHANGES.current b/CHANGES.current +#index b88b2f563..c925cdda5 100644 +#--- a/CHANGES.current +#+++ b/CHANGES.current +#@@ -7,3 +7,6 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ +# Version 4.2.1 (in progress) +# =========================== +# +#+2024-01-06: wsfulton +#+ [Python] #2744 Regression fix - add in missing SwigPyIterator_T fragment for +#+ SwigPyIteratorClosed_T when using %import on an instantiated std::map. +diff --git a/Lib/python/std_map.i b/Lib/python/std_map.i +index 3f8f3b06b..954e7eb2d 100644 +--- a/Lib/python/std_map.i ++++ b/Lib/python/std_map.i +@@ -2,7 +2,7 @@ + Maps + */ + +-%fragment("StdMapCommonTraits","header",fragment="StdSequenceTraits") ++%fragment("StdMapCommonTraits","header",fragment="StdSequenceTraits",fragment="SwigPyIterator_T") + { + namespace swig { + template +-- +2.43.0 + diff --git a/swig-Ruby-Adjust-external-runtime-fix.patch b/swig-Ruby-Adjust-external-runtime-fix.patch new file mode 100644 index 0000000..0e7fc67 --- /dev/null +++ b/swig-Ruby-Adjust-external-runtime-fix.patch @@ -0,0 +1,108 @@ +From 84a2c45d66f0334f8fe67077311383af11a2d5c8 Mon Sep 17 00:00:00 2001 +From: Olly Betts +Date: Fri, 12 Jan 2024 16:15:31 +1300 +Subject: [PATCH] Adjust -external-runtime fix + +The original fix broke C#, D and Java which don't seem to include +swigrun.swg, so split out the SWIG_snprintf macros into a new file +and explicitly include it for the external runtime. + +See #2751. +--- + Lib/swig.swg | 2 ++ + Lib/swigcompat.swg | 23 +++++++++++++++++++++++ + Lib/swigrun.swg | 17 ----------------- + Source/Modules/main.cxx | 9 +++++++++ + 4 files changed, 34 insertions(+), 17 deletions(-) + create mode 100644 Lib/swigcompat.swg + +diff --git a/Lib/swig.swg b/Lib/swig.swg +index faa75baa9..db7e08cf6 100644 +--- a/Lib/swig.swg ++++ b/Lib/swig.swg +@@ -710,3 +710,5 @@ template T SwigValueInit() { + #endif + %} + #endif ++ ++%insert("runtime") "swigcompat.swg" +diff --git a/Lib/swigcompat.swg b/Lib/swigcompat.swg +new file mode 100644 +index 000000000..7d29b7539 +--- /dev/null ++++ b/Lib/swigcompat.swg +@@ -0,0 +1,23 @@ ++/* ----------------------------------------------------------------------------- ++ * swigcompat.swg ++ * ++ * Macros to provide support compatibility with older C and C++ standards. ++ * ----------------------------------------------------------------------------- */ ++ ++/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF ++ * if you're missing it. ++ */ ++#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \ ++ (defined __cplusplus && __cplusplus >= 201103L) || \ ++ defined SWIG_HAVE_SNPRINTF) && \ ++ !defined SWIG_NO_SNPRINTF ++# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A) ++# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B) ++#else ++/* Fallback versions ignore the buffer size, but most of our uses either have a ++ * fixed maximum possible size or dynamically allocate a buffer that's large ++ * enough. ++ */ ++# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A) ++# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B) ++#endif +diff --git a/Lib/swigrun.swg b/Lib/swigrun.swg +index 80e41bb50..824185c02 100644 +--- a/Lib/swigrun.swg ++++ b/Lib/swigrun.swg +@@ -181,23 +181,6 @@ SWIGINTERNINLINE int SWIG_CheckState(int r) { + # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) + #endif + +-/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF +- * if you're missing it. +- */ +-#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \ +- (defined __cplusplus && __cplusplus >= 201103L) || \ +- defined SWIG_HAVE_SNPRINTF) && \ +- !defined SWIG_NO_SNPRINTF +-# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A) +-# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B) +-#else +-/* Fallback versions ignore the buffer size, but most of our uses either have a +- * fixed maximum possible size or dynamically allocate a buffer that's large +- * enough. +- */ +-# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A) +-# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B) +-#endif + + #include + +diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx +index 8a44921ad..76b4f9d28 100644 +--- a/Source/Modules/main.cxx ++++ b/Source/Modules/main.cxx +@@ -379,6 +379,15 @@ static void SWIG_dump_runtime() { + Swig_banner(runtime); + Printf(runtime, "\n"); + ++ s = Swig_include_sys("swigcompat.swg"); ++ if (!s) { ++ Printf(stderr, "*** Unable to open 'swigcompat.swg'\n"); ++ Delete(runtime); ++ Exit(EXIT_FAILURE); ++ } ++ Printf(runtime, "%s", s); ++ Delete(s); ++ + s = Swig_include_sys("swiglabels.swg"); + if (!s) { + Printf(stderr, "*** Unable to open 'swiglabels.swg'\n"); +-- +2.43.0 + diff --git a/swig-Ruby-Tcl-Fix-external-runtime-output.patch b/swig-Ruby-Tcl-Fix-external-runtime-output.patch new file mode 100644 index 0000000..7edaa44 --- /dev/null +++ b/swig-Ruby-Tcl-Fix-external-runtime-output.patch @@ -0,0 +1,90 @@ +From db50dc8154c5c63593e80c5cc5f96d6303dd0214 Mon Sep 17 00:00:00 2001 +From: Olly Betts +Date: Fri, 12 Jan 2024 14:08:35 +1300 +Subject: [PATCH] [Ruby,Tcl] Fix -external-runtime output + +Fix -external-runtime output to define SWIG_snprintf (bug introduced in +4.2.0). + +Fixes #2751 +--- + CHANGES.current | 4 ++++ + Lib/swig.swg | 21 --------------------- + Lib/swigrun.swg | 17 +++++++++++++++++ + 3 files changed, 21 insertions(+), 21 deletions(-) + +#diff --git a/CHANGES.current b/CHANGES.current +#index fefa0f942..8d68a9687 100644 +#--- a/CHANGES.current +#+++ b/CHANGES.current +#@@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ +# Version 4.2.1 (in progress) +# =========================== +# +#+2024-01-12: olly +#+ [Ruby,Tcl] #2751 Fix -external-runtime output to define +#+ SWIG_snprintf (bug introduced in 4.2.0). +#+ +# 2024-01-12: olly +# Improve preprocessor warning for use of an undefined function-like +# macro. SWIG now warns: +diff --git a/Lib/swig.swg b/Lib/swig.swg +index ce5163685..faa75baa9 100644 +--- a/Lib/swig.swg ++++ b/Lib/swig.swg +@@ -710,24 +710,3 @@ template T SwigValueInit() { + #endif + %} + #endif +- +-%insert("runtime") %{ +-/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF +- * if you're missing it. +- */ +-#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \ +- (defined __cplusplus && __cplusplus >= 201103L) || \ +- defined SWIG_HAVE_SNPRINTF) && \ +- !defined SWIG_NO_SNPRINTF +-# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A) +-# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B) +-#else +-/* Fallback versions ignore the buffer size, but most of our uses either have a +- * fixed maximum possible size or dynamically allocate a buffer that's large +- * enough. +- */ +-# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A) +-# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B) +-#endif +- +-%} +diff --git a/Lib/swigrun.swg b/Lib/swigrun.swg +index 824185c02..80e41bb50 100644 +--- a/Lib/swigrun.swg ++++ b/Lib/swigrun.swg +@@ -181,6 +181,23 @@ SWIGINTERNINLINE int SWIG_CheckState(int r) { + # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) + #endif + ++/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF ++ * if you're missing it. ++ */ ++#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \ ++ (defined __cplusplus && __cplusplus >= 201103L) || \ ++ defined SWIG_HAVE_SNPRINTF) && \ ++ !defined SWIG_NO_SNPRINTF ++# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A) ++# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B) ++#else ++/* Fallback versions ignore the buffer size, but most of our uses either have a ++ * fixed maximum possible size or dynamically allocate a buffer that's large ++ * enough. ++ */ ++# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A) ++# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B) ++#endif + + #include + +-- +2.43.0 + diff --git a/swig-configure-c99.patch b/swig-configure-c99.patch deleted file mode 100644 index b1d42c9..0000000 --- a/swig-configure-c99.patch +++ /dev/null @@ -1,52 +0,0 @@ -Add missing #include directives to obtain additional function -prototypes. This avoids altering the result of this test with C99 -compilers which do not support implicit function declarations. - -Submitted upstream: - -diff --git a/CCache/configure b/CCache/configure -index 829db3db32ca442a..66f60da79446541e 100755 ---- a/CCache/configure -+++ b/CCache/configure -@@ -4135,6 +4135,9 @@ else $as_nop - - #include - #include -+#include -+#include -+#include - void foo(const char *format, ...) { - va_list ap; - int len; -@@ -4149,7 +4152,7 @@ void foo(const char *format, ...) { - - exit(0); - } --main() { foo("hello"); } -+int main(void) { foo("hello"); } - - _ACEOF - if ac_fn_c_try_run "$LINENO" -diff --git a/CCache/configure.ac b/CCache/configure.ac -index 2db3553ce796ec21..9afd49e8370d4cac 100644 ---- a/CCache/configure.ac -+++ b/CCache/configure.ac -@@ -63,6 +63,9 @@ AC_CACHE_CHECK([for C99 vsnprintf],ccache_cv_HAVE_C99_VSNPRINTF,[ - AC_RUN_IFELSE([AC_LANG_SOURCE([[ - #include - #include -+#include -+#include -+#include - void foo(const char *format, ...) { - va_list ap; - int len; -@@ -77,7 +80,7 @@ void foo(const char *format, ...) { - - exit(0); - } --main() { foo("hello"); } -+int main(void) { foo("hello"); } - ]])],[ccache_cv_HAVE_C99_VSNPRINTF=yes],[ccache_cv_HAVE_C99_VSNPRINTF=no],[ccache_cv_HAVE_C99_VSNPRINTF=cross])]) - if test x"$ccache_cv_HAVE_C99_VSNPRINTF" = x"yes"; then - AC_DEFINE(HAVE_C99_VSNPRINTF, 1, [ ]) diff --git a/swig-octave-8.1.patch b/swig-octave-8.1.patch deleted file mode 100644 index 8563775..0000000 --- a/swig-octave-8.1.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 8d211ca6732cd0745b196b63ceeedc6cd4f5225c Mon Sep 17 00:00:00 2001 -From: Andrea L -Date: Tue, 14 Mar 2023 22:08:30 +0100 -Subject: [PATCH 1/3] Update octruntime.swg to work with Octave v8.1.0 - ---- - Lib/octave/octruntime.swg | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index e76151f146b..3a41ba02576 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -318,8 +318,10 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - SWIG_InitializeModule(0); - SWIG_PropagateClientData(); - --#if SWIG_OCTAVE_PREREQ(6,0,0) -+if SWIG_OCTAVE_PREREQ(8,0,0) - octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); -+ octave_function *me = tree_eval.current_function(); -+#elif SWIG_OCTAVE_PREREQ(6,0,0) octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); - octave::call_stack& stack = tree_eval.get_call_stack(); - octave_function *me = stack.current_function(); - #elif SWIG_OCTAVE_PREREQ(4,4,0) - -From e8fa1a5018b7ec2c52f98d2161331f3f17489c83 Mon Sep 17 00:00:00 2001 -From: Andrea L -Date: Tue, 14 Mar 2023 22:13:21 +0100 -Subject: [PATCH 2/3] Update octrun.swg to work with Octave v8.1.0 - ---- - Lib/octave/octrun.swg | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index 2973318c44c..27389d57731 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -1630,8 +1630,12 @@ SWIGRUNTIME void SWIG_Octave_LinkGlobalValue(std::string name) { - octave::interpreter *interp = octave::interpreter::the_interpreter (); - interp->assign(name, interp->global_varval(name)); - octave::tree_evaluator& tree_eval = interp->get_evaluator(); -+#if SWIG_OCTAVE_PREREQ(8,0,0) -+ std::shared_ptr stackFrame = tree_eval.get_current_stack_frame(); -+#else - octave::call_stack& callStack = tree_eval.get_call_stack(); -- std::shared_ptr stackFrame = callStack.get_current_stack_frame(); -+ std::shared_ptr stackFrame = tree_eval.get_current_stack_frame(); -+#endif - octave::symbol_record sym=symscope.lookup_symbol(name); - stackFrame->mark_global(sym); - #else - -From ae072d6585bc95ca16cdc0e19f4e227a2ba0a2eb Mon Sep 17 00:00:00 2001 -From: Andrea L -Date: Tue, 14 Mar 2023 22:38:21 +0100 -Subject: [PATCH 3/3] Update octruntime.swg - ---- - Lib/octave/octruntime.swg | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index 3a41ba02576..94e2ca4fb9b 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -318,10 +318,11 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - SWIG_InitializeModule(0); - SWIG_PropagateClientData(); - --if SWIG_OCTAVE_PREREQ(8,0,0) -+#if SWIG_OCTAVE_PREREQ(8,0,0) - octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); - octave_function *me = tree_eval.current_function(); --#elif SWIG_OCTAVE_PREREQ(6,0,0) octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); -+#elif SWIG_OCTAVE_PREREQ(6,0,0) -+ octave::tree_evaluator& tree_eval = octave::interpreter::the_interpreter()->get_evaluator(); - octave::call_stack& stack = tree_eval.get_call_stack(); - octave_function *me = stack.current_function(); - #elif SWIG_OCTAVE_PREREQ(4,4,0) diff --git a/swig-python-3.12.patch b/swig-python-3.12.patch deleted file mode 100644 index 6958adc..0000000 --- a/swig-python-3.12.patch +++ /dev/null @@ -1,22 +0,0 @@ -Immortal objects now have a fixed refcount, which makes this test fail: - -checking python testcase langobj (with run test) -Traceback (most recent call last): - File "/builddir/build/BUILD/swig-4.1.1/Examples/test-suite/python/./langobj_runme.py", line 13, in - raise RuntimeError -RuntimeError -make[1]: *** [Makefile:123: langobj.cpptest] Error 1 - -See https://peps.python.org/pep-0683/ for more information. - ---- swig-4.1.1/Examples/test-suite/python/langobj_runme.py.orig 2022-11-30 00:35:05.000000000 -0700 -+++ swig-4.1.1/Examples/test-suite/python/langobj_runme.py 2023-07-12 15:48:18.745852293 -0600 -@@ -2,7 +2,7 @@ import sys - from langobj import * - - --x = "hello" -+x = (1,2) - rx = sys.getrefcount(x) - v = identity(x) - rv = sys.getrefcount(v) diff --git a/swig.spec b/swig.spec index a60db55..c464780 100644 --- a/swig.spec +++ b/swig.spec @@ -57,8 +57,8 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.1.1 -Release: 15%{?dist} +Version: 4.2.0 +Release: 1%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -69,19 +69,20 @@ Source2: description-ccache.h2m Source3: ccache-swig.sh Source4: ccache-swig.csh %endif -Patch0: swig-configure-c99.patch -# Octave 8.1 support -# https://patch-diff.githubusercontent.com/raw/swig/swig/pull/2512.patch -Patch1: swig-octave-8.1.patch # OCaml 5.0 support # https://github.com/swig/swig/pull/2649 -Patch2: swig-ocaml-5.0.patch -# Fix a test that is broken with python 3.12 -Patch3: swig-python-3.12.patch -# Fix a test that is broken with PHP 8.3 -Patch4: swig-PHP-Fix-testcase-director_finalizer-with-PHP-8.3.patch -# Fix director_classes testcase failures on x86 -Patch5: swig-PHP-Fix-director_classes-testcase-failures-on-x86.patch +Patch0: swig-ocaml-5.0.patch +# Fix missing fragment dependency, in upstream since 4.2.1 +# https://github.com/swig/swig/pull/2744 +Patch1: swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch +# Fix -external-runtime output, in upstream since 4.2.1 +# https://github.com/swig/swig/pull/2751 +Patch2: swig-Ruby-Tcl-Fix-external-runtime-output.patch +Patch3: swig-Ruby-Adjust-external-runtime-fix.patch +# Fix seg fault handling friend constructor/destructor declarations +# https://github.com/swig/swig/issues/2749 +Patch4: swig-Fix-seg-fault-handling-friend-constructor-destructor.patch +Patch5: swig-Friends-testcase-fix.patch BuildRequires: coreutils BuildRequires: findutils @@ -365,6 +366,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Jan 23 2024 Jitka Plesnikova - 4.2.0-1 +- 4.2.0 bump + * Mon Dec 18 2023 Richard W.M. Jones - 4.1.1-15 - OCaml 5.1.1 + s390x code gen fix for Fedora 40 From 48a62aa0308bfeddb664c873857a6989eee87b83 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 26 Feb 2024 13:37:19 +0100 Subject: [PATCH 31/54] 4.2.1 bump (rhbz#2265786) --- .gitignore | 1 + sources | 2 +- ...ndling-friend-constructor-destructor.patch | 105 ----------------- swig-Friends-testcase-fix.patch | 30 ----- ...n-fix-add-in-missing-SwigPyIterator_.patch | 39 ------- swig-Ruby-Adjust-external-runtime-fix.patch | 108 ------------------ ...Ruby-Tcl-Fix-external-runtime-output.patch | 90 --------------- swig-ocaml-5.0.patch | 43 ------- swig.spec | 19 +-- 9 files changed, 6 insertions(+), 431 deletions(-) delete mode 100644 swig-Fix-seg-fault-handling-friend-constructor-destructor.patch delete mode 100644 swig-Friends-testcase-fix.patch delete mode 100644 swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch delete mode 100644 swig-Ruby-Adjust-external-runtime-fix.patch delete mode 100644 swig-Ruby-Tcl-Fix-external-runtime-output.patch delete mode 100644 swig-ocaml-5.0.patch diff --git a/.gitignore b/.gitignore index d3d48ad..3a819d9 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ swig-2.0.0.tar.gz /swig-4.1.0.tar.gz /swig-4.1.1.tar.gz /swig-4.2.0.tar.gz +/swig-4.2.1.tar.gz diff --git a/sources b/sources index 6c6bc19..e92004d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.2.0.tar.gz) = b7f508b25bc6e882ed6123f6c7ad12b02a7b74de09ac6e5789968e9c2f51407d1e3dafd5ea495087b4fb0f447ecce17e6070471479c67c4265166d8342a10862 +SHA512 (swig-4.2.1.tar.gz) = 019dee5a46d57e1030eef47cd5d007ccaadbdcd4e53cd30d7c795f0118ecf4406a78185534502c81c5f6d7bac0713256e7e19b20b5a2d14e2c552219edbaf5cf diff --git a/swig-Fix-seg-fault-handling-friend-constructor-destructor.patch b/swig-Fix-seg-fault-handling-friend-constructor-destructor.patch deleted file mode 100644 index 2ebc211..0000000 --- a/swig-Fix-seg-fault-handling-friend-constructor-destructor.patch +++ /dev/null @@ -1,105 +0,0 @@ -From c7ab6a01c6582b92db9328e2f3daa67081f05f6e Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Fri, 12 Jan 2024 08:45:26 +0000 -Subject: [PATCH] Fix seg fault handling friend constructor/destructor - declarations - -Closes #2749 ---- - CHANGES.current | 3 ++ - Examples/test-suite/friends.i | 34 +++++++++++++++++++++++ - Examples/test-suite/php/friends_runme.php | 2 +- - Source/CParse/parser.y | 5 +++- - 4 files changed, 42 insertions(+), 2 deletions(-) - -#diff --git a/CHANGES.current b/CHANGES.current -#index 030aa0b19..f235d9a09 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,9 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.2.1 (in progress) -# =========================== -# -#+2024-01-12: wsfulton -#+ #2749 Fix seg fault handling friend constructor/destructor declarations. -#+ -# 2024-01-12: olly -# [Ruby,Tcl] #2751 Fix -external-runtime output to define -# SWIG_snprintf (bug introduced in 4.2.0). -diff --git a/Examples/test-suite/friends.i b/Examples/test-suite/friends.i -index a2a5151e0..879f3b3bc 100644 ---- a/Examples/test-suite/friends.i -+++ b/Examples/test-suite/friends.i -@@ -148,6 +148,40 @@ - } - } - -+%inline %{ -+ class CModelParameterSpecies; -+ class CModelParameterCompartment { -+ CModelParameterSpecies *species; -+ public: -+ int getSpeciesVal(); -+ CModelParameterCompartment(); -+ ~CModelParameterCompartment(); -+ }; -+ class CModelParameterSpecies -+ { -+ int private_val; -+ public: -+ // Friend function-declarations are silently ignored (including constructor and destructor declarations) -+ friend CModelParameterCompartment::~CModelParameterCompartment(); -+ friend CModelParameterCompartment::CModelParameterCompartment(); -+ friend int CModelParameterCompartment::getSpeciesVal(); -+ }; -+%} -+ -+%{ -+CModelParameterCompartment::~CModelParameterCompartment() { -+ species = new CModelParameterSpecies(); -+ species->private_val = 1; -+} -+CModelParameterCompartment::CModelParameterCompartment() { -+ species->private_val = 0; -+ delete species; -+} -+int CModelParameterCompartment::getSpeciesVal() { -+ return species->private_val; -+} -+%} -+ - // Use this version with extra qualifiers to test SWIG as some compilers accept this - namespace ns1 { - namespace ns2 { -diff --git a/Examples/test-suite/php/friends_runme.php b/Examples/test-suite/php/friends_runme.php -index f0ef5df58..2e5d3b1fd 100644 ---- a/Examples/test-suite/php/friends_runme.php -+++ b/Examples/test-suite/php/friends_runme.php -@@ -3,7 +3,7 @@ - require "tests.php"; - - check::functions(array('globalscope','mix','get_val2','get_val3','bas','baz','bar','get_val1','set')); --check::classes(array('friends','Foo','A','B','D_i','D_d')); -+check::classes(array('friends','Foo','A','B','D_i','D_d','CModelParameterCompartment','CModelParameterSpecies')); - // No new vars - check::globals(array()); - -diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y -index e5a79f128..edf38c360 100644 ---- a/Source/CParse/parser.y -+++ b/Source/CParse/parser.y -@@ -4732,7 +4732,10 @@ cpp_member : cpp_member_no_dox - */ - - cpp_constructor_decl : storage_class type LPAREN parms RPAREN ctor_end { -- if (inclass || extendmode) { -+ /* Cannot be a constructor declaration/definition if parsed as a friend destructor/constructor -+ or a badly declared friend function without return type */ -+ int isfriend = Strstr($1, "friend") != NULL; -+ if (!isfriend && (inclass || extendmode)) { - String *name = SwigType_templateprefix($2); /* A constructor can optionally be declared with template parameters before C++20, strip these off */ - SwigType *decl = NewStringEmpty(); - $$ = new_node("constructor"); --- -2.43.0 - diff --git a/swig-Friends-testcase-fix.patch b/swig-Friends-testcase-fix.patch deleted file mode 100644 index 7862c55..0000000 --- a/swig-Friends-testcase-fix.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 2d39d558734cd49b960410c8894b76aa59af60cc Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Tue, 16 Jan 2024 08:24:46 +0000 -Subject: [PATCH] Friends testcase fix - ---- - Examples/test-suite/friends.i | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Examples/test-suite/friends.i b/Examples/test-suite/friends.i -index e37a8c11f..0efffd1cb 100644 ---- a/Examples/test-suite/friends.i -+++ b/Examples/test-suite/friends.i -@@ -166,11 +166,11 @@ - %} - - %{ --CModelParameterCompartment::~CModelParameterCompartment() { -+CModelParameterCompartment::CModelParameterCompartment() { - species = new CModelParameterSpecies(); - species->private_val = 1; - } --CModelParameterCompartment::CModelParameterCompartment() { -+CModelParameterCompartment::~CModelParameterCompartment() { - species->private_val = 0; - delete species; - } --- -2.43.0 - diff --git a/swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch b/swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch deleted file mode 100644 index 8b286ab..0000000 --- a/swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 95140fa417a4350e2a0ff51c6933667199949442 Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Mon, 8 Jan 2024 19:31:49 +0000 -Subject: [PATCH] Python Regression fix - add in missing SwigPyIterator_T - fragment - -Closes #2744 ---- - CHANGES.current | 3 +++ - Lib/python/std_map.i | 2 +- - 2 files changed, 4 insertions(+), 1 deletion(-) - -#diff --git a/CHANGES.current b/CHANGES.current -#index b88b2f563..c925cdda5 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,3 +7,6 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.2.1 (in progress) -# =========================== -# -#+2024-01-06: wsfulton -#+ [Python] #2744 Regression fix - add in missing SwigPyIterator_T fragment for -#+ SwigPyIteratorClosed_T when using %import on an instantiated std::map. -diff --git a/Lib/python/std_map.i b/Lib/python/std_map.i -index 3f8f3b06b..954e7eb2d 100644 ---- a/Lib/python/std_map.i -+++ b/Lib/python/std_map.i -@@ -2,7 +2,7 @@ - Maps - */ - --%fragment("StdMapCommonTraits","header",fragment="StdSequenceTraits") -+%fragment("StdMapCommonTraits","header",fragment="StdSequenceTraits",fragment="SwigPyIterator_T") - { - namespace swig { - template --- -2.43.0 - diff --git a/swig-Ruby-Adjust-external-runtime-fix.patch b/swig-Ruby-Adjust-external-runtime-fix.patch deleted file mode 100644 index 0e7fc67..0000000 --- a/swig-Ruby-Adjust-external-runtime-fix.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 84a2c45d66f0334f8fe67077311383af11a2d5c8 Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Fri, 12 Jan 2024 16:15:31 +1300 -Subject: [PATCH] Adjust -external-runtime fix - -The original fix broke C#, D and Java which don't seem to include -swigrun.swg, so split out the SWIG_snprintf macros into a new file -and explicitly include it for the external runtime. - -See #2751. ---- - Lib/swig.swg | 2 ++ - Lib/swigcompat.swg | 23 +++++++++++++++++++++++ - Lib/swigrun.swg | 17 ----------------- - Source/Modules/main.cxx | 9 +++++++++ - 4 files changed, 34 insertions(+), 17 deletions(-) - create mode 100644 Lib/swigcompat.swg - -diff --git a/Lib/swig.swg b/Lib/swig.swg -index faa75baa9..db7e08cf6 100644 ---- a/Lib/swig.swg -+++ b/Lib/swig.swg -@@ -710,3 +710,5 @@ template T SwigValueInit() { - #endif - %} - #endif -+ -+%insert("runtime") "swigcompat.swg" -diff --git a/Lib/swigcompat.swg b/Lib/swigcompat.swg -new file mode 100644 -index 000000000..7d29b7539 ---- /dev/null -+++ b/Lib/swigcompat.swg -@@ -0,0 +1,23 @@ -+/* ----------------------------------------------------------------------------- -+ * swigcompat.swg -+ * -+ * Macros to provide support compatibility with older C and C++ standards. -+ * ----------------------------------------------------------------------------- */ -+ -+/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF -+ * if you're missing it. -+ */ -+#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \ -+ (defined __cplusplus && __cplusplus >= 201103L) || \ -+ defined SWIG_HAVE_SNPRINTF) && \ -+ !defined SWIG_NO_SNPRINTF -+# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A) -+# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B) -+#else -+/* Fallback versions ignore the buffer size, but most of our uses either have a -+ * fixed maximum possible size or dynamically allocate a buffer that's large -+ * enough. -+ */ -+# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A) -+# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B) -+#endif -diff --git a/Lib/swigrun.swg b/Lib/swigrun.swg -index 80e41bb50..824185c02 100644 ---- a/Lib/swigrun.swg -+++ b/Lib/swigrun.swg -@@ -181,23 +181,6 @@ SWIGINTERNINLINE int SWIG_CheckState(int r) { - # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) - #endif - --/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF -- * if you're missing it. -- */ --#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \ -- (defined __cplusplus && __cplusplus >= 201103L) || \ -- defined SWIG_HAVE_SNPRINTF) && \ -- !defined SWIG_NO_SNPRINTF --# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A) --# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B) --#else --/* Fallback versions ignore the buffer size, but most of our uses either have a -- * fixed maximum possible size or dynamically allocate a buffer that's large -- * enough. -- */ --# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A) --# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B) --#endif - - #include - -diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx -index 8a44921ad..76b4f9d28 100644 ---- a/Source/Modules/main.cxx -+++ b/Source/Modules/main.cxx -@@ -379,6 +379,15 @@ static void SWIG_dump_runtime() { - Swig_banner(runtime); - Printf(runtime, "\n"); - -+ s = Swig_include_sys("swigcompat.swg"); -+ if (!s) { -+ Printf(stderr, "*** Unable to open 'swigcompat.swg'\n"); -+ Delete(runtime); -+ Exit(EXIT_FAILURE); -+ } -+ Printf(runtime, "%s", s); -+ Delete(s); -+ - s = Swig_include_sys("swiglabels.swg"); - if (!s) { - Printf(stderr, "*** Unable to open 'swiglabels.swg'\n"); --- -2.43.0 - diff --git a/swig-Ruby-Tcl-Fix-external-runtime-output.patch b/swig-Ruby-Tcl-Fix-external-runtime-output.patch deleted file mode 100644 index 7edaa44..0000000 --- a/swig-Ruby-Tcl-Fix-external-runtime-output.patch +++ /dev/null @@ -1,90 +0,0 @@ -From db50dc8154c5c63593e80c5cc5f96d6303dd0214 Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Fri, 12 Jan 2024 14:08:35 +1300 -Subject: [PATCH] [Ruby,Tcl] Fix -external-runtime output - -Fix -external-runtime output to define SWIG_snprintf (bug introduced in -4.2.0). - -Fixes #2751 ---- - CHANGES.current | 4 ++++ - Lib/swig.swg | 21 --------------------- - Lib/swigrun.swg | 17 +++++++++++++++++ - 3 files changed, 21 insertions(+), 21 deletions(-) - -#diff --git a/CHANGES.current b/CHANGES.current -#index fefa0f942..8d68a9687 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.2.1 (in progress) -# =========================== -# -#+2024-01-12: olly -#+ [Ruby,Tcl] #2751 Fix -external-runtime output to define -#+ SWIG_snprintf (bug introduced in 4.2.0). -#+ -# 2024-01-12: olly -# Improve preprocessor warning for use of an undefined function-like -# macro. SWIG now warns: -diff --git a/Lib/swig.swg b/Lib/swig.swg -index ce5163685..faa75baa9 100644 ---- a/Lib/swig.swg -+++ b/Lib/swig.swg -@@ -710,24 +710,3 @@ template T SwigValueInit() { - #endif - %} - #endif -- --%insert("runtime") %{ --/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF -- * if you're missing it. -- */ --#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \ -- (defined __cplusplus && __cplusplus >= 201103L) || \ -- defined SWIG_HAVE_SNPRINTF) && \ -- !defined SWIG_NO_SNPRINTF --# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A) --# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B) --#else --/* Fallback versions ignore the buffer size, but most of our uses either have a -- * fixed maximum possible size or dynamically allocate a buffer that's large -- * enough. -- */ --# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A) --# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B) --#endif -- --%} -diff --git a/Lib/swigrun.swg b/Lib/swigrun.swg -index 824185c02..80e41bb50 100644 ---- a/Lib/swigrun.swg -+++ b/Lib/swigrun.swg -@@ -181,6 +181,23 @@ SWIGINTERNINLINE int SWIG_CheckState(int r) { - # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) - #endif - -+/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF -+ * if you're missing it. -+ */ -+#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \ -+ (defined __cplusplus && __cplusplus >= 201103L) || \ -+ defined SWIG_HAVE_SNPRINTF) && \ -+ !defined SWIG_NO_SNPRINTF -+# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A) -+# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B) -+#else -+/* Fallback versions ignore the buffer size, but most of our uses either have a -+ * fixed maximum possible size or dynamically allocate a buffer that's large -+ * enough. -+ */ -+# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A) -+# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B) -+#endif - - #include - --- -2.43.0 - diff --git a/swig-ocaml-5.0.patch b/swig-ocaml-5.0.patch deleted file mode 100644 index 820921a..0000000 --- a/swig-ocaml-5.0.patch +++ /dev/null @@ -1,43 +0,0 @@ ---- swig-4.1.1/Lib/ocaml/ocamlrundec.swg.orig 2022-11-30 00:35:05.000000000 -0700 -+++ swig-4.1.1/Lib/ocaml/ocamlrundec.swg 2023-07-04 07:09:10.733716151 -0600 -@@ -14,7 +14,7 @@ SWIGEXT { - #else - #define SWIGEXT - #endif --#define value caml_value_t -+#define caml_value_t value - #define CAML_VALUE caml_value_t - #define CAML_NAME_SPACE - #include -@@ -80,11 +80,15 @@ SWIGEXT { - /* Also an l-value. */ - #endif - -+#ifndef CAML_LOCAL_ROOTS -+#define CAML_LOCAL_ROOTS caml_local_roots -+#endif -+ - #ifdef CAMLreturn0 - #undef CAMLreturn0 - #endif - #define CAMLreturn0 do{ \ -- caml_local_roots = caml__frame; \ -+ CAML_LOCAL_ROOTS = caml__frame; \ - return; \ - }while (0) - -@@ -93,12 +97,12 @@ SWIGEXT { - #endif - #define CAMLreturn(result) do{ \ - caml_value_t caml__temp_result = (result); \ -- caml_local_roots = caml__frame; \ -+ CAML_LOCAL_ROOTS = caml__frame; \ - return (caml__temp_result); \ - }while(0) - - #define CAMLreturn_type(result) do{ \ -- caml_local_roots = caml__frame; \ -+ CAML_LOCAL_ROOTS = caml__frame; \ - return result; \ - }while(0) - diff --git a/swig.spec b/swig.spec index c464780..c7e3b43 100644 --- a/swig.spec +++ b/swig.spec @@ -57,7 +57,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.2.0 +Version: 4.2.1 Release: 1%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ @@ -69,20 +69,6 @@ Source2: description-ccache.h2m Source3: ccache-swig.sh Source4: ccache-swig.csh %endif -# OCaml 5.0 support -# https://github.com/swig/swig/pull/2649 -Patch0: swig-ocaml-5.0.patch -# Fix missing fragment dependency, in upstream since 4.2.1 -# https://github.com/swig/swig/pull/2744 -Patch1: swig-Python-Regression-fix-add-in-missing-SwigPyIterator_.patch -# Fix -external-runtime output, in upstream since 4.2.1 -# https://github.com/swig/swig/pull/2751 -Patch2: swig-Ruby-Tcl-Fix-external-runtime-output.patch -Patch3: swig-Ruby-Adjust-external-runtime-fix.patch -# Fix seg fault handling friend constructor/destructor declarations -# https://github.com/swig/swig/issues/2749 -Patch4: swig-Fix-seg-fault-handling-friend-constructor-destructor.patch -Patch5: swig-Friends-testcase-fix.patch BuildRequires: coreutils BuildRequires: findutils @@ -366,6 +352,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Feb 26 2024 Jitka Plesnikova - 4.2.1-1 +- 4.2.1 bump (rhbz#2265786) + * Tue Jan 23 2024 Jitka Plesnikova - 4.2.0-1 - 4.2.0 bump From 2f97bd3f0cb8ac232c4cae376f2ff74302a20850 Mon Sep 17 00:00:00 2001 From: Jiri Vanek Date: Tue, 27 Feb 2024 18:16:53 +0100 Subject: [PATCH 32/54] Rebuilt for java-21-openjdk as system jdk https://fedoraproject.org/wiki/Changes/Java21 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index c7e3b43..660c9ec 100644 --- a/swig.spec +++ b/swig.spec @@ -58,7 +58,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.2.1 -Release: 1%{?dist} +Release: 2%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -352,6 +352,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Feb 27 2024 Jiri Vanek - 4.2.1-2 +- Rebuilt for java-21-openjdk as system jdk + * Mon Feb 26 2024 Jitka Plesnikova - 4.2.1-1 - 4.2.1 bump (rhbz#2265786) From daa3574f6d6ef859d20affe50e9e461a9e750674 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 7 Mar 2024 17:10:07 +0100 Subject: [PATCH 33/54] Temporary disable java tests (rhbz#2266693) --- ...ng-deprecated-API-in-doxygen-example.patch | 29 +++++ ...stem.runFinalization-removal-warning.patch | 118 ++++++++++++++++++ swig.spec | 8 +- 3 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch create mode 100644 swig-java-Suppress-System.runFinalization-removal-warning.patch diff --git a/swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch b/swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch new file mode 100644 index 0000000..44f449e --- /dev/null +++ b/swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch @@ -0,0 +1,29 @@ +From 8a19cb77adfec168236e2c63d1a9d1a310f886cc Mon Sep 17 00:00:00 2001 +From: Olly Betts +Date: Fri, 1 Mar 2024 10:40:12 +1300 +Subject: [PATCH] [java] Avoid using deprecated API in doxygen example + +Passing a String command to Runtime.exec() has been deprecated since +Java 18. +--- + Examples/java/doxygen/runme.java | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Examples/java/doxygen/runme.java b/Examples/java/doxygen/runme.java +index 6b7bb3d01..5970521c8 100644 +--- a/Examples/java/doxygen/runme.java ++++ b/Examples/java/doxygen/runme.java +@@ -33,8 +33,8 @@ public class runme { + System.out.println(" perimeter = " + shapes[i].perimeter()); + } + +- String command = "javadoc -quiet -public -d javadocs example.java Shape.java Circle.java Square.java RectangleInt.java"; +- System.out.println("\nRunning: " + command); ++ String[] command = {"javadoc", "-quiet", "-public", "-d", "javadocs", "example.java", "Shape.java", "Circle.java", "Square.java", "RectangleInt.java"}; ++ System.out.println("\nRunning: " + String.join(" ", command)); + Process p = Runtime.getRuntime().exec(command); + int exitCode = p.waitFor(); + System.out.println("javadoc exited with code " + exitCode); +-- +2.44.0 + diff --git a/swig-java-Suppress-System.runFinalization-removal-warning.patch b/swig-java-Suppress-System.runFinalization-removal-warning.patch new file mode 100644 index 0000000..2ad135d --- /dev/null +++ b/swig-java-Suppress-System.runFinalization-removal-warning.patch @@ -0,0 +1,118 @@ +From ec56bff28d3ad5acf82e139a83da8135aa2dd618 Mon Sep 17 00:00:00 2001 +From: Olly Betts +Date: Fri, 1 Mar 2024 10:42:22 +1300 +Subject: [PATCH] [java] Suppress System.runFinalization() removal warnings + +These need to be addressed, but meanwhile it makes running the testsuite +with OpenJDK 21 or newer unhelpfully noisy so suppressing it seems more +helpful than not. + +Closes: #2819 +--- + Examples/test-suite/java/cpp11_std_unique_ptr_runme.java | 2 ++ + Examples/test-suite/java/director_pass_by_value_runme.java | 2 ++ + Examples/test-suite/java/java_director_runme.java | 2 ++ + Examples/test-suite/java/li_boost_intrusive_ptr_runme.java | 4 ++++ + Examples/test-suite/java/li_boost_shared_ptr_runme.java | 4 ++++ + Examples/test-suite/java/li_std_auto_ptr_runme.java | 2 ++ + 6 files changed, 16 insertions(+) + +diff --git a/Examples/test-suite/java/cpp11_std_unique_ptr_runme.java b/Examples/test-suite/java/cpp11_std_unique_ptr_runme.java +index f90ef7041..c5622f65f 100644 +--- a/Examples/test-suite/java/cpp11_std_unique_ptr_runme.java ++++ b/Examples/test-suite/java/cpp11_std_unique_ptr_runme.java +@@ -10,6 +10,8 @@ public class cpp11_std_unique_ptr_runme { + } + } + ++ // Suppress warning about System.runFinalization() call. ++ @SuppressWarnings({"deprecation", "removal"}) + private static void WaitForGC() + { + System.gc(); +diff --git a/Examples/test-suite/java/director_pass_by_value_runme.java b/Examples/test-suite/java/director_pass_by_value_runme.java +index 1d34c3b55..48ccabf73 100644 +--- a/Examples/test-suite/java/director_pass_by_value_runme.java ++++ b/Examples/test-suite/java/director_pass_by_value_runme.java +@@ -12,6 +12,8 @@ public class director_pass_by_value_runme { + } + } + ++ // Suppress warning about System.runFinalization() call. ++ @SuppressWarnings({"deprecation", "removal"}) + private static void WaitForGC() { + System.gc(); + System.runFinalization(); +diff --git a/Examples/test-suite/java/java_director_runme.java b/Examples/test-suite/java/java_director_runme.java +index 2167d2621..40829463b 100644 +--- a/Examples/test-suite/java/java_director_runme.java ++++ b/Examples/test-suite/java/java_director_runme.java +@@ -13,6 +13,8 @@ public class java_director_runme { + } + } + ++ // Suppress warning about System.runFinalization() call. ++ @SuppressWarnings({"deprecation", "removal"}) + private static void WaitForGC() + { + System.gc(); +diff --git a/Examples/test-suite/java/li_boost_intrusive_ptr_runme.java b/Examples/test-suite/java/li_boost_intrusive_ptr_runme.java +index 750ec5067..721a78d56 100644 +--- a/Examples/test-suite/java/li_boost_intrusive_ptr_runme.java ++++ b/Examples/test-suite/java/li_boost_intrusive_ptr_runme.java +@@ -13,6 +13,8 @@ public class li_boost_intrusive_ptr_runme { + // Debugging flag + public final static boolean debug = false; + ++ // Suppress warning about System.runFinalization() call. ++ @SuppressWarnings({"deprecation", "removal"}) + private static void WaitForGC() + { + System.gc(); +@@ -23,6 +25,8 @@ public class li_boost_intrusive_ptr_runme { + } + } + ++ // Suppress warning about System.runFinalization() call. ++ @SuppressWarnings({"deprecation", "removal"}) + public static void main(String argv[]) + { + if (debug) +diff --git a/Examples/test-suite/java/li_boost_shared_ptr_runme.java b/Examples/test-suite/java/li_boost_shared_ptr_runme.java +index b513fade7..c1ec7f7bf 100644 +--- a/Examples/test-suite/java/li_boost_shared_ptr_runme.java ++++ b/Examples/test-suite/java/li_boost_shared_ptr_runme.java +@@ -13,6 +13,8 @@ public class li_boost_shared_ptr_runme { + // Debugging flag + public final static boolean debug = false; + ++ // Suppress warning about System.runFinalization() call. ++ @SuppressWarnings({"deprecation", "removal"}) + private static void WaitForGC() + { + System.gc(); +@@ -23,6 +25,8 @@ public class li_boost_shared_ptr_runme { + } + } + ++ // Suppress warning about System.runFinalization() call. ++ @SuppressWarnings({"deprecation", "removal"}) + public static void main(String argv[]) + { + if (debug) +diff --git a/Examples/test-suite/java/li_std_auto_ptr_runme.java b/Examples/test-suite/java/li_std_auto_ptr_runme.java +index 24e353ddc..978a72504 100644 +--- a/Examples/test-suite/java/li_std_auto_ptr_runme.java ++++ b/Examples/test-suite/java/li_std_auto_ptr_runme.java +@@ -10,6 +10,8 @@ public class li_std_auto_ptr_runme { + } + } + ++ // Suppress warning about System.runFinalization() call. ++ @SuppressWarnings({"deprecation", "removal"}) + private static void WaitForGC() + { + System.gc(); +-- +2.44.0 + diff --git a/swig.spec b/swig.spec index 660c9ec..85bca2f 100644 --- a/swig.spec +++ b/swig.spec @@ -45,7 +45,9 @@ %ifarch i686 %{!?javalang:%global javalang 0} %else -%{!?javalang:%global javalang 1} +# Temporary disable java tests, because they doesn't pass with java-21-openjdk +# https://github.com/swig/swig/issues/2767 +%{!?javalang:%global javalang 0} %endif # Do not run Go tests, they failed with 4.0.0 on ppc64le, s390 @@ -69,6 +71,9 @@ Source2: description-ccache.h2m Source3: ccache-swig.sh Source4: ccache-swig.csh %endif +# Small fixes for java tests, in upstream after 4.2.1 +Patch0: swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch +Patch1: swig-java-Suppress-System.runFinalization-removal-warning.patch BuildRequires: coreutils BuildRequires: findutils @@ -354,6 +359,7 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %changelog * Tue Feb 27 2024 Jiri Vanek - 4.2.1-2 - Rebuilt for java-21-openjdk as system jdk +- Temporary disable java tests (rhbz#2266693) * Mon Feb 26 2024 Jitka Plesnikova - 4.2.1-1 - 4.2.1 bump (rhbz#2265786) From abae643ad327aee0fb1e0d3ef458e6829258c42f Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Fri, 12 Apr 2024 09:57:42 +0200 Subject: [PATCH 34/54] disable PHP support on 32-bit --- swig.spec | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 85bca2f..78786dc 100644 --- a/swig.spec +++ b/swig.spec @@ -16,6 +16,12 @@ %global ocamllang 0 %endif +%if 0%{?fedora} >= 41 +%ifarch %{ix86} +%global phplang 0 +%endif +%endif + %{!?tcl:%global tcl 1} %{!?lualang:%global lualang 1} %{!?perllang:%global perllang 1} @@ -60,7 +66,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.2.1 -Release: 2%{?dist} +Release: 3%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -357,6 +363,10 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Apr 12 2024 Remi Collet - 4.2.1-3 +- disable PHP support on 32-bit + https://fedoraproject.org/wiki/Changes/php_no_32_bit + * Tue Feb 27 2024 Jiri Vanek - 4.2.1-2 - Rebuilt for java-21-openjdk as system jdk - Temporary disable java tests (rhbz#2266693) From 07e662f6d6d4fff2a7a4c1b91db6d97f18917111 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 16 Apr 2024 17:02:40 +0200 Subject: [PATCH 35/54] Disable PHP support on 32-bit --- swig.spec | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/swig.spec b/swig.spec index 78786dc..06112d3 100644 --- a/swig.spec +++ b/swig.spec @@ -16,18 +16,20 @@ %global ocamllang 0 %endif +%{!?tcl:%global tcl 1} +%{!?lualang:%global lualang 1} +%{!?perllang:%global perllang 1} +%{!?rubylang:%global rubylang 1} +%{!?python3lang:%global python3lang 1} + +# PHP drop support for 32-bit builds since Fedora 41. %if 0%{?fedora} >= 41 %ifarch %{ix86} %global phplang 0 %endif %endif - -%{!?tcl:%global tcl 1} -%{!?lualang:%global lualang 1} -%{!?perllang:%global perllang 1} %{!?phplang:%global phplang 1} -%{!?rubylang:%global rubylang 1} -%{!?python3lang:%global python3lang 1} + # OCaml packages not built on i686 since OCaml 5 / Fedora 39. %ifarch %{ix86} %{!?ocamllang:%global ocamllang 0} @@ -48,7 +50,7 @@ %bcond_without build_ccache_swig %endif -%ifarch i686 +%ifarch %{ix86} %{!?javalang:%global javalang 0} %else # Temporary disable java tests, because they doesn't pass with java-21-openjdk From 797df90a0b908a6aba5c96dcba741c81bb51379f Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 29 Apr 2024 16:41:21 +0200 Subject: [PATCH 36/54] Fix gcc -Wformat-security warning in R Raise function (rhbz#2277767) --- ...t-security-warning-in-R-Raise-functi.patch | 27 +++++++++++++++++++ swig.spec | 8 +++++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch diff --git a/swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch b/swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch new file mode 100644 index 0000000..0c0cd61 --- /dev/null +++ b/swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch @@ -0,0 +1,27 @@ +From 3d5157514889c668bc14c245246c388eb23615ea Mon Sep 17 00:00:00 2001 +From: pekkarr +Date: Mon, 29 Apr 2024 10:00:38 +0300 +Subject: [PATCH] Fix gcc's -Wformat-security warning in R Raise function + (#2896) + +The `Rf_error` function takes a format string as its first argument. +--- + Lib/r/r.swg | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/r/r.swg b/Lib/r/r.swg +index c1ce37c3e..63b69d8cf 100644 +--- a/Lib/r/r.swg ++++ b/Lib/r/r.swg +@@ -28,7 +28,7 @@ SWIGEXPORT void SWIG_init(void) { + + %runtime %{ + SWIGINTERN void SWIG_R_Raise(SEXP obj, const char *msg) { +- Rf_error(Rf_isString(obj) ? CHAR(Rf_asChar(obj)) : msg); ++ Rf_error("%s", Rf_isString(obj) ? CHAR(Rf_asChar(obj)) : msg); + } + %} + +-- +2.44.0 + diff --git a/swig.spec b/swig.spec index 06112d3..f8928e5 100644 --- a/swig.spec +++ b/swig.spec @@ -68,7 +68,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.2.1 -Release: 3%{?dist} +Release: 4%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -82,6 +82,9 @@ Source4: ccache-swig.csh # Small fixes for java tests, in upstream after 4.2.1 Patch0: swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch Patch1: swig-java-Suppress-System.runFinalization-removal-warning.patch +# Fix gcc's -Wformat-security warning in R Raise function +# https://github.com/swig/swig/pull/2896 +Patch2: swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch BuildRequires: coreutils BuildRequires: findutils @@ -365,6 +368,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Apr 29 2024 Jitka Plesnikova - 4.2.1-4 +- Fix gcc's -Wformat-security warning in R Raise function (rhbz#2277767) + * Fri Apr 12 2024 Remi Collet - 4.2.1-3 - disable PHP support on 32-bit https://fedoraproject.org/wiki/Changes/php_no_32_bit From 7c322c4f697ec6da856698d7d4250b94d0d4607d Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Fri, 3 May 2024 18:28:12 -0400 Subject: [PATCH 37/54] Disable PHP support on 32-bit also in ELN --- swig.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index f8928e5..56aaa9e 100644 --- a/swig.spec +++ b/swig.spec @@ -23,7 +23,7 @@ %{!?python3lang:%global python3lang 1} # PHP drop support for 32-bit builds since Fedora 41. -%if 0%{?fedora} >= 41 +%if 0%{?fedora} >= 41 || 0%{?rhel} >= 11 %ifarch %{ix86} %global phplang 0 %endif From eb7c0ebce6cc9862bed3a791952c2149e34cbfb4 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 29 May 2024 17:43:44 +0100 Subject: [PATCH 38/54] OCaml 5.2.0 for Fedora 41 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 56aaa9e..cad6b50 100644 --- a/swig.spec +++ b/swig.spec @@ -68,7 +68,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.2.1 -Release: 4%{?dist} +Release: 5%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -368,6 +368,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed May 29 2024 Richard W.M. Jones - 4.2.1-5 +- OCaml 5.2.0 for Fedora 41 + * Mon Apr 29 2024 Jitka Plesnikova - 4.2.1-4 - Fix gcc's -Wformat-security warning in R Raise function (rhbz#2277767) From 7c0f355005386425b5c14f0a170b991fa2ee285a Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 19 Jun 2024 11:56:21 +0100 Subject: [PATCH 39/54] OCaml 5.2.0 ppc64le fix --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index cad6b50..8d358e1 100644 --- a/swig.spec +++ b/swig.spec @@ -68,7 +68,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.2.1 -Release: 5%{?dist} +Release: 6%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -368,6 +368,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Jun 19 2024 Richard W.M. Jones - 4.2.1-6 +- OCaml 5.2.0 ppc64le fix + * Wed May 29 2024 Richard W.M. Jones - 4.2.1-5 - OCaml 5.2.0 for Fedora 41 From b2f85aac6451a440422f6ca46fb2bb05ff84af01 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Sun, 23 Jun 2024 18:10:24 -0400 Subject: [PATCH 40/54] Rebuild for Python 3.13 Requires upstream commits from https://github.com/swig/swig/pull/2925 --- ...3.13-deprecates-PyWeakref_GET_OBJECT.patch | 27 +++++++++++++++ ...-Python-3.13-strips-docstring-indent.patch | 34 +++++++++++++++++++ swig.spec | 8 ++++- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch create mode 100644 swig-python-Python-3.13-strips-docstring-indent.patch diff --git a/swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch b/swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch new file mode 100644 index 0000000..268f55d --- /dev/null +++ b/swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch @@ -0,0 +1,27 @@ +From 7f0f267630386c41fbf44a0f6115d2555ba82451 Mon Sep 17 00:00:00 2001 +From: Julien Schueller +Date: Thu, 13 Jun 2024 15:32:46 +0200 +Subject: [PATCH] Python 3.13 deprecates PyWeakref_GET_OBJECT + +Closes #2863 +--- + Lib/python/pyrun.swg | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg +index 8381f16d27f..f7305eff108 100644 +--- a/Lib/python/pyrun.swg ++++ b/Lib/python/pyrun.swg +@@ -1343,7 +1343,12 @@ SWIG_Python_GetSwigThis(PyObject *pyobj) + (void)obj; + # ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { ++#if PY_VERSION_HEX >= 0x030D0000 ++ PyWeakref_GetRef(pyobj, &pyobj); ++ Py_DECREF(pyobj); ++#else + pyobj = PyWeakref_GET_OBJECT(pyobj); ++#endif + if (pyobj && SwigPyObject_Check(pyobj)) + return (SwigPyObject*) pyobj; + } diff --git a/swig-python-Python-3.13-strips-docstring-indent.patch b/swig-python-Python-3.13-strips-docstring-indent.patch new file mode 100644 index 0000000..d0fce06 --- /dev/null +++ b/swig-python-Python-3.13-strips-docstring-indent.patch @@ -0,0 +1,34 @@ +From ffa856c8dc1fa97e6896a2c5d5bd647c15df2284 Mon Sep 17 00:00:00 2001 +From: Julien Schueller +Date: Thu, 13 Jun 2024 15:31:26 +0200 +Subject: [PATCH] Python 3.13 strips docstring indent + +--- + Examples/test-suite/python/python_docstring_runme.py | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/Examples/test-suite/python/python_docstring_runme.py b/Examples/test-suite/python/python_docstring_runme.py +index a601ecb5430..101f9dd8a30 100644 +--- a/Examples/test-suite/python/python_docstring_runme.py ++++ b/Examples/test-suite/python/python_docstring_runme.py +@@ -1,5 +1,6 @@ + from python_docstring import * + import inspect ++import sys + + def check(got, expected): + expected_list = expected.split("\n") +@@ -87,9 +88,10 @@ def check(got, expected): + ) + + # One line doc special case, use __doc__ +-check(DocStrings.docstringX.__doc__, +- " one line docs" +- ) ++if sys.version_info[0:2] < (3, 13): ++ check(DocStrings.docstringX.__doc__, " one line docs") ++else: ++ check(DocStrings.docstringX.__doc__, "one line docs") + + check(inspect.getdoc(DocStrings.docstringX), + "one line docs" diff --git a/swig.spec b/swig.spec index 8d358e1..6f03ec7 100644 --- a/swig.spec +++ b/swig.spec @@ -68,7 +68,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.2.1 -Release: 6%{?dist} +Release: 7%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -85,6 +85,9 @@ Patch1: swig-java-Suppress-System.runFinalization-removal-warning.patch # Fix gcc's -Wformat-security warning in R Raise function # https://github.com/swig/swig/pull/2896 Patch2: swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch +# Python 3.13 support: https://github.com/swig/swig/pull/2925 +Patch3: swig-python-Python-3.13-strips-docstring-indent.patch +Patch4: swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch BuildRequires: coreutils BuildRequires: findutils @@ -368,6 +371,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sun Jun 23 2024 Yaakov Selkowitz - 4.2.1-7 +- Rebuild for Python 3.13 + * Wed Jun 19 2024 Richard W.M. Jones - 4.2.1-6 - OCaml 5.2.0 ppc64le fix From b7692274859a6fd653444b74fee2d33f102f135b Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 20 Jul 2024 06:50:39 +0000 Subject: [PATCH 41/54] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 6f03ec7..a8eb803 100644 --- a/swig.spec +++ b/swig.spec @@ -68,7 +68,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.2.1 -Release: 7%{?dist} +Release: 8%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -371,6 +371,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Jul 20 2024 Fedora Release Engineering - 4.2.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Sun Jun 23 2024 Yaakov Selkowitz - 4.2.1-7 - Rebuild for Python 3.13 From 967cd34363b439751e33e33f361369346656a428 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 21 Oct 2024 16:23:11 +0200 Subject: [PATCH 42/54] 4.3.0 bump (rhbz#2320047) --- .gitignore | 1 + sources | 2 +- ...t-security-warning-in-R-Raise-functi.patch | 27 ---- ...ng-deprecated-API-in-doxygen-example.patch | 29 ----- ...stem.runFinalization-removal-warning.patch | 118 ------------------ ...3.13-deprecates-PyWeakref_GET_OBJECT.patch | 27 ---- ...-Python-3.13-strips-docstring-indent.patch | 34 ----- swig.spec | 16 +-- 8 files changed, 7 insertions(+), 247 deletions(-) delete mode 100644 swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch delete mode 100644 swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch delete mode 100644 swig-java-Suppress-System.runFinalization-removal-warning.patch delete mode 100644 swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch delete mode 100644 swig-python-Python-3.13-strips-docstring-indent.patch diff --git a/.gitignore b/.gitignore index 3a819d9..7187454 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ swig-2.0.0.tar.gz /swig-4.1.1.tar.gz /swig-4.2.0.tar.gz /swig-4.2.1.tar.gz +/swig-4.3.0.tar.gz diff --git a/sources b/sources index e92004d..1a65880 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.2.1.tar.gz) = 019dee5a46d57e1030eef47cd5d007ccaadbdcd4e53cd30d7c795f0118ecf4406a78185534502c81c5f6d7bac0713256e7e19b20b5a2d14e2c552219edbaf5cf +SHA512 (swig-4.3.0.tar.gz) = 5dfb8aa9898fccb063dbdf5d6266928cf46d671491308d2c122c59414377f1558015a37d7268729f62c5d4ee20438c98c83ee575fb00078dfe77564ee46a2f64 diff --git a/swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch b/swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch deleted file mode 100644 index 0c0cd61..0000000 --- a/swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 3d5157514889c668bc14c245246c388eb23615ea Mon Sep 17 00:00:00 2001 -From: pekkarr -Date: Mon, 29 Apr 2024 10:00:38 +0300 -Subject: [PATCH] Fix gcc's -Wformat-security warning in R Raise function - (#2896) - -The `Rf_error` function takes a format string as its first argument. ---- - Lib/r/r.swg | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Lib/r/r.swg b/Lib/r/r.swg -index c1ce37c3e..63b69d8cf 100644 ---- a/Lib/r/r.swg -+++ b/Lib/r/r.swg -@@ -28,7 +28,7 @@ SWIGEXPORT void SWIG_init(void) { - - %runtime %{ - SWIGINTERN void SWIG_R_Raise(SEXP obj, const char *msg) { -- Rf_error(Rf_isString(obj) ? CHAR(Rf_asChar(obj)) : msg); -+ Rf_error("%s", Rf_isString(obj) ? CHAR(Rf_asChar(obj)) : msg); - } - %} - --- -2.44.0 - diff --git a/swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch b/swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch deleted file mode 100644 index 44f449e..0000000 --- a/swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 8a19cb77adfec168236e2c63d1a9d1a310f886cc Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Fri, 1 Mar 2024 10:40:12 +1300 -Subject: [PATCH] [java] Avoid using deprecated API in doxygen example - -Passing a String command to Runtime.exec() has been deprecated since -Java 18. ---- - Examples/java/doxygen/runme.java | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Examples/java/doxygen/runme.java b/Examples/java/doxygen/runme.java -index 6b7bb3d01..5970521c8 100644 ---- a/Examples/java/doxygen/runme.java -+++ b/Examples/java/doxygen/runme.java -@@ -33,8 +33,8 @@ public class runme { - System.out.println(" perimeter = " + shapes[i].perimeter()); - } - -- String command = "javadoc -quiet -public -d javadocs example.java Shape.java Circle.java Square.java RectangleInt.java"; -- System.out.println("\nRunning: " + command); -+ String[] command = {"javadoc", "-quiet", "-public", "-d", "javadocs", "example.java", "Shape.java", "Circle.java", "Square.java", "RectangleInt.java"}; -+ System.out.println("\nRunning: " + String.join(" ", command)); - Process p = Runtime.getRuntime().exec(command); - int exitCode = p.waitFor(); - System.out.println("javadoc exited with code " + exitCode); --- -2.44.0 - diff --git a/swig-java-Suppress-System.runFinalization-removal-warning.patch b/swig-java-Suppress-System.runFinalization-removal-warning.patch deleted file mode 100644 index 2ad135d..0000000 --- a/swig-java-Suppress-System.runFinalization-removal-warning.patch +++ /dev/null @@ -1,118 +0,0 @@ -From ec56bff28d3ad5acf82e139a83da8135aa2dd618 Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Fri, 1 Mar 2024 10:42:22 +1300 -Subject: [PATCH] [java] Suppress System.runFinalization() removal warnings - -These need to be addressed, but meanwhile it makes running the testsuite -with OpenJDK 21 or newer unhelpfully noisy so suppressing it seems more -helpful than not. - -Closes: #2819 ---- - Examples/test-suite/java/cpp11_std_unique_ptr_runme.java | 2 ++ - Examples/test-suite/java/director_pass_by_value_runme.java | 2 ++ - Examples/test-suite/java/java_director_runme.java | 2 ++ - Examples/test-suite/java/li_boost_intrusive_ptr_runme.java | 4 ++++ - Examples/test-suite/java/li_boost_shared_ptr_runme.java | 4 ++++ - Examples/test-suite/java/li_std_auto_ptr_runme.java | 2 ++ - 6 files changed, 16 insertions(+) - -diff --git a/Examples/test-suite/java/cpp11_std_unique_ptr_runme.java b/Examples/test-suite/java/cpp11_std_unique_ptr_runme.java -index f90ef7041..c5622f65f 100644 ---- a/Examples/test-suite/java/cpp11_std_unique_ptr_runme.java -+++ b/Examples/test-suite/java/cpp11_std_unique_ptr_runme.java -@@ -10,6 +10,8 @@ public class cpp11_std_unique_ptr_runme { - } - } - -+ // Suppress warning about System.runFinalization() call. -+ @SuppressWarnings({"deprecation", "removal"}) - private static void WaitForGC() - { - System.gc(); -diff --git a/Examples/test-suite/java/director_pass_by_value_runme.java b/Examples/test-suite/java/director_pass_by_value_runme.java -index 1d34c3b55..48ccabf73 100644 ---- a/Examples/test-suite/java/director_pass_by_value_runme.java -+++ b/Examples/test-suite/java/director_pass_by_value_runme.java -@@ -12,6 +12,8 @@ public class director_pass_by_value_runme { - } - } - -+ // Suppress warning about System.runFinalization() call. -+ @SuppressWarnings({"deprecation", "removal"}) - private static void WaitForGC() { - System.gc(); - System.runFinalization(); -diff --git a/Examples/test-suite/java/java_director_runme.java b/Examples/test-suite/java/java_director_runme.java -index 2167d2621..40829463b 100644 ---- a/Examples/test-suite/java/java_director_runme.java -+++ b/Examples/test-suite/java/java_director_runme.java -@@ -13,6 +13,8 @@ public class java_director_runme { - } - } - -+ // Suppress warning about System.runFinalization() call. -+ @SuppressWarnings({"deprecation", "removal"}) - private static void WaitForGC() - { - System.gc(); -diff --git a/Examples/test-suite/java/li_boost_intrusive_ptr_runme.java b/Examples/test-suite/java/li_boost_intrusive_ptr_runme.java -index 750ec5067..721a78d56 100644 ---- a/Examples/test-suite/java/li_boost_intrusive_ptr_runme.java -+++ b/Examples/test-suite/java/li_boost_intrusive_ptr_runme.java -@@ -13,6 +13,8 @@ public class li_boost_intrusive_ptr_runme { - // Debugging flag - public final static boolean debug = false; - -+ // Suppress warning about System.runFinalization() call. -+ @SuppressWarnings({"deprecation", "removal"}) - private static void WaitForGC() - { - System.gc(); -@@ -23,6 +25,8 @@ public class li_boost_intrusive_ptr_runme { - } - } - -+ // Suppress warning about System.runFinalization() call. -+ @SuppressWarnings({"deprecation", "removal"}) - public static void main(String argv[]) - { - if (debug) -diff --git a/Examples/test-suite/java/li_boost_shared_ptr_runme.java b/Examples/test-suite/java/li_boost_shared_ptr_runme.java -index b513fade7..c1ec7f7bf 100644 ---- a/Examples/test-suite/java/li_boost_shared_ptr_runme.java -+++ b/Examples/test-suite/java/li_boost_shared_ptr_runme.java -@@ -13,6 +13,8 @@ public class li_boost_shared_ptr_runme { - // Debugging flag - public final static boolean debug = false; - -+ // Suppress warning about System.runFinalization() call. -+ @SuppressWarnings({"deprecation", "removal"}) - private static void WaitForGC() - { - System.gc(); -@@ -23,6 +25,8 @@ public class li_boost_shared_ptr_runme { - } - } - -+ // Suppress warning about System.runFinalization() call. -+ @SuppressWarnings({"deprecation", "removal"}) - public static void main(String argv[]) - { - if (debug) -diff --git a/Examples/test-suite/java/li_std_auto_ptr_runme.java b/Examples/test-suite/java/li_std_auto_ptr_runme.java -index 24e353ddc..978a72504 100644 ---- a/Examples/test-suite/java/li_std_auto_ptr_runme.java -+++ b/Examples/test-suite/java/li_std_auto_ptr_runme.java -@@ -10,6 +10,8 @@ public class li_std_auto_ptr_runme { - } - } - -+ // Suppress warning about System.runFinalization() call. -+ @SuppressWarnings({"deprecation", "removal"}) - private static void WaitForGC() - { - System.gc(); --- -2.44.0 - diff --git a/swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch b/swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch deleted file mode 100644 index 268f55d..0000000 --- a/swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 7f0f267630386c41fbf44a0f6115d2555ba82451 Mon Sep 17 00:00:00 2001 -From: Julien Schueller -Date: Thu, 13 Jun 2024 15:32:46 +0200 -Subject: [PATCH] Python 3.13 deprecates PyWeakref_GET_OBJECT - -Closes #2863 ---- - Lib/python/pyrun.swg | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg -index 8381f16d27f..f7305eff108 100644 ---- a/Lib/python/pyrun.swg -+++ b/Lib/python/pyrun.swg -@@ -1343,7 +1343,12 @@ SWIG_Python_GetSwigThis(PyObject *pyobj) - (void)obj; - # ifdef PyWeakref_CheckProxy - if (PyWeakref_CheckProxy(pyobj)) { -+#if PY_VERSION_HEX >= 0x030D0000 -+ PyWeakref_GetRef(pyobj, &pyobj); -+ Py_DECREF(pyobj); -+#else - pyobj = PyWeakref_GET_OBJECT(pyobj); -+#endif - if (pyobj && SwigPyObject_Check(pyobj)) - return (SwigPyObject*) pyobj; - } diff --git a/swig-python-Python-3.13-strips-docstring-indent.patch b/swig-python-Python-3.13-strips-docstring-indent.patch deleted file mode 100644 index d0fce06..0000000 --- a/swig-python-Python-3.13-strips-docstring-indent.patch +++ /dev/null @@ -1,34 +0,0 @@ -From ffa856c8dc1fa97e6896a2c5d5bd647c15df2284 Mon Sep 17 00:00:00 2001 -From: Julien Schueller -Date: Thu, 13 Jun 2024 15:31:26 +0200 -Subject: [PATCH] Python 3.13 strips docstring indent - ---- - Examples/test-suite/python/python_docstring_runme.py | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/Examples/test-suite/python/python_docstring_runme.py b/Examples/test-suite/python/python_docstring_runme.py -index a601ecb5430..101f9dd8a30 100644 ---- a/Examples/test-suite/python/python_docstring_runme.py -+++ b/Examples/test-suite/python/python_docstring_runme.py -@@ -1,5 +1,6 @@ - from python_docstring import * - import inspect -+import sys - - def check(got, expected): - expected_list = expected.split("\n") -@@ -87,9 +88,10 @@ def check(got, expected): - ) - - # One line doc special case, use __doc__ --check(DocStrings.docstringX.__doc__, -- " one line docs" -- ) -+if sys.version_info[0:2] < (3, 13): -+ check(DocStrings.docstringX.__doc__, " one line docs") -+else: -+ check(DocStrings.docstringX.__doc__, "one line docs") - - check(inspect.getdoc(DocStrings.docstringX), - "one line docs" diff --git a/swig.spec b/swig.spec index a8eb803..f9831fe 100644 --- a/swig.spec +++ b/swig.spec @@ -67,8 +67,8 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.2.1 -Release: 8%{?dist} +Version: 4.3.0 +Release: 1%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -79,15 +79,6 @@ Source2: description-ccache.h2m Source3: ccache-swig.sh Source4: ccache-swig.csh %endif -# Small fixes for java tests, in upstream after 4.2.1 -Patch0: swig-java-Avoid-using-deprecated-API-in-doxygen-example.patch -Patch1: swig-java-Suppress-System.runFinalization-removal-warning.patch -# Fix gcc's -Wformat-security warning in R Raise function -# https://github.com/swig/swig/pull/2896 -Patch2: swig-R-Fix-gcc-s-Wformat-security-warning-in-R-Raise-functi.patch -# Python 3.13 support: https://github.com/swig/swig/pull/2925 -Patch3: swig-python-Python-3.13-strips-docstring-indent.patch -Patch4: swig-python-Python-3.13-deprecates-PyWeakref_GET_OBJECT.patch BuildRequires: coreutils BuildRequires: findutils @@ -371,6 +362,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Oct 21 2024 Jitka Plesnikova - 4.3.0-1 +- 4.3.0 bump (rhbz#2320047) + * Sat Jul 20 2024 Fedora Release Engineering - 4.2.1-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From fc387ae5fee84d9e97ccc96b315533b73816c385 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 29 Oct 2024 10:17:11 +0100 Subject: [PATCH 43/54] Fix precedence of casts --- swig-4.3.0-Fix-precedence-of-casts.patch | 85 ++++++++++++++++++++++++ swig.spec | 8 ++- 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 swig-4.3.0-Fix-precedence-of-casts.patch diff --git a/swig-4.3.0-Fix-precedence-of-casts.patch b/swig-4.3.0-Fix-precedence-of-casts.patch new file mode 100644 index 0000000..71576d2 --- /dev/null +++ b/swig-4.3.0-Fix-precedence-of-casts.patch @@ -0,0 +1,85 @@ +From 4e315cdd7c9072fd33ac1df3d208a0990b8231c3 Mon Sep 17 00:00:00 2001 +From: Olly Betts +Date: Sun, 27 Oct 2024 10:02:11 +1300 +Subject: [PATCH] Fix precedence of casts + +Casts should have the same high precedence as unary plus and minus, but +actually had a lower precedence than anything else. + +This could lead to the wrong type being deduced in obscure cases, but +also prevented SWIG deducing a type for expressions such as (0)*1+2 +which SWIG parses as a cast and then fixes up afterwards. + +A bug fixed in 4.3.0 made this latter problem manifest more often +(previously type deduction happened to work for (0)*1+2 due to an +internal field not getting cleared properly). + +Fixes #3058 +--- + CHANGES.current | 11 +++++++++++ + Examples/test-suite/cpp11_auto_variable.i | 8 ++++++++ + Source/CParse/parser.y | 3 +-- + 3 files changed, 20 insertions(+), 2 deletions(-) + +#diff --git a/CHANGES.current b/CHANGES.current +#index 42a2be6e7..f173d84e6 100644 +#--- a/CHANGES.current +#+++ b/CHANGES.current +#@@ -7,6 +7,17 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ +# Version 4.4.0 (in progress) +# =========================== +# +#+2024-10-27: olly +#+ #3058 Fix precedence of casts, which should have the same high +#+ precedence as unary plus and minus, but actually had a lower +#+ precedence than anything else. This could lead to the wrong type +#+ being deduced in obscure cases, but also prevented SWIG deducing a +#+ type for expressions such as (0)*1+2 which SWIG parses as a cast +#+ and then fixes up afterwards. A bug fixed in 4.3.0 made this +#+ latter problem manifest more often (previously type deduction +#+ happened to work for (0)*1+2 due to an internal field not getting +#+ cleared properly). +#+ +# 2024-10-25: olly +# [Guile] Allow wrapping anything with a `varout` typemap as a +# constant. +diff --git a/Examples/test-suite/cpp11_auto_variable.i b/Examples/test-suite/cpp11_auto_variable.i +index 7345296b5..e0a14ccd9 100644 +--- a/Examples/test-suite/cpp11_auto_variable.i ++++ b/Examples/test-suite/cpp11_auto_variable.i +@@ -62,3 +62,11 @@ static auto wstring_lit_len2 = sizeof("123" L"456") / sizeof(wchar_t) - 1; + //static auto constexpr greeting = "Hello"; + + %} ++ ++%inline %{ ++/* Regression test for #3058 */ ++auto CAST_HAD_WRONG_PRECEDENCE1 = (0)*1+2; ++auto CAST_HAD_WRONG_PRECEDENCE2 = (0)&1|2; ++auto CAST_HAD_WRONG_PRECEDENCE3 = (0)-1|2; ++auto CAST_HAD_WRONG_PRECEDENCE4 = (0)+1|2; ++%} +diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y +index a229e2e70..f3ed4040a 100644 +--- a/Source/CParse/parser.y ++++ b/Source/CParse/parser.y +@@ -1793,7 +1793,6 @@ static String *add_qualifier_to_declarator(SwigType *type, SwigType *qualifier) + %token DOXYGENSTRING + %token DOXYGENPOSTSTRING + +-%precedence CAST + %left QUESTIONMARK + %left LOR + %left LAND +@@ -1809,7 +1808,7 @@ static String *add_qualifier_to_declarator(SwigType *type, SwigType *qualifier) + %left LSHIFT RSHIFT + %left PLUS MINUS + %left STAR SLASH MODULO +-%precedence UMINUS NOT LNOT ++%precedence UMINUS NOT LNOT CAST + %token DCOLON + + %type program interface declaration swig_directive ; +-- +2.47.0 + diff --git a/swig.spec b/swig.spec index f9831fe..6c21528 100644 --- a/swig.spec +++ b/swig.spec @@ -68,7 +68,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.3.0 -Release: 1%{?dist} +Release: 2%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -79,6 +79,9 @@ Source2: description-ccache.h2m Source3: ccache-swig.sh Source4: ccache-swig.csh %endif +# Fix precedence of casts - in upstream after 4.3.0 +# https://github.com/swig/swig/issues/3058 +Patch1: swig-4.3.0-Fix-precedence-of-casts.patch BuildRequires: coreutils BuildRequires: findutils @@ -362,6 +365,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Oct 29 2024 Jitka Plesnikova - 4.3.0-2 +- Fix precedence of casts + * Mon Oct 21 2024 Jitka Plesnikova - 4.3.0-1 - 4.3.0 bump (rhbz#2320047) From b2c552c89d153d6e79cbef32af3c69f34a00dd6e Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Wed, 13 Nov 2024 19:32:11 -0700 Subject: [PATCH 44/54] Rebuild for octave 9.2 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 6c21528..75e6a15 100644 --- a/swig.spec +++ b/swig.spec @@ -68,7 +68,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.3.0 -Release: 2%{?dist} +Release: 3%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -365,6 +365,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Nov 14 2024 Orion Poplawski - 4.3.0-3 +- Rebuild for octave 9.2 + * Tue Oct 29 2024 Jitka Plesnikova - 4.3.0-2 - Fix precedence of casts From 65e8c5a6c2f111ae5c42acf0cab2dd05b0a31baa Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 19 Jan 2025 12:06:28 +0000 Subject: [PATCH 45/54] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 75e6a15..fbfcb16 100644 --- a/swig.spec +++ b/swig.spec @@ -68,7 +68,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.3.0 -Release: 3%{?dist} +Release: 4%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -365,6 +365,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sun Jan 19 2025 Fedora Release Engineering - 4.3.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Thu Nov 14 2024 Orion Poplawski - 4.3.0-3 - Rebuild for octave 9.2 From 6d8e3c92689366e220c66320ea499cdd93be05ed Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 17 Feb 2025 16:05:04 +0100 Subject: [PATCH 46/54] Disable R tests, because they need tcl < 9 --- swig.spec | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/swig.spec b/swig.spec index fbfcb16..8b60215 100644 --- a/swig.spec +++ b/swig.spec @@ -46,7 +46,8 @@ %else %{!?guile:%global guile 1} %{!?octave:%global octave 1} -%{!?Rlang:%global Rlang 1} +# R-core requires tcl < 9.0.0 +%{!?Rlang:%global Rlang 0} %bcond_without build_ccache_swig %endif @@ -68,7 +69,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.3.0 -Release: 4%{?dist} +Release: 5%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -107,7 +108,7 @@ BuildRequires: boost-devel # Need when Source/CParse/parser.y is patched BuildRequires: bison %if %{tcl} -BuildRequires: tcl-devel +BuildRequires: tcl-devel >= 9.0.0 %endif %if %{guile} BuildRequires: guile-devel @@ -365,6 +366,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Feb 17 2025 Jitka Plesnikova - 4.3.0-5 +- Disable R tests, because they need tcl < 9 + * Sun Jan 19 2025 Fedora Release Engineering - 4.3.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 79b2996e10a0d5cd6b39f377d99315087292f21e Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 16 Apr 2025 14:14:17 +0200 Subject: [PATCH 47/54] 4.3.1 bump (rhbz#2360009) --- .gitignore | 1 + sources | 2 +- swig-4.3.0-Fix-precedence-of-casts.patch | 85 ------------------------ swig.spec | 10 +-- 4 files changed, 7 insertions(+), 91 deletions(-) delete mode 100644 swig-4.3.0-Fix-precedence-of-casts.patch diff --git a/.gitignore b/.gitignore index 7187454..34ba3f1 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ swig-2.0.0.tar.gz /swig-4.2.0.tar.gz /swig-4.2.1.tar.gz /swig-4.3.0.tar.gz +/swig-4.3.1.tar.gz diff --git a/sources b/sources index 1a65880..581ec8f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.3.0.tar.gz) = 5dfb8aa9898fccb063dbdf5d6266928cf46d671491308d2c122c59414377f1558015a37d7268729f62c5d4ee20438c98c83ee575fb00078dfe77564ee46a2f64 +SHA512 (swig-4.3.1.tar.gz) = 8958f7bc3345549a9bc4e00aa8d40a99f6c4bb92b95d627c8796cf8f8d1ba0041a89cab542f171778c2b26aa2a877767181ae9bd2c05fd055f373a32a463399c diff --git a/swig-4.3.0-Fix-precedence-of-casts.patch b/swig-4.3.0-Fix-precedence-of-casts.patch deleted file mode 100644 index 71576d2..0000000 --- a/swig-4.3.0-Fix-precedence-of-casts.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 4e315cdd7c9072fd33ac1df3d208a0990b8231c3 Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Sun, 27 Oct 2024 10:02:11 +1300 -Subject: [PATCH] Fix precedence of casts - -Casts should have the same high precedence as unary plus and minus, but -actually had a lower precedence than anything else. - -This could lead to the wrong type being deduced in obscure cases, but -also prevented SWIG deducing a type for expressions such as (0)*1+2 -which SWIG parses as a cast and then fixes up afterwards. - -A bug fixed in 4.3.0 made this latter problem manifest more often -(previously type deduction happened to work for (0)*1+2 due to an -internal field not getting cleared properly). - -Fixes #3058 ---- - CHANGES.current | 11 +++++++++++ - Examples/test-suite/cpp11_auto_variable.i | 8 ++++++++ - Source/CParse/parser.y | 3 +-- - 3 files changed, 20 insertions(+), 2 deletions(-) - -#diff --git a/CHANGES.current b/CHANGES.current -#index 42a2be6e7..f173d84e6 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,17 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.4.0 (in progress) -# =========================== -# -#+2024-10-27: olly -#+ #3058 Fix precedence of casts, which should have the same high -#+ precedence as unary plus and minus, but actually had a lower -#+ precedence than anything else. This could lead to the wrong type -#+ being deduced in obscure cases, but also prevented SWIG deducing a -#+ type for expressions such as (0)*1+2 which SWIG parses as a cast -#+ and then fixes up afterwards. A bug fixed in 4.3.0 made this -#+ latter problem manifest more often (previously type deduction -#+ happened to work for (0)*1+2 due to an internal field not getting -#+ cleared properly). -#+ -# 2024-10-25: olly -# [Guile] Allow wrapping anything with a `varout` typemap as a -# constant. -diff --git a/Examples/test-suite/cpp11_auto_variable.i b/Examples/test-suite/cpp11_auto_variable.i -index 7345296b5..e0a14ccd9 100644 ---- a/Examples/test-suite/cpp11_auto_variable.i -+++ b/Examples/test-suite/cpp11_auto_variable.i -@@ -62,3 +62,11 @@ static auto wstring_lit_len2 = sizeof("123" L"456") / sizeof(wchar_t) - 1; - //static auto constexpr greeting = "Hello"; - - %} -+ -+%inline %{ -+/* Regression test for #3058 */ -+auto CAST_HAD_WRONG_PRECEDENCE1 = (0)*1+2; -+auto CAST_HAD_WRONG_PRECEDENCE2 = (0)&1|2; -+auto CAST_HAD_WRONG_PRECEDENCE3 = (0)-1|2; -+auto CAST_HAD_WRONG_PRECEDENCE4 = (0)+1|2; -+%} -diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y -index a229e2e70..f3ed4040a 100644 ---- a/Source/CParse/parser.y -+++ b/Source/CParse/parser.y -@@ -1793,7 +1793,6 @@ static String *add_qualifier_to_declarator(SwigType *type, SwigType *qualifier) - %token DOXYGENSTRING - %token DOXYGENPOSTSTRING - --%precedence CAST - %left QUESTIONMARK - %left LOR - %left LAND -@@ -1809,7 +1808,7 @@ static String *add_qualifier_to_declarator(SwigType *type, SwigType *qualifier) - %left LSHIFT RSHIFT - %left PLUS MINUS - %left STAR SLASH MODULO --%precedence UMINUS NOT LNOT -+%precedence UMINUS NOT LNOT CAST - %token DCOLON - - %type program interface declaration swig_directive ; --- -2.47.0 - diff --git a/swig.spec b/swig.spec index 8b60215..2e82a1c 100644 --- a/swig.spec +++ b/swig.spec @@ -68,8 +68,8 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.3.0 -Release: 5%{?dist} +Version: 4.3.1 +Release: 1%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -80,9 +80,6 @@ Source2: description-ccache.h2m Source3: ccache-swig.sh Source4: ccache-swig.csh %endif -# Fix precedence of casts - in upstream after 4.3.0 -# https://github.com/swig/swig/issues/3058 -Patch1: swig-4.3.0-Fix-precedence-of-casts.patch BuildRequires: coreutils BuildRequires: findutils @@ -366,6 +363,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Apr 16 2025 Jitka Plesnikova - 4.3.1-1 +- 4.3.1 bump (rhbz#2360009) + * Mon Feb 17 2025 Jitka Plesnikova - 4.3.0-5 - Disable R tests, because they need tcl < 9 From 7f3c4ff630f3e20a2012ddc85ace094b6ddac530 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Wed, 25 Jun 2025 18:36:40 -0400 Subject: [PATCH 48/54] Add Python 3.14 support https://github.com/swig/swig/pull/3159 --- swig-python-Python-3.14-support.patch | 153 ++++++++++++++++++++++++++ swig.spec | 7 +- 2 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 swig-python-Python-3.14-support.patch diff --git a/swig-python-Python-3.14-support.patch b/swig-python-Python-3.14-support.patch new file mode 100644 index 0000000..ceee305 --- /dev/null +++ b/swig-python-Python-3.14-support.patch @@ -0,0 +1,153 @@ +From 50e1cc8bc0d090164762ec166439f8b0f3855308 Mon Sep 17 00:00:00 2001 +From: Julien Schueller +Date: Thu, 10 Apr 2025 17:22:15 +0200 +Subject: [PATCH 1/3] Python: Handle __package__ removal + +Closes #2967 +--- + Doc/Manual/Python.html | 6 +++--- + Source/Modules/python.cxx | 8 +++++--- + 2 files changed, 8 insertions(+), 6 deletions(-) + +diff --git a/Doc/Manual/Python.html b/Doc/Manual/Python.html +index 23587e5dbcc..01fc449a68a 100644 +--- a/Doc/Manual/Python.html ++++ b/Doc/Manual/Python.html +@@ -6552,7 +6552,7 @@

33.11.6.1 Both modules + +

+ In this configuration, the pure Python module, foo.py, tries to load the C/C++ module, _foo, from the same package foo.py is +-located in. The package name is determined from the __package__ ++located in. The package name is determined from the __spec__.parent (or __package__ before Python 3.4) + attribute if available, see PEP 366. Otherwise it is derived from the __name__ + attribute given to foo.py by the Python loader that imported foo.py. + The interface file for this configuration would contain: +@@ -6675,7 +6675,7 @@

33.11.6.4 More on customizing the modu + +
+
+-if __package__ or '.' in __name__:
++if getattr(__spec__, "parent", None) or '.' in __name__:
+     from . import _foo
+ else:
+     import _foo
+@@ -6760,7 +6760,7 @@ 

33.11.6.4 More on customizing the modu + +
+
+-if __package__ or '.' in __name__:
++if getattr(__spec__, "parent", None) or '.' in __name__:
+     from ._foo import *
+ else:
+     from _foo import *
+diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx
+index 86daf131c8b..a71fc3cdb25 100644
+--- a/Source/Modules/python.cxx
++++ b/Source/Modules/python.cxx
+@@ -703,20 +703,22 @@ class PYTHON:public Language {
+ 	 * onwards (implicit relative imports raised a DeprecationWarning in 2.6,
+ 	 * and fail in 2.7 onwards).
+ 	 *
+-	 * First check for __package__ which is available from 2.6 onwards, see PEP366.
++	 * First check for __spec__.parent which is available from 3.4 onwards,
++	 * see https://docs.python.org/3/reference/import.html#spec. If not,
++	 * check for __package__, which was set before 3.14.
+ 	 * Next try determine the shadow wrapper's package based on the __name__ it
+ 	 * was given by the importer that loaded it.
+ 	 * If the module is in a package, load the low-level C/C++ module from the
+ 	 * same package, otherwise load it as a global module.
+ 	 */
+         Printv(default_import_code, "# Import the low-level C/C++ module\n", NULL);
+-        Printv(default_import_code, "if __package__ or \".\" in __name__:\n", NULL);
++        Printv(default_import_code, "if getattr(globals().get(\"__spec__\"), \"parent\", None) or globals().get(\"__package__\") or \".\" in __name__:\n", NULL);
+         Printv(default_import_code, tab4, "from . import ", module, "\n", NULL);
+         Printv(default_import_code, "else:\n", NULL);
+         Printv(default_import_code, tab4, "import ", module, "\n", NULL);
+       } else {
+         Printv(default_import_code, "# Pull in all the attributes from the low-level C/C++ module\n", NULL);
+-        Printv(default_import_code, "if __package__ or \".\" in __name__:\n", NULL);
++        Printv(default_import_code, "if getattr(globals().get(\"__spec__\"), \"parent\", None) or globals().get(\"__package__\") or \".\" in __name__:\n", NULL);
+         Printv(default_import_code, tab4, "from .", module, " import *\n", NULL);
+         Printv(default_import_code, "else:\n", NULL);
+         Printv(default_import_code, tab4, "from ", module, " import *\n", NULL);
+
+From 3bfdf13c602f877860a9949ba751a5b5a9ba70aa Mon Sep 17 00:00:00 2001
+From: Julien Schueller 
+Date: Thu, 10 Apr 2025 18:35:25 +0200
+Subject: [PATCH 2/3] Python: Add ht_token
+
+---
+ Source/Modules/python.cxx | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx
+index a71fc3cdb25..3070a94face 100644
+--- a/Source/Modules/python.cxx
++++ b/Source/Modules/python.cxx
+@@ -4374,6 +4374,11 @@ class PYTHON:public Language {
+     Printv(f, "#if PY_VERSION_HEX >= 0x030b0000\n", NIL);
+     printSlot(f, getSlot(n, "feature:python:_ht_tpname"), "_ht_tpname", "char *");
+ 
++    // void *ht_token;
++    Printv(f, "#if PY_VERSION_HEX >= 0x030e0000\n", NIL);
++    printSlot(f, getSlot(n, "feature:python:ht_token"), "ht_token", "void *");
++    Printv(f, "#endif\n", NIL);
++
+     // struct _specialization_cache _spec_cache;
+     Printf(f, "  {\n");
+     printSlot(f, getSlot(n, "feature:python:getitem"), "getitem", "PyObject *");
+
+From 55237efa7219f65a04e0ffc69a81c574b5f5e162 Mon Sep 17 00:00:00 2001
+From: Julien Schueller 
+Date: Thu, 10 Apr 2025 17:47:59 +0200
+Subject: [PATCH 3/3] Python: Amend annotations test
+
+---
+ .../python_annotations_variable_c_runme.py    | 24 +++++++++++++------
+ 1 file changed, 17 insertions(+), 7 deletions(-)
+
+diff --git a/Examples/test-suite/python/python_annotations_variable_c_runme.py b/Examples/test-suite/python/python_annotations_variable_c_runme.py
+index 153852d05e6..d1f359bbbd0 100644
+--- a/Examples/test-suite/python/python_annotations_variable_c_runme.py
++++ b/Examples/test-suite/python/python_annotations_variable_c_runme.py
+@@ -1,4 +1,17 @@
+ import sys
++import inspect
++
++
++def get_annotations(cls):
++    # Python >=3.14 removed the __annotations__ attribute
++    # retrieve it via inspect (see also annotationlib)
++    if hasattr(inspect, "get_annotations"):
++        # Python >=3.10
++        return inspect.get_annotations(cls)
++    else:
++        # Python <3.10
++        return getattr(cls, "__annotations__", {})
++
+ 
+ # Variable annotations for properties is only supported in python-3.6 and later (PEP 526)
+ if sys.version_info[0:2] >= (3, 6):
+@@ -8,17 +21,14 @@
+     annotations_supported = not(is_python_builtin() or is_python_fastproxy())
+ 
+     if annotations_supported:
+-        ts = TemplateShort()
+-        anno = ts.__annotations__
++        anno = get_annotations(TemplateShort)
+         if anno != {'member_variable': 'int'}:
+             raise RuntimeError("annotations mismatch: {}".format(anno))
+ 
+-        ts = StructWithVar()
+-        anno = ts.__annotations__
++        anno = get_annotations(StructWithVar)
+         if anno != {'member_variable': 'int'}:
+             raise RuntimeError("annotations mismatch: {}".format(anno))
+ 
+-        ts = StructWithVarNotAnnotated()
+-        if getattr(ts, "__annotations__", None) != None:
+-            anno = ts.__annotations__
++        anno = get_annotations(StructWithVarNotAnnotated)
++        if anno != {}:
+             raise RuntimeError("annotations mismatch: {}".format(anno))
+
diff --git a/swig.spec b/swig.spec
index 2e82a1c..52a6616 100644
--- a/swig.spec
+++ b/swig.spec
@@ -69,7 +69,7 @@
 Summary: Connects C/C++/Objective C to some high-level programming languages
 Name:    swig
 Version: 4.3.1
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: GPL-3.0-or-later AND BSD-3-Clause
 URL:     https://www.swig.org/
 Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz
@@ -80,6 +80,8 @@ Source2: description-ccache.h2m
 Source3: ccache-swig.sh
 Source4: ccache-swig.csh
 %endif
+# https://github.com/swig/swig/pull/3159
+Patch0:  swig-python-Python-3.14-support.patch
 
 BuildRequires: coreutils
 BuildRequires: findutils
@@ -363,6 +365,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb
 %{_datadir}/%{name}/gdb
 
 %changelog
+* Wed Jun 25 2025 Yaakov Selkowitz  - 4.3.1-2
+- Add Python 3.14 support
+
 * Wed Apr 16 2025 Jitka Plesnikova  - 4.3.1-1
 - 4.3.1 bump (rhbz#2360009)
 

From 36cdf9d2565f04870eac469e86c73f279a17abde Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering 
Date: Fri, 25 Jul 2025 18:57:56 +0000
Subject: [PATCH 49/54] Rebuilt for
 https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild

---
 swig.spec | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/swig.spec b/swig.spec
index 52a6616..9c690f1 100644
--- a/swig.spec
+++ b/swig.spec
@@ -69,7 +69,7 @@
 Summary: Connects C/C++/Objective C to some high-level programming languages
 Name:    swig
 Version: 4.3.1
-Release: 2%{?dist}
+Release: 3%{?dist}
 License: GPL-3.0-or-later AND BSD-3-Clause
 URL:     https://www.swig.org/
 Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz
@@ -365,6 +365,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb
 %{_datadir}/%{name}/gdb
 
 %changelog
+* Fri Jul 25 2025 Fedora Release Engineering  - 4.3.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
+
 * Wed Jun 25 2025 Yaakov Selkowitz  - 4.3.1-2
 - Add Python 3.14 support
 

From 9a1f1a1a5575241606cc61722646c78ff8001450 Mon Sep 17 00:00:00 2001
From: Jitka Plesnikova 
Date: Fri, 1 Aug 2025 10:27:48 +0200
Subject: [PATCH 50/54] Fix Python DeprecationWarning

---
 ....4.0-Python-DeprecationWarning-fixes.patch | 806 ++++++++++++++++++
 swig.spec                                     |   8 +-
 2 files changed, 813 insertions(+), 1 deletion(-)
 create mode 100644 swig-4.4.0-Python-DeprecationWarning-fixes.patch

diff --git a/swig-4.4.0-Python-DeprecationWarning-fixes.patch b/swig-4.4.0-Python-DeprecationWarning-fixes.patch
new file mode 100644
index 0000000..17b9246
--- /dev/null
+++ b/swig-4.4.0-Python-DeprecationWarning-fixes.patch
@@ -0,0 +1,806 @@
+From 49a7d2b0c6aed00bd07a9a28569020d560c2658c Mon Sep 17 00:00:00 2001
+From: William S Fulton 
+Date: Sat, 10 May 2025 13:47:35 +0100
+Subject: [PATCH 1/5] Python DeprecationWarning fixes
+
+DeprecationWarning fixes when using 'python -Walways' or if using one of the types being warned about:
+
+  DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute
+  DeprecationWarning: builtin type SwigPyObject has no __module__ attribute
+  DeprecationWarning: builtin type swigvarlink has no __module__ attribute
+
+The warning was present if code was generated without using -builtin in 4.3.x.
+The warning was only present if using the Python limited API in 4.2.1 and earlier.
+
+These 3 types were not in any module at all. Now they are in the swig runtime module.
+Docs to follow.
+
+Issue #2881
+Issue #3061
+Issue #3160
+---
+ CHANGES.current       | 11 +++++++++++
+ Lib/python/pyhead.swg |  4 +++-
+ Lib/python/pyrun.swg  | 22 +++++++++++-----------
+ 3 files changed, 25 insertions(+), 12 deletions(-)
+
+#diff --git a/CHANGES.current b/CHANGES.current
+#index 99c8a1d8f..0bce7937f 100644
+#--- a/CHANGES.current
+#+++ b/CHANGES.current
+#@@ -7,6 +7,17 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
+# Version 4.4.0 (in progress)
+# ===========================
+# 
+#+2025-05-10: jschueller, wsfulton
+#+            [Python] #2881 #3061 #3160 DeprecationWarning fixes when using 'python -Walways'
+#+            or if using one of the types being warned about:
+#+
+#+              DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute
+#+              DeprecationWarning: builtin type SwigPyObject has no __module__ attribute
+#+              DeprecationWarning: builtin type swigvarlink has no __module__ attribute
+#+
+#+            The warning was present if code was generated without using -builtin in 4.3.x.
+#+            The warning was only present if using the Python limited API in 4.2.1 and earlier.
+#+
+# 2025-04-30: wsfulton
+#             [Python] #3134 Fix maximum size of strings being marshalled from C/C++
+#             into Python. This has been changed from INT_MAX to PY_SSIZE_T_MAX in line
+diff --git a/Lib/python/pyhead.swg b/Lib/python/pyhead.swg
+index 50dca5bc0..4f238b9f6 100644
+--- a/Lib/python/pyhead.swg
++++ b/Lib/python/pyhead.swg
+@@ -60,6 +60,8 @@ SWIG_Python_str_FromChar(const char *c)
+ #endif
+ }
+ 
++#define SWIG_RUNTIME_MODULE "swig_runtime_data" SWIG_RUNTIME_VERSION
++
+ /* SWIGPY_USE_CAPSULE is no longer used within SWIG itself, but some user interface files check for it. */
+ # define SWIGPY_USE_CAPSULE
+ #ifdef SWIGPYTHON_BUILTIN
+@@ -67,7 +69,7 @@ SWIG_Python_str_FromChar(const char *c)
+ #else
+ # define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule" SWIG_TYPE_TABLE_NAME
+ #endif
+-# define SWIGPY_CAPSULE_NAME ("swig_runtime_data" SWIG_RUNTIME_VERSION "." SWIGPY_CAPSULE_ATTR_NAME)
++#define SWIGPY_CAPSULE_NAME SWIG_RUNTIME_MODULE "." SWIGPY_CAPSULE_ATTR_NAME
+ 
+ #if PY_VERSION_HEX < 0x03020000
+ #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
+diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg
+index 77d7fccfa..b9e3e7241 100644
+--- a/Lib/python/pyrun.swg
++++ b/Lib/python/pyrun.swg
+@@ -353,7 +353,7 @@ swig_varlink_type(void) {
+       PyObject_HEAD_INIT(NULL)
+       0,                                  /* ob_size */
+ #endif
+-      "swigvarlink",                      /* tp_name */
++      SWIG_RUNTIME_MODULE ".swigvarlink", /* tp_name */
+       sizeof(swig_varlinkobject),         /* tp_basicsize */
+       0,                                  /* tp_itemsize */
+       (destructor) swig_varlink_dealloc,  /* tp_dealloc */
+@@ -424,7 +424,7 @@ swig_varlink_type(void) {
+     { 0, NULL }
+   };
+   PyType_Spec spec = {
+-    "swigvarlink",
++    SWIG_RUNTIME_MODULE ".swigvarlink",
+     sizeof(swig_varlinkobject),
+     0,
+     Py_TPFLAGS_DEFAULT,
+@@ -750,7 +750,7 @@ SwigPyObject_Check(PyObject *op) {
+ #ifdef SWIGPYTHON_BUILTIN
+   if (PyType_IsSubtype(op_type, target_tp))
+     return 1;
+-  return (strcmp(op_type->tp_name, "SwigPyObject") == 0);
++  return (strcmp(op_type->tp_name, SWIG_RUNTIME_MODULE ".SwigPyObject") == 0);
+ #else
+ # ifdef Py_LIMITED_API
+   int cmp;
+@@ -766,7 +766,7 @@ SwigPyObject_Check(PyObject *op) {
+   SWIG_Py_DECREF(tp_name);
+   return cmp == 0;
+ # else
+-  return (strcmp(op_type->tp_name, "SwigPyObject") == 0);
++  return (strcmp(op_type->tp_name, SWIG_RUNTIME_MODULE ".SwigPyObject") == 0);
+ # endif
+ #endif
+ }
+@@ -966,7 +966,7 @@ SwigPyObject_TypeOnce(void) {
+       PyObject_HEAD_INIT(NULL)
+       0,                                    /* ob_size */
+ #endif
+-      "SwigPyObject",                       /* tp_name */
++      SWIG_RUNTIME_MODULE ".SwigPyObject",  /* tp_name */
+       sizeof(SwigPyObject),                 /* tp_basicsize */
+       0,                                    /* tp_itemsize */
+       (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
+@@ -1061,7 +1061,7 @@ SwigPyObject_TypeOnce(void) {
+     { 0, NULL }
+   };
+   PyType_Spec spec = {
+-    "SwigPyObject",
++    SWIG_RUNTIME_MODULE ".SwigPyObject",
+     sizeof(SwigPyObject),
+     0,
+     Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,
+@@ -1160,7 +1160,7 @@ SwigPyPacked_Check(PyObject *op) {
+   SWIG_Py_DECREF(tp_name);
+   return cmp == 0;
+ #else
+-  return (strcmp(op_type->tp_name, "SwigPyPacked") == 0);
++  return (strcmp(op_type->tp_name, SWIG_RUNTIME_MODULE ".SwigPyPacked") == 0);
+ #endif
+ }
+ 
+@@ -1188,7 +1188,7 @@ SwigPyPacked_TypeOnce(void) {
+       PyObject_HEAD_INIT(NULL)
+       0,                                    /* ob_size */
+ #endif
+-      "SwigPyPacked",                       /* tp_name */
++      SWIG_RUNTIME_MODULE ".SwigPyPacked",  /* tp_name */
+       sizeof(SwigPyPacked),                 /* tp_basicsize */
+       0,                                    /* tp_itemsize */
+       (destructor)SwigPyPacked_dealloc,     /* tp_dealloc */
+@@ -1281,7 +1281,7 @@ SwigPyPacked_TypeOnce(void) {
+     { 0, NULL }
+   };
+   PyType_Spec spec = {
+-    "SwigPyPacked",
++    SWIG_RUNTIME_MODULE ".SwigPyPacked",
+     sizeof(SwigPyPacked),
+     0,
+     Py_TPFLAGS_DEFAULT,
+@@ -1846,10 +1846,10 @@ SWIGRUNTIME void
+ SWIG_Python_SetModule(swig_module_info *swig_module) {
+ #if PY_VERSION_HEX >= 0x03000000
+  /* Add a dummy module object into sys.modules */
+-  PyObject *module = PyImport_AddModule("swig_runtime_data" SWIG_RUNTIME_VERSION);
++  PyObject *module = PyImport_AddModule(SWIG_RUNTIME_MODULE);
+ #else
+   static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */
+-  PyObject *module = Py_InitModule("swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table);
++  PyObject *module = Py_InitModule(SWIG_RUNTIME_MODULE, swig_empty_runtime_method_table);
+ #endif
+   PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule);
+   if (pointer && module) {
+-- 
+2.50.1
+
+
+From 7ecbb7103dec48bb316baa9ccd71ba7888de7c54 Mon Sep 17 00:00:00 2001
+From: William S Fulton 
+Date: Sun, 11 May 2025 16:02:43 +0100
+Subject: [PATCH 2/5] Add SwigPyObject, SwigPyPacked, swigvarlink to the swig
+ runtime module
+
+Also add SWIG_REFCNT_DEBUG for debugging reference counts when the main
+module is destroyed - there's some work to be done here on reference
+counts!
+---
+ Lib/python/pyinit.swg |  1 +
+ Lib/python/pyrun.swg  | 91 +++++++++++++++++++++++++++++++++----------
+ 2 files changed, 71 insertions(+), 21 deletions(-)
+
+diff --git a/Lib/python/pyinit.swg b/Lib/python/pyinit.swg
+index 5bf7097f5..4e25323f6 100644
+--- a/Lib/python/pyinit.swg
++++ b/Lib/python/pyinit.swg
+@@ -261,6 +261,7 @@ SWIG_init(void) {
+   (void)globals;
+ 
+   /* Create singletons now to avoid potential deadlocks with multi-threaded usage after module initialization */
++  SWIG_runtime_data_module();
+   SWIG_This();
+   SWIG_Python_TypeCache();
+   SwigPyPacked_type();
+diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg
+index b9e3e7241..2ef79f348 100644
+--- a/Lib/python/pyrun.swg
++++ b/Lib/python/pyrun.swg
+@@ -114,8 +114,25 @@ SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) {
+ 
+ #endif
+ 
+-/* Append a value to the result obj */
++/* SWIG runtime data Python module */
++static PyObject *Swig_runtime_data_module_global = NULL;
++
++/* Create/obtain the single swig_runtime_data module which is used across different SWIG generated modules */
++SWIGINTERN PyObject *
++SWIG_runtime_data_module() {
++  if (!Swig_runtime_data_module_global) {
++#if PY_VERSION_HEX >= 0x03000000
++    Swig_runtime_data_module_global = PyImport_AddModule(SWIG_RUNTIME_MODULE);
++#else
++    static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */
++    Swig_runtime_data_module_global = Py_InitModule(SWIG_RUNTIME_MODULE, swig_empty_runtime_method_table);
++#endif
++    SWIG_Py_XINCREF(Swig_runtime_data_module_global);
++  }
++  return Swig_runtime_data_module_global;
++}
+ 
++/* Append a value to the result obj */
+ SWIGINTERN PyObject*
+ SWIG_Python_AppendOutput(PyObject* result, PyObject* obj, int is_void) {
+   if (!result) {
+@@ -341,7 +358,7 @@ swig_varlink_setattr(PyObject *o, char *n, PyObject *p) {
+ 
+ SWIGINTERN PyTypeObject*
+ swig_varlink_type(void) {
+-  static char varlink__doc__[] = "Swig var link object";
++  static char varlink__doc__[] = "Swig variable link object";
+ #ifndef SWIG_HEAPTYPES
+   static PyTypeObject varlink_type;
+   static int type_init = 0;
+@@ -407,10 +424,13 @@ swig_varlink_type(void) {
+       0                                   /* tp_next */
+ #endif
+     };
++    PyObject *runtime_data_module = SWIG_runtime_data_module();
+     varlink_type = tmp;
+     type_init = 1;
+     if (PyType_Ready(&varlink_type) < 0)
+       return NULL;
++    if (PyModule_AddObject(runtime_data_module, "swigvarlink", (PyObject *)&varlink_type) == 0)
++      SWIG_Py_INCREF((PyObject *)&varlink_type);
+   }
+   return &varlink_type;
+ #else
+@@ -430,7 +450,11 @@ swig_varlink_type(void) {
+     Py_TPFLAGS_DEFAULT,
+     slots
+   };
+-  return (PyTypeObject *)PyType_FromSpec(&spec);
++  PyObject *pytype = PyType_FromSpec(&spec);
++  PyObject *runtime_data_module = SWIG_runtime_data_module();
++  if (pytype && PyModule_AddObject(runtime_data_module, "swigvarlink", pytype) == 0)
++    SWIG_Py_INCREF(pytype);
++  return (PyTypeObject *)pytype;
+ #endif
+ }
+ 
+@@ -910,7 +934,7 @@ swigobject_methods[] = {
+ 
+ SWIGRUNTIME PyTypeObject*
+ SwigPyObject_TypeOnce(void) {
+-  static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer";
++  static char swigobject_doc[] = "Swig object holding a C/C++ pointer";
+ #ifndef SWIG_HEAPTYPES
+   static PyNumberMethods SwigPyObject_as_number = {
+     (binaryfunc)0, /*nb_add*/
+@@ -1043,10 +1067,13 @@ SwigPyObject_TypeOnce(void) {
+       0                                     /* tp_next */
+ #endif
+     };
++    PyObject *runtime_data_module = SWIG_runtime_data_module();
+     swigpyobject_type = tmp;
+     type_init = 1;
+     if (PyType_Ready(&swigpyobject_type) != 0)
+       return NULL;
++    if (PyModule_AddObject(runtime_data_module, "SwigPyObject", (PyObject *)&swigpyobject_type) == 0)
++      SWIG_Py_INCREF((PyObject *)&swigpyobject_type);
+   }
+   return &swigpyobject_type;
+ #else
+@@ -1067,7 +1094,11 @@ SwigPyObject_TypeOnce(void) {
+     Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,
+     slots
+   };
+-  return (PyTypeObject *)PyType_FromSpec(&spec);
++  PyObject *pytype = PyType_FromSpec(&spec);
++  PyObject *runtime_data_module = SWIG_runtime_data_module();
++  if (pytype && PyModule_AddObject(runtime_data_module, "SwigPyObject", pytype) == 0)
++    SWIG_Py_INCREF(pytype);
++  return (PyTypeObject *)pytype;
+ #endif
+ }
+ 
+@@ -1150,7 +1181,7 @@ SwigPyPacked_Check(PyObject *op) {
+   PyObject *tp_name;
+ #endif
+   PyTypeObject* op_type = Py_TYPE(op);
+-  if (op_type == SwigPyPacked_TypeOnce())
++  if (op_type == SwigPyPacked_type())
+     return 1;
+ #ifdef Py_LIMITED_API
+   tp_name = PyObject_GetAttrString((PyObject *)op_type, "__name__");
+@@ -1176,7 +1207,7 @@ SwigPyPacked_dealloc(PyObject *v)
+ 
+ SWIGRUNTIME PyTypeObject*
+ SwigPyPacked_TypeOnce(void) {
+-  static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer";
++  static char swigpacked_doc[] = "Swig object holding a C/C++ function pointer";
+ #ifndef SWIG_HEAPTYPES
+   static PyTypeObject swigpypacked_type;
+   static int type_init = 0;
+@@ -1265,10 +1296,13 @@ SwigPyPacked_TypeOnce(void) {
+       0                                     /* tp_next */
+ #endif
+     };
++    PyObject *runtime_data_module = SWIG_runtime_data_module();
+     swigpypacked_type = tmp;
+     type_init = 1;
+     if (PyType_Ready(&swigpypacked_type) != 0)
+       return NULL;
++    if (PyModule_AddObject(runtime_data_module, "SwigPyPacked", (PyObject *)&swigpypacked_type) == 0)
++      SWIG_Py_INCREF((PyObject *)&swigpypacked_type);
+   }
+   return &swigpypacked_type;
+ #else
+@@ -1287,7 +1321,11 @@ SwigPyPacked_TypeOnce(void) {
+     Py_TPFLAGS_DEFAULT,
+     slots
+   };
+-  return (PyTypeObject *)PyType_FromSpec(&spec);
++  PyObject *pytype = PyType_FromSpec(&spec);
++  PyObject *runtime_data_module = SWIG_runtime_data_module();
++  if (pytype && PyModule_AddObject(runtime_data_module, "SwigPyPacked", pytype) == 0)
++    SWIG_Py_INCREF(pytype);
++  return (PyTypeObject *)pytype;
+ #endif
+ }
+ 
+@@ -1815,6 +1853,12 @@ SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) {
+ }
+ 
+ 
++#if defined(SWIG_REFCNT_DEBUG)
++#define SWIG_PYOBJ_REFCNT(OBJ) fprintf(stdout, "" #OBJ " count %ld\n", (OBJ ? Py_REFCNT(OBJ) : 0))
++#else
++#define SWIG_PYOBJ_REFCNT(OBJ)
++#endif
++
+ static int interpreter_counter = 0; /* how many (sub-)interpreters are using swig_module's types */
+ 
+ SWIGRUNTIME void
+@@ -1825,7 +1869,7 @@ SWIG_Python_DestroyModule(PyObject *obj)
+   size_t i;
+   if (--interpreter_counter != 0) /* another sub-interpreter may still be using the swig_module's types */
+     return;
+-  for (i =0; i < swig_module->size; ++i) {
++  for (i = 0; i < swig_module->size; ++i) {
+     swig_type_info *ty = types[i];
+     if (ty->owndata) {
+       SwigPyClientData *data = (SwigPyClientData *) ty->clientdata;
+@@ -1833,27 +1877,32 @@ SWIG_Python_DestroyModule(PyObject *obj)
+       if (data) SwigPyClientData_Del(data);
+     }
+   }
+-  SWIG_Py_DECREF(SWIG_This());
++  SWIG_Py_XDECREF(Swig_This_global);
++  SWIG_PYOBJ_REFCNT(Swig_This_global);
+   Swig_This_global = NULL;
+-  SWIG_Py_DECREF(SWIG_globals());
++
++  SWIG_Py_XDECREF(Swig_Globals_global);
++  SWIG_PYOBJ_REFCNT(Swig_Globals_global);
+   Swig_Globals_global = NULL;
+-  SWIG_Py_DECREF(SWIG_Python_TypeCache());
++
++  SWIG_Py_XDECREF(Swig_TypeCache_global);
++  SWIG_PYOBJ_REFCNT(Swig_TypeCache_global);
+   Swig_TypeCache_global = NULL;
++
++  SWIG_PYOBJ_REFCNT(Swig_Capsule_global);
+   Swig_Capsule_global = NULL;
++
++  SWIG_Py_XDECREF(Swig_runtime_data_module_global);
++  SWIG_PYOBJ_REFCNT(Swig_runtime_data_module_global);
++  Swig_runtime_data_module_global = NULL;
+ }
+ 
+ SWIGRUNTIME void
+ SWIG_Python_SetModule(swig_module_info *swig_module) {
+-#if PY_VERSION_HEX >= 0x03000000
+- /* Add a dummy module object into sys.modules */
+-  PyObject *module = PyImport_AddModule(SWIG_RUNTIME_MODULE);
+-#else
+-  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */
+-  PyObject *module = Py_InitModule(SWIG_RUNTIME_MODULE, swig_empty_runtime_method_table);
+-#endif
++  PyObject *runtime_data_module = SWIG_runtime_data_module();
+   PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule);
+-  if (pointer && module) {
+-    if (PyModule_AddObject(module, SWIGPY_CAPSULE_ATTR_NAME, pointer) == 0) {
++  if (pointer && runtime_data_module) {
++    if (PyModule_AddObject(runtime_data_module, SWIGPY_CAPSULE_ATTR_NAME, pointer) == 0) {
+       ++interpreter_counter;
+       Swig_Capsule_global = pointer;
+     } else {
+-- 
+2.50.1
+
+
+From 53453d51ec3ca111c5c97530d8ee4c6b5184c85e Mon Sep 17 00:00:00 2001
+From: William S Fulton 
+Date: Mon, 12 May 2025 07:25:35 +0100
+Subject: [PATCH 3/5] Rename Python swigvarlink type to SwigVarLink
+
+With this type having just moved into a module, let's also
+make a change to use correct Python naming conventions for the
+name of the type.
+---
+ CHANGES.current      |  8 ++++++
+ Lib/python/pyrun.swg | 64 ++++++++++++++++++++++----------------------
+ 2 files changed, 40 insertions(+), 32 deletions(-)
+
+#diff --git a/CHANGES.current b/CHANGES.current
+#index 0bce7937f..9a2c0f5e2 100644
+#--- a/CHANGES.current
+#+++ b/CHANGES.current
+#@@ -7,6 +7,14 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
+# Version 4.4.0 (in progress)
+# ===========================
+# 
+#+2025-05-11: wsfulton
+#+            [Python] Move the SwigPyObject, SwigPyPacked, SwigVarLink (renamed from
+#+            swigvarlink) support Python types to the SWIG runtime module (currently called
+#+            swig_runtime_data5).
+#+
+#+            Note that these affect the Python runtime implementation, so the recently bumped
+#+            SWIG_RUNTIME_VERSION to 5 for all scripting languages will now include this change.
+#+
+# 2025-05-10: jschueller, wsfulton
+#             [Python] #2881 #3061 #3160 DeprecationWarning fixes when using 'python -Walways'
+#             or if using one of the types being warned about:
+diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg
+index 2ef79f348..e7164725d 100644
+--- a/Lib/python/pyrun.swg
++++ b/Lib/python/pyrun.swg
+@@ -257,7 +257,7 @@ typedef struct swig_varlinkobject {
+ } swig_varlinkobject;
+ 
+ SWIGINTERN PyObject *
+-swig_varlink_repr(PyObject *SWIGUNUSEDPARM(v)) {
++SwigVarLink_repr(PyObject *SWIGUNUSEDPARM(v)) {
+ #if PY_VERSION_HEX >= 0x03000000
+   return PyUnicode_InternFromString("");
+ #else
+@@ -266,7 +266,7 @@ swig_varlink_repr(PyObject *SWIGUNUSEDPARM(v)) {
+ }
+ 
+ SWIGINTERN PyObject *
+-swig_varlink_str(PyObject *o) {
++SwigVarLink_str(PyObject *o) {
+   swig_varlinkobject *v = (swig_varlinkobject *) o;
+ #if PY_VERSION_HEX >= 0x03000000
+   PyObject *str = PyUnicode_InternFromString("(");
+@@ -305,7 +305,7 @@ swig_varlink_str(PyObject *o) {
+ }
+ 
+ SWIGINTERN void
+-swig_varlink_dealloc(PyObject *o) {
++SwigVarLink_dealloc(PyObject *o) {
+   swig_varlinkobject *v = (swig_varlinkobject *) o;
+   swig_globalvar *var = v->vars;
+   while (var) {
+@@ -317,7 +317,7 @@ swig_varlink_dealloc(PyObject *o) {
+ }
+ 
+ SWIGINTERN PyObject *
+-swig_varlink_getattr(PyObject *o, char *n) {
++SwigVarLink_getattr(PyObject *o, char *n) {
+   swig_varlinkobject *v = (swig_varlinkobject *) o;
+   PyObject *res = NULL;
+   swig_globalvar *var = v->vars;
+@@ -335,7 +335,7 @@ swig_varlink_getattr(PyObject *o, char *n) {
+ }
+ 
+ SWIGINTERN int
+-swig_varlink_setattr(PyObject *o, char *n, PyObject *p) {
++SwigVarLink_setattr(PyObject *o, char *n, PyObject *p) {
+   swig_varlinkobject *v = (swig_varlinkobject *) o;
+   int res = 1;
+   swig_globalvar *var = v->vars;
+@@ -358,7 +358,7 @@ swig_varlink_setattr(PyObject *o, char *n, PyObject *p) {
+ 
+ SWIGINTERN PyTypeObject*
+ swig_varlink_type(void) {
+-  static char varlink__doc__[] = "Swig variable link object";
++  static char SwigVarLink_doc[] = "Swig variable link object";
+ #ifndef SWIG_HEAPTYPES
+   static PyTypeObject varlink_type;
+   static int type_init = 0;
+@@ -370,30 +370,30 @@ swig_varlink_type(void) {
+       PyObject_HEAD_INIT(NULL)
+       0,                                  /* ob_size */
+ #endif
+-      SWIG_RUNTIME_MODULE ".swigvarlink", /* tp_name */
++      SWIG_RUNTIME_MODULE ".SwigVarLink", /* tp_name */
+       sizeof(swig_varlinkobject),         /* tp_basicsize */
+       0,                                  /* tp_itemsize */
+-      (destructor) swig_varlink_dealloc,  /* tp_dealloc */
++      (destructor) SwigVarLink_dealloc,   /* tp_dealloc */
+ #if PY_VERSION_HEX < 0x030800b4
+       (printfunc)0,                       /* tp_print */
+ #else
+       (Py_ssize_t)0,                      /* tp_vectorcall_offset */
+ #endif
+-      (getattrfunc) swig_varlink_getattr, /* tp_getattr */
+-      (setattrfunc) swig_varlink_setattr, /* tp_setattr */
++      (getattrfunc) SwigVarLink_getattr,  /* tp_getattr */
++      (setattrfunc) SwigVarLink_setattr,  /* tp_setattr */
+       0,                                  /* tp_compare */
+-      (reprfunc) swig_varlink_repr,       /* tp_repr */
++      (reprfunc) SwigVarLink_repr,        /* tp_repr */
+       0,                                  /* tp_as_number */
+       0,                                  /* tp_as_sequence */
+       0,                                  /* tp_as_mapping */
+       0,                                  /* tp_hash */
+       0,                                  /* tp_call */
+-      (reprfunc) swig_varlink_str,        /* tp_str */
++      (reprfunc) SwigVarLink_str,         /* tp_str */
+       0,                                  /* tp_getattro */
+       0,                                  /* tp_setattro */
+       0,                                  /* tp_as_buffer */
+       0,                                  /* tp_flags */
+-      varlink__doc__,                     /* tp_doc */
++      SwigVarLink_doc,                    /* tp_doc */
+       0,                                  /* tp_traverse */
+       0,                                  /* tp_clear */
+       0,                                  /* tp_richcompare */
+@@ -429,22 +429,22 @@ swig_varlink_type(void) {
+     type_init = 1;
+     if (PyType_Ready(&varlink_type) < 0)
+       return NULL;
+-    if (PyModule_AddObject(runtime_data_module, "swigvarlink", (PyObject *)&varlink_type) == 0)
++    if (PyModule_AddObject(runtime_data_module, "SwigVarLink", (PyObject *)&varlink_type) == 0)
+       SWIG_Py_INCREF((PyObject *)&varlink_type);
+   }
+   return &varlink_type;
+ #else
+   PyType_Slot slots[] = {
+-    { Py_tp_dealloc, (void *)swig_varlink_dealloc },
+-    { Py_tp_repr, (void *)swig_varlink_repr },
+-    { Py_tp_getattr, (void *)swig_varlink_getattr },
+-    { Py_tp_setattr, (void *)swig_varlink_setattr },
+-    { Py_tp_str, (void *)swig_varlink_str },
+-    { Py_tp_doc, (void *)varlink__doc__ },
++    { Py_tp_dealloc, (void *)SwigVarLink_dealloc },
++    { Py_tp_repr, (void *)SwigVarLink_repr },
++    { Py_tp_getattr, (void *)SwigVarLink_getattr },
++    { Py_tp_setattr, (void *)SwigVarLink_setattr },
++    { Py_tp_str, (void *)SwigVarLink_str },
++    { Py_tp_doc, (void *)SwigVarLink_doc },
+     { 0, NULL }
+   };
+   PyType_Spec spec = {
+-    SWIG_RUNTIME_MODULE ".swigvarlink",
++    SWIG_RUNTIME_MODULE ".SwigVarLink",
+     sizeof(swig_varlinkobject),
+     0,
+     Py_TPFLAGS_DEFAULT,
+@@ -452,7 +452,7 @@ swig_varlink_type(void) {
+   };
+   PyObject *pytype = PyType_FromSpec(&spec);
+   PyObject *runtime_data_module = SWIG_runtime_data_module();
+-  if (pytype && PyModule_AddObject(runtime_data_module, "swigvarlink", pytype) == 0)
++  if (pytype && PyModule_AddObject(runtime_data_module, "SwigVarLink", pytype) == 0)
+     SWIG_Py_INCREF(pytype);
+   return (PyTypeObject *)pytype;
+ #endif
+@@ -715,7 +715,7 @@ SwigPyObject_repr(SwigPyObject *v)
+ }
+ 
+ /* We need a version taking two PyObject* parameters so it's a valid
+- * PyCFunction to use in swigobject_methods[]. */
++ * PyCFunction to use in SwigPyObject_methods[]. */
+ SWIGRUNTIME PyObject *
+ SwigPyObject_repr2(PyObject *v, PyObject *SWIGUNUSEDPARM(args))
+ {
+@@ -922,7 +922,7 @@ SwigPyObject_own(PyObject *v, PyObject *args)
+ }
+ 
+ static PyMethodDef
+-swigobject_methods[] = {
++SwigPyObject_methods[] = {
+   {"disown",  SwigPyObject_disown,  METH_NOARGS,  "releases ownership of the pointer"},
+   {"acquire", SwigPyObject_acquire, METH_NOARGS,  "acquires ownership of the pointer"},
+   {"own",     SwigPyObject_own,     METH_VARARGS, "returns/sets ownership of the pointer"},
+@@ -934,7 +934,7 @@ swigobject_methods[] = {
+ 
+ SWIGRUNTIME PyTypeObject*
+ SwigPyObject_TypeOnce(void) {
+-  static char swigobject_doc[] = "Swig object holding a C/C++ pointer";
++  static char SwigPyObject_doc[] = "Swig object holding a C/C++ pointer";
+ #ifndef SWIG_HEAPTYPES
+   static PyNumberMethods SwigPyObject_as_number = {
+     (binaryfunc)0, /*nb_add*/
+@@ -1017,14 +1017,14 @@ SwigPyObject_TypeOnce(void) {
+       0,                                    /* tp_setattro */
+       0,                                    /* tp_as_buffer */
+       Py_TPFLAGS_DEFAULT,                   /* tp_flags */
+-      swigobject_doc,                       /* tp_doc */
++      SwigPyObject_doc,                     /* tp_doc */
+       0,                                    /* tp_traverse */
+       0,                                    /* tp_clear */
+       (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */
+       0,                                    /* tp_weaklistoffset */
+       0,                                    /* tp_iter */
+       0,                                    /* tp_iternext */
+-      swigobject_methods,                   /* tp_methods */
++      SwigPyObject_methods,                 /* tp_methods */
+       0,                                    /* tp_members */
+       0,                                    /* tp_getset */
+       0,                                    /* tp_base */
+@@ -1081,9 +1081,9 @@ SwigPyObject_TypeOnce(void) {
+     { Py_tp_dealloc, (void *)SwigPyObject_dealloc },
+     { Py_tp_repr, (void *)SwigPyObject_repr },
+     { Py_tp_getattro, (void *)PyObject_GenericGetAttr },
+-    { Py_tp_doc, (void *)swigobject_doc },
++    { Py_tp_doc, (void *)SwigPyObject_doc },
+     { Py_tp_richcompare, (void *)SwigPyObject_richcompare },
+-    { Py_tp_methods, (void *)swigobject_methods },
++    { Py_tp_methods, (void *)SwigPyObject_methods },
+     { Py_nb_int, (void *)SwigPyObject_long },
+     { 0, NULL }
+   };
+@@ -1207,7 +1207,7 @@ SwigPyPacked_dealloc(PyObject *v)
+ 
+ SWIGRUNTIME PyTypeObject*
+ SwigPyPacked_TypeOnce(void) {
+-  static char swigpacked_doc[] = "Swig object holding a C/C++ function pointer";
++  static char SwigPyPacked_doc[] = "Swig object holding a C/C++ function pointer";
+ #ifndef SWIG_HEAPTYPES
+   static PyTypeObject swigpypacked_type;
+   static int type_init = 0;
+@@ -1246,7 +1246,7 @@ SwigPyPacked_TypeOnce(void) {
+       0,                                    /* tp_setattro */
+       0,                                    /* tp_as_buffer */
+       Py_TPFLAGS_DEFAULT,                   /* tp_flags */
+-      swigpacked_doc,                       /* tp_doc */
++      SwigPyPacked_doc,                     /* tp_doc */
+       0,                                    /* tp_traverse */
+       0,                                    /* tp_clear */
+       0,                                    /* tp_richcompare */
+@@ -1311,7 +1311,7 @@ SwigPyPacked_TypeOnce(void) {
+     { Py_tp_repr, (void *)SwigPyPacked_repr },
+     { Py_tp_str, (void *)SwigPyPacked_str },
+     { Py_tp_getattro, (void *)PyObject_GenericGetAttr },
+-    { Py_tp_doc, (void *)swigpacked_doc },
++    { Py_tp_doc, (void *)SwigPyPacked_doc },
+     { 0, NULL }
+   };
+   PyType_Spec spec = {
+-- 
+2.50.1
+
+
+From 831fc6069115b8a31bed5d0bcae221825cd43c18 Mon Sep 17 00:00:00 2001
+From: William S Fulton 
+Date: Tue, 13 May 2025 08:40:45 +0100
+Subject: [PATCH 4/5] Add docs on the python runtime module
+
+---
+ Doc/Manual/Python.html | 50 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 50 insertions(+)
+
+diff --git a/Doc/Manual/Python.html b/Doc/Manual/Python.html
+index 7427ca4cf..cc82e9762 100644
+--- a/Doc/Manual/Python.html
++++ b/Doc/Manual/Python.html
+@@ -1000,6 +1000,10 @@ module name, make sure you don't use the same name as a built-in
+ Python command or standard module name.
+ 

+ ++

++There is also a further 'behind the scenes' Python runtime module, but this implementation detail is covered later. ++

++ +

33.3.2 Functions

+ + +@@ -2704,6 +2708,52 @@ in the file python/pyopers.swg in the SWIG library. +

+ + ++

33.4.3 Python runtime module

++ ++

++In addition to the two Python modules that are generated by SWIG, there is also a third 'behind the scenes' Python runtime module. ++The runtime module is very much an implementation level detail, but is mentioned here for completeness and for the inquisitive! ++

++ ++

++SWIG implements a run-time type checker for checking a Python type/class as it passes between the Python and C/C++ layers. ++It is also used when multiple SWIG modules need to share type information with each other (when using the %import directive). ++More details can be found in the SWIG runtime code and run-time type checker sections. ++The runtime module contains the following: ++

++ ++
    ++
  1. A Python Capsule containing a pointer to the underlying C module data structure used by the runtime type checker. For multiple modules to access the common runtime implementation. The Capsule is named type_pointer_capsule except when using -builtin when it is instead called type_pointer_capsule_builtin.
  2. ++
  3. The builtin type SwigPyObject - Swig object holding a C/C++ pointer. For 'normal' pointers, that is, not for function pointers nor member function pointers.
  4. ++
  5. The builtin type SwigPyPacked - Swig object holding a C/C++ function pointer. For C pointers to a function or C++ member function pointers.
  6. ++
  7. The builtin type SwigVarLink - Swig variable link object. The type used by the 'cvar' field for accessing C/C++ global variables.
  8. ++
++ ++

++If multiple SWIG modules are being used, the C/C++ wrapped proxy classes/types can be shared or used across the different modules via the SWIG runtime. ++The runtime is accessed and shared via the Capsule in the runtime module. ++The Python runtime module is implemented as a Python builtin module. While users are unlikely to use or import the runtime module directly, it can be inspected simply enough. ++The name of the module is swig_runtime_data appended with the runtime version as defined by SWIG_RUNTIME_VERSION. ++First import your SWIG generated module. Next find the exact runtime module name so you know what to import before inspecting it with say dir. ++The interpreter session below demonstrates this with a SWIG generated module called example: ++

++ ++
++
++>>> import example
++>>> import sys
++>>> list(m for m in sys.modules if m.startswith("swig_runtime_data"))
++['swig_runtime_data5']
++>>> import swig_runtime_data5
++>>> dir(swig_runtime_data5)
++['SwigPyObject', 'SwigPyPacked', 'SwigVarLink', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'type_pointer_capsule']
++
++
++ ++

++Compatibility Note: Only the Capsule was stored in the Python runtime module prior to SWIG-4.4.0. ++

++ +

33.4.3 Memory management

+ + +-- +2.50.1 + + +From d966fd3ba18370b5bf34b67ff376d88fb6d3e65b Mon Sep 17 00:00:00 2001 +From: William S Fulton +Date: Tue, 13 May 2025 21:42:56 +0100 +Subject: [PATCH 5/5] Test swig runtime module contains expected names + +--- + .../python/python_moduleimport_runme.py | 17 +++++++++++++++++ + Examples/test-suite/python_moduleimport.i | 2 ++ + 2 files changed, 19 insertions(+) + +diff --git a/Examples/test-suite/python/python_moduleimport_runme.py b/Examples/test-suite/python/python_moduleimport_runme.py +index cdb860730..8e0aa6121 100644 +--- a/Examples/test-suite/python/python_moduleimport_runme.py ++++ b/Examples/test-suite/python/python_moduleimport_runme.py +@@ -1,7 +1,24 @@ + import python_moduleimport + ++# Test custom moduleimport in %module + if python_moduleimport.simple_function(99) != 99: + raise RuntimeError("simple_function") + + if python_moduleimport.extra_import_variable != "custom import of _python_moduleimport": + raise RuntimeError("custom import") ++ ++ ++# Test the swig runtime module contains the expected names/types ++import importlib ++swig_runtime_version = python_moduleimport.runtime_version() ++swig_runtime_data = importlib.import_module("swig_runtime_data" + swig_runtime_version) # Equivalent to (for version 5): import swig_runtime_data5 as swig_runtime_data ++ ++names = dir(swig_runtime_data) ++expected_names = ("SwigPyObject", "SwigPyPacked", "SwigVarLink") ++for name in expected_names: ++ if name not in names: ++ raise RuntimeError("{} not in {}".format(name, names)) ++ ++cvar_type = type(python_moduleimport.cvar) ++if cvar_type.__name__ != "SwigVarLink": ++ raise RuntimeError("cvar type name is incorrect: {}".format(cvar_type.__name__)) +diff --git a/Examples/test-suite/python_moduleimport.i b/Examples/test-suite/python_moduleimport.i +index f62547dcd..f0d203433 100644 +--- a/Examples/test-suite/python_moduleimport.i ++++ b/Examples/test-suite/python_moduleimport.i +@@ -23,4 +23,6 @@ from $module import * + + %inline %{ + int simple_function(int i) { return i; } ++int globalvar = 99; ++const char * runtime_version() { return SWIG_RUNTIME_VERSION; } + %} +-- +2.50.1 + diff --git a/swig.spec b/swig.spec index 9c690f1..7aa16c3 100644 --- a/swig.spec +++ b/swig.spec @@ -69,7 +69,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.3.1 -Release: 3%{?dist} +Release: 4%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -82,6 +82,9 @@ Source4: ccache-swig.csh %endif # https://github.com/swig/swig/pull/3159 Patch0: swig-python-Python-3.14-support.patch +# Python DeprecationWarning fixes - in upstream after 4.4.0 +# https://github.com/swig/swig/issues/2881 +Patch1: swig-4.4.0-Python-DeprecationWarning-fixes.patch BuildRequires: coreutils BuildRequires: findutils @@ -365,6 +368,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Jul 31 2025 Jitka Plesnikova - 4.3.1-4 +- Fix Python DeprecationWarning + * Fri Jul 25 2025 Fedora Release Engineering - 4.3.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From ad62c005a3acb8b4cd79580fd0d8e6f7051f5f2c Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Thu, 7 Aug 2025 10:42:08 -0600 Subject: [PATCH 51/54] Rebuild for Octave 10.2 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 7aa16c3..4861e11 100644 --- a/swig.spec +++ b/swig.spec @@ -69,7 +69,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.3.1 -Release: 4%{?dist} +Release: 5%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -368,6 +368,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Aug 07 2025 Orion Poplawski - 4.3.1-5 +- Rebuild for Octave 10.2 + * Thu Jul 31 2025 Jitka Plesnikova - 4.3.1-4 - Fix Python DeprecationWarning From 28a355063e5bef532843d6e332ee5e2a6da050fd Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 13 Oct 2025 18:22:54 +0100 Subject: [PATCH 52/54] OCaml 5.4.0 rebuild --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 4861e11..d60b620 100644 --- a/swig.spec +++ b/swig.spec @@ -69,7 +69,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.3.1 -Release: 5%{?dist} +Release: 6%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -368,6 +368,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Oct 13 2025 Richard W.M. Jones - 4.3.1-6 +- OCaml 5.4.0 rebuild + * Thu Aug 07 2025 Orion Poplawski - 4.3.1-5 - Rebuild for Octave 10.2 From 6eb1208d37dd0ce6bd8cf17f8877154879b1853e Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 23 Oct 2025 12:20:59 +0200 Subject: [PATCH 53/54] 4.4.0 bump (rhbz#2405182) --- .gitignore | 1 + sources | 2 +- swig.spec | 14 ++++++-------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 34ba3f1..a1b574c 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ swig-2.0.0.tar.gz /swig-4.2.1.tar.gz /swig-4.3.0.tar.gz /swig-4.3.1.tar.gz +/swig-4.4.0.tar.gz diff --git a/sources b/sources index 581ec8f..06c0ef9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.3.1.tar.gz) = 8958f7bc3345549a9bc4e00aa8d40a99f6c4bb92b95d627c8796cf8f8d1ba0041a89cab542f171778c2b26aa2a877767181ae9bd2c05fd055f373a32a463399c +SHA512 (swig-4.4.0.tar.gz) = 0cd4625166240f73075c22e140336b8e39f0f98d4343caba472b8eb3fa64561152e6978d5735d883cf62af10b84a9f0e20b3bb40288341a82c68a4cb79e46f5f diff --git a/swig.spec b/swig.spec index 7aa16c3..30cbcc9 100644 --- a/swig.spec +++ b/swig.spec @@ -56,7 +56,7 @@ %else # Temporary disable java tests, because they doesn't pass with java-21-openjdk # https://github.com/swig/swig/issues/2767 -%{!?javalang:%global javalang 0} +%{!?javalang:%global javalang 1} %endif # Do not run Go tests, they failed with 4.0.0 on ppc64le, s390 @@ -68,8 +68,8 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.3.1 -Release: 4%{?dist} +Version: 4.4.0 +Release: 1%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -80,11 +80,6 @@ Source2: description-ccache.h2m Source3: ccache-swig.sh Source4: ccache-swig.csh %endif -# https://github.com/swig/swig/pull/3159 -Patch0: swig-python-Python-3.14-support.patch -# Python DeprecationWarning fixes - in upstream after 4.4.0 -# https://github.com/swig/swig/issues/2881 -Patch1: swig-4.4.0-Python-DeprecationWarning-fixes.patch BuildRequires: coreutils BuildRequires: findutils @@ -368,6 +363,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Oct 21 2025 Jitka Plesnikova - 4.4.0-1 +- 4.4.0 bump (rhbz#2405182) + * Thu Jul 31 2025 Jitka Plesnikova - 4.3.1-4 - Fix Python DeprecationWarning From 74b108992c47cd36a336557f97c70fd5aed0dbf3 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 10 Dec 2025 15:58:52 +0100 Subject: [PATCH 54/54] 4.4.1 bump (rhbz#2419819, rhbz#2415440) --- .gitignore | 1 + sources | 2 +- ....4.0-Python-DeprecationWarning-fixes.patch | 806 ------------------ swig.spec | 5 +- 4 files changed, 6 insertions(+), 808 deletions(-) delete mode 100644 swig-4.4.0-Python-DeprecationWarning-fixes.patch diff --git a/.gitignore b/.gitignore index a1b574c..8cec1dc 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ swig-2.0.0.tar.gz /swig-4.3.0.tar.gz /swig-4.3.1.tar.gz /swig-4.4.0.tar.gz +/swig-4.4.1.tar.gz diff --git a/sources b/sources index 06c0ef9..f6fe3ce 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.4.0.tar.gz) = 0cd4625166240f73075c22e140336b8e39f0f98d4343caba472b8eb3fa64561152e6978d5735d883cf62af10b84a9f0e20b3bb40288341a82c68a4cb79e46f5f +SHA512 (swig-4.4.1.tar.gz) = 103ddb4a5914f28e6739a006d35042c701e55ba05066acff3f3609befb5f43f253ea717fc41d06c93d8fb187ded4399c12c94665b93dc06d0fb835069391c7c7 diff --git a/swig-4.4.0-Python-DeprecationWarning-fixes.patch b/swig-4.4.0-Python-DeprecationWarning-fixes.patch deleted file mode 100644 index 17b9246..0000000 --- a/swig-4.4.0-Python-DeprecationWarning-fixes.patch +++ /dev/null @@ -1,806 +0,0 @@ -From 49a7d2b0c6aed00bd07a9a28569020d560c2658c Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Sat, 10 May 2025 13:47:35 +0100 -Subject: [PATCH 1/5] Python DeprecationWarning fixes - -DeprecationWarning fixes when using 'python -Walways' or if using one of the types being warned about: - - DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute - DeprecationWarning: builtin type SwigPyObject has no __module__ attribute - DeprecationWarning: builtin type swigvarlink has no __module__ attribute - -The warning was present if code was generated without using -builtin in 4.3.x. -The warning was only present if using the Python limited API in 4.2.1 and earlier. - -These 3 types were not in any module at all. Now they are in the swig runtime module. -Docs to follow. - -Issue #2881 -Issue #3061 -Issue #3160 ---- - CHANGES.current | 11 +++++++++++ - Lib/python/pyhead.swg | 4 +++- - Lib/python/pyrun.swg | 22 +++++++++++----------- - 3 files changed, 25 insertions(+), 12 deletions(-) - -#diff --git a/CHANGES.current b/CHANGES.current -#index 99c8a1d8f..0bce7937f 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,17 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.4.0 (in progress) -# =========================== -# -#+2025-05-10: jschueller, wsfulton -#+ [Python] #2881 #3061 #3160 DeprecationWarning fixes when using 'python -Walways' -#+ or if using one of the types being warned about: -#+ -#+ DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute -#+ DeprecationWarning: builtin type SwigPyObject has no __module__ attribute -#+ DeprecationWarning: builtin type swigvarlink has no __module__ attribute -#+ -#+ The warning was present if code was generated without using -builtin in 4.3.x. -#+ The warning was only present if using the Python limited API in 4.2.1 and earlier. -#+ -# 2025-04-30: wsfulton -# [Python] #3134 Fix maximum size of strings being marshalled from C/C++ -# into Python. This has been changed from INT_MAX to PY_SSIZE_T_MAX in line -diff --git a/Lib/python/pyhead.swg b/Lib/python/pyhead.swg -index 50dca5bc0..4f238b9f6 100644 ---- a/Lib/python/pyhead.swg -+++ b/Lib/python/pyhead.swg -@@ -60,6 +60,8 @@ SWIG_Python_str_FromChar(const char *c) - #endif - } - -+#define SWIG_RUNTIME_MODULE "swig_runtime_data" SWIG_RUNTIME_VERSION -+ - /* SWIGPY_USE_CAPSULE is no longer used within SWIG itself, but some user interface files check for it. */ - # define SWIGPY_USE_CAPSULE - #ifdef SWIGPYTHON_BUILTIN -@@ -67,7 +69,7 @@ SWIG_Python_str_FromChar(const char *c) - #else - # define SWIGPY_CAPSULE_ATTR_NAME "type_pointer_capsule" SWIG_TYPE_TABLE_NAME - #endif --# define SWIGPY_CAPSULE_NAME ("swig_runtime_data" SWIG_RUNTIME_VERSION "." SWIGPY_CAPSULE_ATTR_NAME) -+#define SWIGPY_CAPSULE_NAME SWIG_RUNTIME_MODULE "." SWIGPY_CAPSULE_ATTR_NAME - - #if PY_VERSION_HEX < 0x03020000 - #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) -diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg -index 77d7fccfa..b9e3e7241 100644 ---- a/Lib/python/pyrun.swg -+++ b/Lib/python/pyrun.swg -@@ -353,7 +353,7 @@ swig_varlink_type(void) { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ - #endif -- "swigvarlink", /* tp_name */ -+ SWIG_RUNTIME_MODULE ".swigvarlink", /* tp_name */ - sizeof(swig_varlinkobject), /* tp_basicsize */ - 0, /* tp_itemsize */ - (destructor) swig_varlink_dealloc, /* tp_dealloc */ -@@ -424,7 +424,7 @@ swig_varlink_type(void) { - { 0, NULL } - }; - PyType_Spec spec = { -- "swigvarlink", -+ SWIG_RUNTIME_MODULE ".swigvarlink", - sizeof(swig_varlinkobject), - 0, - Py_TPFLAGS_DEFAULT, -@@ -750,7 +750,7 @@ SwigPyObject_Check(PyObject *op) { - #ifdef SWIGPYTHON_BUILTIN - if (PyType_IsSubtype(op_type, target_tp)) - return 1; -- return (strcmp(op_type->tp_name, "SwigPyObject") == 0); -+ return (strcmp(op_type->tp_name, SWIG_RUNTIME_MODULE ".SwigPyObject") == 0); - #else - # ifdef Py_LIMITED_API - int cmp; -@@ -766,7 +766,7 @@ SwigPyObject_Check(PyObject *op) { - SWIG_Py_DECREF(tp_name); - return cmp == 0; - # else -- return (strcmp(op_type->tp_name, "SwigPyObject") == 0); -+ return (strcmp(op_type->tp_name, SWIG_RUNTIME_MODULE ".SwigPyObject") == 0); - # endif - #endif - } -@@ -966,7 +966,7 @@ SwigPyObject_TypeOnce(void) { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ - #endif -- "SwigPyObject", /* tp_name */ -+ SWIG_RUNTIME_MODULE ".SwigPyObject", /* tp_name */ - sizeof(SwigPyObject), /* tp_basicsize */ - 0, /* tp_itemsize */ - (destructor)SwigPyObject_dealloc, /* tp_dealloc */ -@@ -1061,7 +1061,7 @@ SwigPyObject_TypeOnce(void) { - { 0, NULL } - }; - PyType_Spec spec = { -- "SwigPyObject", -+ SWIG_RUNTIME_MODULE ".SwigPyObject", - sizeof(SwigPyObject), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, -@@ -1160,7 +1160,7 @@ SwigPyPacked_Check(PyObject *op) { - SWIG_Py_DECREF(tp_name); - return cmp == 0; - #else -- return (strcmp(op_type->tp_name, "SwigPyPacked") == 0); -+ return (strcmp(op_type->tp_name, SWIG_RUNTIME_MODULE ".SwigPyPacked") == 0); - #endif - } - -@@ -1188,7 +1188,7 @@ SwigPyPacked_TypeOnce(void) { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ - #endif -- "SwigPyPacked", /* tp_name */ -+ SWIG_RUNTIME_MODULE ".SwigPyPacked", /* tp_name */ - sizeof(SwigPyPacked), /* tp_basicsize */ - 0, /* tp_itemsize */ - (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ -@@ -1281,7 +1281,7 @@ SwigPyPacked_TypeOnce(void) { - { 0, NULL } - }; - PyType_Spec spec = { -- "SwigPyPacked", -+ SWIG_RUNTIME_MODULE ".SwigPyPacked", - sizeof(SwigPyPacked), - 0, - Py_TPFLAGS_DEFAULT, -@@ -1846,10 +1846,10 @@ SWIGRUNTIME void - SWIG_Python_SetModule(swig_module_info *swig_module) { - #if PY_VERSION_HEX >= 0x03000000 - /* Add a dummy module object into sys.modules */ -- PyObject *module = PyImport_AddModule("swig_runtime_data" SWIG_RUNTIME_VERSION); -+ PyObject *module = PyImport_AddModule(SWIG_RUNTIME_MODULE); - #else - static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ -- PyObject *module = Py_InitModule("swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table); -+ PyObject *module = Py_InitModule(SWIG_RUNTIME_MODULE, swig_empty_runtime_method_table); - #endif - PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); - if (pointer && module) { --- -2.50.1 - - -From 7ecbb7103dec48bb316baa9ccd71ba7888de7c54 Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Sun, 11 May 2025 16:02:43 +0100 -Subject: [PATCH 2/5] Add SwigPyObject, SwigPyPacked, swigvarlink to the swig - runtime module - -Also add SWIG_REFCNT_DEBUG for debugging reference counts when the main -module is destroyed - there's some work to be done here on reference -counts! ---- - Lib/python/pyinit.swg | 1 + - Lib/python/pyrun.swg | 91 +++++++++++++++++++++++++++++++++---------- - 2 files changed, 71 insertions(+), 21 deletions(-) - -diff --git a/Lib/python/pyinit.swg b/Lib/python/pyinit.swg -index 5bf7097f5..4e25323f6 100644 ---- a/Lib/python/pyinit.swg -+++ b/Lib/python/pyinit.swg -@@ -261,6 +261,7 @@ SWIG_init(void) { - (void)globals; - - /* Create singletons now to avoid potential deadlocks with multi-threaded usage after module initialization */ -+ SWIG_runtime_data_module(); - SWIG_This(); - SWIG_Python_TypeCache(); - SwigPyPacked_type(); -diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg -index b9e3e7241..2ef79f348 100644 ---- a/Lib/python/pyrun.swg -+++ b/Lib/python/pyrun.swg -@@ -114,8 +114,25 @@ SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { - - #endif - --/* Append a value to the result obj */ -+/* SWIG runtime data Python module */ -+static PyObject *Swig_runtime_data_module_global = NULL; -+ -+/* Create/obtain the single swig_runtime_data module which is used across different SWIG generated modules */ -+SWIGINTERN PyObject * -+SWIG_runtime_data_module() { -+ if (!Swig_runtime_data_module_global) { -+#if PY_VERSION_HEX >= 0x03000000 -+ Swig_runtime_data_module_global = PyImport_AddModule(SWIG_RUNTIME_MODULE); -+#else -+ static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ -+ Swig_runtime_data_module_global = Py_InitModule(SWIG_RUNTIME_MODULE, swig_empty_runtime_method_table); -+#endif -+ SWIG_Py_XINCREF(Swig_runtime_data_module_global); -+ } -+ return Swig_runtime_data_module_global; -+} - -+/* Append a value to the result obj */ - SWIGINTERN PyObject* - SWIG_Python_AppendOutput(PyObject* result, PyObject* obj, int is_void) { - if (!result) { -@@ -341,7 +358,7 @@ swig_varlink_setattr(PyObject *o, char *n, PyObject *p) { - - SWIGINTERN PyTypeObject* - swig_varlink_type(void) { -- static char varlink__doc__[] = "Swig var link object"; -+ static char varlink__doc__[] = "Swig variable link object"; - #ifndef SWIG_HEAPTYPES - static PyTypeObject varlink_type; - static int type_init = 0; -@@ -407,10 +424,13 @@ swig_varlink_type(void) { - 0 /* tp_next */ - #endif - }; -+ PyObject *runtime_data_module = SWIG_runtime_data_module(); - varlink_type = tmp; - type_init = 1; - if (PyType_Ready(&varlink_type) < 0) - return NULL; -+ if (PyModule_AddObject(runtime_data_module, "swigvarlink", (PyObject *)&varlink_type) == 0) -+ SWIG_Py_INCREF((PyObject *)&varlink_type); - } - return &varlink_type; - #else -@@ -430,7 +450,11 @@ swig_varlink_type(void) { - Py_TPFLAGS_DEFAULT, - slots - }; -- return (PyTypeObject *)PyType_FromSpec(&spec); -+ PyObject *pytype = PyType_FromSpec(&spec); -+ PyObject *runtime_data_module = SWIG_runtime_data_module(); -+ if (pytype && PyModule_AddObject(runtime_data_module, "swigvarlink", pytype) == 0) -+ SWIG_Py_INCREF(pytype); -+ return (PyTypeObject *)pytype; - #endif - } - -@@ -910,7 +934,7 @@ swigobject_methods[] = { - - SWIGRUNTIME PyTypeObject* - SwigPyObject_TypeOnce(void) { -- static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; -+ static char swigobject_doc[] = "Swig object holding a C/C++ pointer"; - #ifndef SWIG_HEAPTYPES - static PyNumberMethods SwigPyObject_as_number = { - (binaryfunc)0, /*nb_add*/ -@@ -1043,10 +1067,13 @@ SwigPyObject_TypeOnce(void) { - 0 /* tp_next */ - #endif - }; -+ PyObject *runtime_data_module = SWIG_runtime_data_module(); - swigpyobject_type = tmp; - type_init = 1; - if (PyType_Ready(&swigpyobject_type) != 0) - return NULL; -+ if (PyModule_AddObject(runtime_data_module, "SwigPyObject", (PyObject *)&swigpyobject_type) == 0) -+ SWIG_Py_INCREF((PyObject *)&swigpyobject_type); - } - return &swigpyobject_type; - #else -@@ -1067,7 +1094,11 @@ SwigPyObject_TypeOnce(void) { - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, - slots - }; -- return (PyTypeObject *)PyType_FromSpec(&spec); -+ PyObject *pytype = PyType_FromSpec(&spec); -+ PyObject *runtime_data_module = SWIG_runtime_data_module(); -+ if (pytype && PyModule_AddObject(runtime_data_module, "SwigPyObject", pytype) == 0) -+ SWIG_Py_INCREF(pytype); -+ return (PyTypeObject *)pytype; - #endif - } - -@@ -1150,7 +1181,7 @@ SwigPyPacked_Check(PyObject *op) { - PyObject *tp_name; - #endif - PyTypeObject* op_type = Py_TYPE(op); -- if (op_type == SwigPyPacked_TypeOnce()) -+ if (op_type == SwigPyPacked_type()) - return 1; - #ifdef Py_LIMITED_API - tp_name = PyObject_GetAttrString((PyObject *)op_type, "__name__"); -@@ -1176,7 +1207,7 @@ SwigPyPacked_dealloc(PyObject *v) - - SWIGRUNTIME PyTypeObject* - SwigPyPacked_TypeOnce(void) { -- static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; -+ static char swigpacked_doc[] = "Swig object holding a C/C++ function pointer"; - #ifndef SWIG_HEAPTYPES - static PyTypeObject swigpypacked_type; - static int type_init = 0; -@@ -1265,10 +1296,13 @@ SwigPyPacked_TypeOnce(void) { - 0 /* tp_next */ - #endif - }; -+ PyObject *runtime_data_module = SWIG_runtime_data_module(); - swigpypacked_type = tmp; - type_init = 1; - if (PyType_Ready(&swigpypacked_type) != 0) - return NULL; -+ if (PyModule_AddObject(runtime_data_module, "SwigPyPacked", (PyObject *)&swigpypacked_type) == 0) -+ SWIG_Py_INCREF((PyObject *)&swigpypacked_type); - } - return &swigpypacked_type; - #else -@@ -1287,7 +1321,11 @@ SwigPyPacked_TypeOnce(void) { - Py_TPFLAGS_DEFAULT, - slots - }; -- return (PyTypeObject *)PyType_FromSpec(&spec); -+ PyObject *pytype = PyType_FromSpec(&spec); -+ PyObject *runtime_data_module = SWIG_runtime_data_module(); -+ if (pytype && PyModule_AddObject(runtime_data_module, "SwigPyPacked", pytype) == 0) -+ SWIG_Py_INCREF(pytype); -+ return (PyTypeObject *)pytype; - #endif - } - -@@ -1815,6 +1853,12 @@ SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { - } - - -+#if defined(SWIG_REFCNT_DEBUG) -+#define SWIG_PYOBJ_REFCNT(OBJ) fprintf(stdout, "" #OBJ " count %ld\n", (OBJ ? Py_REFCNT(OBJ) : 0)) -+#else -+#define SWIG_PYOBJ_REFCNT(OBJ) -+#endif -+ - static int interpreter_counter = 0; /* how many (sub-)interpreters are using swig_module's types */ - - SWIGRUNTIME void -@@ -1825,7 +1869,7 @@ SWIG_Python_DestroyModule(PyObject *obj) - size_t i; - if (--interpreter_counter != 0) /* another sub-interpreter may still be using the swig_module's types */ - return; -- for (i =0; i < swig_module->size; ++i) { -+ for (i = 0; i < swig_module->size; ++i) { - swig_type_info *ty = types[i]; - if (ty->owndata) { - SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; -@@ -1833,27 +1877,32 @@ SWIG_Python_DestroyModule(PyObject *obj) - if (data) SwigPyClientData_Del(data); - } - } -- SWIG_Py_DECREF(SWIG_This()); -+ SWIG_Py_XDECREF(Swig_This_global); -+ SWIG_PYOBJ_REFCNT(Swig_This_global); - Swig_This_global = NULL; -- SWIG_Py_DECREF(SWIG_globals()); -+ -+ SWIG_Py_XDECREF(Swig_Globals_global); -+ SWIG_PYOBJ_REFCNT(Swig_Globals_global); - Swig_Globals_global = NULL; -- SWIG_Py_DECREF(SWIG_Python_TypeCache()); -+ -+ SWIG_Py_XDECREF(Swig_TypeCache_global); -+ SWIG_PYOBJ_REFCNT(Swig_TypeCache_global); - Swig_TypeCache_global = NULL; -+ -+ SWIG_PYOBJ_REFCNT(Swig_Capsule_global); - Swig_Capsule_global = NULL; -+ -+ SWIG_Py_XDECREF(Swig_runtime_data_module_global); -+ SWIG_PYOBJ_REFCNT(Swig_runtime_data_module_global); -+ Swig_runtime_data_module_global = NULL; - } - - SWIGRUNTIME void - SWIG_Python_SetModule(swig_module_info *swig_module) { --#if PY_VERSION_HEX >= 0x03000000 -- /* Add a dummy module object into sys.modules */ -- PyObject *module = PyImport_AddModule(SWIG_RUNTIME_MODULE); --#else -- static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ -- PyObject *module = Py_InitModule(SWIG_RUNTIME_MODULE, swig_empty_runtime_method_table); --#endif -+ PyObject *runtime_data_module = SWIG_runtime_data_module(); - PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); -- if (pointer && module) { -- if (PyModule_AddObject(module, SWIGPY_CAPSULE_ATTR_NAME, pointer) == 0) { -+ if (pointer && runtime_data_module) { -+ if (PyModule_AddObject(runtime_data_module, SWIGPY_CAPSULE_ATTR_NAME, pointer) == 0) { - ++interpreter_counter; - Swig_Capsule_global = pointer; - } else { --- -2.50.1 - - -From 53453d51ec3ca111c5c97530d8ee4c6b5184c85e Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Mon, 12 May 2025 07:25:35 +0100 -Subject: [PATCH 3/5] Rename Python swigvarlink type to SwigVarLink - -With this type having just moved into a module, let's also -make a change to use correct Python naming conventions for the -name of the type. ---- - CHANGES.current | 8 ++++++ - Lib/python/pyrun.swg | 64 ++++++++++++++++++++++---------------------- - 2 files changed, 40 insertions(+), 32 deletions(-) - -#diff --git a/CHANGES.current b/CHANGES.current -#index 0bce7937f..9a2c0f5e2 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,14 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.4.0 (in progress) -# =========================== -# -#+2025-05-11: wsfulton -#+ [Python] Move the SwigPyObject, SwigPyPacked, SwigVarLink (renamed from -#+ swigvarlink) support Python types to the SWIG runtime module (currently called -#+ swig_runtime_data5). -#+ -#+ Note that these affect the Python runtime implementation, so the recently bumped -#+ SWIG_RUNTIME_VERSION to 5 for all scripting languages will now include this change. -#+ -# 2025-05-10: jschueller, wsfulton -# [Python] #2881 #3061 #3160 DeprecationWarning fixes when using 'python -Walways' -# or if using one of the types being warned about: -diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg -index 2ef79f348..e7164725d 100644 ---- a/Lib/python/pyrun.swg -+++ b/Lib/python/pyrun.swg -@@ -257,7 +257,7 @@ typedef struct swig_varlinkobject { - } swig_varlinkobject; - - SWIGINTERN PyObject * --swig_varlink_repr(PyObject *SWIGUNUSEDPARM(v)) { -+SwigVarLink_repr(PyObject *SWIGUNUSEDPARM(v)) { - #if PY_VERSION_HEX >= 0x03000000 - return PyUnicode_InternFromString(""); - #else -@@ -266,7 +266,7 @@ swig_varlink_repr(PyObject *SWIGUNUSEDPARM(v)) { - } - - SWIGINTERN PyObject * --swig_varlink_str(PyObject *o) { -+SwigVarLink_str(PyObject *o) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - #if PY_VERSION_HEX >= 0x03000000 - PyObject *str = PyUnicode_InternFromString("("); -@@ -305,7 +305,7 @@ swig_varlink_str(PyObject *o) { - } - - SWIGINTERN void --swig_varlink_dealloc(PyObject *o) { -+SwigVarLink_dealloc(PyObject *o) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - swig_globalvar *var = v->vars; - while (var) { -@@ -317,7 +317,7 @@ swig_varlink_dealloc(PyObject *o) { - } - - SWIGINTERN PyObject * --swig_varlink_getattr(PyObject *o, char *n) { -+SwigVarLink_getattr(PyObject *o, char *n) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - PyObject *res = NULL; - swig_globalvar *var = v->vars; -@@ -335,7 +335,7 @@ swig_varlink_getattr(PyObject *o, char *n) { - } - - SWIGINTERN int --swig_varlink_setattr(PyObject *o, char *n, PyObject *p) { -+SwigVarLink_setattr(PyObject *o, char *n, PyObject *p) { - swig_varlinkobject *v = (swig_varlinkobject *) o; - int res = 1; - swig_globalvar *var = v->vars; -@@ -358,7 +358,7 @@ swig_varlink_setattr(PyObject *o, char *n, PyObject *p) { - - SWIGINTERN PyTypeObject* - swig_varlink_type(void) { -- static char varlink__doc__[] = "Swig variable link object"; -+ static char SwigVarLink_doc[] = "Swig variable link object"; - #ifndef SWIG_HEAPTYPES - static PyTypeObject varlink_type; - static int type_init = 0; -@@ -370,30 +370,30 @@ swig_varlink_type(void) { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ - #endif -- SWIG_RUNTIME_MODULE ".swigvarlink", /* tp_name */ -+ SWIG_RUNTIME_MODULE ".SwigVarLink", /* tp_name */ - sizeof(swig_varlinkobject), /* tp_basicsize */ - 0, /* tp_itemsize */ -- (destructor) swig_varlink_dealloc, /* tp_dealloc */ -+ (destructor) SwigVarLink_dealloc, /* tp_dealloc */ - #if PY_VERSION_HEX < 0x030800b4 - (printfunc)0, /* tp_print */ - #else - (Py_ssize_t)0, /* tp_vectorcall_offset */ - #endif -- (getattrfunc) swig_varlink_getattr, /* tp_getattr */ -- (setattrfunc) swig_varlink_setattr, /* tp_setattr */ -+ (getattrfunc) SwigVarLink_getattr, /* tp_getattr */ -+ (setattrfunc) SwigVarLink_setattr, /* tp_setattr */ - 0, /* tp_compare */ -- (reprfunc) swig_varlink_repr, /* tp_repr */ -+ (reprfunc) SwigVarLink_repr, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ -- (reprfunc) swig_varlink_str, /* tp_str */ -+ (reprfunc) SwigVarLink_str, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - 0, /* tp_flags */ -- varlink__doc__, /* tp_doc */ -+ SwigVarLink_doc, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ -@@ -429,22 +429,22 @@ swig_varlink_type(void) { - type_init = 1; - if (PyType_Ready(&varlink_type) < 0) - return NULL; -- if (PyModule_AddObject(runtime_data_module, "swigvarlink", (PyObject *)&varlink_type) == 0) -+ if (PyModule_AddObject(runtime_data_module, "SwigVarLink", (PyObject *)&varlink_type) == 0) - SWIG_Py_INCREF((PyObject *)&varlink_type); - } - return &varlink_type; - #else - PyType_Slot slots[] = { -- { Py_tp_dealloc, (void *)swig_varlink_dealloc }, -- { Py_tp_repr, (void *)swig_varlink_repr }, -- { Py_tp_getattr, (void *)swig_varlink_getattr }, -- { Py_tp_setattr, (void *)swig_varlink_setattr }, -- { Py_tp_str, (void *)swig_varlink_str }, -- { Py_tp_doc, (void *)varlink__doc__ }, -+ { Py_tp_dealloc, (void *)SwigVarLink_dealloc }, -+ { Py_tp_repr, (void *)SwigVarLink_repr }, -+ { Py_tp_getattr, (void *)SwigVarLink_getattr }, -+ { Py_tp_setattr, (void *)SwigVarLink_setattr }, -+ { Py_tp_str, (void *)SwigVarLink_str }, -+ { Py_tp_doc, (void *)SwigVarLink_doc }, - { 0, NULL } - }; - PyType_Spec spec = { -- SWIG_RUNTIME_MODULE ".swigvarlink", -+ SWIG_RUNTIME_MODULE ".SwigVarLink", - sizeof(swig_varlinkobject), - 0, - Py_TPFLAGS_DEFAULT, -@@ -452,7 +452,7 @@ swig_varlink_type(void) { - }; - PyObject *pytype = PyType_FromSpec(&spec); - PyObject *runtime_data_module = SWIG_runtime_data_module(); -- if (pytype && PyModule_AddObject(runtime_data_module, "swigvarlink", pytype) == 0) -+ if (pytype && PyModule_AddObject(runtime_data_module, "SwigVarLink", pytype) == 0) - SWIG_Py_INCREF(pytype); - return (PyTypeObject *)pytype; - #endif -@@ -715,7 +715,7 @@ SwigPyObject_repr(SwigPyObject *v) - } - - /* We need a version taking two PyObject* parameters so it's a valid -- * PyCFunction to use in swigobject_methods[]. */ -+ * PyCFunction to use in SwigPyObject_methods[]. */ - SWIGRUNTIME PyObject * - SwigPyObject_repr2(PyObject *v, PyObject *SWIGUNUSEDPARM(args)) - { -@@ -922,7 +922,7 @@ SwigPyObject_own(PyObject *v, PyObject *args) - } - - static PyMethodDef --swigobject_methods[] = { -+SwigPyObject_methods[] = { - {"disown", SwigPyObject_disown, METH_NOARGS, "releases ownership of the pointer"}, - {"acquire", SwigPyObject_acquire, METH_NOARGS, "acquires ownership of the pointer"}, - {"own", SwigPyObject_own, METH_VARARGS, "returns/sets ownership of the pointer"}, -@@ -934,7 +934,7 @@ swigobject_methods[] = { - - SWIGRUNTIME PyTypeObject* - SwigPyObject_TypeOnce(void) { -- static char swigobject_doc[] = "Swig object holding a C/C++ pointer"; -+ static char SwigPyObject_doc[] = "Swig object holding a C/C++ pointer"; - #ifndef SWIG_HEAPTYPES - static PyNumberMethods SwigPyObject_as_number = { - (binaryfunc)0, /*nb_add*/ -@@ -1017,14 +1017,14 @@ SwigPyObject_TypeOnce(void) { - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ -- swigobject_doc, /* tp_doc */ -+ SwigPyObject_doc, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ -- swigobject_methods, /* tp_methods */ -+ SwigPyObject_methods, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ -@@ -1081,9 +1081,9 @@ SwigPyObject_TypeOnce(void) { - { Py_tp_dealloc, (void *)SwigPyObject_dealloc }, - { Py_tp_repr, (void *)SwigPyObject_repr }, - { Py_tp_getattro, (void *)PyObject_GenericGetAttr }, -- { Py_tp_doc, (void *)swigobject_doc }, -+ { Py_tp_doc, (void *)SwigPyObject_doc }, - { Py_tp_richcompare, (void *)SwigPyObject_richcompare }, -- { Py_tp_methods, (void *)swigobject_methods }, -+ { Py_tp_methods, (void *)SwigPyObject_methods }, - { Py_nb_int, (void *)SwigPyObject_long }, - { 0, NULL } - }; -@@ -1207,7 +1207,7 @@ SwigPyPacked_dealloc(PyObject *v) - - SWIGRUNTIME PyTypeObject* - SwigPyPacked_TypeOnce(void) { -- static char swigpacked_doc[] = "Swig object holding a C/C++ function pointer"; -+ static char SwigPyPacked_doc[] = "Swig object holding a C/C++ function pointer"; - #ifndef SWIG_HEAPTYPES - static PyTypeObject swigpypacked_type; - static int type_init = 0; -@@ -1246,7 +1246,7 @@ SwigPyPacked_TypeOnce(void) { - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ -- swigpacked_doc, /* tp_doc */ -+ SwigPyPacked_doc, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ -@@ -1311,7 +1311,7 @@ SwigPyPacked_TypeOnce(void) { - { Py_tp_repr, (void *)SwigPyPacked_repr }, - { Py_tp_str, (void *)SwigPyPacked_str }, - { Py_tp_getattro, (void *)PyObject_GenericGetAttr }, -- { Py_tp_doc, (void *)swigpacked_doc }, -+ { Py_tp_doc, (void *)SwigPyPacked_doc }, - { 0, NULL } - }; - PyType_Spec spec = { --- -2.50.1 - - -From 831fc6069115b8a31bed5d0bcae221825cd43c18 Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Tue, 13 May 2025 08:40:45 +0100 -Subject: [PATCH 4/5] Add docs on the python runtime module - ---- - Doc/Manual/Python.html | 50 ++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 50 insertions(+) - -diff --git a/Doc/Manual/Python.html b/Doc/Manual/Python.html -index 7427ca4cf..cc82e9762 100644 ---- a/Doc/Manual/Python.html -+++ b/Doc/Manual/Python.html -@@ -1000,6 +1000,10 @@ module name, make sure you don't use the same name as a built-in - Python command or standard module name. -

- -+

-+There is also a further 'behind the scenes' Python runtime module, but this implementation detail is covered later. -+

-+ -

33.3.2 Functions

- - -@@ -2704,6 +2708,52 @@ in the file python/pyopers.swg in the SWIG library. -

- - -+

33.4.3 Python runtime module

-+ -+

-+In addition to the two Python modules that are generated by SWIG, there is also a third 'behind the scenes' Python runtime module. -+The runtime module is very much an implementation level detail, but is mentioned here for completeness and for the inquisitive! -+

-+ -+

-+SWIG implements a run-time type checker for checking a Python type/class as it passes between the Python and C/C++ layers. -+It is also used when multiple SWIG modules need to share type information with each other (when using the %import directive). -+More details can be found in the SWIG runtime code and run-time type checker sections. -+The runtime module contains the following: -+

-+ -+
    -+
  1. A Python Capsule containing a pointer to the underlying C module data structure used by the runtime type checker. For multiple modules to access the common runtime implementation. The Capsule is named type_pointer_capsule except when using -builtin when it is instead called type_pointer_capsule_builtin.
  2. -+
  3. The builtin type SwigPyObject - Swig object holding a C/C++ pointer. For 'normal' pointers, that is, not for function pointers nor member function pointers.
  4. -+
  5. The builtin type SwigPyPacked - Swig object holding a C/C++ function pointer. For C pointers to a function or C++ member function pointers.
  6. -+
  7. The builtin type SwigVarLink - Swig variable link object. The type used by the 'cvar' field for accessing C/C++ global variables.
  8. -+
-+ -+

-+If multiple SWIG modules are being used, the C/C++ wrapped proxy classes/types can be shared or used across the different modules via the SWIG runtime. -+The runtime is accessed and shared via the Capsule in the runtime module. -+The Python runtime module is implemented as a Python builtin module. While users are unlikely to use or import the runtime module directly, it can be inspected simply enough. -+The name of the module is swig_runtime_data appended with the runtime version as defined by SWIG_RUNTIME_VERSION. -+First import your SWIG generated module. Next find the exact runtime module name so you know what to import before inspecting it with say dir. -+The interpreter session below demonstrates this with a SWIG generated module called example: -+

-+ -+
-+
-+>>> import example
-+>>> import sys
-+>>> list(m for m in sys.modules if m.startswith("swig_runtime_data"))
-+['swig_runtime_data5']
-+>>> import swig_runtime_data5
-+>>> dir(swig_runtime_data5)
-+['SwigPyObject', 'SwigPyPacked', 'SwigVarLink', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'type_pointer_capsule']
-+
-+
-+ -+

-+Compatibility Note: Only the Capsule was stored in the Python runtime module prior to SWIG-4.4.0. -+

-+ -

33.4.3 Memory management

- - --- -2.50.1 - - -From d966fd3ba18370b5bf34b67ff376d88fb6d3e65b Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Tue, 13 May 2025 21:42:56 +0100 -Subject: [PATCH 5/5] Test swig runtime module contains expected names - ---- - .../python/python_moduleimport_runme.py | 17 +++++++++++++++++ - Examples/test-suite/python_moduleimport.i | 2 ++ - 2 files changed, 19 insertions(+) - -diff --git a/Examples/test-suite/python/python_moduleimport_runme.py b/Examples/test-suite/python/python_moduleimport_runme.py -index cdb860730..8e0aa6121 100644 ---- a/Examples/test-suite/python/python_moduleimport_runme.py -+++ b/Examples/test-suite/python/python_moduleimport_runme.py -@@ -1,7 +1,24 @@ - import python_moduleimport - -+# Test custom moduleimport in %module - if python_moduleimport.simple_function(99) != 99: - raise RuntimeError("simple_function") - - if python_moduleimport.extra_import_variable != "custom import of _python_moduleimport": - raise RuntimeError("custom import") -+ -+ -+# Test the swig runtime module contains the expected names/types -+import importlib -+swig_runtime_version = python_moduleimport.runtime_version() -+swig_runtime_data = importlib.import_module("swig_runtime_data" + swig_runtime_version) # Equivalent to (for version 5): import swig_runtime_data5 as swig_runtime_data -+ -+names = dir(swig_runtime_data) -+expected_names = ("SwigPyObject", "SwigPyPacked", "SwigVarLink") -+for name in expected_names: -+ if name not in names: -+ raise RuntimeError("{} not in {}".format(name, names)) -+ -+cvar_type = type(python_moduleimport.cvar) -+if cvar_type.__name__ != "SwigVarLink": -+ raise RuntimeError("cvar type name is incorrect: {}".format(cvar_type.__name__)) -diff --git a/Examples/test-suite/python_moduleimport.i b/Examples/test-suite/python_moduleimport.i -index f62547dcd..f0d203433 100644 ---- a/Examples/test-suite/python_moduleimport.i -+++ b/Examples/test-suite/python_moduleimport.i -@@ -23,4 +23,6 @@ from $module import * - - %inline %{ - int simple_function(int i) { return i; } -+int globalvar = 99; -+const char * runtime_version() { return SWIG_RUNTIME_VERSION; } - %} --- -2.50.1 - diff --git a/swig.spec b/swig.spec index 54f3086..0b7b0f9 100644 --- a/swig.spec +++ b/swig.spec @@ -68,7 +68,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.4.0 +Version: 4.4.1 Release: 1%{?dist} License: GPL-3.0-or-later AND BSD-3-Clause URL: https://www.swig.org/ @@ -363,6 +363,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Dec 08 2025 Jitka Plesnikova - 4.4.1-1 +- 4.4.1 bump (rhbz#2419819, rhbz#2415440) + * Tue Oct 21 2025 Jitka Plesnikova - 4.4.0-1 - 4.4.0 bump (rhbz#2405182)