From 0d5f480a205a6e069fb1b7a88324c21c8dc3daf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Sat, 29 Apr 2017 11:31:31 +0200 Subject: [PATCH 001/103] Rebuilt for bootstrapping new arch: s390x --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 7fbc1f7..a3a094b 100644 --- a/swig.spec +++ b/swig.spec @@ -31,7 +31,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 5%{?dist} +Release: 6%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -279,6 +279,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Apr 29 2017 Björn Esser - 3.0.12-6 +- Rebuilt for bootstrapping new arch: s390x + * Mon Feb 13 2017 Björn Esser - 3.0.12-5 - Rebuilt with R-testsuite enabled From de4494ca6cad61bdde6d100752c2ebd0cf73bb04 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 15 May 2017 21:10:16 +0000 Subject: [PATCH 002/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index a3a094b..369e78f 100644 --- a/swig.spec +++ b/swig.spec @@ -31,7 +31,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 6%{?dist} +Release: 7%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -279,6 +279,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon May 15 2017 Fedora Release Engineering - 3.0.12-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + * Sat Apr 29 2017 Björn Esser - 3.0.12-6 - Rebuilt for bootstrapping new arch: s390x From c8c0cd237644042f56291578a100d62b017804f1 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 14 Jun 2017 16:31:06 +0200 Subject: [PATCH 003/103] Fixed tests to building on Perl 5.26 without dot in INC --- ...x-testsuite-to-work-without-.-in-INC.patch | 61 +++++++++++++++++++ swig.spec | 7 ++- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch diff --git a/swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch b/swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch new file mode 100644 index 0000000..bcc8a79 --- /dev/null +++ b/swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch @@ -0,0 +1,61 @@ +From 8855ef2b482c09da9255079b0fac92d08c8308fb Mon Sep 17 00:00:00 2001 +From: Olly Betts +Date: Tue, 13 Jun 2017 17:32:37 +1200 +Subject: [PATCH] [Perl] Fix testsuite to work without . in @INC + +"." was removed from @INC in Perl 5.26 for security reasons, and has +also been removed from older versions in some distros. + +Fixes https://github.com/swig/swig/issues/997 reported by lfam. +--- + CHANGES.current | 6 ++++++ + Examples/Makefile.in | 2 +- + Examples/test-suite/perl5/run-perl-test.pl | 2 +- + 3 files changed, 8 insertions(+), 2 deletions(-) + +#diff --git a/CHANGES.current b/CHANGES.current +#index ac620c9..6b379a9 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.0.0 (in progress) +# =========================== +# +#+2017-06-13: olly +#+ [Perl] Fix testsuite to work without . in @INC - it was removed in +#+ Perl 5.26 for security reasons, and has also been removed from +#+ older versions in some distros. Fixes +#+ https://github.com/swig/swig/issues/997 reported by lfam. +#+ +# 2017-06-03: wsfulton +# Fix %import on a file containing a file scope %fragment forced inclusion to not +# generate the fragment contents as %import should not result in code being generated. +diff --git a/Examples/Makefile.in b/Examples/Makefile.in +index 7682b56..8a88fb5 100644 +--- a/Examples/Makefile.in ++++ b/Examples/Makefile.in +@@ -282,7 +282,7 @@ perl5_static_cpp: $(SRCDIR_SRCS) + # ----------------------------------------------------------------- + + perl5_run: +- $(RUNTOOL) $(PERL) $(PERL5_SCRIPT) $(RUNPIPE) ++ $(RUNTOOL) $(PERL) -I. $(PERL5_SCRIPT) $(RUNPIPE) + + # ----------------------------------------------------------------- + # Version display +diff --git a/Examples/test-suite/perl5/run-perl-test.pl b/Examples/test-suite/perl5/run-perl-test.pl +index 106bf00..5ea4e511 100644 +--- a/Examples/test-suite/perl5/run-perl-test.pl ++++ b/Examples/test-suite/perl5/run-perl-test.pl +@@ -7,7 +7,7 @@ use strict; + + my $command = shift @ARGV; + +-my $output = `$^X $command 2>&1`; ++my $output = `$^X -I. $command 2>&1`; + + die "SWIG Perl test failed: \n\n$output\n" + if $?; +-- +2.9.4 + diff --git a/swig.spec b/swig.spec index 369e78f..9adcb72 100644 --- a/swig.spec +++ b/swig.spec @@ -31,7 +31,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 7%{?dist} +Release: 8%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -42,6 +42,7 @@ Source3: ccache-swig.sh Source4: ccache-swig.csh Patch0: swig308-Do-not-use-isystem.patch +Patch1: swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch BuildRequires: perl, pcre-devel BuildRequires: python2-devel, python3-devel @@ -133,6 +134,7 @@ in gdb. %setup -q %patch0 -p1 -b .isystem +%patch1 -p1 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -279,6 +281,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Jun 14 2017 Jitka Plesnikova - 3.0.12-8 +- Fixed tests to building on Perl 5.26 without dot in INC + * Mon May 15 2017 Fedora Release Engineering - 3.0.12-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild From 6d2a9571f5f141c2512d001a9c7f2e8b4fdf0f65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 12 Jul 2017 14:17:13 +0200 Subject: [PATCH 004/103] perl dependency renamed to perl-interpreter --- swig.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 9adcb72..9ea1ae8 100644 --- a/swig.spec +++ b/swig.spec @@ -44,7 +44,7 @@ Source4: ccache-swig.csh Patch0: swig308-Do-not-use-isystem.patch Patch1: swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch -BuildRequires: perl, pcre-devel +BuildRequires: perl-interpreter, pcre-devel BuildRequires: python2-devel, python3-devel BuildRequires: autoconf, automake, gawk, dos2unix BuildRequires: gcc-c++ From f1e1b711daebef2af3faf038d5ae6ac2e715a563 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 27 Jul 2017 19:43:51 +0000 Subject: [PATCH 005/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 9ea1ae8..651e441 100644 --- a/swig.spec +++ b/swig.spec @@ -31,7 +31,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 8%{?dist} +Release: 9%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -281,6 +281,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Jul 27 2017 Fedora Release Engineering - 3.0.12-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Wed Jun 14 2017 Jitka Plesnikova - 3.0.12-8 - Fixed tests to building on Perl 5.26 without dot in INC From cc9e6866312e5ac4208affd62f8025661f0d209e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 3 Aug 2017 09:01:29 +0000 Subject: [PATCH 006/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 651e441..927ccf7 100644 --- a/swig.spec +++ b/swig.spec @@ -31,7 +31,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 9%{?dist} +Release: 10%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -281,6 +281,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Aug 03 2017 Fedora Release Engineering - 3.0.12-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + * Thu Jul 27 2017 Fedora Release Engineering - 3.0.12-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild From 14231323b548eea9dfa652316cd63a698adaa593 Mon Sep 17 00:00:00 2001 From: "Jared K. Smith" Date: Wed, 6 Sep 2017 21:28:38 -0400 Subject: [PATCH 007/103] Add patch to support NodeJS versions 7 and 8 --- swig-node-v7.patch | 541 +++++++++++++++++++++++++++++++++++++++++++++ swig.spec | 3 + 2 files changed, 544 insertions(+) create mode 100644 swig-node-v7.patch diff --git a/swig-node-v7.patch b/swig-node-v7.patch new file mode 100644 index 0000000..4f5e1fc --- /dev/null +++ b/swig-node-v7.patch @@ -0,0 +1,541 @@ +From f08d7a63a92a3ba89d97bdfcc206e1e1c4804c0f Mon Sep 17 00:00:00 2001 +From: Patrick Schneider +Date: Thu, 13 Apr 2017 15:02:53 +0200 +Subject: [PATCH 1/2] Add Node 7.x aka V8 5.2+ support + +* Use WeakCallbackInfo instead of WeakCallbackData +* Use GetPrivate instead of GetHiddenValue +* Adopted new signature for SetWeak to support destructor calling +* SetAccessor deprecation fixed +* Proper version checks where applicable +--- + Lib/javascript/v8/javascriptcode.swg | 27 +++++++++++++++++----- + Lib/javascript/v8/javascripthelpers.swg | 29 +++++++++++++++++++++--- + Lib/javascript/v8/javascriptinit.swg | 16 +++++++++++-- + Lib/javascript/v8/javascriptrun.swg | 40 ++++++++++++++++++++++++++++----- + 4 files changed, 95 insertions(+), 17 deletions(-) + +diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg +index fb7d55c2ad..b8c5089816 100644 +--- a/Lib/javascript/v8/javascriptcode.swg ++++ b/Lib/javascript/v8/javascriptcode.swg +@@ -133,10 +133,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + static void $jswrapper(v8::Isolate *isolate, v8::Persistent *object, SWIGV8_Proxy *proxy) { +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); ++#else ++ static void $jswrapper(const v8::WeakCallbackInfo &data) { ++ SWIGV8_Proxy *proxy = data.GetParameter(); + #endif + + if(proxy->swigCMemOwn && proxy->swigCObject) { +@@ -147,7 +150,9 @@ static void $jswrapper(const v8::WeakCallbackData &dat + } + delete proxy; + ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + object.Clear(); ++#endif + + #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + object.Dispose(); +@@ -155,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat + object.Dispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + object->Dispose(isolate); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + object->Dispose(); + #endif + } +@@ -177,10 +182,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) { +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); ++#else ++static void $jswrapper(const v8::WeakCallbackInfo &data) { ++ SWIGV8_Proxy *proxy = data.GetParameter(); + #endif + + if(proxy->swigCMemOwn && proxy->swigCObject) { +@@ -197,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat + object->Dispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + object.Clear(); + #endif + } +@@ -211,7 +219,11 @@ static void $jswrapper(const v8::WeakCallbackData &dat + * ----------------------------------------------------------------------------- */ + %fragment("js_getter", "templates") + %{ ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { ++#else ++static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { ++#endif + SWIGV8_HANDLESCOPE(); + + v8::Handle jsresult; +@@ -233,8 +245,11 @@ fail: + * ----------------------------------------------------------------------------- */ + %fragment("js_setter", "templates") + %{ +-static void $jswrapper(v8::Local property, v8::Local value, +- const SwigV8PropertyCallbackInfoVoid &info) { ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { ++#else ++static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { ++#endif + SWIGV8_HANDLESCOPE(); + + $jslocals +diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg +index 091467df4d..74610793af 100644 +--- a/Lib/javascript/v8/javascripthelpers.swg ++++ b/Lib/javascript/v8/javascripthelpers.swg +@@ -6,11 +6,16 @@ typedef v8::InvocationCallback SwigV8FunctionCallback; + typedef v8::AccessorGetter SwigV8AccessorGetterCallback; + typedef v8::AccessorSetter SwigV8AccessorSetterCallback; + typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + typedef v8::FunctionCallback SwigV8FunctionCallback; + typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; + typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; + typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; ++#else ++typedef v8::FunctionCallback SwigV8FunctionCallback; ++typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; ++typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; ++typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; + #endif + + /** +@@ -65,18 +70,36 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle obj, const char + */ + SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle obj, const char* symbol, + SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); ++#else ++ obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter); ++#endif + } + +-SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, +- const SwigV8PropertyCallbackInfoVoid& info) ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) ++#else ++SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) ++#endif + { + char buffer[256]; + char msg[512]; + int res; + ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + property->WriteUtf8(buffer, 256); + res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); ++#else ++ v8::Local sproperty; ++ if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) { ++ sproperty->WriteUtf8(buffer, 256); ++ res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); ++ } ++ else { ++ res = -1; ++ } ++#endif + + if(res<0) { + SWIG_exception(SWIG_ERROR, "Tried to write read-only variable."); +diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg +index 34befa7ce7..86008d927f 100644 +--- a/Lib/javascript/v8/javascriptinit.swg ++++ b/Lib/javascript/v8/javascriptinit.swg +@@ -7,15 +7,27 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); + v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); + assert(!mod.IsEmpty()); ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod); ++#else ++ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); ++ global_obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, mod); ++#endif + } + + SWIGRUNTIME swig_module_info * + SWIG_V8_GetModule(void *) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + v8::Local moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data")); ++#else ++ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); ++ v8::Local moduleinfo; ++ if (!global_obj->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&moduleinfo)) ++ return 0; ++#endif + +- if (moduleinfo.IsEmpty()) ++ if (moduleinfo.IsEmpty() || moduleinfo->IsNull() || moduleinfo->IsUndefined()) + { + // It's not yet loaded + return 0; +@@ -23,7 +35,7 @@ SWIG_V8_GetModule(void *) { + + v8::Local moduleinfo_extern = v8::Local::Cast(moduleinfo); + +- if (moduleinfo_extern.IsEmpty()) ++ if (moduleinfo_extern.IsEmpty() || moduleinfo_extern->IsNull() || moduleinfo_extern->IsUndefined()) + { + // Something's not right + return 0; +diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg +index 5ac52a51dc..30002c02a3 100644 +--- a/Lib/javascript/v8/javascriptrun.swg ++++ b/Lib/javascript/v8/javascriptrun.swg +@@ -193,8 +193,10 @@ public: + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + void (*dtor) (const v8::WeakCallbackData &data); ++#else ++ void (*dtor) (const v8::WeakCallbackInfo &data); + #endif + }; + +@@ -241,9 +243,12 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) { +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData &data) { + SWIGV8_Proxy *proxy = data.GetParameter(); ++#else ++SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo &data) { ++ SWIGV8_Proxy *proxy = data.GetParameter(); + #endif + + delete proxy; +@@ -312,12 +317,18 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, sw + } else { + cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); + } +-#else ++#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { + cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); + } else { + cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor); + } ++#else ++ if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { ++ cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor, v8::WeakCallbackType::kParameter); ++ } else { ++ cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor, v8::WeakCallbackType::kParameter); ++ } + #endif + + #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) +@@ -470,7 +481,14 @@ int SwigV8Packed_Check(v8::Handle valRef) { + + v8::Handle objRef = valRef->ToObject(); + if(objRef->InternalFieldCount() < 1) return false; ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + v8::Handle flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); ++#else ++ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); ++ v8::Local flag; ++ if (!objRef->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&flag)) ++ return false; ++#endif + return (flag->IsBoolean() && flag->BooleanValue()); + } + +@@ -519,10 +537,13 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist + SwigV8PackedData *cdata = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent *object, SwigV8PackedData *cdata) { +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SwigV8PackedData *cdata = data.GetParameter(); ++#else ++SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo &data) { ++ SwigV8PackedData *cdata = data.GetParameter(); + #endif + + delete cdata; +@@ -537,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackDataDispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + object.Clear(); + #endif + } +@@ -550,7 +571,12 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf + // v8::Handle obj = SWIGV8_OBJECT_NEW(); + v8::Local obj = SWIGV8_OBJECT_NEW(); + ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true)); ++#else ++ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); ++ obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, SWIGV8_BOOLEAN_NEW(true)); ++#endif + + #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) + obj->SetPointerInInternalField(0, cdata); +@@ -573,9 +599,11 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf + cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete); + // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete); ++#else ++ cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter); + #endif + + #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + +From 9ce8d7e7c99e75163318428aeff6e60d398fcdca Mon Sep 17 00:00:00 2001 +From: Patrick Schneider +Date: Thu, 13 Apr 2017 19:39:44 +0200 +Subject: [PATCH 2/2] Remove warnings on Node 6.x aka V8 5.0 and 5.1 + +The proposed changes targetted at 5.2 (or 5.4 to be more precise, since there is no Node release with V8 5.2 or 5.3) work for lower versions as well and bust the deprecation warnings there. +--- + Lib/javascript/v8/javascriptcode.swg | 14 +++++++------- + Lib/javascript/v8/javascripthelpers.swg | 8 ++++---- + Lib/javascript/v8/javascriptinit.swg | 4 ++-- + Lib/javascript/v8/javascriptrun.swg | 16 ++++++++-------- + 4 files changed, 21 insertions(+), 21 deletions(-) + +diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg +index b8c5089816..c4aaf3db0c 100644 +--- a/Lib/javascript/v8/javascriptcode.swg ++++ b/Lib/javascript/v8/javascriptcode.swg +@@ -133,7 +133,7 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + static void $jswrapper(v8::Isolate *isolate, v8::Persistent *object, SWIGV8_Proxy *proxy) { +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); +@@ -150,7 +150,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat + } + delete proxy; + +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + object.Clear(); + #endif + +@@ -160,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat + object.Dispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + object->Dispose(isolate); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + object->Dispose(); + #endif + } +@@ -182,7 +182,7 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) { +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); +@@ -205,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackInfo &data) { + object->Dispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + object.Clear(); + #endif + } +@@ -219,7 +219,7 @@ static void $jswrapper(const v8::WeakCallbackInfo &data) { + * ----------------------------------------------------------------------------- */ + %fragment("js_getter", "templates") + %{ +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { + #else + static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { +@@ -245,7 +245,7 @@ fail: + * ----------------------------------------------------------------------------- */ + %fragment("js_setter", "templates") + %{ +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { + #else + static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { +diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg +index 74610793af..7b8a5ec237 100644 +--- a/Lib/javascript/v8/javascripthelpers.swg ++++ b/Lib/javascript/v8/javascripthelpers.swg +@@ -6,7 +6,7 @@ typedef v8::InvocationCallback SwigV8FunctionCallback; + typedef v8::AccessorGetter SwigV8AccessorGetterCallback; + typedef v8::AccessorSetter SwigV8AccessorSetterCallback; + typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + typedef v8::FunctionCallback SwigV8FunctionCallback; + typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; + typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; +@@ -70,14 +70,14 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle obj, const char + */ + SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle obj, const char* symbol, + SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); + #else + obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter); + #endif + } + +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) + #else + SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) +@@ -87,7 +87,7 @@ SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::LocalWriteUtf8(buffer, 256); + res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); + #else +diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg +index 86008d927f..e83f478d9d 100644 +--- a/Lib/javascript/v8/javascriptinit.swg ++++ b/Lib/javascript/v8/javascriptinit.swg +@@ -7,7 +7,7 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); + v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); + assert(!mod.IsEmpty()); +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod); + #else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); +@@ -18,7 +18,7 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { + SWIGRUNTIME swig_module_info * + SWIG_V8_GetModule(void *) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + v8::Local moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data")); + #else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); +diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg +index 30002c02a3..0af9f4eb0a 100644 +--- a/Lib/javascript/v8/javascriptrun.swg ++++ b/Lib/javascript/v8/javascriptrun.swg +@@ -193,7 +193,7 @@ public: + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + void (*dtor) (const v8::WeakCallbackData &data); + #else + void (*dtor) (const v8::WeakCallbackInfo &data); +@@ -243,7 +243,7 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) { +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData &data) { + SWIGV8_Proxy *proxy = data.GetParameter(); + #else +@@ -317,7 +317,7 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, sw + } else { + cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); + } +-#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { + cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); + } else { +@@ -481,7 +481,7 @@ int SwigV8Packed_Check(v8::Handle valRef) { + + v8::Handle objRef = valRef->ToObject(); + if(objRef->InternalFieldCount() < 1) return false; +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + v8::Handle flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); + #else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); +@@ -537,7 +537,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist + SwigV8PackedData *cdata = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent *object, SwigV8PackedData *cdata) { +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SwigV8PackedData *cdata = data.GetParameter(); +@@ -558,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfoDispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + object.Clear(); + #endif + } +@@ -571,7 +571,7 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf + // v8::Handle obj = SWIGV8_OBJECT_NEW(); + v8::Local obj = SWIGV8_OBJECT_NEW(); + +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true)); + #else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); +@@ -599,7 +599,7 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf + cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete); + // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete); + #else diff --git a/swig.spec b/swig.spec index 927ccf7..2b95498 100644 --- a/swig.spec +++ b/swig.spec @@ -43,6 +43,8 @@ Source4: ccache-swig.csh Patch0: swig308-Do-not-use-isystem.patch Patch1: swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch +# Upstream pull request to support Node v7/v8 +Patch2: https://patch-diff.githubusercontent.com/raw/swig/swig/pull/968/swig-node-v7.patch BuildRequires: perl-interpreter, pcre-devel BuildRequires: python2-devel, python3-devel @@ -135,6 +137,7 @@ in gdb. %patch0 -p1 -b .isystem %patch1 -p1 +%patch2 -p1 -b .bak for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new From 9f0aa1bdd10146adce851b3dd1eb118214fa32b4 Mon Sep 17 00:00:00 2001 From: "Jared K. Smith" Date: Wed, 6 Sep 2017 21:29:38 -0400 Subject: [PATCH 008/103] Bump revision and add changelog entry for patch --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 2b95498..970153a 100644 --- a/swig.spec +++ b/swig.spec @@ -31,7 +31,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -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 @@ -284,6 +284,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Sep 07 2017 Jared Smith - 3.0.12-11 +- Add patch to support NodeJS versions 7 and 8, fixes FTBFS + * Thu Aug 03 2017 Fedora Release Engineering - 3.0.12-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild From 1c915ba22166b5015f97597d52044a7e40619ece Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 25 Sep 2017 07:51:20 +0200 Subject: [PATCH 009/103] Fix generated code for constant expressions containing wchar_t L literals --- swig-3.0.12-Correct-php-testcase.patch | 26 +++ ...de-for-constant-expressions-containi.patch | 191 ++++++++++++++++++ ...on-wrapping-some-non-trivial-constan.patch | 185 +++++++++++++++++ swig.spec | 16 +- 4 files changed, 417 insertions(+), 1 deletion(-) create mode 100644 swig-3.0.12-Correct-php-testcase.patch create mode 100644 swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch create mode 100644 swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch diff --git a/swig-3.0.12-Correct-php-testcase.patch b/swig-3.0.12-Correct-php-testcase.patch new file mode 100644 index 0000000..b90f5f9 --- /dev/null +++ b/swig-3.0.12-Correct-php-testcase.patch @@ -0,0 +1,26 @@ +From 0a9113dcba2930b658cb67f9ba1c63ad8eebd88f Mon Sep 17 00:00:00 2001 +From: William S Fulton +Date: Tue, 19 Sep 2017 07:37:29 +0100 +Subject: [PATCH] Correct php testcase + +--- + Examples/test-suite/php/preproc_constants_runme.php | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Examples/test-suite/php/preproc_constants_runme.php b/Examples/test-suite/php/preproc_constants_runme.php +index ef32867..bd216c2 100644 +--- a/Examples/test-suite/php/preproc_constants_runme.php ++++ b/Examples/test-suite/php/preproc_constants_runme.php +@@ -61,8 +61,8 @@ check::equal(gettype(preproc_constants::EXPR_OR), "integer", "preproc_constants. + check::equal(gettype(preproc_constants::EXPR_LAND), "boolean", "preproc_constants.EXPR_LAND has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_LOR), "boolean", "preproc_constants.EXPR_LOR has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); ++check::equal(gettype(preproc_constants::EXPR_MIXED1), "double", "preproc_constants.EXPR_MIXED1 has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); +-check::equal(gettype(preproc_constants::EXPR_MIXED1), "integer", "preproc_constants.EXPR_MIXED1 has unexpected type"); + + ?> +-- +2.9.5 + diff --git a/swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch b/swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch new file mode 100644 index 0000000..7198c21 --- /dev/null +++ b/swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch @@ -0,0 +1,191 @@ +From 90ba174fcea1618af57aa594199541d47a89b7f6 Mon Sep 17 00:00:00 2001 +From: William S Fulton +Date: Sun, 17 Sep 2017 19:02:55 +0100 +Subject: [PATCH 1/2] Fix generated code for constant expressions containing + wchar_t L literals. + +Such as: + # define __WCHAR_MAX (0x7fffffff + L'\0') + +Reported on swig-user mailing list. +--- + CHANGES.current | 5 +++++ + Examples/test-suite/csharp/preproc_constants_c_runme.cs | 3 ++- + Examples/test-suite/csharp/preproc_constants_runme.cs | 2 ++ + Examples/test-suite/d/preproc_constants_c_runme.1.d | 2 ++ + Examples/test-suite/d/preproc_constants_c_runme.2.d | 2 ++ + Examples/test-suite/d/preproc_constants_runme.1.d | 2 ++ + Examples/test-suite/d/preproc_constants_runme.2.d | 2 ++ + Examples/test-suite/php/preproc_constants_c_runme.php | 2 ++ + Examples/test-suite/php/preproc_constants_runme.php | 2 ++ + Examples/test-suite/php5/preproc_constants_c_runme.php | 2 ++ + Examples/test-suite/php5/preproc_constants_runme.php | 2 ++ + Examples/test-suite/preproc_constants.i | 3 +++ + Source/CParse/parser.y | 2 +- + 13 files changed, 29 insertions(+), 2 deletions(-) + +#diff --git a/CHANGES.current b/CHANGES.current +#index 1e4a244..b455a9f 100644 +#--- a/CHANGES.current +#+++ b/CHANGES.current +#@@ -7,6 +7,11 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ +# Version 4.0.0 (in progress) +# =========================== +# +#+2017-09-17: wsfulton +#+ Fix generated code for constant expressions containing wchar_t L literals such as: +#+ # define __WCHAR_MAX (0x7fffffff + L'\0') +#+ # define __WCHAR_MIN (-__WCHAR_MAX - 1) +#+ +# 2017-09-10: mlamarre +# [Python] Patch #1083. Define_DEBUG to 1 to do exactly like Visual Studio +# /LDd, /MDd or /MTd compiler options. +diff --git a/Examples/test-suite/csharp/preproc_constants_c_runme.cs b/Examples/test-suite/csharp/preproc_constants_c_runme.cs +index 76c684d..1c28e49 100644 +--- a/Examples/test-suite/csharp/preproc_constants_c_runme.cs ++++ b/Examples/test-suite/csharp/preproc_constants_c_runme.cs +@@ -61,7 +61,8 @@ public class runme { + assert( typeof(int) == preproc_constants_c.EXPR_LAND.GetType() ); + assert( typeof(int) == preproc_constants_c.EXPR_LOR.GetType() ); + assert( typeof(double) == preproc_constants_c.EXPR_CONDITIONAL.GetType() ); +- ++ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MAX.GetType() ); ++ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MIN.GetType() ); + } + static void assert(bool assertion) { + if (!assertion) +diff --git a/Examples/test-suite/csharp/preproc_constants_runme.cs b/Examples/test-suite/csharp/preproc_constants_runme.cs +index 9fae591..6b02e30 100644 +--- a/Examples/test-suite/csharp/preproc_constants_runme.cs ++++ b/Examples/test-suite/csharp/preproc_constants_runme.cs +@@ -60,6 +60,8 @@ public class runme { + assert( typeof(bool) == preproc_constants.EXPR_LAND.GetType() ); + assert( typeof(bool) == preproc_constants.EXPR_LOR.GetType() ); + assert( typeof(double) == preproc_constants.EXPR_CONDITIONAL.GetType() ); ++ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MAX.GetType() ); ++ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MIN.GetType() ); + + } + static void assert(bool assertion) { +diff --git a/Examples/test-suite/d/preproc_constants_c_runme.1.d b/Examples/test-suite/d/preproc_constants_c_runme.1.d +index d846c71..2b349af 100644 +--- a/Examples/test-suite/d/preproc_constants_c_runme.1.d ++++ b/Examples/test-suite/d/preproc_constants_c_runme.1.d +@@ -61,4 +61,6 @@ void main() { + static assert(is(int == typeof(EXPR_LAND()))); + static assert(is(int == typeof(EXPR_LOR()))); + static assert(is(double == typeof(EXPR_CONDITIONAL()))); ++ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); ++ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); + } +diff --git a/Examples/test-suite/d/preproc_constants_c_runme.2.d b/Examples/test-suite/d/preproc_constants_c_runme.2.d +index 9bdbb93..1bac525 100644 +--- a/Examples/test-suite/d/preproc_constants_c_runme.2.d ++++ b/Examples/test-suite/d/preproc_constants_c_runme.2.d +@@ -61,4 +61,6 @@ void main() { + static assert(is(int == typeof(EXPR_LAND()))); + static assert(is(int == typeof(EXPR_LOR()))); + static assert(is(double == typeof(EXPR_CONDITIONAL()))); ++ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); ++ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); + } +diff --git a/Examples/test-suite/d/preproc_constants_runme.1.d b/Examples/test-suite/d/preproc_constants_runme.1.d +index 009405f..f743f48 100644 +--- a/Examples/test-suite/d/preproc_constants_runme.1.d ++++ b/Examples/test-suite/d/preproc_constants_runme.1.d +@@ -60,4 +60,6 @@ void main() { + static assert(is(bool == typeof(EXPR_LAND()))); + static assert(is(bool == typeof(EXPR_LOR()))); + static assert(is(double == typeof(EXPR_CONDITIONAL()))); ++ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); ++ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); + } +diff --git a/Examples/test-suite/d/preproc_constants_runme.2.d b/Examples/test-suite/d/preproc_constants_runme.2.d +index 2d92ef0..0d96c37 100644 +--- a/Examples/test-suite/d/preproc_constants_runme.2.d ++++ b/Examples/test-suite/d/preproc_constants_runme.2.d +@@ -60,4 +60,6 @@ void main() { + static assert(is(bool == typeof(EXPR_LAND()))); + static assert(is(bool == typeof(EXPR_LOR()))); + static assert(is(double == typeof(EXPR_CONDITIONAL()))); ++ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); ++ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); + } +diff --git a/Examples/test-suite/php/preproc_constants_c_runme.php b/Examples/test-suite/php/preproc_constants_c_runme.php +index af9b76e..e59fe18 100644 +--- a/Examples/test-suite/php/preproc_constants_c_runme.php ++++ b/Examples/test-suite/php/preproc_constants_c_runme.php +@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant + check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); ++check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); ++check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); + + ?> +diff --git a/Examples/test-suite/php/preproc_constants_runme.php b/Examples/test-suite/php/preproc_constants_runme.php +index 5c9119b..8e117ea 100644 +--- a/Examples/test-suite/php/preproc_constants_runme.php ++++ b/Examples/test-suite/php/preproc_constants_runme.php +@@ -61,5 +61,7 @@ check::equal(gettype(preproc_constants::EXPR_OR), "integer", "preproc_constants. + check::equal(gettype(preproc_constants::EXPR_LAND), "boolean", "preproc_constants.EXPR_LAND has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_LOR), "boolean", "preproc_constants.EXPR_LOR has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); ++check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); ++check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); + + ?> +diff --git a/Examples/test-suite/php5/preproc_constants_c_runme.php b/Examples/test-suite/php5/preproc_constants_c_runme.php +index 1ea0195..d978fab 100644 +--- a/Examples/test-suite/php5/preproc_constants_c_runme.php ++++ b/Examples/test-suite/php5/preproc_constants_c_runme.php +@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant + check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); ++check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); ++check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); + + ?> +diff --git a/Examples/test-suite/php5/preproc_constants_runme.php b/Examples/test-suite/php5/preproc_constants_runme.php +index fb9ee4f..7527026 100644 +--- a/Examples/test-suite/php5/preproc_constants_runme.php ++++ b/Examples/test-suite/php5/preproc_constants_runme.php +@@ -70,5 +70,7 @@ check::equal(gettype(preproc_constants::EXPR_LAND), "integer", "preproc_constant + check::equal(gettype(preproc_constants::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); + + check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); ++check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); ++check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); + + ?> +diff --git a/Examples/test-suite/preproc_constants.i b/Examples/test-suite/preproc_constants.i +index 3a999ad..16b44c9 100644 +--- a/Examples/test-suite/preproc_constants.i ++++ b/Examples/test-suite/preproc_constants.i +@@ -87,6 +87,9 @@ + #define EXPR_LOR 0xFF || 1 + #define EXPR_CONDITIONAL true ? 2 : 2.2 + ++#define EXPR_WCHAR_MAX (0x7fffffff + L'\0') ++#define EXPR_WCHAR_MIN (-EXPR_WCHAR_MAX - 1) ++ + #define EXPR_CHAR_COMPOUND_ADD 'A' + 12 + #define EXPR_CHAR_COMPOUND_LSHIFT 'B' << 6 + #define H_SUPPRESS_SCALING_MAGIC (('s'<<24) | ('u'<<16) | ('p'<<8) | 'p') +diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y +index 2e92cd0..273dadb 100644 +--- a/Source/CParse/parser.y ++++ b/Source/CParse/parser.y +@@ -194,7 +194,7 @@ int SWIG_cparse_template_reduce(int treduce) { + * ----------------------------------------------------------------------------- */ + + static int promote_type(int t) { +- if (t <= T_UCHAR || t == T_CHAR) return T_INT; ++ if (t <= T_UCHAR || t == T_CHAR || t == T_WCHAR) return T_INT; + return t; + } + +-- +2.9.5 + diff --git a/swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch b/swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch new file mode 100644 index 0000000..4be4f2f --- /dev/null +++ b/swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch @@ -0,0 +1,185 @@ +From 9e2a12416cf6ce7b926829aff353fe2d9019f135 Mon Sep 17 00:00:00 2001 +From: William S Fulton +Date: Mon, 18 Sep 2017 07:06:27 +0100 +Subject: [PATCH 2/2] Fix type promotion wrapping some non-trivial constant + expressions + +This was previously an integral type instead of a floating point type: +--- + CHANGES.current | 5 +++++ + Examples/test-suite/csharp/preproc_constants_c_runme.cs | 1 + + Examples/test-suite/csharp/preproc_constants_runme.cs | 1 + + Examples/test-suite/d/preproc_constants_c_runme.1.d | 1 + + Examples/test-suite/d/preproc_constants_c_runme.2.d | 1 + + Examples/test-suite/d/preproc_constants_runme.1.d | 1 + + Examples/test-suite/d/preproc_constants_runme.2.d | 1 + + Examples/test-suite/php/preproc_constants_c_runme.php | 1 + + Examples/test-suite/php/preproc_constants_runme.php | 1 + + Examples/test-suite/php5/preproc_constants_c_runme.php | 1 + + Examples/test-suite/php5/preproc_constants_runme.php | 1 + + Examples/test-suite/preproc_constants.i | 1 + + Source/CParse/parser.y | 1 + + 13 files changed, 17 insertions(+) + +#diff --git a/CHANGES.current b/CHANGES.current +#index b455a9f..f76e5a5 100644 +#--- a/CHANGES.current +#+++ b/CHANGES.current +#@@ -7,6 +7,11 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ +# Version 4.0.0 (in progress) +# =========================== +# +#+2017-09-18: wsfulton +#+ Fix type promotion wrapping constant expressions of the form: +#+ # define EXPR_MIXED1 (0x80 + 11.1) - 1 +#+ This was previously an integral type instead of a floating point type. +#+ +# 2017-09-17: wsfulton +# Fix generated code for constant expressions containing wchar_t L literals such as: +# # define __WCHAR_MAX (0x7fffffff + L'\0') +diff --git a/Examples/test-suite/csharp/preproc_constants_c_runme.cs b/Examples/test-suite/csharp/preproc_constants_c_runme.cs +index 1c28e49..7f40ce4 100644 +--- a/Examples/test-suite/csharp/preproc_constants_c_runme.cs ++++ b/Examples/test-suite/csharp/preproc_constants_c_runme.cs +@@ -61,6 +61,7 @@ public class runme { + assert( typeof(int) == preproc_constants_c.EXPR_LAND.GetType() ); + assert( typeof(int) == preproc_constants_c.EXPR_LOR.GetType() ); + assert( typeof(double) == preproc_constants_c.EXPR_CONDITIONAL.GetType() ); ++ assert( typeof(double) == preproc_constants_c.EXPR_MIXED1.GetType() ); + assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MAX.GetType() ); + assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MIN.GetType() ); + } +diff --git a/Examples/test-suite/csharp/preproc_constants_runme.cs b/Examples/test-suite/csharp/preproc_constants_runme.cs +index 6b02e30..0d8981f 100644 +--- a/Examples/test-suite/csharp/preproc_constants_runme.cs ++++ b/Examples/test-suite/csharp/preproc_constants_runme.cs +@@ -60,6 +60,7 @@ public class runme { + assert( typeof(bool) == preproc_constants.EXPR_LAND.GetType() ); + assert( typeof(bool) == preproc_constants.EXPR_LOR.GetType() ); + assert( typeof(double) == preproc_constants.EXPR_CONDITIONAL.GetType() ); ++ assert( typeof(double) == preproc_constants.EXPR_MIXED1.GetType() ); + assert( typeof(int) == preproc_constants.EXPR_WCHAR_MAX.GetType() ); + assert( typeof(int) == preproc_constants.EXPR_WCHAR_MIN.GetType() ); + +diff --git a/Examples/test-suite/d/preproc_constants_c_runme.1.d b/Examples/test-suite/d/preproc_constants_c_runme.1.d +index 2b349af..b79ee3b 100644 +--- a/Examples/test-suite/d/preproc_constants_c_runme.1.d ++++ b/Examples/test-suite/d/preproc_constants_c_runme.1.d +@@ -61,6 +61,7 @@ void main() { + static assert(is(int == typeof(EXPR_LAND()))); + static assert(is(int == typeof(EXPR_LOR()))); + static assert(is(double == typeof(EXPR_CONDITIONAL()))); ++ static assert(is(double == typeof(EXPR_MIXED1()))); + static assert(is(int == typeof(EXPR_WCHAR_MAX()))); + static assert(is(int == typeof(EXPR_WCHAR_MIN()))); + } +diff --git a/Examples/test-suite/d/preproc_constants_c_runme.2.d b/Examples/test-suite/d/preproc_constants_c_runme.2.d +index 1bac525..260bf8d 100644 +--- a/Examples/test-suite/d/preproc_constants_c_runme.2.d ++++ b/Examples/test-suite/d/preproc_constants_c_runme.2.d +@@ -61,6 +61,7 @@ void main() { + static assert(is(int == typeof(EXPR_LAND()))); + static assert(is(int == typeof(EXPR_LOR()))); + static assert(is(double == typeof(EXPR_CONDITIONAL()))); ++ static assert(is(double == typeof(EXPR_MIXED1()))); + static assert(is(int == typeof(EXPR_WCHAR_MAX()))); + static assert(is(int == typeof(EXPR_WCHAR_MIN()))); + } +diff --git a/Examples/test-suite/d/preproc_constants_runme.1.d b/Examples/test-suite/d/preproc_constants_runme.1.d +index f743f48..84a99c8 100644 +--- a/Examples/test-suite/d/preproc_constants_runme.1.d ++++ b/Examples/test-suite/d/preproc_constants_runme.1.d +@@ -60,6 +60,7 @@ void main() { + static assert(is(bool == typeof(EXPR_LAND()))); + static assert(is(bool == typeof(EXPR_LOR()))); + static assert(is(double == typeof(EXPR_CONDITIONAL()))); ++ static assert(is(double == typeof(EXPR_MIXED1()))); + static assert(is(int == typeof(EXPR_WCHAR_MAX()))); + static assert(is(int == typeof(EXPR_WCHAR_MIN()))); + } +diff --git a/Examples/test-suite/d/preproc_constants_runme.2.d b/Examples/test-suite/d/preproc_constants_runme.2.d +index 0d96c37..f6638f4 100644 +--- a/Examples/test-suite/d/preproc_constants_runme.2.d ++++ b/Examples/test-suite/d/preproc_constants_runme.2.d +@@ -60,6 +60,7 @@ void main() { + static assert(is(bool == typeof(EXPR_LAND()))); + static assert(is(bool == typeof(EXPR_LOR()))); + static assert(is(double == typeof(EXPR_CONDITIONAL()))); ++ static assert(is(double == typeof(EXPR_MIXED1()))); + static assert(is(int == typeof(EXPR_WCHAR_MAX()))); + static assert(is(int == typeof(EXPR_WCHAR_MIN()))); + } +diff --git a/Examples/test-suite/php/preproc_constants_c_runme.php b/Examples/test-suite/php/preproc_constants_c_runme.php +index e59fe18..20868dc 100644 +--- a/Examples/test-suite/php/preproc_constants_c_runme.php ++++ b/Examples/test-suite/php/preproc_constants_c_runme.php +@@ -62,6 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant + check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); ++check::equal(gettype(preproc_constants_c::EXPR_MIXED1), "double", "preproc_constants.EXPR_MIXED1 has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); + +diff --git a/Examples/test-suite/php/preproc_constants_runme.php b/Examples/test-suite/php/preproc_constants_runme.php +index 8e117ea..ef32867 100644 +--- a/Examples/test-suite/php/preproc_constants_runme.php ++++ b/Examples/test-suite/php/preproc_constants_runme.php +@@ -63,5 +63,6 @@ check::equal(gettype(preproc_constants::EXPR_LOR), "boolean", "preproc_constants + check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); ++check::equal(gettype(preproc_constants::EXPR_MIXED1), "integer", "preproc_constants.EXPR_MIXED1 has unexpected type"); + + ?> +diff --git a/Examples/test-suite/php5/preproc_constants_c_runme.php b/Examples/test-suite/php5/preproc_constants_c_runme.php +index d978fab..d55d423 100644 +--- a/Examples/test-suite/php5/preproc_constants_c_runme.php ++++ b/Examples/test-suite/php5/preproc_constants_c_runme.php +@@ -62,6 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant + check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); ++check::equal(gettype(preproc_constants_c::EXPR_MIXED1), "double", "preproc_constants.EXPR_MIXED1 has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); + check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); + +diff --git a/Examples/test-suite/php5/preproc_constants_runme.php b/Examples/test-suite/php5/preproc_constants_runme.php +index 7527026..01137b0 100644 +--- a/Examples/test-suite/php5/preproc_constants_runme.php ++++ b/Examples/test-suite/php5/preproc_constants_runme.php +@@ -70,6 +70,7 @@ check::equal(gettype(preproc_constants::EXPR_LAND), "integer", "preproc_constant + check::equal(gettype(preproc_constants::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); + + check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); ++check::equal(gettype(preproc_constants::EXPR_MIXED1), "double", "preproc_constants.EXPR_MIXED1 has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); + check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); + +diff --git a/Examples/test-suite/preproc_constants.i b/Examples/test-suite/preproc_constants.i +index 16b44c9..628cae1 100644 +--- a/Examples/test-suite/preproc_constants.i ++++ b/Examples/test-suite/preproc_constants.i +@@ -86,6 +86,7 @@ + #define EXPR_LAND 0xFF && 1 + #define EXPR_LOR 0xFF || 1 + #define EXPR_CONDITIONAL true ? 2 : 2.2 ++#define EXPR_MIXED1 (0x80 + 11.1) - 1 + + #define EXPR_WCHAR_MAX (0x7fffffff + L'\0') + #define EXPR_WCHAR_MIN (-EXPR_WCHAR_MAX - 1) +diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y +index 273dadb..3df9896 100644 +--- a/Source/CParse/parser.y ++++ b/Source/CParse/parser.y +@@ -6338,6 +6338,7 @@ valexpr : exprnum { $$ = $1; } + break; + } + } ++ $$.type = promote($2.type, $4.type); + } + | LPAREN expr pointer RPAREN expr %prec CAST { + $$ = $5; +-- +2.9.5 + diff --git a/swig.spec b/swig.spec index 970153a..cdb33c9 100644 --- a/swig.spec +++ b/swig.spec @@ -31,7 +31,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -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 @@ -45,6 +45,11 @@ Patch0: swig308-Do-not-use-isystem.patch Patch1: swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch # Upstream pull request to support Node v7/v8 Patch2: https://patch-diff.githubusercontent.com/raw/swig/swig/pull/968/swig-node-v7.patch +# Fix generated code for constant expressions containing wchar_t L +# literals. +Patch3: swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch +Patch4: swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch +Patch5: swig-3.0.12-Correct-php-testcase.patch BuildRequires: perl-interpreter, pcre-devel BuildRequires: python2-devel, python3-devel @@ -63,6 +68,8 @@ BuildRequires: perl(Test::More) BuildRequires: perl(vars) BuildRequires: perl(warnings) BuildRequires: boost-devel +# Need when Source/CParse/parser.y is patched +BuildRequires: bison %if %{tcl} BuildRequires: tcl-devel %endif @@ -138,6 +145,9 @@ in gdb. %patch0 -p1 -b .isystem %patch1 -p1 %patch2 -p1 -b .bak +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -284,6 +294,10 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Sep 20 2017 Jitka Plesnikova - 3.0.12-12 +- Fix generated code for constant expressions containing wchar_t L + literals + * Thu Sep 07 2017 Jared Smith - 3.0.12-11 - Add patch to support NodeJS versions 7 and 8, fixes FTBFS From 3729515865e5b5d035d42b795bdb1167c4d3d30e Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 22 Nov 2017 08:20:47 +0100 Subject: [PATCH 010/103] Disable PHP tests, because they fail with PHP 7.2-RCx --- swig.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/swig.spec b/swig.spec index cdb33c9..c54dfac 100644 --- a/swig.spec +++ b/swig.spec @@ -4,7 +4,8 @@ %{!?tcl:%global tcl 1} %{!?guile:%global guile 0} %{!?lualang:%global lualang 1} -%{!?phplang:%global phplang 1} +# Disable PHP tests, because they fail with PHP 7.2.0 +%{!?phplang:%global phplang 0} %{!?rubylang:%global rubylang 1} %ifarch aarch64 %{arm} %{mips} ppc64le ppc %{power64} s390 s390x @@ -31,7 +32,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 12%{?dist} +Release: 13%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -294,6 +295,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Nov 21 2017 Jitka Plesnikova - 3.0.12-13 +- Disable PHP tests, because they fail with PHP 7.2.0-RC + * Wed Sep 20 2017 Jitka Plesnikova - 3.0.12-12 - Fix generated code for constant expressions containing wchar_t L literals From 117a26f825b4548d4cc71588699b2b8ef41c1f8b Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 23 Jan 2018 12:20:46 +0000 Subject: [PATCH 011/103] Rebuilt for Boost 1.66 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index c54dfac..00c9749 100644 --- a/swig.spec +++ b/swig.spec @@ -32,7 +32,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -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 @@ -295,6 +295,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Jan 23 2018 Jonathan Wakely - 3.0.12-14 +- Rebuilt for Boost 1.66 + * Tue Nov 21 2017 Jitka Plesnikova - 3.0.12-13 - Disable PHP tests, because they fail with PHP 7.2.0-RC From f3809a515cec778768ca3cab64ff76046245bd30 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 9 Feb 2018 18:11:54 +0000 Subject: [PATCH 012/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_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 00c9749..2ee7514 100644 --- a/swig.spec +++ b/swig.spec @@ -32,7 +32,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -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 @@ -295,6 +295,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Feb 09 2018 Fedora Release Engineering - 3.0.12-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Tue Jan 23 2018 Jonathan Wakely - 3.0.12-14 - Rebuilt for Boost 1.66 From 9d7264020b914b947e693a822eee67f065455f6d Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 15 Feb 2018 09:18:18 +0100 Subject: [PATCH 013/103] Fix configure to properly check version of Go 1.10; Update conditions for tests --- swig-3.0.12-Fix-configure-for-Go-1_10.patch | 21 +++++++++++++++++ swig.spec | 26 +++++++++++++-------- 2 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 swig-3.0.12-Fix-configure-for-Go-1_10.patch diff --git a/swig-3.0.12-Fix-configure-for-Go-1_10.patch b/swig-3.0.12-Fix-configure-for-Go-1_10.patch new file mode 100644 index 0000000..a171f18 --- /dev/null +++ b/swig-3.0.12-Fix-configure-for-Go-1_10.patch @@ -0,0 +1,21 @@ +diff -up swig-3.0.12/configure.ac.go110 swig-3.0.12/configure.ac +--- swig-3.0.12/configure.ac.go110 2018-02-13 13:08:16.543632561 +0100 ++++ swig-3.0.12/configure.ac 2018-02-13 13:56:20.241295155 +0100 +@@ -2606,7 +2606,7 @@ else + esac + AC_MSG_CHECKING([whether go version is too old]) + case $go_version in +- go1.1* | go1.0* | go1 ) ++ go1.1 | go1.0* | go1 ) + AC_MSG_RESULT([yes - minimum version is 1.2]) + GO= + GOOPT="-intgosize 32" +@@ -2624,7 +2624,7 @@ else + ;; + esac + case $go_version in +- go1.0* | go1 | go1.1*) ++ go1.0* | go1 | go1.1) + GOOPT="$GOOPT -use-shlib" + ;; + go1.2*) diff --git a/swig.spec b/swig.spec index 2ee7514..64fc86c 100644 --- a/swig.spec +++ b/swig.spec @@ -8,31 +8,30 @@ %{!?phplang:%global phplang 0} %{!?rubylang:%global rubylang 1} -%ifarch aarch64 %{arm} %{mips} ppc64le ppc %{power64} s390 s390x -%{!?golang:%global golang 0} -%{!?Rlang:%global Rlang 0} -%{!?javalang:%global javalang 0} -%else %if 0%{?rhel} %{!?golang:%global golang 0} +%{!?octave:%global octave 0} %{!?Rlang:%global Rlang 0} %else -%{!?golang:%global golang 1} +%{!?octave:%global octave 1} %{!?Rlang:%global Rlang 1} %endif +%ifarch aarch64 %{arm} %{mips} ppc64le ppc %{power64} s390 s390x +%{!?javalang:%global javalang 0} +%else %{!?javalang:%global javalang 1} %endif -%if 0%{?rhel} -%{!?octave:%global octave 0} +%ifarch %{ix86} x86_64 %{arm} aarch64 ppc64le +%{!?golang:%global golang 1} %else -%{!?octave:%global octave 1} +%{!?golang:%global golang 0} %endif Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -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 @@ -51,6 +50,7 @@ Patch2: https://patch-diff.githubusercontent.com/raw/swig/swig/pull/968/swig-no Patch3: swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch Patch4: swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch Patch5: swig-3.0.12-Correct-php-testcase.patch +Patch6: swig-3.0.12-Fix-configure-for-Go-1_10.patch BuildRequires: perl-interpreter, pcre-devel BuildRequires: python2-devel, python3-devel @@ -82,6 +82,7 @@ BuildRequires: octave-devel %endif %if %{golang} BuildRequires: golang +BuildRequires: golang-shared BuildRequires: golang-src %endif %if %{lualang} @@ -149,6 +150,7 @@ in gdb. %patch3 -p1 %patch4 -p1 %patch5 -p1 +%patch6 -p1 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -295,6 +297,10 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Feb 14 2018 Jitka Plesnikova - 3.0.12-16 +- Update conditions for tests +- Fix configure to properly check version of Go 1.10 + * Fri Feb 09 2018 Fedora Release Engineering - 3.0.12-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild From 54392e7afe412a4b47c808e13cf1e9ef2c98cef3 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 25 Apr 2018 09:20:36 +0200 Subject: [PATCH 014/103] Backport upstream Coverity fixes; Do not build ccache-swig on RHEL --- ...ue-reported-for-SWIG_Python_ConvertF.patch | 58 +++++++++++++++++++ ...ue-reported-for-SWIG_Python_FixMetho.patch | 36 ++++++++++++ ...ue-reported-for-wrapper-argument-che.patch | 41 +++++++++++++ ...ue-reported-for-setslice-pycontainer.patch | 40 +++++++++++++ swig-3.0.12-Fix-configure-for-Go-1_10.patch | 21 ------- ...ion-matching-in-configure-for-go1.10.patch | 51 ++++++++++++++++ swig.spec | 35 ++++++++++- 7 files changed, 258 insertions(+), 24 deletions(-) create mode 100644 swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch create mode 100644 swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch create mode 100644 swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch create mode 100644 swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch delete mode 100644 swig-3.0.12-Fix-configure-for-Go-1_10.patch create mode 100644 swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch diff --git a/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch b/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch new file mode 100644 index 0000000..9fff13b --- /dev/null +++ b/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch @@ -0,0 +1,58 @@ +From 21f532975f59f0c156c76cc739f5a93f57d8f6cb Mon Sep 17 00:00:00 2001 +From: Mark Dufour +Date: Tue, 14 Feb 2017 10:48:30 +0100 +Subject: [PATCH] [Coverity] fix issue reported for + SWIG_Python_ConvertFunctionPtr + +Fix Coverity issue reported for SWIG_Python_ConvertFunctionPtr: + +"Execution cannot reach this statement: *ptr = vptr;" + +Because if 'ty' is null, then desc becomes null and we return with +SWIG_ERROR. So 'ty' cannot be null at 'if (ty)'. +--- + Lib/python/pyrun.swg | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) + +diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg +index ab1237f62..939a69204 100644 +--- a/Lib/python/pyrun.swg ++++ b/Lib/python/pyrun.swg +@@ -1287,25 +1287,22 @@ SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { + return SWIG_ConvertPtr(obj, ptr, ty, 0); + } else { + void *vptr = 0; +- ++ swig_cast_info *tc; ++ + /* here we get the method pointer for callbacks */ + const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); + const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; + if (desc) + desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; +- if (!desc) ++ if (!desc) + return SWIG_ERROR; +- if (ty) { +- swig_cast_info *tc = SWIG_TypeCheck(desc,ty); +- if (tc) { +- int newmemory = 0; +- *ptr = SWIG_TypeCast(tc,vptr,&newmemory); +- assert(!newmemory); /* newmemory handling not yet implemented */ +- } else { +- return SWIG_ERROR; +- } ++ tc = SWIG_TypeCheck(desc,ty); ++ if (tc) { ++ int newmemory = 0; ++ *ptr = SWIG_TypeCast(tc,vptr,&newmemory); ++ assert(!newmemory); /* newmemory handling not yet implemented */ + } else { +- *ptr = vptr; ++ return SWIG_ERROR; + } + return SWIG_OK; + } +-- +2.14.3 + diff --git a/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch b/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch new file mode 100644 index 0000000..990bd40 --- /dev/null +++ b/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch @@ -0,0 +1,36 @@ +From 9825fcbab5c4ddd867432f9922bebfbec7b78af0 Mon Sep 17 00:00:00 2001 +From: Mark Dufour +Date: Tue, 14 Feb 2017 10:34:37 +0100 +Subject: [PATCH] [Coverity] fix issue reported for SWIG_Python_FixMethods + +Fix Coverity issue reported for SWIG_Python_FixMethods: + +"buffer_size: Calling strncpy with a source string whose length +(10 chars) is greater than or equal to the size argument (10) +will fail to null-terminate buff." + +The issue is only reported for the "swig_ptr: " line, but for +consistency we replace both occurrences of strncpy with memcpy. +--- + Lib/python/pyinit.swg | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Lib/python/pyinit.swg b/Lib/python/pyinit.swg +index 2cc582841..fe45ac941 100644 +--- a/Lib/python/pyinit.swg ++++ b/Lib/python/pyinit.swg +@@ -306,9 +306,9 @@ SWIG_Python_FixMethods(PyMethodDef *methods, + char *ndoc = (char*)malloc(ldoc + lptr + 10); + if (ndoc) { + char *buff = ndoc; +- strncpy(buff, methods[i].ml_doc, ldoc); ++ memcpy(buff, methods[i].ml_doc, ldoc); + buff += ldoc; +- strncpy(buff, "swig_ptr: ", 10); ++ memcpy(buff, "swig_ptr: ", 10); + buff += 10; + SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); + methods[i].ml_doc = ndoc; +-- +2.14.3 + diff --git a/swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch b/swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch new file mode 100644 index 0000000..d0fe997 --- /dev/null +++ b/swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch @@ -0,0 +1,41 @@ +From 13eeebd2fb3005abc876957c68bde6a92510aa44 Mon Sep 17 00:00:00 2001 +From: Mark Dufour +Date: Tue, 14 Feb 2017 10:53:14 +0100 +Subject: [PATCH] [Coverity] fix issue reported for wrapper argument checking + +Fix Coverity issue reported for wrapper argument checking: + +"Null-checking args suggests that it may be null, but it has already +been dereferenced on all paths leading to the check." + +So 'args' is null checked, but after dereferencing it with +PyTuple_Check(args). +--- + Source/Modules/python.cxx | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx +index a6801fc4e..5e058e773 100644 +--- a/Source/Modules/python.cxx ++++ b/Source/Modules/python.cxx +@@ -2541,9 +2541,14 @@ public: + + if (!fastunpack) { + Wrapper_add_local(f, "ii", "Py_ssize_t ii"); +- if (maxargs - (add_self ? 1 : 0) > 0) +- Append(f->code, "if (!PyTuple_Check(args)) SWIG_fail;\n"); +- Append(f->code, "argc = args ? PyObject_Length(args) : 0;\n"); ++ ++ if (maxargs - (add_self ? 1 : 0) > 0) { ++ Append(f->code, "if (!PyTuple_Check(args)) SWIG_fail;\n"); ++ Append(f->code, "argc = PyObject_Length(args);\n"); ++ } else { ++ Append(f->code, "argc = args ? PyObject_Length(args) : 0;\n"); ++ } ++ + if (add_self) + Append(f->code, "argv[0] = self;\n"); + Printf(f->code, "for (ii = 0; (ii < %d) && (ii < argc); ii++) {\n", add_self ? maxargs - 1 : maxargs); +-- +2.14.3 + diff --git a/swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch b/swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch new file mode 100644 index 0000000..041619e --- /dev/null +++ b/swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch @@ -0,0 +1,40 @@ +From 5803e81d488e97623fe29b8629b977be01a8229e Mon Sep 17 00:00:00 2001 +From: Mark Dufour +Date: Mon, 6 Mar 2017 21:16:41 +0100 +Subject: [PATCH] Fix Coverity issue reported for setslice (pycontainer.swg): + +"CID 11151 (#3-1 of 3): Using invalid iterator (INVALIDATE_ITERATOR)18. +increment_iterator: Incrementing iterator it though it is already past +the end of its container." + +Coverity does not understand 'replace_count', so warns that we may go +past self->end() (or self->rend() I guess). +--- + Lib/python/pycontainer.swg | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Lib/python/pycontainer.swg b/Lib/python/pycontainer.swg +index d40b0baa8..9aefb4fc7 100644 +--- a/Lib/python/pycontainer.swg ++++ b/Lib/python/pycontainer.swg +@@ -351,7 +351,7 @@ namespace swig { + typename Sequence::const_iterator isit = is.begin(); + typename Sequence::iterator it = self->begin(); + std::advance(it,ii); +- for (size_t rc=0; rcend(); ++rc) { + *it++ = *isit++; + for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) + it++; +@@ -367,7 +367,7 @@ namespace swig { + typename Sequence::const_iterator isit = is.begin(); + typename Sequence::reverse_iterator it = self->rbegin(); + std::advance(it,size-ii-1); +- for (size_t rc=0; rcrend(); ++rc) { + *it++ = *isit++; + for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) + it++; +-- +2.14.3 + diff --git a/swig-3.0.12-Fix-configure-for-Go-1_10.patch b/swig-3.0.12-Fix-configure-for-Go-1_10.patch deleted file mode 100644 index a171f18..0000000 --- a/swig-3.0.12-Fix-configure-for-Go-1_10.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -up swig-3.0.12/configure.ac.go110 swig-3.0.12/configure.ac ---- swig-3.0.12/configure.ac.go110 2018-02-13 13:08:16.543632561 +0100 -+++ swig-3.0.12/configure.ac 2018-02-13 13:56:20.241295155 +0100 -@@ -2606,7 +2606,7 @@ else - esac - AC_MSG_CHECKING([whether go version is too old]) - case $go_version in -- go1.1* | go1.0* | go1 ) -+ go1.1 | go1.0* | go1 ) - AC_MSG_RESULT([yes - minimum version is 1.2]) - GO= - GOOPT="-intgosize 32" -@@ -2624,7 +2624,7 @@ else - ;; - esac - case $go_version in -- go1.0* | go1 | go1.1*) -+ go1.0* | go1 | go1.1) - GOOPT="$GOOPT -use-shlib" - ;; - go1.2*) diff --git a/swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch b/swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch new file mode 100644 index 0000000..69e22dd --- /dev/null +++ b/swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch @@ -0,0 +1,51 @@ +From 5f6012039abb6ec9e9dfea801effa6b02fd102bc Mon Sep 17 00:00:00 2001 +From: Vsevolod Kvachev +Date: Thu, 19 Apr 2018 23:04:37 +0300 +Subject: [PATCH] Fix go version matching in configure for go1.10 + +--- + configure.ac | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 833cb37bf..ba1631743 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2597,7 +2597,7 @@ else + GOVERSIONOPTION=version + go_version=$($GO $GOVERSIONOPTION | sed -e 's/go version //') + case "$go_version" in +- go1 | go1.[[01234]]*) ++ go1 | go1.[[01234]] | go1.[[01234]].*) + GOC=$(sh -c "$(go env) && echo \$GOCHAR")c + ;; + *) +@@ -2606,7 +2606,7 @@ else + esac + AC_MSG_CHECKING([whether go version is too old]) + case $go_version in +- go1.1* | go1.0* | go1 ) ++ go1.1.* | go1.1 | go1.0 | go1.0.* | go1 ) + AC_MSG_RESULT([yes - minimum version is 1.2]) + GO= + GOOPT="-intgosize 32" +@@ -2624,13 +2624,13 @@ else + ;; + esac + case $go_version in +- go1.0* | go1 | go1.1*) ++ go1.0 | go1.0.* | go1 | go1.1 | go1.1.*) + GOOPT="$GOOPT -use-shlib" + ;; +- go1.2*) ++ go1.2 | go1.2.*) + GO12=true + ;; +- go1.3* | go1.4*) ++ go1.3 | go1.3.* | go1.4 | go1.4.*) + GO13=true + ;; + *) +-- +2.14.3 + diff --git a/swig.spec b/swig.spec index 64fc86c..776bb06 100644 --- a/swig.spec +++ b/swig.spec @@ -12,9 +12,11 @@ %{!?golang:%global golang 0} %{!?octave:%global octave 0} %{!?Rlang:%global Rlang 0} +%bcond_with build_ccache_swig %else %{!?octave:%global octave 1} %{!?Rlang:%global Rlang 1} +%bcond_without build_ccache_swig %endif %ifarch aarch64 %{arm} %{mips} ppc64le ppc %{power64} s390 s390x %{!?javalang:%global javalang 0} @@ -31,15 +33,17 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -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 # Define the part of man page sections Source1: description.h2m +%if %{with build_ccache_swig} Source2: description-ccache.h2m Source3: ccache-swig.sh Source4: ccache-swig.csh +%endif Patch0: swig308-Do-not-use-isystem.patch Patch1: swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch @@ -50,7 +54,12 @@ Patch2: https://patch-diff.githubusercontent.com/raw/swig/swig/pull/968/swig-no Patch3: swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch Patch4: swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch Patch5: swig-3.0.12-Correct-php-testcase.patch -Patch6: swig-3.0.12-Fix-configure-for-Go-1_10.patch +Patch6: swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch +# Backport upstream Coverity fixes (BZ# 1570037) +Patch7: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch +Patch8: swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch +Patch9: swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch +Patch10: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch BuildRequires: perl-interpreter, pcre-devel BuildRequires: python2-devel, python3-devel @@ -110,11 +119,11 @@ Eiffel and Guile. SWIG is normally used to create high-level interpreted programming environments, systems integration, and as a tool for building user interfaces +%if %{with build_ccache_swig} %package -n ccache-swig Summary: Fast compiler cache License: GPLv2+ Group: Development/Tools -Requires: ccache Requires: swig Conflicts: swig < 3.0.8-2 @@ -122,6 +131,7 @@ Conflicts: swig < 3.0.8-2 ccache-swig is a compiler cache. It speeds up re-compilation of C/C++/SWIG code by caching previous compiles and detecting when the same compile is being done again. ccache-swig is ccache plus support for SWIG. +%endif %package doc Summary: Documentation files for SWIG @@ -151,6 +161,10 @@ in gdb. %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -182,6 +196,9 @@ done --with-octave=/usr/bin/octave \ --without-maximum-compile-warnings \ %endif +%if %{without build_ccache_swig} + --disable-ccache \ +%endif ; make %{?_smp_mflags} @@ -231,6 +248,7 @@ chmod a+x h2m_helper_swig # Generate man page help2man -N --section 1 ./h2m_helper_swig --include %{SOURCE1} -o %{name}.1 +%if %{with build_ccache_swig} ######################################################## # Use help output for generating of man page ccache-swig %{buildroot}%{_bindir}/ccache-swig -h >>help_ccache @@ -257,19 +275,24 @@ sed -i -e 's#@DOCDIR@#%{_docdir}#' help_ccache # Generate man page help2man -N --section 1 ./h2m_helper_ccache --include help_ccache -o ccache-swig.1 +%endif # Add man page for swig to repository mkdir -p %{buildroot}%{_mandir}/man1/ install -p -m 0644 %{name}.1 %{buildroot}%{_mandir}/man1/ +%if %{with build_ccache_swig} install -p -m 0644 ccache-swig.1 %{buildroot}%{_mandir}/man1/ +%endif # Quiet some rpmlint complaints - remove empty file rm -f %{buildroot}%{_datadir}/%name/%{version}/octave/std_carray.i +%if %{with build_ccache_swig} # Enable ccache-swig by default mkdir -p %{buildroot}%{_sysconfdir}/profile.d/ install -dm 755 %{buildroot}%{_sysconfdir}/profile.d install -pm 644 %{SOURCE3} %{SOURCE4} %{buildroot}%{_sysconfdir}/profile.d +%endif # Add swig.gdb sub-package gdb mkdir -p %{buildroot}%{_datadir}/%{name}/gdb @@ -284,10 +307,12 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %doc ANNOUNCE CHANGES CHANGES.current %doc COPYRIGHT README TODO +%if %{with build_ccache_swig} %files -n ccache-swig %{_bindir}/ccache-swig %config(noreplace) %{_sysconfdir}/profile.d/ccache-swig.*sh %{_mandir}/man1/ccache-swig.1* +%endif %files doc %license LICENSE LICENSE-GPL LICENSE-UNIVERSITIES @@ -297,6 +322,10 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Apr 24 2018 Jitka Plesnikova - 3.0.12-17 +- Backport upstream Coverity fixes (bug#1570037) +- Do not build ccache-swig on RHEL + * Wed Feb 14 2018 Jitka Plesnikova - 3.0.12-16 - Update conditions for tests - Fix configure to properly check version of Go 1.10 From 240dde22fb6b521e323d3181b6de02aff27ccdbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Tue, 19 Jun 2018 11:28:02 +0200 Subject: [PATCH 015/103] Rebuilt for Python 3.7 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 776bb06..6dd02a5 100644 --- a/swig.spec +++ b/swig.spec @@ -33,7 +33,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -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 @@ -322,6 +322,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Jun 19 2018 Miro Hrončok - 3.0.12-18 +- Rebuilt for Python 3.7 + * Tue Apr 24 2018 Jitka Plesnikova - 3.0.12-17 - Backport upstream Coverity fixes (bug#1570037) - Do not build ccache-swig on RHEL From 34dd3b20b70ea5efca74f34cf390093d7f921638 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Fri, 22 Jun 2018 16:56:24 +0200 Subject: [PATCH 016/103] Disable using of Python 2 --- swig.spec | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/swig.spec b/swig.spec index 776bb06..1e6db3b 100644 --- a/swig.spec +++ b/swig.spec @@ -7,6 +7,7 @@ # Disable PHP tests, because they fail with PHP 7.2.0 %{!?phplang:%global phplang 0} %{!?rubylang:%global rubylang 1} +%{!?python2lang:%global python2lang 0} %if 0%{?rhel} %{!?golang:%global golang 0} @@ -33,7 +34,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -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 @@ -62,7 +63,10 @@ Patch9: swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch Patch10: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch BuildRequires: perl-interpreter, pcre-devel -BuildRequires: python2-devel, python3-devel +%if %{python2lang} +BuildRequires: python2-devel +%endif +BuildRequires: python3-devel BuildRequires: autoconf, automake, gawk, dos2unix BuildRequires: gcc-c++ BuildRequires: help2man @@ -180,6 +184,12 @@ done # It causes that log had more then 600M. %configure \ --without-ocaml \ +%if %{python2lang} + --with-python=%__python2\ +%else + --without-python \ +%endif + --with-python3=%__python3 \ %if %{phplang} --with-php=%{__php} \ %endif @@ -322,6 +332,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Jun 22 2018 Jitka Plesnikova - 3.0.12-18 +- Disable using of Python 2 + * Tue Apr 24 2018 Jitka Plesnikova - 3.0.12-17 - Backport upstream Coverity fixes (bug#1570037) - Do not build ccache-swig on RHEL From d4147f8e976f118af4f69cd2183cc139eeea86b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Mon, 2 Jul 2018 18:24:13 +0200 Subject: [PATCH 017/103] Rebuilt for Python 3.7 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 1338ae9..7cdb4ab 100644 --- a/swig.spec +++ b/swig.spec @@ -34,7 +34,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 19%{?dist} +Release: 20%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -332,6 +332,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Jul 02 2018 Miro Hrončok - 3.0.12-20 +- Rebuilt for Python 3.7 + * Fri Jun 22 2018 Jitka Plesnikova - 3.0.12-19 - Disable using of Python 2 From a4db9fed817b1ec8af544336d22b9dcf63cb6b7e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 14 Jul 2018 07:04:31 +0000 Subject: [PATCH 018/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_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 7cdb4ab..e4842bb 100644 --- a/swig.spec +++ b/swig.spec @@ -34,7 +34,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 20%{?dist} +Release: 21%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -332,6 +332,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Jul 14 2018 Fedora Release Engineering - 3.0.12-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + * Mon Jul 02 2018 Miro Hrončok - 3.0.12-20 - Rebuilt for Python 3.7 From e01a76a62b13ea8ae5df895f55d3b8b712719cf0 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 15 Nov 2018 10:46:14 +0100 Subject: [PATCH 019/103] Add support for Octave 4.4 --- swig-3.0.12-Support-Octave-4.4.patch | 974 +++++++++++++++++++++++++++ swig.spec | 9 +- 2 files changed, 981 insertions(+), 2 deletions(-) create mode 100644 swig-3.0.12-Support-Octave-4.4.patch diff --git a/swig-3.0.12-Support-Octave-4.4.patch b/swig-3.0.12-Support-Octave-4.4.patch new file mode 100644 index 0000000..bb66edd --- /dev/null +++ b/swig-3.0.12-Support-Octave-4.4.patch @@ -0,0 +1,974 @@ +From e8e507bf0bae72e7f3bb798e326ec5d81b230205 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Thu, 10 May 2018 23:26:06 +1000 +Subject: [PATCH 01/18] Lib/octave: fix function name passed to + unwind_protect::begin_frame() + +--- + Lib/octave/octruntime.swg | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg +index f5e687123c..96f7399f93 100644 +--- a/Lib/octave/octruntime.swg ++++ b/Lib/octave/octruntime.swg +@@ -170,7 +170,7 @@ SWIGINTERN bool SWIG_Octave_InstallFunction(octave_function *octloadfcn, std::st + frame.protect_var(discard_error_messages); discard_error_messages = true; + frame.protect_var(discard_warning_messages); discard_warning_messages = true; + #else +- unwind_protect::begin_frame("SWIG_Octave_LoadModule"); ++ unwind_protect::begin_frame("SWIG_Octave_InstallFunction"); + unwind_protect_int(error_state); error_state = 0; + unwind_protect_int(warning_state); warning_state = 0; + unwind_protect_bool(discard_error_messages); discard_error_messages = true; + +From a46909a414ee9a1fd3e1996066111774e852557e Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Tue, 31 Jan 2017 11:43:42 +1300 +Subject: [PATCH 02/18] Lib/octave: call octave::feval() instead of feval() for + Octave >= 4.4 + +--- + Lib/octave/octruntime.swg | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg +index 96f7399f93..e468eb49e0 100644 +--- a/Lib/octave/octruntime.swg ++++ b/Lib/octave/octruntime.swg +@@ -139,7 +139,11 @@ SWIGINTERN bool SWIG_Octave_LoadModule(std::string name) { + #endif + #if SWIG_OCTAVE_PREREQ(4,2,0) + try { ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ octave::feval(name, octave_value_list(), 0); ++#else + feval(name, octave_value_list(), 0); ++#endif + retn = true; + } catch (octave::execution_exception&) { } + #else +@@ -181,7 +185,11 @@ SWIGINTERN bool SWIG_Octave_InstallFunction(octave_function *octloadfcn, std::st + args.append(octloadfcn->fcn_file_name()); + #if SWIG_OCTAVE_PREREQ(4,2,0) + try { ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ octave::feval("autoload", args, 0); ++#else + feval("autoload", args, 0); ++#endif + retn = true; + } catch (octave::execution_exception&) { } + #else +@@ -351,7 +359,11 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { + "__swig_atexit__; " + "atexit(\"__swig_atexit__\", false); " + "atexit(\"__swig_atexit__\")"); ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ octave::feval("evalin", eval_args, 0); ++#else + feval("evalin", eval_args, 0); ++#endif + #endif + + octave_swig_ref::register_type(); + +From 358345db9eb875cb6b2bd51c5ed10efb3816d4f3 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Thu, 10 May 2018 20:32:50 +1000 +Subject: [PATCH 03/18] Lib/octave: replace is_cell() with iscell() for Octave + >= 4.4 + +--- + Lib/octave/octcontainer.swg | 4 ++++ + Lib/octave/octprimtypes.swg | 8 +++++++- + Lib/octave/octrun.swg | 20 ++++++++++++++++++-- + Lib/octave/std_pair.i | 16 ++++++++++++++-- + 4 files changed, 43 insertions(+), 5 deletions(-) + +diff --git a/Lib/octave/octcontainer.swg b/Lib/octave/octcontainer.swg +index 9b6520739a..269ff75442 100644 +--- a/Lib/octave/octcontainer.swg ++++ b/Lib/octave/octcontainer.swg +@@ -567,7 +567,11 @@ namespace swig { + if (seq) *seq = p; + return SWIG_OLDOBJ; + } ++%#if SWIG_OCTAVE_PREREQ(4,4,0) ++ } else if (obj.iscell()) { ++%#else + } else if (obj.is_cell()) { ++%#endif + try { + OctSequence_Cont octseq(obj); + if (seq) { +diff --git a/Lib/octave/octprimtypes.swg b/Lib/octave/octprimtypes.swg +index 663d1fe103..308fe64996 100644 +--- a/Lib/octave/octprimtypes.swg ++++ b/Lib/octave/octprimtypes.swg +@@ -214,7 +214,13 @@ SWIG_AsVal_dec(bool)(const octave_value& ov, bool *val) + SWIGINTERN int + SWIG_AsCharPtrAndSize(octave_value ov, char** cptr, size_t* psize, int *alloc) + { +- if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1) ++ if ( ++%#if SWIG_OCTAVE_PREREQ(4,4,0) ++ ov.iscell() ++%#else ++ ov.is_cell() ++%#endif ++ && ov.rows() == 1 && ov.columns() == 1) + ov = ov.cell_value()(0); + if (!ov.is_string()) + return SWIG_TypeError; +diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg +index 57a888fb40..d6f75a7b5e 100644 +--- a/Lib/octave/octrun.swg ++++ b/Lib/octave/octrun.swg +@@ -383,7 +383,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + return dim_vector(1,1); + + // Return value should be cell or matrix of integers ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ if (out.iscell()) { ++#else + if (out.is_cell()) { ++#endif + const Cell & c=out.cell_value(); + int ndim = c.rows(); + if (ndim==1 && c.columns()!=1) ndim = c.columns(); +@@ -1238,7 +1242,13 @@ namespace Swig { + } + + SWIGRUNTIME octave_swig_type *swig_value_deref(octave_value ov) { +- if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1) ++ if ( ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ ov.iscell() ++#else ++ ov.is_cell() ++#endif ++ && ov.rows() == 1 && ov.columns() == 1) + ov = ov.cell_value()(0); + return swig_value_deref(*ov.internal_rep()); + } +@@ -1357,7 +1367,13 @@ SWIGRUNTIME octave_value SWIG_Octave_NewPointerObj(void *ptr, swig_type_info *ty + } + + SWIGRUNTIME int SWIG_Octave_ConvertPtrAndOwn(octave_value ov, void **ptr, swig_type_info *type, int flags, int *own) { +- if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1) ++ if ( ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ ov.iscell() ++#else ++ ov.is_cell() ++#endif ++ && ov.rows() == 1 && ov.columns() == 1) + ov = ov.cell_value()(0); + if (!ov.is_defined() || + (ov.is_matrix_type() && ov.rows() == 0 && ov.columns() == 0) ) { +diff --git a/Lib/octave/std_pair.i b/Lib/octave/std_pair.i +index 2f3d4dfa40..2f307380e7 100644 +--- a/Lib/octave/std_pair.i ++++ b/Lib/octave/std_pair.i +@@ -38,7 +38,13 @@ + } + + static int asval(const octave_value& obj, std::pair *val) { +- if (obj.is_cell()) { ++ if ( ++%#if SWIG_OCTAVE_PREREQ(4,4,0) ++ obj.iscell() ++%#else ++ obj.is_cell() ++%#endif ++ ) { + Cell c=obj.cell_value(); + if (c.numel()<2) { + error("pair from Cell array requires at least two elements"); +@@ -96,7 +102,13 @@ + } + + static int asptr(const octave_value& obj, std::pair **val) { +- if (obj.is_cell()) { ++ if ( ++%#if SWIG_OCTAVE_PREREQ(4,4,0) ++ obj.iscell() ++%#else ++ obj.is_cell() ++%#endif ++ ) { + Cell c=obj.cell_value(); + if (c.numel()<2) { + error("pair from Cell array requires at least two elements"); + +From 6f0561eb5772a04162ac631951999698a466253b Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Thu, 10 May 2018 20:33:21 +1000 +Subject: [PATCH 04/18] Lib/octave: replace is_numeric_type() with isnumeric() + for Octave >= 4.4 + +--- + Lib/octave/octrun.swg | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg +index d6f75a7b5e..f5d8b38988 100644 +--- a/Lib/octave/octrun.swg ++++ b/Lib/octave/octrun.swg +@@ -405,7 +405,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + if (error_state) return dim_vector(1,1); + } + return d; ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ } else if (out.is_matrix_type() || out.isnumeric() ) { ++#else + } else if (out.is_matrix_type() || out.is_numeric_type() ) { ++#endif + if (out.rows()==1 || out.columns()==1) { + Array a = out.int_vector_value(); + if (error_state) return dim_vector(1,1); + +From 04357dca210a3e90e464e00c9ed1b71e38807723 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Sat, 12 May 2018 03:52:59 +1000 +Subject: [PATCH 05/18] Lib/octave: replace is_bool_type() with islogical() for + Octave >= 4.4 + +--- + Lib/octave/octprimtypes.swg | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Lib/octave/octprimtypes.swg b/Lib/octave/octprimtypes.swg +index 308fe64996..1c9aa9089c 100644 +--- a/Lib/octave/octprimtypes.swg ++++ b/Lib/octave/octprimtypes.swg +@@ -18,7 +18,11 @@ SWIGINTERNINLINE octave_value + SWIGINTERN int + SWIG_AsVal_dec(bool)(const octave_value& ov, bool *val) + { ++%#if SWIG_OCTAVE_PREREQ(4,4,0) ++ if (!ov.islogical()) ++%#else + if (!ov.is_bool_type()) ++%#endif + return SWIG_ERROR; + if (val) + *val = ov.bool_value(); + +From 931656bcbe7c2bf37bb5d831b47fab9a38695e91 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Thu, 10 May 2018 21:52:28 +1000 +Subject: [PATCH 06/18] Lib/octave: 'octave_exit' not longer exists in Octave + >= 4.4 + +- Instead must register atexit() function, since Octave still + cannot clean up its memory usage on exit with SWIG modules +--- + Lib/octave/octruntime.swg | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg +index e468eb49e0..b2fde69c2f 100644 +--- a/Lib/octave/octruntime.swg ++++ b/Lib/octave/octruntime.swg +@@ -320,6 +320,8 @@ static const char *const SWIG_name_usage = "-*- texinfo -*- \n\ + Loads the SWIG-generated module `" SWIG_name_d "'.\n\ + @end deftypefn"; + ++void __swig_atexit__(void) { ::_Exit(0); } ++ + DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { + + static octave_swig_type* module_ns = 0; +@@ -330,7 +332,9 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { + // version 3.4.*, but reappeared in 4.2.*, so turn on for all versions after 3.2.*. + // can be turned off with macro definition. + #ifndef SWIG_OCTAVE_NO_SEGFAULT_HACK +-#if SWIG_OCTAVE_PREREQ(3,2,0) ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ atexit(__swig_atexit__); ++#elif SWIG_OCTAVE_PREREQ(3,2,0) + octave_exit = ::_Exit; + #endif + #endif + +From df92ad6ebcb0995f04194b38ee19e0b7f08c730a Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Thu, 10 May 2018 22:03:41 +1000 +Subject: [PATCH 07/18] Lib/octave: fix call to octave::call_stack::current() + for Octave >= 4.4 + +--- + Lib/octave/octruntime.swg | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg +index b2fde69c2f..d83a27f579 100644 +--- a/Lib/octave/octruntime.swg ++++ b/Lib/octave/octruntime.swg +@@ -375,7 +375,12 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { + SWIG_InitializeModule(0); + SWIG_PropagateClientData(); + ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ octave::call_stack& stack = octave::interpreter::the_interpreter()->get_call_stack(); ++ octave_function *me = stack.current(); ++#else + octave_function *me = octave_call_stack::current(); ++#endif + + if (!SWIG_Octave_InstallFunction(me, "subclass")) { + return octave_value_list(); + +From ce67bce72e8b82c47295c320dd990d30d4c4bbde Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Thu, 10 May 2018 22:04:30 +1000 +Subject: [PATCH 08/18] Lib/octave: fix call to mlock() for Octave >= 4.4 + +--- + Lib/octave/octruntime.swg | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg +index d83a27f579..46faade9c1 100644 +--- a/Lib/octave/octruntime.swg ++++ b/Lib/octave/octruntime.swg +@@ -447,10 +447,12 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { + } + } + +-#if !SWIG_OCTAVE_PREREQ(3,2,0) +- mlock(me->name()); +-#else ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ octave::interpreter::the_interpreter()->mlock(); ++#elif SWIG_OCTAVE_PREREQ(3,2,0) + mlock(); ++#else ++ mlock(me->name()); + #endif + + } + +From 84aab22f669e90609c417c39cf4d81809fa1c5b6 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Fri, 11 May 2018 15:31:26 +1000 +Subject: [PATCH 09/18] Lib/Octave: in Octave >= 4.4, assign reference to base + class in subclass + +- See Examples/octave/callback/runme.m: a.run() calls Octave callback, + but due to changes in behaviour to subsref() a.Callback.run() can no + longer be used to call C callback unless a.Callback actually exists; + subsrefs() just gets the "Callback" call whereas prior to Octave 4.4 + it would get both the "Callback" and "run" calls. So now a.Callback is + set to the original base class (with own=0) so that it can be accessed +--- + Lib/octave/octrun.swg | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg +index f5d8b38988..6e297d3885 100644 +--- a/Lib/octave/octrun.swg ++++ b/Lib/octave/octrun.swg +@@ -484,8 +484,12 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + } + types.insert(types.end(), rhs.types.begin(), rhs.types.end()); + members.insert(rhs.members.begin(), rhs.members.end()); ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ assign(rhs.swig_type_name(), rhs.as_value()); ++#else + rhs.types.clear(); + rhs.members.clear(); ++#endif + } + + typedef member_map::const_iterator swig_member_const_iterator; + +From 94e8853e610cf545ba42bfa77d8ac1d659adb7a5 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Sat, 12 May 2018 02:26:01 +1000 +Subject: [PATCH 10/18] Lib/octave: fix operator installation for Octave >= 4.4 + +--- + Lib/octave/octrun.swg | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg +index 6e297d3885..ae014f9bd6 100644 +--- a/Lib/octave/octrun.swg ++++ b/Lib/octave/octrun.swg +@@ -1279,12 +1279,24 @@ SWIGRUNTIME octave_value swig_unary_op_##name(const octave_base_value &x) { \ + SWIGRUNTIME octave_value swig_binary_op_##name(const octave_base_value&lhs,const octave_base_value &rhs) { \ + return octave_swig_type::dispatch_binary_op(lhs,rhs,#name); \ + } ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++#define swigreg_unary_op(name) \ ++if (!octave_value_typeinfo::lookup_unary_op(octave_value::op_##name,tid)) \ ++typeinfo.register_unary_op(octave_value::op_##name,tid,swig_unary_op_##name); ++#else + #define swigreg_unary_op(name) \ + if (!octave_value_typeinfo::lookup_unary_op(octave_value::op_##name,tid)) \ + octave_value_typeinfo::register_unary_op(octave_value::op_##name,tid,swig_unary_op_##name); ++#endif ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++#define swigreg_binary_op(name) \ ++if (!octave_value_typeinfo::lookup_binary_op(octave_value::op_##name,tid1,tid2)) \ ++typeinfo.register_binary_op(octave_value::op_##name,tid1,tid2,swig_binary_op_##name); ++#else + #define swigreg_binary_op(name) \ + if (!octave_value_typeinfo::lookup_binary_op(octave_value::op_##name,tid1,tid2)) \ + octave_value_typeinfo::register_binary_op(octave_value::op_##name,tid1,tid2,swig_binary_op_##name); ++#endif + + swig_unary_op(not); + swig_unary_op(uplus); +@@ -1318,6 +1330,9 @@ octave_value_typeinfo::register_binary_op(octave_value::op_##name,tid1,tid2,swig + swig_binary_op(el_or); + + SWIGRUNTIME void SWIG_InstallUnaryOps(int tid) { ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ octave::type_info& typeinfo = octave::interpreter::the_interpreter()->get_type_info(); ++#endif + swigreg_unary_op(not); + swigreg_unary_op(uplus); + swigreg_unary_op(uminus); +@@ -1327,6 +1342,9 @@ octave_value_typeinfo::register_binary_op(octave_value::op_##name,tid1,tid2,swig + swigreg_unary_op(decr); + } + SWIGRUNTIME void SWIG_InstallBinaryOps(int tid1, int tid2) { ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ octave::type_info& typeinfo = octave::interpreter::the_interpreter()->get_type_info(); ++#endif + swigreg_binary_op(add); + swigreg_binary_op(sub); + swigreg_binary_op(mul); + +From d0b1105f3018516e4a94dd57e6bae83167bf2f1c Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Sat, 12 May 2018 02:29:07 +1000 +Subject: [PATCH 11/18] Lib/octave: use new class for function member + dereference with Octave >= 4.4 + +--- + Lib/octave/octrun.swg | 80 +++++++++++++++++++++++++++++++++++++-- + Lib/octave/octruntime.swg | 30 +++++++++++++++ + 2 files changed, 106 insertions(+), 4 deletions(-) + +diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg +index ae014f9bd6..45105e207d 100644 +--- a/Lib/octave/octrun.swg ++++ b/Lib/octave/octrun.swg +@@ -151,6 +151,67 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + const swig_type_info **base; + }; + ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ // in Octave 4.4 behaviour of octave_builtin() appears to have changed and 'self' argument is no longer passed ++ // to function (maybe because this is now a 'method'??) so need to create our own octave_function subclass ++#define SWIG_OCTAVE_BOUND_FUNC(func, args) octave_value(new octave_swig_bound_func(func, args)) ++ class octave_swig_bound_func : public octave_function { ++ public: ++ ++ octave_swig_bound_func(void) : octave_function(), method(0), first_args() ++ { } ++ ++ octave_swig_bound_func(octave_function* _method, octave_value_list _first_args) ++ : octave_function("", ""), method(_method), first_args(_first_args) ++ { } ++ ++ octave_swig_bound_func(const octave_swig_bound_func& f) = delete; ++ ++ octave_swig_bound_func& operator= (const octave_swig_bound_func& f) = delete; ++ ++ ~octave_swig_bound_func(void) = default; ++ ++ bool is_function(void) const { return true; } ++ ++ octave_function* function_value(bool = false) { return this; } ++ ++ octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { ++ octave_value_list all_args; ++ all_args.append(first_args); ++ all_args.append(args); ++ return method->call(tw, nargout, all_args); ++ } ++ ++ octave_value subsref(const std::string &ops, const std::list < octave_value_list > &idx) { ++ octave_value_list ovl = subsref(ops, idx, 1); ++ return ovl.length() ? ovl(0) : octave_value(); ++ } ++ ++ octave_value_list subsref(const std::string &ops, const std::list < octave_value_list > &idx, int nargout) { ++ assert(ops.size() > 0); ++ assert(ops.size() == idx.size()); ++ if (ops != "(") ++ error("invalid function call"); ++ octave::tree_evaluator& tw = octave::interpreter::the_interpreter()->get_evaluator(); ++ return call(tw, nargout, *idx.begin()); ++ } ++ ++ protected: ++ ++ octave_function* method; ++ octave_value_list first_args; ++ ++ std::set dispatch_classes; ++ ++ private: ++ ++ DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA ++ }; ++ DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_swig_bound_func, "octave_swig_bound_func", "octave_swig_bound_func"); ++#else ++#define SWIG_OCTAVE_BOUND_FUNC(func, args) octave_value(func) ++#endif ++ + // octave_swig_type plays the role of both the shadow class and the class + // representation within Octave, since there is no support for classes. + // +@@ -323,13 +384,17 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + } + + octave_value_list member_deref(member_value_pair *m, const octave_value_list &args) { +- if (m->second.is_defined()) +- return m->second; +- else if (m->first) { ++ if (m->second.is_defined()) { ++ if (m->second.is_function() || m->second.is_function_handle()) { ++ return SWIG_OCTAVE_BOUND_FUNC(m->second.function_value(), args); ++ } else { ++ return m->second; ++ } ++ } else if (m->first) { + if (m->first->get_method) + return m->first->get_method(args, 1); + else if (m->first->method) +- return octave_value(new octave_builtin(m->first->method)); ++ return SWIG_OCTAVE_BOUND_FUNC(new octave_builtin(m->first->method), args); + } + error("undefined member"); + return octave_value_list(); +@@ -860,7 +925,14 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + octave_function *fcn = is_valid_function(symbol, std::string(), false); + if (!fcn) + return false; ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ octave::tree_evaluator& tw = octave::interpreter::the_interpreter()->get_evaluator(); ++ octave_value_list retval = fcn->call(tw, 1, args); ++ if (retval.length() == 1) ++ ret = retval(0); ++#else + ret = fcn->do_multi_index_op(1, args)(0); ++#endif + return true; + } + +diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg +index 46faade9c1..f98bf4fe4e 100644 +--- a/Lib/octave/octruntime.swg ++++ b/Lib/octave/octruntime.swg +@@ -370,8 +370,38 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { + #endif + #endif + ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ { ++ octave::type_info& typeinfo = octave::interpreter::the_interpreter()->get_type_info(); ++ string_vector types = typeinfo.installed_type_names(); ++ bool register_octave_swig_ref = true; ++ bool register_octave_swig_packed = true; ++ bool register_octave_swig_bound_func = true; ++ for (int i = 0; i < types.numel(); ++i) { ++ if (types(i) == octave_swig_ref::static_type_name()) { ++ register_octave_swig_ref = false; ++ } ++ if (types(i) == octave_swig_packed::static_type_name()) { ++ register_octave_swig_packed = false; ++ } ++ if (types(i) == octave_swig_bound_func::static_type_name()) { ++ register_octave_swig_bound_func = false; ++ } ++ } ++ if (register_octave_swig_ref) { ++ octave_swig_ref::register_type(); ++ } ++ if (register_octave_swig_packed) { ++ octave_swig_packed::register_type(); ++ } ++ if (register_octave_swig_bound_func) { ++ octave_swig_bound_func::register_type(); ++ } ++ } ++#else + octave_swig_ref::register_type(); + octave_swig_packed::register_type(); ++#endif + SWIG_InitializeModule(0); + SWIG_PropagateClientData(); + + +From 6586616e23e499189b2acaf9e8244d9574cbf5b0 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Sat, 12 May 2018 02:36:13 +1000 +Subject: [PATCH 12/18] Lib/octave: fix getting/setting global variables for + Octave >= 4.4 + +--- + Lib/octave/octrun.swg | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg +index 45105e207d..feed973cc8 100644 +--- a/Lib/octave/octrun.swg ++++ b/Lib/octave/octrun.swg +@@ -1504,14 +1504,30 @@ SWIGRUNTIMEINLINE void SWIG_Octave_SetConstant(octave_swig_type *module_ns, cons + } + + SWIGRUNTIMEINLINE octave_value SWIG_Octave_GetGlobalValue(std::string name) { ++#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 + } + + SWIGRUNTIME void SWIG_Octave_SetGlobalValue(std::string name, const octave_value& value) { ++#if SWIG_OCTAVE_PREREQ(4,4,0) ++ octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); ++ symtab.global_assign(name, value); ++#else + set_global_value(name, value); ++#endif + } + + 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(); ++ symscope.assign(name, symtab.global_varval(name)); ++ symscope.mark_global(name); ++#else + #if !SWIG_OCTAVE_PREREQ(3,2,0) + link_to_global_variable(curr_sym_tab->lookup(name, true)); + #else +@@ -1520,6 +1536,7 @@ SWIGRUNTIME void SWIG_Octave_LinkGlobalValue(std::string name) { + #endif + symbol_table::mark_global(name); + #endif ++#endif + } + + SWIGRUNTIME swig_module_info *SWIG_Octave_GetModule(void *clientdata) { + +From a169eef3c0ee5436a09ce7bbd97ebaf189ffa35d Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Fri, 11 May 2018 22:22:42 +1000 +Subject: [PATCH 13/18] Examples/Makefile.in: unset OCTAVE_PATH when running + Octave for tests + +--- + Examples/Makefile.in | 2 +- + Examples/test-suite/octave/Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Examples/Makefile.in b/Examples/Makefile.in +index 8218f51224..58da8ec1dc 100644 +--- a/Examples/Makefile.in ++++ b/Examples/Makefile.in +@@ -463,7 +463,7 @@ octave_cpp: $(SRCDIR_SRCS) + # ----------------------------------------------------------------- + + octave_run: +- OCTAVE_HISTFILE=/dev/null $(RUNTOOL) $(OCTAVE) $(OCTAVE_SCRIPT) $(RUNPIPE) ++ env OCTAVE_PATH= OCTAVE_HISTFILE=/dev/null $(RUNTOOL) $(OCTAVE) $(OCTAVE_SCRIPT) $(RUNPIPE) + + # ----------------------------------------------------------------- + # Version display +diff --git a/Examples/test-suite/octave/Makefile.in b/Examples/test-suite/octave/Makefile.in +index f5ad0e8a52..3c8f3b165e 100644 +--- a/Examples/test-suite/octave/Makefile.in ++++ b/Examples/test-suite/octave/Makefile.in +@@ -65,7 +65,7 @@ CSRCS = octave_empty.c + # a file is found which has _runme.m appended after the testcase name. + run_testcase = \ + if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \ +- env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH OCTAVE_PATH=$(srcdir):$$OCTAVE_PATH $(RUNTOOL) $(OCTAVE) $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \ ++ env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH OCTAVE_PATH=$(srcdir) OCTAVE_HISTFILE=/dev/null $(RUNTOOL) $(OCTAVE) $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \ + fi + + # Clean: remove the generated .m file + +From af97a312d41fa72ef2f6b86c6c8e858392f79330 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Tue, 31 Jan 2017 11:48:42 +1300 +Subject: [PATCH 14/18] Examples/octave/module_load/runme.m: do not use + duplicate function names + +--- + Examples/octave/module_load/runme.m | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/Examples/octave/module_load/runme.m b/Examples/octave/module_load/runme.m +index 0e327efcdc..4069e9939d 100644 +--- a/Examples/octave/module_load/runme.m ++++ b/Examples/octave/module_load/runme.m +@@ -16,24 +16,24 @@ + + # load module in a function globally before base context + clear all; +-function testme ++function testme_1 + swigexample; + assert(cvar.ivar == ifunc); + assert(exist("swigexample","var")); + endfunction +-testme +-testme ++testme_1 ++testme_1 + swigexample; + assert(cvar.ivar == ifunc); + assert(exist("swigexample","var")); + clear all +-function testme ++function testme_2 + swigexample; + assert(cvar.ivar == ifunc); + assert(exist("swigexample","var")); + endfunction +-testme +-testme ++testme_2 ++testme_2 + swigexample; + assert(cvar.ivar == ifunc); + assert(exist("swigexample","var")); +@@ -44,24 +44,24 @@ + swigexample; + assert(cvar.ivar == ifunc); + assert(exist("swigexample","var")); +-function testme ++function testme_3 + swigexample; + assert(cvar.ivar == ifunc); + assert(exist("swigexample","var")); + endfunction +-testme +-testme ++testme_3 ++testme_3 + clear all + swigexample; + assert(cvar.ivar == ifunc); + assert(exist("swigexample","var")); +-function testme ++function testme_4 + swigexample; + assert(cvar.ivar == ifunc); + assert(exist("swigexample","var")); + endfunction +-testme +-testme ++testme_4 ++testme_4 + clear all + + # octave 3.0.5 randomly crashes on the remaining tests + +From 64ad3f0ca87dcd9d4a54692e7afdbc887b793268 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Fri, 11 May 2018 21:15:09 +1000 +Subject: [PATCH 15/18] Examples/octave/module_load/runme.m: update 'exist()' + statements for Octave >= 4.4 + +--- + Examples/octave/module_load/runme.m | 41 +++++++++++++++++++---------- + 1 file changed, 27 insertions(+), 14 deletions(-) + +diff --git a/Examples/octave/module_load/runme.m b/Examples/octave/module_load/runme.m +index 4069e9939d..beab1213b0 100644 +--- a/Examples/octave/module_load/runme.m ++++ b/Examples/octave/module_load/runme.m +@@ -5,60 +5,70 @@ + + # load module + clear all; ++assert(exist("swigexample") == 3); + swigexample; ++assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +-assert(exist("swigexample","var")); + clear all ++assert(exist("swigexample") == 3); + swigexample; ++assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +-assert(exist("swigexample","var")); + clear all + + # load module in a function globally before base context + clear all; + function testme_1 ++ assert(exist("swigexample") == 3); + swigexample; ++ assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +- assert(exist("swigexample","var")); + endfunction + testme_1 + testme_1 ++assert(exist("swigexample") == 3); + swigexample; ++assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +-assert(exist("swigexample","var")); + clear all + function testme_2 ++ assert(exist("swigexample") == 3); + swigexample; ++ assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +- assert(exist("swigexample","var")); + endfunction + testme_2 + testme_2 ++assert(exist("swigexample") == 3); + swigexample; ++assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +-assert(exist("swigexample","var")); + clear all + + # load module in a function globally after base context + clear all; ++assert(exist("swigexample") == 3); + swigexample; ++assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +-assert(exist("swigexample","var")); + function testme_3 ++ assert(exist("swigexample") == 3); + swigexample; ++ assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +- assert(exist("swigexample","var")); + endfunction + testme_3 + testme_3 + clear all ++assert(exist("swigexample") == 3); + swigexample; ++assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +-assert(exist("swigexample","var")); + function testme_4 ++ assert(exist("swigexample") == 3); + swigexample; ++ assert(isglobal("swigexample")); + assert(cvar.ivar == ifunc); +- assert(exist("swigexample","var")); + endfunction + testme_4 + testme_4 +@@ -71,13 +81,16 @@ + + # load module with no cvar + clear all; ++who; ++assert(exist("swigexample2") == 3); + swigexample2; ++assert(isglobal("swigexample2")); + assert(swigexample2.ivar == ifunc); +-assert(exist("swigexample2","var")); +-assert(!isglobal("cvar")) ++assert(!exist("cvar", "var")); + clear all ++assert(exist("swigexample2") == 3); + swigexample2; ++assert(isglobal("swigexample2")); + assert(swigexample2.ivar == ifunc); +-assert(exist("swigexample2","var")); +-assert(!isglobal("cvar")) ++assert(!exist("cvar", "var")); + clear all + +From a2ab3d7b20feec5f46100d98712dd92cf4f9bc52 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Sat, 12 May 2018 19:23:12 +1000 +Subject: [PATCH 16/18] Examples/test-suite/register_par.i: rename 'tree' to + 'swig_tree' + +- 'tree' is a declared symbol in Octave >= 4.4 headers +--- + Examples/test-suite/register_par.i | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Examples/test-suite/register_par.i b/Examples/test-suite/register_par.i +index b4172c0599..6438414559 100644 +--- a/Examples/test-suite/register_par.i ++++ b/Examples/test-suite/register_par.i +@@ -1,6 +5,10 @@ + %module register_par + ++%{ ++struct swig_tree; ++%} ++ + // bug # 924413 + %inline { +- void clear_tree_flags(register struct tree *tp, register int i) {} ++ void clear_tree_flags(register struct swig_tree *tp, register int i) {} + } + +From ebd0b52b3ec201bbd70391c106e541c859ceaaf9 Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Sat, 12 May 2018 02:57:27 +1000 +Subject: [PATCH 17/18] .travis.yml: test against Octave 4.4 + +--- + .travis.yml | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/.travis.yml b/.travis.yml +index 54ec4c3f94..d0e1239cea 100644 +--- a/.travis.yml ++++ b/.travis.yml +@@ -94,6 +94,11 @@ matrix: + env: SWIGLANG=octave SWIGJOBS=-j2 VER=4.2 CPP11=1 + sudo: required + dist: trusty ++ - compiler: gcc ++ os: linux ++ env: SWIGLANG=octave SWIGJOBS=-j2 VER=4.4 CPP11=1 ++ sudo: required ++ dist: trusty + - compiler: gcc + os: linux + env: SWIGLANG=perl5 + +From 23e6f1329255a128bb702be0de77f17c47149ddf Mon Sep 17 00:00:00 2001 +From: Karl Wette +Date: Sat, 12 May 2018 22:31:31 +1000 +Subject: [PATCH 18/18] Update CHANGES.current + +--- + CHANGES.current | 4 ++++ + 1 file changed, 4 insertions(+) + +#diff --git a/CHANGES.current b/CHANGES.current +#index 0acfddc7da..3037b59281 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.0.0 (in progress) +# =========================== +# +#+2018-05-12: kwwette +#+ [Octave] add support for version 4.4 +#+ - Should not introduce any user-visible incompatibilities +#+ +# 2018-05-11: wsfulton +# [C#, D, Java] Add support so that the %csmethodmodifiers, %dmethodmodifiers, +# %javamethodmodifiers can modify the method modifiers for the destructor wrappers diff --git a/swig.spec b/swig.spec index e4842bb..920d1b7 100644 --- a/swig.spec +++ b/swig.spec @@ -34,7 +34,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 21%{?dist} +Release: 22%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -61,12 +61,13 @@ Patch7: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch Patch8: swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch Patch9: swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch Patch10: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch +Patch11: swig-3.0.12-Support-Octave-4.4.patch BuildRequires: perl-interpreter, pcre-devel %if %{python2lang} BuildRequires: python2-devel %endif -BuildRequires: python3-devel +BuildRequires: python%{python3_pkgversion}-devel BuildRequires: autoconf, automake, gawk, dos2unix BuildRequires: gcc-c++ BuildRequires: help2man @@ -169,6 +170,7 @@ in gdb. %patch8 -p1 %patch9 -p1 %patch10 -p1 +%patch11 -p1 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -332,6 +334,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Nov 15 2018 Jitka Plesnikova - 3.0.12-22 +- Add support for Octave 4.4 + * Sat Jul 14 2018 Fedora Release Engineering - 3.0.12-21 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild From 5a0337f3d0f0474902292f89bd5e37cb5f2915b5 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 25 Jan 2019 08:26:34 +0000 Subject: [PATCH 020/103] Rebuilt for Boost 1.69 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index 920d1b7..342f34a 100644 --- a/swig.spec +++ b/swig.spec @@ -34,7 +34,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 22%{?dist} +Release: 23%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -334,6 +334,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Jan 25 2019 Jonathan Wakely - 3.0.12-23 +- Rebuilt for Boost 1.69 + * Thu Nov 15 2018 Jitka Plesnikova - 3.0.12-22 - Add support for Octave 4.4 From baabb1483997c03652b477e7e9e7328654865a62 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Mon, 28 Jan 2019 20:18:27 +0100 Subject: [PATCH 021/103] Remove obsolete Group tag References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag --- swig.spec | 2 -- 1 file changed, 2 deletions(-) diff --git a/swig.spec b/swig.spec index 342f34a..aeafd3f 100644 --- a/swig.spec +++ b/swig.spec @@ -128,7 +128,6 @@ tool for building user interfaces %package -n ccache-swig Summary: Fast compiler cache License: GPLv2+ -Group: Development/Tools Requires: swig Conflicts: swig < 3.0.8-2 @@ -141,7 +140,6 @@ being done again. ccache-swig is ccache plus support for SWIG. %package doc Summary: Documentation files for SWIG License: BSD -Group: Development/Tools BuildArch: noarch %description doc From e084217e712a5686f44be636132db6a400f761b6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 3 Feb 2019 09:07:04 +0000 Subject: [PATCH 022/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_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 aeafd3f..99733c5 100644 --- a/swig.spec +++ b/swig.spec @@ -34,7 +34,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 23%{?dist} +Release: 24%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -332,6 +332,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sun Feb 03 2019 Fedora Release Engineering - 3.0.12-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + * Fri Jan 25 2019 Jonathan Wakely - 3.0.12-23 - Rebuilt for Boost 1.69 From b74d8bc1be069c1aa7f31d5e9150aff7761be003 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Sat, 27 Apr 2019 08:50:12 -0600 Subject: [PATCH 023/103] Add patches for octave 5.1 support --- swig-octave-ldflags.patch | 16 ++++++++++++++++ swig-octave5.1.patch | 28 ++++++++++++++++++++++++++++ swig.spec | 11 ++++++++++- 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 swig-octave-ldflags.patch create mode 100644 swig-octave5.1.patch diff --git a/swig-octave-ldflags.patch b/swig-octave-ldflags.patch new file mode 100644 index 0000000..531258f --- /dev/null +++ b/swig-octave-ldflags.patch @@ -0,0 +1,16 @@ +diff --git a/configure.ac b/configure.ac +index 1873797..754238f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1114,7 +1114,10 @@ if test -n "$OCTAVE"; then + + AC_MSG_CHECKING([for Octave linker flags]) + OCTAVE_LDFLAGS= +- for var in RDYNAMIC_FLAG LFLAGS RLD_FLAG OCTAVE_LIBS LIBS; do ++ for var in OCTLIBDIR; do ++ OCTAVE_LDFLAGS="${OCTAVE_LDFLAGS} "-L`env - ${mkoctfile} -p ${var}` ++ done ++ for var in RDYNAMIC_FLAG RLD_FLAG OCTAVE_LIBS LIBS; do + OCTAVE_LDFLAGS="${OCTAVE_LDFLAGS} "`env - ${mkoctfile} -p ${var}` + done + AC_MSG_RESULT([$OCTAVE_LDFLAGS]) diff --git a/swig-octave5.1.patch b/swig-octave5.1.patch new file mode 100644 index 0000000..df67179 --- /dev/null +++ b/swig-octave5.1.patch @@ -0,0 +1,28 @@ +commit c38b7de6a120e6392abff50afd9bb919cc858cfc +Author: Orion Poplawski +Date: Sun Mar 10 11:47:27 2019 -0600 + + Fix format-security error with octave 5.1 + +diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg +index 3012331..ff614e6 100644 +--- a/Lib/octave/octrun.swg ++++ b/Lib/octave/octrun.swg +@@ -51,7 +51,7 @@ SWIGRUNTIME octave_value SWIG_Error(int code, const char *msg) { + octave_value type(SWIG_ErrorType(code)); + std::string r = msg; + r += " (" + type.string_value() + ")"; +- error(r.c_str()); ++ error("%s", r.c_str()); + return octave_value(r); + } + +@@ -840,7 +840,7 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + const std::string opname = std::string("__") + octave_base_value::get_umap_name(umap) + std::string("__"); + octave_value ret; + if (!dispatch_unary_op(opname, ret)) { +- error((opname + std::string(" method not found")).c_str()); ++ error("%s", (opname + std::string(" method not found")).c_str()); + return octave_value(); + } + return ret; diff --git a/swig.spec b/swig.spec index 99733c5..a3f1d69 100644 --- a/swig.spec +++ b/swig.spec @@ -34,7 +34,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.12 -Release: 24%{?dist} +Release: 25%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -62,6 +62,10 @@ Patch8: swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch Patch9: swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch Patch10: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch Patch11: swig-3.0.12-Support-Octave-4.4.patch +# https://github.com/swig/swig/pull/1497 +Patch12: swig-octave5.1.patch +# https://github.com/swig/swig/pull/1522 +Patch13: swig-octave-ldflags.patch BuildRequires: perl-interpreter, pcre-devel %if %{python2lang} @@ -169,6 +173,8 @@ in gdb. %patch9 -p1 %patch10 -p1 %patch11 -p1 +%patch12 -p1 +%patch13 -p1 -b .octave-ldflags for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -332,6 +338,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Apr 27 2019 Orion Poplawski - 3.0.12-25 +- Add patches for octave 5.1 support + * Sun Feb 03 2019 Fedora Release Engineering - 3.0.12-24 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild From df96fc9c404602b8800f8e6e10e4d09239b66f96 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Fri, 3 May 2019 14:52:42 +0200 Subject: [PATCH 024/103] Update to 4.0.0 --- .gitignore | 1 + sources | 2 +- swig-3.0.12-Correct-php-testcase.patch | 26 - ...ue-reported-for-SWIG_Python_ConvertF.patch | 58 -- ...ue-reported-for-SWIG_Python_FixMetho.patch | 36 - ...ue-reported-for-wrapper-argument-che.patch | 41 - ...ue-reported-for-setslice-pycontainer.patch | 40 - ...de-for-constant-expressions-containi.patch | 191 ---- ...ion-matching-in-configure-for-go1.10.patch | 51 - ...x-testsuite-to-work-without-.-in-INC.patch | 61 -- ...on-wrapping-some-non-trivial-constan.patch | 185 ---- swig-3.0.12-Support-Octave-4.4.patch | 974 ------------------ swig-node-v7.patch | 541 ---------- swig.spec | 69 +- 14 files changed, 38 insertions(+), 2238 deletions(-) delete mode 100644 swig-3.0.12-Correct-php-testcase.patch delete mode 100644 swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch delete mode 100644 swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch delete mode 100644 swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch delete mode 100644 swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch delete mode 100644 swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch delete mode 100644 swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch delete mode 100644 swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch delete mode 100644 swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch delete mode 100644 swig-3.0.12-Support-Octave-4.4.patch delete mode 100644 swig-node-v7.patch diff --git a/.gitignore b/.gitignore index 2687fbf..5bed377 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ swig-2.0.0.tar.gz /swig-3.0.10.tar.gz /swig-3.0.11.tar.gz /swig-3.0.12.tar.gz +/swig-4.0.0.tar.gz diff --git a/sources b/sources index 11d5c8a..b2e84a2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-3.0.12.tar.gz) = 5eaa2e06d8e4197fd02194051db1e518325dbb074a4c55a91099ad9c55193874f577764afc9029409a41bd520a95154095f26e33ef5add5c102bb2c1d98d33eb +SHA512 (swig-4.0.0.tar.gz) = c897b87fb8b21caf8d1bee2c39cb9675a3b0ee047110e808c310a2787f8b89585738726e9f517c64e9d2f1b8311136365c569528f399b444b1081f69689b7165 diff --git a/swig-3.0.12-Correct-php-testcase.patch b/swig-3.0.12-Correct-php-testcase.patch deleted file mode 100644 index b90f5f9..0000000 --- a/swig-3.0.12-Correct-php-testcase.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 0a9113dcba2930b658cb67f9ba1c63ad8eebd88f Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Tue, 19 Sep 2017 07:37:29 +0100 -Subject: [PATCH] Correct php testcase - ---- - Examples/test-suite/php/preproc_constants_runme.php | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Examples/test-suite/php/preproc_constants_runme.php b/Examples/test-suite/php/preproc_constants_runme.php -index ef32867..bd216c2 100644 ---- a/Examples/test-suite/php/preproc_constants_runme.php -+++ b/Examples/test-suite/php/preproc_constants_runme.php -@@ -61,8 +61,8 @@ check::equal(gettype(preproc_constants::EXPR_OR), "integer", "preproc_constants. - check::equal(gettype(preproc_constants::EXPR_LAND), "boolean", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_LOR), "boolean", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_MIXED1), "double", "preproc_constants.EXPR_MIXED1 has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); --check::equal(gettype(preproc_constants::EXPR_MIXED1), "integer", "preproc_constants.EXPR_MIXED1 has unexpected type"); - - ?> --- -2.9.5 - diff --git a/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch b/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch deleted file mode 100644 index 9fff13b..0000000 --- a/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 21f532975f59f0c156c76cc739f5a93f57d8f6cb Mon Sep 17 00:00:00 2001 -From: Mark Dufour -Date: Tue, 14 Feb 2017 10:48:30 +0100 -Subject: [PATCH] [Coverity] fix issue reported for - SWIG_Python_ConvertFunctionPtr - -Fix Coverity issue reported for SWIG_Python_ConvertFunctionPtr: - -"Execution cannot reach this statement: *ptr = vptr;" - -Because if 'ty' is null, then desc becomes null and we return with -SWIG_ERROR. So 'ty' cannot be null at 'if (ty)'. ---- - Lib/python/pyrun.swg | 21 +++++++++------------ - 1 file changed, 9 insertions(+), 12 deletions(-) - -diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg -index ab1237f62..939a69204 100644 ---- a/Lib/python/pyrun.swg -+++ b/Lib/python/pyrun.swg -@@ -1287,25 +1287,22 @@ SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { - return SWIG_ConvertPtr(obj, ptr, ty, 0); - } else { - void *vptr = 0; -- -+ swig_cast_info *tc; -+ - /* here we get the method pointer for callbacks */ - const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); - const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; - if (desc) - desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; -- if (!desc) -+ if (!desc) - return SWIG_ERROR; -- if (ty) { -- swig_cast_info *tc = SWIG_TypeCheck(desc,ty); -- if (tc) { -- int newmemory = 0; -- *ptr = SWIG_TypeCast(tc,vptr,&newmemory); -- assert(!newmemory); /* newmemory handling not yet implemented */ -- } else { -- return SWIG_ERROR; -- } -+ tc = SWIG_TypeCheck(desc,ty); -+ if (tc) { -+ int newmemory = 0; -+ *ptr = SWIG_TypeCast(tc,vptr,&newmemory); -+ assert(!newmemory); /* newmemory handling not yet implemented */ - } else { -- *ptr = vptr; -+ return SWIG_ERROR; - } - return SWIG_OK; - } --- -2.14.3 - diff --git a/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch b/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch deleted file mode 100644 index 990bd40..0000000 --- a/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 9825fcbab5c4ddd867432f9922bebfbec7b78af0 Mon Sep 17 00:00:00 2001 -From: Mark Dufour -Date: Tue, 14 Feb 2017 10:34:37 +0100 -Subject: [PATCH] [Coverity] fix issue reported for SWIG_Python_FixMethods - -Fix Coverity issue reported for SWIG_Python_FixMethods: - -"buffer_size: Calling strncpy with a source string whose length -(10 chars) is greater than or equal to the size argument (10) -will fail to null-terminate buff." - -The issue is only reported for the "swig_ptr: " line, but for -consistency we replace both occurrences of strncpy with memcpy. ---- - Lib/python/pyinit.swg | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Lib/python/pyinit.swg b/Lib/python/pyinit.swg -index 2cc582841..fe45ac941 100644 ---- a/Lib/python/pyinit.swg -+++ b/Lib/python/pyinit.swg -@@ -306,9 +306,9 @@ SWIG_Python_FixMethods(PyMethodDef *methods, - char *ndoc = (char*)malloc(ldoc + lptr + 10); - if (ndoc) { - char *buff = ndoc; -- strncpy(buff, methods[i].ml_doc, ldoc); -+ memcpy(buff, methods[i].ml_doc, ldoc); - buff += ldoc; -- strncpy(buff, "swig_ptr: ", 10); -+ memcpy(buff, "swig_ptr: ", 10); - buff += 10; - SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); - methods[i].ml_doc = ndoc; --- -2.14.3 - diff --git a/swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch b/swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch deleted file mode 100644 index d0fe997..0000000 --- a/swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 13eeebd2fb3005abc876957c68bde6a92510aa44 Mon Sep 17 00:00:00 2001 -From: Mark Dufour -Date: Tue, 14 Feb 2017 10:53:14 +0100 -Subject: [PATCH] [Coverity] fix issue reported for wrapper argument checking - -Fix Coverity issue reported for wrapper argument checking: - -"Null-checking args suggests that it may be null, but it has already -been dereferenced on all paths leading to the check." - -So 'args' is null checked, but after dereferencing it with -PyTuple_Check(args). ---- - Source/Modules/python.cxx | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - -diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx -index a6801fc4e..5e058e773 100644 ---- a/Source/Modules/python.cxx -+++ b/Source/Modules/python.cxx -@@ -2541,9 +2541,14 @@ public: - - if (!fastunpack) { - Wrapper_add_local(f, "ii", "Py_ssize_t ii"); -- if (maxargs - (add_self ? 1 : 0) > 0) -- Append(f->code, "if (!PyTuple_Check(args)) SWIG_fail;\n"); -- Append(f->code, "argc = args ? PyObject_Length(args) : 0;\n"); -+ -+ if (maxargs - (add_self ? 1 : 0) > 0) { -+ Append(f->code, "if (!PyTuple_Check(args)) SWIG_fail;\n"); -+ Append(f->code, "argc = PyObject_Length(args);\n"); -+ } else { -+ Append(f->code, "argc = args ? PyObject_Length(args) : 0;\n"); -+ } -+ - if (add_self) - Append(f->code, "argv[0] = self;\n"); - Printf(f->code, "for (ii = 0; (ii < %d) && (ii < argc); ii++) {\n", add_self ? maxargs - 1 : maxargs); --- -2.14.3 - diff --git a/swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch b/swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch deleted file mode 100644 index 041619e..0000000 --- a/swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 5803e81d488e97623fe29b8629b977be01a8229e Mon Sep 17 00:00:00 2001 -From: Mark Dufour -Date: Mon, 6 Mar 2017 21:16:41 +0100 -Subject: [PATCH] Fix Coverity issue reported for setslice (pycontainer.swg): - -"CID 11151 (#3-1 of 3): Using invalid iterator (INVALIDATE_ITERATOR)18. -increment_iterator: Incrementing iterator it though it is already past -the end of its container." - -Coverity does not understand 'replace_count', so warns that we may go -past self->end() (or self->rend() I guess). ---- - Lib/python/pycontainer.swg | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Lib/python/pycontainer.swg b/Lib/python/pycontainer.swg -index d40b0baa8..9aefb4fc7 100644 ---- a/Lib/python/pycontainer.swg -+++ b/Lib/python/pycontainer.swg -@@ -351,7 +351,7 @@ namespace swig { - typename Sequence::const_iterator isit = is.begin(); - typename Sequence::iterator it = self->begin(); - std::advance(it,ii); -- for (size_t rc=0; rcend(); ++rc) { - *it++ = *isit++; - for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) - it++; -@@ -367,7 +367,7 @@ namespace swig { - typename Sequence::const_iterator isit = is.begin(); - typename Sequence::reverse_iterator it = self->rbegin(); - std::advance(it,size-ii-1); -- for (size_t rc=0; rcrend(); ++rc) { - *it++ = *isit++; - for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) - it++; --- -2.14.3 - diff --git a/swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch b/swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch deleted file mode 100644 index 7198c21..0000000 --- a/swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch +++ /dev/null @@ -1,191 +0,0 @@ -From 90ba174fcea1618af57aa594199541d47a89b7f6 Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Sun, 17 Sep 2017 19:02:55 +0100 -Subject: [PATCH 1/2] Fix generated code for constant expressions containing - wchar_t L literals. - -Such as: - # define __WCHAR_MAX (0x7fffffff + L'\0') - -Reported on swig-user mailing list. ---- - CHANGES.current | 5 +++++ - Examples/test-suite/csharp/preproc_constants_c_runme.cs | 3 ++- - Examples/test-suite/csharp/preproc_constants_runme.cs | 2 ++ - Examples/test-suite/d/preproc_constants_c_runme.1.d | 2 ++ - Examples/test-suite/d/preproc_constants_c_runme.2.d | 2 ++ - Examples/test-suite/d/preproc_constants_runme.1.d | 2 ++ - Examples/test-suite/d/preproc_constants_runme.2.d | 2 ++ - Examples/test-suite/php/preproc_constants_c_runme.php | 2 ++ - Examples/test-suite/php/preproc_constants_runme.php | 2 ++ - Examples/test-suite/php5/preproc_constants_c_runme.php | 2 ++ - Examples/test-suite/php5/preproc_constants_runme.php | 2 ++ - Examples/test-suite/preproc_constants.i | 3 +++ - Source/CParse/parser.y | 2 +- - 13 files changed, 29 insertions(+), 2 deletions(-) - -#diff --git a/CHANGES.current b/CHANGES.current -#index 1e4a244..b455a9f 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,11 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.0.0 (in progress) -# =========================== -# -#+2017-09-17: wsfulton -#+ Fix generated code for constant expressions containing wchar_t L literals such as: -#+ # define __WCHAR_MAX (0x7fffffff + L'\0') -#+ # define __WCHAR_MIN (-__WCHAR_MAX - 1) -#+ -# 2017-09-10: mlamarre -# [Python] Patch #1083. Define_DEBUG to 1 to do exactly like Visual Studio -# /LDd, /MDd or /MTd compiler options. -diff --git a/Examples/test-suite/csharp/preproc_constants_c_runme.cs b/Examples/test-suite/csharp/preproc_constants_c_runme.cs -index 76c684d..1c28e49 100644 ---- a/Examples/test-suite/csharp/preproc_constants_c_runme.cs -+++ b/Examples/test-suite/csharp/preproc_constants_c_runme.cs -@@ -61,7 +61,8 @@ public class runme { - assert( typeof(int) == preproc_constants_c.EXPR_LAND.GetType() ); - assert( typeof(int) == preproc_constants_c.EXPR_LOR.GetType() ); - assert( typeof(double) == preproc_constants_c.EXPR_CONDITIONAL.GetType() ); -- -+ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MAX.GetType() ); -+ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MIN.GetType() ); - } - static void assert(bool assertion) { - if (!assertion) -diff --git a/Examples/test-suite/csharp/preproc_constants_runme.cs b/Examples/test-suite/csharp/preproc_constants_runme.cs -index 9fae591..6b02e30 100644 ---- a/Examples/test-suite/csharp/preproc_constants_runme.cs -+++ b/Examples/test-suite/csharp/preproc_constants_runme.cs -@@ -60,6 +60,8 @@ public class runme { - assert( typeof(bool) == preproc_constants.EXPR_LAND.GetType() ); - assert( typeof(bool) == preproc_constants.EXPR_LOR.GetType() ); - assert( typeof(double) == preproc_constants.EXPR_CONDITIONAL.GetType() ); -+ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MAX.GetType() ); -+ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MIN.GetType() ); - - } - static void assert(bool assertion) { -diff --git a/Examples/test-suite/d/preproc_constants_c_runme.1.d b/Examples/test-suite/d/preproc_constants_c_runme.1.d -index d846c71..2b349af 100644 ---- a/Examples/test-suite/d/preproc_constants_c_runme.1.d -+++ b/Examples/test-suite/d/preproc_constants_c_runme.1.d -@@ -61,4 +61,6 @@ void main() { - static assert(is(int == typeof(EXPR_LAND()))); - static assert(is(int == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_c_runme.2.d b/Examples/test-suite/d/preproc_constants_c_runme.2.d -index 9bdbb93..1bac525 100644 ---- a/Examples/test-suite/d/preproc_constants_c_runme.2.d -+++ b/Examples/test-suite/d/preproc_constants_c_runme.2.d -@@ -61,4 +61,6 @@ void main() { - static assert(is(int == typeof(EXPR_LAND()))); - static assert(is(int == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_runme.1.d b/Examples/test-suite/d/preproc_constants_runme.1.d -index 009405f..f743f48 100644 ---- a/Examples/test-suite/d/preproc_constants_runme.1.d -+++ b/Examples/test-suite/d/preproc_constants_runme.1.d -@@ -60,4 +60,6 @@ void main() { - static assert(is(bool == typeof(EXPR_LAND()))); - static assert(is(bool == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_runme.2.d b/Examples/test-suite/d/preproc_constants_runme.2.d -index 2d92ef0..0d96c37 100644 ---- a/Examples/test-suite/d/preproc_constants_runme.2.d -+++ b/Examples/test-suite/d/preproc_constants_runme.2.d -@@ -60,4 +60,6 @@ void main() { - static assert(is(bool == typeof(EXPR_LAND()))); - static assert(is(bool == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/php/preproc_constants_c_runme.php b/Examples/test-suite/php/preproc_constants_c_runme.php -index af9b76e..e59fe18 100644 ---- a/Examples/test-suite/php/preproc_constants_c_runme.php -+++ b/Examples/test-suite/php/preproc_constants_c_runme.php -@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant - check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php/preproc_constants_runme.php b/Examples/test-suite/php/preproc_constants_runme.php -index 5c9119b..8e117ea 100644 ---- a/Examples/test-suite/php/preproc_constants_runme.php -+++ b/Examples/test-suite/php/preproc_constants_runme.php -@@ -61,5 +61,7 @@ check::equal(gettype(preproc_constants::EXPR_OR), "integer", "preproc_constants. - check::equal(gettype(preproc_constants::EXPR_LAND), "boolean", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_LOR), "boolean", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php5/preproc_constants_c_runme.php b/Examples/test-suite/php5/preproc_constants_c_runme.php -index 1ea0195..d978fab 100644 ---- a/Examples/test-suite/php5/preproc_constants_c_runme.php -+++ b/Examples/test-suite/php5/preproc_constants_c_runme.php -@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant - check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php5/preproc_constants_runme.php b/Examples/test-suite/php5/preproc_constants_runme.php -index fb9ee4f..7527026 100644 ---- a/Examples/test-suite/php5/preproc_constants_runme.php -+++ b/Examples/test-suite/php5/preproc_constants_runme.php -@@ -70,5 +70,7 @@ check::equal(gettype(preproc_constants::EXPR_LAND), "integer", "preproc_constant - check::equal(gettype(preproc_constants::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - - check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/preproc_constants.i b/Examples/test-suite/preproc_constants.i -index 3a999ad..16b44c9 100644 ---- a/Examples/test-suite/preproc_constants.i -+++ b/Examples/test-suite/preproc_constants.i -@@ -87,6 +87,9 @@ - #define EXPR_LOR 0xFF || 1 - #define EXPR_CONDITIONAL true ? 2 : 2.2 - -+#define EXPR_WCHAR_MAX (0x7fffffff + L'\0') -+#define EXPR_WCHAR_MIN (-EXPR_WCHAR_MAX - 1) -+ - #define EXPR_CHAR_COMPOUND_ADD 'A' + 12 - #define EXPR_CHAR_COMPOUND_LSHIFT 'B' << 6 - #define H_SUPPRESS_SCALING_MAGIC (('s'<<24) | ('u'<<16) | ('p'<<8) | 'p') -diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y -index 2e92cd0..273dadb 100644 ---- a/Source/CParse/parser.y -+++ b/Source/CParse/parser.y -@@ -194,7 +194,7 @@ int SWIG_cparse_template_reduce(int treduce) { - * ----------------------------------------------------------------------------- */ - - static int promote_type(int t) { -- if (t <= T_UCHAR || t == T_CHAR) return T_INT; -+ if (t <= T_UCHAR || t == T_CHAR || t == T_WCHAR) return T_INT; - return t; - } - --- -2.9.5 - diff --git a/swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch b/swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch deleted file mode 100644 index 69e22dd..0000000 --- a/swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 5f6012039abb6ec9e9dfea801effa6b02fd102bc Mon Sep 17 00:00:00 2001 -From: Vsevolod Kvachev -Date: Thu, 19 Apr 2018 23:04:37 +0300 -Subject: [PATCH] Fix go version matching in configure for go1.10 - ---- - configure.ac | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 833cb37bf..ba1631743 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2597,7 +2597,7 @@ else - GOVERSIONOPTION=version - go_version=$($GO $GOVERSIONOPTION | sed -e 's/go version //') - case "$go_version" in -- go1 | go1.[[01234]]*) -+ go1 | go1.[[01234]] | go1.[[01234]].*) - GOC=$(sh -c "$(go env) && echo \$GOCHAR")c - ;; - *) -@@ -2606,7 +2606,7 @@ else - esac - AC_MSG_CHECKING([whether go version is too old]) - case $go_version in -- go1.1* | go1.0* | go1 ) -+ go1.1.* | go1.1 | go1.0 | go1.0.* | go1 ) - AC_MSG_RESULT([yes - minimum version is 1.2]) - GO= - GOOPT="-intgosize 32" -@@ -2624,13 +2624,13 @@ else - ;; - esac - case $go_version in -- go1.0* | go1 | go1.1*) -+ go1.0 | go1.0.* | go1 | go1.1 | go1.1.*) - GOOPT="$GOOPT -use-shlib" - ;; -- go1.2*) -+ go1.2 | go1.2.*) - GO12=true - ;; -- go1.3* | go1.4*) -+ go1.3 | go1.3.* | go1.4 | go1.4.*) - GO13=true - ;; - *) --- -2.14.3 - diff --git a/swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch b/swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch deleted file mode 100644 index bcc8a79..0000000 --- a/swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 8855ef2b482c09da9255079b0fac92d08c8308fb Mon Sep 17 00:00:00 2001 -From: Olly Betts -Date: Tue, 13 Jun 2017 17:32:37 +1200 -Subject: [PATCH] [Perl] Fix testsuite to work without . in @INC - -"." was removed from @INC in Perl 5.26 for security reasons, and has -also been removed from older versions in some distros. - -Fixes https://github.com/swig/swig/issues/997 reported by lfam. ---- - CHANGES.current | 6 ++++++ - Examples/Makefile.in | 2 +- - Examples/test-suite/perl5/run-perl-test.pl | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -#diff --git a/CHANGES.current b/CHANGES.current -#index ac620c9..6b379a9 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.0.0 (in progress) -# =========================== -# -#+2017-06-13: olly -#+ [Perl] Fix testsuite to work without . in @INC - it was removed in -#+ Perl 5.26 for security reasons, and has also been removed from -#+ older versions in some distros. Fixes -#+ https://github.com/swig/swig/issues/997 reported by lfam. -#+ -# 2017-06-03: wsfulton -# Fix %import on a file containing a file scope %fragment forced inclusion to not -# generate the fragment contents as %import should not result in code being generated. -diff --git a/Examples/Makefile.in b/Examples/Makefile.in -index 7682b56..8a88fb5 100644 ---- a/Examples/Makefile.in -+++ b/Examples/Makefile.in -@@ -282,7 +282,7 @@ perl5_static_cpp: $(SRCDIR_SRCS) - # ----------------------------------------------------------------- - - perl5_run: -- $(RUNTOOL) $(PERL) $(PERL5_SCRIPT) $(RUNPIPE) -+ $(RUNTOOL) $(PERL) -I. $(PERL5_SCRIPT) $(RUNPIPE) - - # ----------------------------------------------------------------- - # Version display -diff --git a/Examples/test-suite/perl5/run-perl-test.pl b/Examples/test-suite/perl5/run-perl-test.pl -index 106bf00..5ea4e511 100644 ---- a/Examples/test-suite/perl5/run-perl-test.pl -+++ b/Examples/test-suite/perl5/run-perl-test.pl -@@ -7,7 +7,7 @@ use strict; - - my $command = shift @ARGV; - --my $output = `$^X $command 2>&1`; -+my $output = `$^X -I. $command 2>&1`; - - die "SWIG Perl test failed: \n\n$output\n" - if $?; --- -2.9.4 - diff --git a/swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch b/swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch deleted file mode 100644 index 4be4f2f..0000000 --- a/swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch +++ /dev/null @@ -1,185 +0,0 @@ -From 9e2a12416cf6ce7b926829aff353fe2d9019f135 Mon Sep 17 00:00:00 2001 -From: William S Fulton -Date: Mon, 18 Sep 2017 07:06:27 +0100 -Subject: [PATCH 2/2] Fix type promotion wrapping some non-trivial constant - expressions - -This was previously an integral type instead of a floating point type: ---- - CHANGES.current | 5 +++++ - Examples/test-suite/csharp/preproc_constants_c_runme.cs | 1 + - Examples/test-suite/csharp/preproc_constants_runme.cs | 1 + - Examples/test-suite/d/preproc_constants_c_runme.1.d | 1 + - Examples/test-suite/d/preproc_constants_c_runme.2.d | 1 + - Examples/test-suite/d/preproc_constants_runme.1.d | 1 + - Examples/test-suite/d/preproc_constants_runme.2.d | 1 + - Examples/test-suite/php/preproc_constants_c_runme.php | 1 + - Examples/test-suite/php/preproc_constants_runme.php | 1 + - Examples/test-suite/php5/preproc_constants_c_runme.php | 1 + - Examples/test-suite/php5/preproc_constants_runme.php | 1 + - Examples/test-suite/preproc_constants.i | 1 + - Source/CParse/parser.y | 1 + - 13 files changed, 17 insertions(+) - -#diff --git a/CHANGES.current b/CHANGES.current -#index b455a9f..f76e5a5 100644 -#--- a/CHANGES.current -#+++ b/CHANGES.current -#@@ -7,6 +7,11 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ -# Version 4.0.0 (in progress) -# =========================== -# -#+2017-09-18: wsfulton -#+ Fix type promotion wrapping constant expressions of the form: -#+ # define EXPR_MIXED1 (0x80 + 11.1) - 1 -#+ This was previously an integral type instead of a floating point type. -#+ -# 2017-09-17: wsfulton -# Fix generated code for constant expressions containing wchar_t L literals such as: -# # define __WCHAR_MAX (0x7fffffff + L'\0') -diff --git a/Examples/test-suite/csharp/preproc_constants_c_runme.cs b/Examples/test-suite/csharp/preproc_constants_c_runme.cs -index 1c28e49..7f40ce4 100644 ---- a/Examples/test-suite/csharp/preproc_constants_c_runme.cs -+++ b/Examples/test-suite/csharp/preproc_constants_c_runme.cs -@@ -61,6 +61,7 @@ public class runme { - assert( typeof(int) == preproc_constants_c.EXPR_LAND.GetType() ); - assert( typeof(int) == preproc_constants_c.EXPR_LOR.GetType() ); - assert( typeof(double) == preproc_constants_c.EXPR_CONDITIONAL.GetType() ); -+ assert( typeof(double) == preproc_constants_c.EXPR_MIXED1.GetType() ); - assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MAX.GetType() ); - assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MIN.GetType() ); - } -diff --git a/Examples/test-suite/csharp/preproc_constants_runme.cs b/Examples/test-suite/csharp/preproc_constants_runme.cs -index 6b02e30..0d8981f 100644 ---- a/Examples/test-suite/csharp/preproc_constants_runme.cs -+++ b/Examples/test-suite/csharp/preproc_constants_runme.cs -@@ -60,6 +60,7 @@ public class runme { - assert( typeof(bool) == preproc_constants.EXPR_LAND.GetType() ); - assert( typeof(bool) == preproc_constants.EXPR_LOR.GetType() ); - assert( typeof(double) == preproc_constants.EXPR_CONDITIONAL.GetType() ); -+ assert( typeof(double) == preproc_constants.EXPR_MIXED1.GetType() ); - assert( typeof(int) == preproc_constants.EXPR_WCHAR_MAX.GetType() ); - assert( typeof(int) == preproc_constants.EXPR_WCHAR_MIN.GetType() ); - -diff --git a/Examples/test-suite/d/preproc_constants_c_runme.1.d b/Examples/test-suite/d/preproc_constants_c_runme.1.d -index 2b349af..b79ee3b 100644 ---- a/Examples/test-suite/d/preproc_constants_c_runme.1.d -+++ b/Examples/test-suite/d/preproc_constants_c_runme.1.d -@@ -61,6 +61,7 @@ void main() { - static assert(is(int == typeof(EXPR_LAND()))); - static assert(is(int == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(double == typeof(EXPR_MIXED1()))); - static assert(is(int == typeof(EXPR_WCHAR_MAX()))); - static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_c_runme.2.d b/Examples/test-suite/d/preproc_constants_c_runme.2.d -index 1bac525..260bf8d 100644 ---- a/Examples/test-suite/d/preproc_constants_c_runme.2.d -+++ b/Examples/test-suite/d/preproc_constants_c_runme.2.d -@@ -61,6 +61,7 @@ void main() { - static assert(is(int == typeof(EXPR_LAND()))); - static assert(is(int == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(double == typeof(EXPR_MIXED1()))); - static assert(is(int == typeof(EXPR_WCHAR_MAX()))); - static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_runme.1.d b/Examples/test-suite/d/preproc_constants_runme.1.d -index f743f48..84a99c8 100644 ---- a/Examples/test-suite/d/preproc_constants_runme.1.d -+++ b/Examples/test-suite/d/preproc_constants_runme.1.d -@@ -60,6 +60,7 @@ void main() { - static assert(is(bool == typeof(EXPR_LAND()))); - static assert(is(bool == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(double == typeof(EXPR_MIXED1()))); - static assert(is(int == typeof(EXPR_WCHAR_MAX()))); - static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_runme.2.d b/Examples/test-suite/d/preproc_constants_runme.2.d -index 0d96c37..f6638f4 100644 ---- a/Examples/test-suite/d/preproc_constants_runme.2.d -+++ b/Examples/test-suite/d/preproc_constants_runme.2.d -@@ -60,6 +60,7 @@ void main() { - static assert(is(bool == typeof(EXPR_LAND()))); - static assert(is(bool == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(double == typeof(EXPR_MIXED1()))); - static assert(is(int == typeof(EXPR_WCHAR_MAX()))); - static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/php/preproc_constants_c_runme.php b/Examples/test-suite/php/preproc_constants_c_runme.php -index e59fe18..20868dc 100644 ---- a/Examples/test-suite/php/preproc_constants_c_runme.php -+++ b/Examples/test-suite/php/preproc_constants_c_runme.php -@@ -62,6 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant - check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_MIXED1), "double", "preproc_constants.EXPR_MIXED1 has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - -diff --git a/Examples/test-suite/php/preproc_constants_runme.php b/Examples/test-suite/php/preproc_constants_runme.php -index 8e117ea..ef32867 100644 ---- a/Examples/test-suite/php/preproc_constants_runme.php -+++ b/Examples/test-suite/php/preproc_constants_runme.php -@@ -63,5 +63,6 @@ check::equal(gettype(preproc_constants::EXPR_LOR), "boolean", "preproc_constants - check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_MIXED1), "integer", "preproc_constants.EXPR_MIXED1 has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php5/preproc_constants_c_runme.php b/Examples/test-suite/php5/preproc_constants_c_runme.php -index d978fab..d55d423 100644 ---- a/Examples/test-suite/php5/preproc_constants_c_runme.php -+++ b/Examples/test-suite/php5/preproc_constants_c_runme.php -@@ -62,6 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant - check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_MIXED1), "double", "preproc_constants.EXPR_MIXED1 has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - -diff --git a/Examples/test-suite/php5/preproc_constants_runme.php b/Examples/test-suite/php5/preproc_constants_runme.php -index 7527026..01137b0 100644 ---- a/Examples/test-suite/php5/preproc_constants_runme.php -+++ b/Examples/test-suite/php5/preproc_constants_runme.php -@@ -70,6 +70,7 @@ check::equal(gettype(preproc_constants::EXPR_LAND), "integer", "preproc_constant - check::equal(gettype(preproc_constants::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - - check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_MIXED1), "double", "preproc_constants.EXPR_MIXED1 has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - -diff --git a/Examples/test-suite/preproc_constants.i b/Examples/test-suite/preproc_constants.i -index 16b44c9..628cae1 100644 ---- a/Examples/test-suite/preproc_constants.i -+++ b/Examples/test-suite/preproc_constants.i -@@ -86,6 +86,7 @@ - #define EXPR_LAND 0xFF && 1 - #define EXPR_LOR 0xFF || 1 - #define EXPR_CONDITIONAL true ? 2 : 2.2 -+#define EXPR_MIXED1 (0x80 + 11.1) - 1 - - #define EXPR_WCHAR_MAX (0x7fffffff + L'\0') - #define EXPR_WCHAR_MIN (-EXPR_WCHAR_MAX - 1) -diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y -index 273dadb..3df9896 100644 ---- a/Source/CParse/parser.y -+++ b/Source/CParse/parser.y -@@ -6338,6 +6338,7 @@ valexpr : exprnum { $$ = $1; } - break; - } - } -+ $$.type = promote($2.type, $4.type); - } - | LPAREN expr pointer RPAREN expr %prec CAST { - $$ = $5; --- -2.9.5 - diff --git a/swig-3.0.12-Support-Octave-4.4.patch b/swig-3.0.12-Support-Octave-4.4.patch deleted file mode 100644 index bb66edd..0000000 --- a/swig-3.0.12-Support-Octave-4.4.patch +++ /dev/null @@ -1,974 +0,0 @@ -From e8e507bf0bae72e7f3bb798e326ec5d81b230205 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Thu, 10 May 2018 23:26:06 +1000 -Subject: [PATCH 01/18] Lib/octave: fix function name passed to - unwind_protect::begin_frame() - ---- - Lib/octave/octruntime.swg | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index f5e687123c..96f7399f93 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -170,7 +170,7 @@ SWIGINTERN bool SWIG_Octave_InstallFunction(octave_function *octloadfcn, std::st - frame.protect_var(discard_error_messages); discard_error_messages = true; - frame.protect_var(discard_warning_messages); discard_warning_messages = true; - #else -- unwind_protect::begin_frame("SWIG_Octave_LoadModule"); -+ unwind_protect::begin_frame("SWIG_Octave_InstallFunction"); - unwind_protect_int(error_state); error_state = 0; - unwind_protect_int(warning_state); warning_state = 0; - unwind_protect_bool(discard_error_messages); discard_error_messages = true; - -From a46909a414ee9a1fd3e1996066111774e852557e Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Tue, 31 Jan 2017 11:43:42 +1300 -Subject: [PATCH 02/18] Lib/octave: call octave::feval() instead of feval() for - Octave >= 4.4 - ---- - Lib/octave/octruntime.swg | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index 96f7399f93..e468eb49e0 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -139,7 +139,11 @@ SWIGINTERN bool SWIG_Octave_LoadModule(std::string name) { - #endif - #if SWIG_OCTAVE_PREREQ(4,2,0) - try { -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ octave::feval(name, octave_value_list(), 0); -+#else - feval(name, octave_value_list(), 0); -+#endif - retn = true; - } catch (octave::execution_exception&) { } - #else -@@ -181,7 +185,11 @@ SWIGINTERN bool SWIG_Octave_InstallFunction(octave_function *octloadfcn, std::st - args.append(octloadfcn->fcn_file_name()); - #if SWIG_OCTAVE_PREREQ(4,2,0) - try { -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ octave::feval("autoload", args, 0); -+#else - feval("autoload", args, 0); -+#endif - retn = true; - } catch (octave::execution_exception&) { } - #else -@@ -351,7 +359,11 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - "__swig_atexit__; " - "atexit(\"__swig_atexit__\", false); " - "atexit(\"__swig_atexit__\")"); -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ octave::feval("evalin", eval_args, 0); -+#else - feval("evalin", eval_args, 0); -+#endif - #endif - - octave_swig_ref::register_type(); - -From 358345db9eb875cb6b2bd51c5ed10efb3816d4f3 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Thu, 10 May 2018 20:32:50 +1000 -Subject: [PATCH 03/18] Lib/octave: replace is_cell() with iscell() for Octave - >= 4.4 - ---- - Lib/octave/octcontainer.swg | 4 ++++ - Lib/octave/octprimtypes.swg | 8 +++++++- - Lib/octave/octrun.swg | 20 ++++++++++++++++++-- - Lib/octave/std_pair.i | 16 ++++++++++++++-- - 4 files changed, 43 insertions(+), 5 deletions(-) - -diff --git a/Lib/octave/octcontainer.swg b/Lib/octave/octcontainer.swg -index 9b6520739a..269ff75442 100644 ---- a/Lib/octave/octcontainer.swg -+++ b/Lib/octave/octcontainer.swg -@@ -567,7 +567,11 @@ namespace swig { - if (seq) *seq = p; - return SWIG_OLDOBJ; - } -+%#if SWIG_OCTAVE_PREREQ(4,4,0) -+ } else if (obj.iscell()) { -+%#else - } else if (obj.is_cell()) { -+%#endif - try { - OctSequence_Cont octseq(obj); - if (seq) { -diff --git a/Lib/octave/octprimtypes.swg b/Lib/octave/octprimtypes.swg -index 663d1fe103..308fe64996 100644 ---- a/Lib/octave/octprimtypes.swg -+++ b/Lib/octave/octprimtypes.swg -@@ -214,7 +214,13 @@ SWIG_AsVal_dec(bool)(const octave_value& ov, bool *val) - SWIGINTERN int - SWIG_AsCharPtrAndSize(octave_value ov, char** cptr, size_t* psize, int *alloc) - { -- if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1) -+ if ( -+%#if SWIG_OCTAVE_PREREQ(4,4,0) -+ ov.iscell() -+%#else -+ ov.is_cell() -+%#endif -+ && ov.rows() == 1 && ov.columns() == 1) - ov = ov.cell_value()(0); - if (!ov.is_string()) - return SWIG_TypeError; -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index 57a888fb40..d6f75a7b5e 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -383,7 +383,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - return dim_vector(1,1); - - // Return value should be cell or matrix of integers -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ if (out.iscell()) { -+#else - if (out.is_cell()) { -+#endif - const Cell & c=out.cell_value(); - int ndim = c.rows(); - if (ndim==1 && c.columns()!=1) ndim = c.columns(); -@@ -1238,7 +1242,13 @@ namespace Swig { - } - - SWIGRUNTIME octave_swig_type *swig_value_deref(octave_value ov) { -- if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1) -+ if ( -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ ov.iscell() -+#else -+ ov.is_cell() -+#endif -+ && ov.rows() == 1 && ov.columns() == 1) - ov = ov.cell_value()(0); - return swig_value_deref(*ov.internal_rep()); - } -@@ -1357,7 +1367,13 @@ SWIGRUNTIME octave_value SWIG_Octave_NewPointerObj(void *ptr, swig_type_info *ty - } - - SWIGRUNTIME int SWIG_Octave_ConvertPtrAndOwn(octave_value ov, void **ptr, swig_type_info *type, int flags, int *own) { -- if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1) -+ if ( -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ ov.iscell() -+#else -+ ov.is_cell() -+#endif -+ && ov.rows() == 1 && ov.columns() == 1) - ov = ov.cell_value()(0); - if (!ov.is_defined() || - (ov.is_matrix_type() && ov.rows() == 0 && ov.columns() == 0) ) { -diff --git a/Lib/octave/std_pair.i b/Lib/octave/std_pair.i -index 2f3d4dfa40..2f307380e7 100644 ---- a/Lib/octave/std_pair.i -+++ b/Lib/octave/std_pair.i -@@ -38,7 +38,13 @@ - } - - static int asval(const octave_value& obj, std::pair *val) { -- if (obj.is_cell()) { -+ if ( -+%#if SWIG_OCTAVE_PREREQ(4,4,0) -+ obj.iscell() -+%#else -+ obj.is_cell() -+%#endif -+ ) { - Cell c=obj.cell_value(); - if (c.numel()<2) { - error("pair from Cell array requires at least two elements"); -@@ -96,7 +102,13 @@ - } - - static int asptr(const octave_value& obj, std::pair **val) { -- if (obj.is_cell()) { -+ if ( -+%#if SWIG_OCTAVE_PREREQ(4,4,0) -+ obj.iscell() -+%#else -+ obj.is_cell() -+%#endif -+ ) { - Cell c=obj.cell_value(); - if (c.numel()<2) { - error("pair from Cell array requires at least two elements"); - -From 6f0561eb5772a04162ac631951999698a466253b Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Thu, 10 May 2018 20:33:21 +1000 -Subject: [PATCH 04/18] Lib/octave: replace is_numeric_type() with isnumeric() - for Octave >= 4.4 - ---- - Lib/octave/octrun.swg | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index d6f75a7b5e..f5d8b38988 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -405,7 +405,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - if (error_state) return dim_vector(1,1); - } - return d; -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ } else if (out.is_matrix_type() || out.isnumeric() ) { -+#else - } else if (out.is_matrix_type() || out.is_numeric_type() ) { -+#endif - if (out.rows()==1 || out.columns()==1) { - Array a = out.int_vector_value(); - if (error_state) return dim_vector(1,1); - -From 04357dca210a3e90e464e00c9ed1b71e38807723 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Sat, 12 May 2018 03:52:59 +1000 -Subject: [PATCH 05/18] Lib/octave: replace is_bool_type() with islogical() for - Octave >= 4.4 - ---- - Lib/octave/octprimtypes.swg | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/Lib/octave/octprimtypes.swg b/Lib/octave/octprimtypes.swg -index 308fe64996..1c9aa9089c 100644 ---- a/Lib/octave/octprimtypes.swg -+++ b/Lib/octave/octprimtypes.swg -@@ -18,7 +18,11 @@ SWIGINTERNINLINE octave_value - SWIGINTERN int - SWIG_AsVal_dec(bool)(const octave_value& ov, bool *val) - { -+%#if SWIG_OCTAVE_PREREQ(4,4,0) -+ if (!ov.islogical()) -+%#else - if (!ov.is_bool_type()) -+%#endif - return SWIG_ERROR; - if (val) - *val = ov.bool_value(); - -From 931656bcbe7c2bf37bb5d831b47fab9a38695e91 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Thu, 10 May 2018 21:52:28 +1000 -Subject: [PATCH 06/18] Lib/octave: 'octave_exit' not longer exists in Octave - >= 4.4 - -- Instead must register atexit() function, since Octave still - cannot clean up its memory usage on exit with SWIG modules ---- - Lib/octave/octruntime.swg | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index e468eb49e0..b2fde69c2f 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -320,6 +320,8 @@ static const char *const SWIG_name_usage = "-*- texinfo -*- \n\ - Loads the SWIG-generated module `" SWIG_name_d "'.\n\ - @end deftypefn"; - -+void __swig_atexit__(void) { ::_Exit(0); } -+ - DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - - static octave_swig_type* module_ns = 0; -@@ -330,7 +332,9 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - // version 3.4.*, but reappeared in 4.2.*, so turn on for all versions after 3.2.*. - // can be turned off with macro definition. - #ifndef SWIG_OCTAVE_NO_SEGFAULT_HACK --#if SWIG_OCTAVE_PREREQ(3,2,0) -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ atexit(__swig_atexit__); -+#elif SWIG_OCTAVE_PREREQ(3,2,0) - octave_exit = ::_Exit; - #endif - #endif - -From df92ad6ebcb0995f04194b38ee19e0b7f08c730a Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Thu, 10 May 2018 22:03:41 +1000 -Subject: [PATCH 07/18] Lib/octave: fix call to octave::call_stack::current() - for Octave >= 4.4 - ---- - Lib/octave/octruntime.swg | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index b2fde69c2f..d83a27f579 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -375,7 +375,12 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - SWIG_InitializeModule(0); - SWIG_PropagateClientData(); - -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ octave::call_stack& stack = octave::interpreter::the_interpreter()->get_call_stack(); -+ octave_function *me = stack.current(); -+#else - octave_function *me = octave_call_stack::current(); -+#endif - - if (!SWIG_Octave_InstallFunction(me, "subclass")) { - return octave_value_list(); - -From ce67bce72e8b82c47295c320dd990d30d4c4bbde Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Thu, 10 May 2018 22:04:30 +1000 -Subject: [PATCH 08/18] Lib/octave: fix call to mlock() for Octave >= 4.4 - ---- - Lib/octave/octruntime.swg | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index d83a27f579..46faade9c1 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -447,10 +447,12 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - } - } - --#if !SWIG_OCTAVE_PREREQ(3,2,0) -- mlock(me->name()); --#else -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ octave::interpreter::the_interpreter()->mlock(); -+#elif SWIG_OCTAVE_PREREQ(3,2,0) - mlock(); -+#else -+ mlock(me->name()); - #endif - - } - -From 84aab22f669e90609c417c39cf4d81809fa1c5b6 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Fri, 11 May 2018 15:31:26 +1000 -Subject: [PATCH 09/18] Lib/Octave: in Octave >= 4.4, assign reference to base - class in subclass - -- See Examples/octave/callback/runme.m: a.run() calls Octave callback, - but due to changes in behaviour to subsref() a.Callback.run() can no - longer be used to call C callback unless a.Callback actually exists; - subsrefs() just gets the "Callback" call whereas prior to Octave 4.4 - it would get both the "Callback" and "run" calls. So now a.Callback is - set to the original base class (with own=0) so that it can be accessed ---- - Lib/octave/octrun.swg | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index f5d8b38988..6e297d3885 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -484,8 +484,12 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - } - types.insert(types.end(), rhs.types.begin(), rhs.types.end()); - members.insert(rhs.members.begin(), rhs.members.end()); -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ assign(rhs.swig_type_name(), rhs.as_value()); -+#else - rhs.types.clear(); - rhs.members.clear(); -+#endif - } - - typedef member_map::const_iterator swig_member_const_iterator; - -From 94e8853e610cf545ba42bfa77d8ac1d659adb7a5 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Sat, 12 May 2018 02:26:01 +1000 -Subject: [PATCH 10/18] Lib/octave: fix operator installation for Octave >= 4.4 - ---- - Lib/octave/octrun.swg | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index 6e297d3885..ae014f9bd6 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -1279,12 +1279,24 @@ SWIGRUNTIME octave_value swig_unary_op_##name(const octave_base_value &x) { \ - SWIGRUNTIME octave_value swig_binary_op_##name(const octave_base_value&lhs,const octave_base_value &rhs) { \ - return octave_swig_type::dispatch_binary_op(lhs,rhs,#name); \ - } -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+#define swigreg_unary_op(name) \ -+if (!octave_value_typeinfo::lookup_unary_op(octave_value::op_##name,tid)) \ -+typeinfo.register_unary_op(octave_value::op_##name,tid,swig_unary_op_##name); -+#else - #define swigreg_unary_op(name) \ - if (!octave_value_typeinfo::lookup_unary_op(octave_value::op_##name,tid)) \ - octave_value_typeinfo::register_unary_op(octave_value::op_##name,tid,swig_unary_op_##name); -+#endif -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+#define swigreg_binary_op(name) \ -+if (!octave_value_typeinfo::lookup_binary_op(octave_value::op_##name,tid1,tid2)) \ -+typeinfo.register_binary_op(octave_value::op_##name,tid1,tid2,swig_binary_op_##name); -+#else - #define swigreg_binary_op(name) \ - if (!octave_value_typeinfo::lookup_binary_op(octave_value::op_##name,tid1,tid2)) \ - octave_value_typeinfo::register_binary_op(octave_value::op_##name,tid1,tid2,swig_binary_op_##name); -+#endif - - swig_unary_op(not); - swig_unary_op(uplus); -@@ -1318,6 +1330,9 @@ octave_value_typeinfo::register_binary_op(octave_value::op_##name,tid1,tid2,swig - swig_binary_op(el_or); - - SWIGRUNTIME void SWIG_InstallUnaryOps(int tid) { -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ octave::type_info& typeinfo = octave::interpreter::the_interpreter()->get_type_info(); -+#endif - swigreg_unary_op(not); - swigreg_unary_op(uplus); - swigreg_unary_op(uminus); -@@ -1327,6 +1342,9 @@ octave_value_typeinfo::register_binary_op(octave_value::op_##name,tid1,tid2,swig - swigreg_unary_op(decr); - } - SWIGRUNTIME void SWIG_InstallBinaryOps(int tid1, int tid2) { -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ octave::type_info& typeinfo = octave::interpreter::the_interpreter()->get_type_info(); -+#endif - swigreg_binary_op(add); - swigreg_binary_op(sub); - swigreg_binary_op(mul); - -From d0b1105f3018516e4a94dd57e6bae83167bf2f1c Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Sat, 12 May 2018 02:29:07 +1000 -Subject: [PATCH 11/18] Lib/octave: use new class for function member - dereference with Octave >= 4.4 - ---- - Lib/octave/octrun.swg | 80 +++++++++++++++++++++++++++++++++++++-- - Lib/octave/octruntime.swg | 30 +++++++++++++++ - 2 files changed, 106 insertions(+), 4 deletions(-) - -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index ae014f9bd6..45105e207d 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -151,6 +151,67 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - const swig_type_info **base; - }; - -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ // in Octave 4.4 behaviour of octave_builtin() appears to have changed and 'self' argument is no longer passed -+ // to function (maybe because this is now a 'method'??) so need to create our own octave_function subclass -+#define SWIG_OCTAVE_BOUND_FUNC(func, args) octave_value(new octave_swig_bound_func(func, args)) -+ class octave_swig_bound_func : public octave_function { -+ public: -+ -+ octave_swig_bound_func(void) : octave_function(), method(0), first_args() -+ { } -+ -+ octave_swig_bound_func(octave_function* _method, octave_value_list _first_args) -+ : octave_function("", ""), method(_method), first_args(_first_args) -+ { } -+ -+ octave_swig_bound_func(const octave_swig_bound_func& f) = delete; -+ -+ octave_swig_bound_func& operator= (const octave_swig_bound_func& f) = delete; -+ -+ ~octave_swig_bound_func(void) = default; -+ -+ bool is_function(void) const { return true; } -+ -+ octave_function* function_value(bool = false) { return this; } -+ -+ octave_value_list call(octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list()) { -+ octave_value_list all_args; -+ all_args.append(first_args); -+ all_args.append(args); -+ return method->call(tw, nargout, all_args); -+ } -+ -+ octave_value subsref(const std::string &ops, const std::list < octave_value_list > &idx) { -+ octave_value_list ovl = subsref(ops, idx, 1); -+ return ovl.length() ? ovl(0) : octave_value(); -+ } -+ -+ octave_value_list subsref(const std::string &ops, const std::list < octave_value_list > &idx, int nargout) { -+ assert(ops.size() > 0); -+ assert(ops.size() == idx.size()); -+ if (ops != "(") -+ error("invalid function call"); -+ octave::tree_evaluator& tw = octave::interpreter::the_interpreter()->get_evaluator(); -+ return call(tw, nargout, *idx.begin()); -+ } -+ -+ protected: -+ -+ octave_function* method; -+ octave_value_list first_args; -+ -+ std::set dispatch_classes; -+ -+ private: -+ -+ DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA -+ }; -+ DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_swig_bound_func, "octave_swig_bound_func", "octave_swig_bound_func"); -+#else -+#define SWIG_OCTAVE_BOUND_FUNC(func, args) octave_value(func) -+#endif -+ - // octave_swig_type plays the role of both the shadow class and the class - // representation within Octave, since there is no support for classes. - // -@@ -323,13 +384,17 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - } - - octave_value_list member_deref(member_value_pair *m, const octave_value_list &args) { -- if (m->second.is_defined()) -- return m->second; -- else if (m->first) { -+ if (m->second.is_defined()) { -+ if (m->second.is_function() || m->second.is_function_handle()) { -+ return SWIG_OCTAVE_BOUND_FUNC(m->second.function_value(), args); -+ } else { -+ return m->second; -+ } -+ } else if (m->first) { - if (m->first->get_method) - return m->first->get_method(args, 1); - else if (m->first->method) -- return octave_value(new octave_builtin(m->first->method)); -+ return SWIG_OCTAVE_BOUND_FUNC(new octave_builtin(m->first->method), args); - } - error("undefined member"); - return octave_value_list(); -@@ -860,7 +925,14 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - octave_function *fcn = is_valid_function(symbol, std::string(), false); - if (!fcn) - return false; -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ octave::tree_evaluator& tw = octave::interpreter::the_interpreter()->get_evaluator(); -+ octave_value_list retval = fcn->call(tw, 1, args); -+ if (retval.length() == 1) -+ ret = retval(0); -+#else - ret = fcn->do_multi_index_op(1, args)(0); -+#endif - return true; - } - -diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg -index 46faade9c1..f98bf4fe4e 100644 ---- a/Lib/octave/octruntime.swg -+++ b/Lib/octave/octruntime.swg -@@ -370,8 +370,38 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { - #endif - #endif - -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ { -+ octave::type_info& typeinfo = octave::interpreter::the_interpreter()->get_type_info(); -+ string_vector types = typeinfo.installed_type_names(); -+ bool register_octave_swig_ref = true; -+ bool register_octave_swig_packed = true; -+ bool register_octave_swig_bound_func = true; -+ for (int i = 0; i < types.numel(); ++i) { -+ if (types(i) == octave_swig_ref::static_type_name()) { -+ register_octave_swig_ref = false; -+ } -+ if (types(i) == octave_swig_packed::static_type_name()) { -+ register_octave_swig_packed = false; -+ } -+ if (types(i) == octave_swig_bound_func::static_type_name()) { -+ register_octave_swig_bound_func = false; -+ } -+ } -+ if (register_octave_swig_ref) { -+ octave_swig_ref::register_type(); -+ } -+ if (register_octave_swig_packed) { -+ octave_swig_packed::register_type(); -+ } -+ if (register_octave_swig_bound_func) { -+ octave_swig_bound_func::register_type(); -+ } -+ } -+#else - octave_swig_ref::register_type(); - octave_swig_packed::register_type(); -+#endif - SWIG_InitializeModule(0); - SWIG_PropagateClientData(); - - -From 6586616e23e499189b2acaf9e8244d9574cbf5b0 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Sat, 12 May 2018 02:36:13 +1000 -Subject: [PATCH 12/18] Lib/octave: fix getting/setting global variables for - Octave >= 4.4 - ---- - Lib/octave/octrun.swg | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index 45105e207d..feed973cc8 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -1504,14 +1504,30 @@ SWIGRUNTIMEINLINE void SWIG_Octave_SetConstant(octave_swig_type *module_ns, cons - } - - SWIGRUNTIMEINLINE octave_value SWIG_Octave_GetGlobalValue(std::string name) { -+#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 - } - - SWIGRUNTIME void SWIG_Octave_SetGlobalValue(std::string name, const octave_value& value) { -+#if SWIG_OCTAVE_PREREQ(4,4,0) -+ octave::symbol_table& symtab = octave::interpreter::the_interpreter()->get_symbol_table(); -+ symtab.global_assign(name, value); -+#else - set_global_value(name, value); -+#endif - } - - 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(); -+ symscope.assign(name, symtab.global_varval(name)); -+ symscope.mark_global(name); -+#else - #if !SWIG_OCTAVE_PREREQ(3,2,0) - link_to_global_variable(curr_sym_tab->lookup(name, true)); - #else -@@ -1520,6 +1536,7 @@ SWIGRUNTIME void SWIG_Octave_LinkGlobalValue(std::string name) { - #endif - symbol_table::mark_global(name); - #endif -+#endif - } - - SWIGRUNTIME swig_module_info *SWIG_Octave_GetModule(void *clientdata) { - -From a169eef3c0ee5436a09ce7bbd97ebaf189ffa35d Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Fri, 11 May 2018 22:22:42 +1000 -Subject: [PATCH 13/18] Examples/Makefile.in: unset OCTAVE_PATH when running - Octave for tests - ---- - Examples/Makefile.in | 2 +- - Examples/test-suite/octave/Makefile.in | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Examples/Makefile.in b/Examples/Makefile.in -index 8218f51224..58da8ec1dc 100644 ---- a/Examples/Makefile.in -+++ b/Examples/Makefile.in -@@ -463,7 +463,7 @@ octave_cpp: $(SRCDIR_SRCS) - # ----------------------------------------------------------------- - - octave_run: -- OCTAVE_HISTFILE=/dev/null $(RUNTOOL) $(OCTAVE) $(OCTAVE_SCRIPT) $(RUNPIPE) -+ env OCTAVE_PATH= OCTAVE_HISTFILE=/dev/null $(RUNTOOL) $(OCTAVE) $(OCTAVE_SCRIPT) $(RUNPIPE) - - # ----------------------------------------------------------------- - # Version display -diff --git a/Examples/test-suite/octave/Makefile.in b/Examples/test-suite/octave/Makefile.in -index f5ad0e8a52..3c8f3b165e 100644 ---- a/Examples/test-suite/octave/Makefile.in -+++ b/Examples/test-suite/octave/Makefile.in -@@ -65,7 +65,7 @@ CSRCS = octave_empty.c - # a file is found which has _runme.m appended after the testcase name. - run_testcase = \ - if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \ -- env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH OCTAVE_PATH=$(srcdir):$$OCTAVE_PATH $(RUNTOOL) $(OCTAVE) $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \ -+ env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH OCTAVE_PATH=$(srcdir) OCTAVE_HISTFILE=/dev/null $(RUNTOOL) $(OCTAVE) $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \ - fi - - # Clean: remove the generated .m file - -From af97a312d41fa72ef2f6b86c6c8e858392f79330 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Tue, 31 Jan 2017 11:48:42 +1300 -Subject: [PATCH 14/18] Examples/octave/module_load/runme.m: do not use - duplicate function names - ---- - Examples/octave/module_load/runme.m | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) - -diff --git a/Examples/octave/module_load/runme.m b/Examples/octave/module_load/runme.m -index 0e327efcdc..4069e9939d 100644 ---- a/Examples/octave/module_load/runme.m -+++ b/Examples/octave/module_load/runme.m -@@ -16,24 +16,24 @@ - - # load module in a function globally before base context - clear all; --function testme -+function testme_1 - swigexample; - assert(cvar.ivar == ifunc); - assert(exist("swigexample","var")); - endfunction --testme --testme -+testme_1 -+testme_1 - swigexample; - assert(cvar.ivar == ifunc); - assert(exist("swigexample","var")); - clear all --function testme -+function testme_2 - swigexample; - assert(cvar.ivar == ifunc); - assert(exist("swigexample","var")); - endfunction --testme --testme -+testme_2 -+testme_2 - swigexample; - assert(cvar.ivar == ifunc); - assert(exist("swigexample","var")); -@@ -44,24 +44,24 @@ - swigexample; - assert(cvar.ivar == ifunc); - assert(exist("swigexample","var")); --function testme -+function testme_3 - swigexample; - assert(cvar.ivar == ifunc); - assert(exist("swigexample","var")); - endfunction --testme --testme -+testme_3 -+testme_3 - clear all - swigexample; - assert(cvar.ivar == ifunc); - assert(exist("swigexample","var")); --function testme -+function testme_4 - swigexample; - assert(cvar.ivar == ifunc); - assert(exist("swigexample","var")); - endfunction --testme --testme -+testme_4 -+testme_4 - clear all - - # octave 3.0.5 randomly crashes on the remaining tests - -From 64ad3f0ca87dcd9d4a54692e7afdbc887b793268 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Fri, 11 May 2018 21:15:09 +1000 -Subject: [PATCH 15/18] Examples/octave/module_load/runme.m: update 'exist()' - statements for Octave >= 4.4 - ---- - Examples/octave/module_load/runme.m | 41 +++++++++++++++++++---------- - 1 file changed, 27 insertions(+), 14 deletions(-) - -diff --git a/Examples/octave/module_load/runme.m b/Examples/octave/module_load/runme.m -index 4069e9939d..beab1213b0 100644 ---- a/Examples/octave/module_load/runme.m -+++ b/Examples/octave/module_load/runme.m -@@ -5,60 +5,70 @@ - - # load module - clear all; -+assert(exist("swigexample") == 3); - swigexample; -+assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); --assert(exist("swigexample","var")); - clear all -+assert(exist("swigexample") == 3); - swigexample; -+assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); --assert(exist("swigexample","var")); - clear all - - # load module in a function globally before base context - clear all; - function testme_1 -+ assert(exist("swigexample") == 3); - swigexample; -+ assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); -- assert(exist("swigexample","var")); - endfunction - testme_1 - testme_1 -+assert(exist("swigexample") == 3); - swigexample; -+assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); --assert(exist("swigexample","var")); - clear all - function testme_2 -+ assert(exist("swigexample") == 3); - swigexample; -+ assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); -- assert(exist("swigexample","var")); - endfunction - testme_2 - testme_2 -+assert(exist("swigexample") == 3); - swigexample; -+assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); --assert(exist("swigexample","var")); - clear all - - # load module in a function globally after base context - clear all; -+assert(exist("swigexample") == 3); - swigexample; -+assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); --assert(exist("swigexample","var")); - function testme_3 -+ assert(exist("swigexample") == 3); - swigexample; -+ assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); -- assert(exist("swigexample","var")); - endfunction - testme_3 - testme_3 - clear all -+assert(exist("swigexample") == 3); - swigexample; -+assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); --assert(exist("swigexample","var")); - function testme_4 -+ assert(exist("swigexample") == 3); - swigexample; -+ assert(isglobal("swigexample")); - assert(cvar.ivar == ifunc); -- assert(exist("swigexample","var")); - endfunction - testme_4 - testme_4 -@@ -71,13 +81,16 @@ - - # load module with no cvar - clear all; -+who; -+assert(exist("swigexample2") == 3); - swigexample2; -+assert(isglobal("swigexample2")); - assert(swigexample2.ivar == ifunc); --assert(exist("swigexample2","var")); --assert(!isglobal("cvar")) -+assert(!exist("cvar", "var")); - clear all -+assert(exist("swigexample2") == 3); - swigexample2; -+assert(isglobal("swigexample2")); - assert(swigexample2.ivar == ifunc); --assert(exist("swigexample2","var")); --assert(!isglobal("cvar")) -+assert(!exist("cvar", "var")); - clear all - -From a2ab3d7b20feec5f46100d98712dd92cf4f9bc52 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Sat, 12 May 2018 19:23:12 +1000 -Subject: [PATCH 16/18] Examples/test-suite/register_par.i: rename 'tree' to - 'swig_tree' - -- 'tree' is a declared symbol in Octave >= 4.4 headers ---- - Examples/test-suite/register_par.i | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Examples/test-suite/register_par.i b/Examples/test-suite/register_par.i -index b4172c0599..6438414559 100644 ---- a/Examples/test-suite/register_par.i -+++ b/Examples/test-suite/register_par.i -@@ -1,6 +5,10 @@ - %module register_par - -+%{ -+struct swig_tree; -+%} -+ - // bug # 924413 - %inline { -- void clear_tree_flags(register struct tree *tp, register int i) {} -+ void clear_tree_flags(register struct swig_tree *tp, register int i) {} - } - -From ebd0b52b3ec201bbd70391c106e541c859ceaaf9 Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Sat, 12 May 2018 02:57:27 +1000 -Subject: [PATCH 17/18] .travis.yml: test against Octave 4.4 - ---- - .travis.yml | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/.travis.yml b/.travis.yml -index 54ec4c3f94..d0e1239cea 100644 ---- a/.travis.yml -+++ b/.travis.yml -@@ -94,6 +94,11 @@ matrix: - env: SWIGLANG=octave SWIGJOBS=-j2 VER=4.2 CPP11=1 - sudo: required - dist: trusty -+ - compiler: gcc -+ os: linux -+ env: SWIGLANG=octave SWIGJOBS=-j2 VER=4.4 CPP11=1 -+ sudo: required -+ dist: trusty - - compiler: gcc - os: linux - env: SWIGLANG=perl5 - -From 23e6f1329255a128bb702be0de77f17c47149ddf Mon Sep 17 00:00:00 2001 -From: Karl Wette -Date: Sat, 12 May 2018 22:31:31 +1000 -Subject: [PATCH 18/18] Update CHANGES.current - ---- - CHANGES.current | 4 ++++ - 1 file changed, 4 insertions(+) - -#diff --git a/CHANGES.current b/CHANGES.current -#index 0acfddc7da..3037b59281 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.0.0 (in progress) -# =========================== -# -#+2018-05-12: kwwette -#+ [Octave] add support for version 4.4 -#+ - Should not introduce any user-visible incompatibilities -#+ -# 2018-05-11: wsfulton -# [C#, D, Java] Add support so that the %csmethodmodifiers, %dmethodmodifiers, -# %javamethodmodifiers can modify the method modifiers for the destructor wrappers diff --git a/swig-node-v7.patch b/swig-node-v7.patch deleted file mode 100644 index 4f5e1fc..0000000 --- a/swig-node-v7.patch +++ /dev/null @@ -1,541 +0,0 @@ -From f08d7a63a92a3ba89d97bdfcc206e1e1c4804c0f Mon Sep 17 00:00:00 2001 -From: Patrick Schneider -Date: Thu, 13 Apr 2017 15:02:53 +0200 -Subject: [PATCH 1/2] Add Node 7.x aka V8 5.2+ support - -* Use WeakCallbackInfo instead of WeakCallbackData -* Use GetPrivate instead of GetHiddenValue -* Adopted new signature for SetWeak to support destructor calling -* SetAccessor deprecation fixed -* Proper version checks where applicable ---- - Lib/javascript/v8/javascriptcode.swg | 27 +++++++++++++++++----- - Lib/javascript/v8/javascripthelpers.swg | 29 +++++++++++++++++++++--- - Lib/javascript/v8/javascriptinit.swg | 16 +++++++++++-- - Lib/javascript/v8/javascriptrun.swg | 40 ++++++++++++++++++++++++++++----- - 4 files changed, 95 insertions(+), 17 deletions(-) - -diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg -index fb7d55c2ad..b8c5089816 100644 ---- a/Lib/javascript/v8/javascriptcode.swg -+++ b/Lib/javascript/v8/javascriptcode.swg -@@ -133,10 +133,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v - SWIGV8_Proxy *proxy = static_cast(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - static void $jswrapper(v8::Isolate *isolate, v8::Persistent *object, SWIGV8_Proxy *proxy) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - static void $jswrapper(const v8::WeakCallbackData &data) { - v8::Local object = data.GetValue(); - SWIGV8_Proxy *proxy = data.GetParameter(); -+#else -+ static void $jswrapper(const v8::WeakCallbackInfo &data) { -+ SWIGV8_Proxy *proxy = data.GetParameter(); - #endif - - if(proxy->swigCMemOwn && proxy->swigCObject) { -@@ -147,7 +150,9 @@ static void $jswrapper(const v8::WeakCallbackData &dat - } - delete proxy; - -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object.Clear(); -+#endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) - object.Dispose(); -@@ -155,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat - object.Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) - object->Dispose(isolate); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object->Dispose(); - #endif - } -@@ -177,10 +182,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v - SWIGV8_Proxy *proxy = static_cast(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - static void $jswrapper(const v8::WeakCallbackData &data) { - v8::Local object = data.GetValue(); - SWIGV8_Proxy *proxy = data.GetParameter(); -+#else -+static void $jswrapper(const v8::WeakCallbackInfo &data) { -+ SWIGV8_Proxy *proxy = data.GetParameter(); - #endif - - if(proxy->swigCMemOwn && proxy->swigCObject) { -@@ -197,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat - object->Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - object->Dispose(); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object.Clear(); - #endif - } -@@ -211,7 +219,11 @@ static void $jswrapper(const v8::WeakCallbackData &dat - * ----------------------------------------------------------------------------- */ - %fragment("js_getter", "templates") - %{ -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { -+#else -+static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { -+#endif - SWIGV8_HANDLESCOPE(); - - v8::Handle jsresult; -@@ -233,8 +245,11 @@ fail: - * ----------------------------------------------------------------------------- */ - %fragment("js_setter", "templates") - %{ --static void $jswrapper(v8::Local property, v8::Local value, -- const SwigV8PropertyCallbackInfoVoid &info) { -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { -+#else -+static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { -+#endif - SWIGV8_HANDLESCOPE(); - - $jslocals -diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg -index 091467df4d..74610793af 100644 ---- a/Lib/javascript/v8/javascripthelpers.swg -+++ b/Lib/javascript/v8/javascripthelpers.swg -@@ -6,11 +6,16 @@ typedef v8::InvocationCallback SwigV8FunctionCallback; - typedef v8::AccessorGetter SwigV8AccessorGetterCallback; - typedef v8::AccessorSetter SwigV8AccessorSetterCallback; - typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - typedef v8::FunctionCallback SwigV8FunctionCallback; - typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; - typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; - typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; -+#else -+typedef v8::FunctionCallback SwigV8FunctionCallback; -+typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; -+typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; -+typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; - #endif - - /** -@@ -65,18 +70,36 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle obj, const char - */ - SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle obj, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); -+#else -+ obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter); -+#endif - } - --SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, -- const SwigV8PropertyCallbackInfoVoid& info) -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) -+#else -+SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) -+#endif - { - char buffer[256]; - char msg[512]; - int res; - -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - property->WriteUtf8(buffer, 256); - res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); -+#else -+ v8::Local sproperty; -+ if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) { -+ sproperty->WriteUtf8(buffer, 256); -+ res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); -+ } -+ else { -+ res = -1; -+ } -+#endif - - if(res<0) { - SWIG_exception(SWIG_ERROR, "Tried to write read-only variable."); -diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg -index 34befa7ce7..86008d927f 100644 ---- a/Lib/javascript/v8/javascriptinit.swg -+++ b/Lib/javascript/v8/javascriptinit.swg -@@ -7,15 +7,27 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { - v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); - v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); - assert(!mod.IsEmpty()); -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod); -+#else -+ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); -+ global_obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, mod); -+#endif - } - - SWIGRUNTIME swig_module_info * - SWIG_V8_GetModule(void *) { - v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - v8::Local moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data")); -+#else -+ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); -+ v8::Local moduleinfo; -+ if (!global_obj->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&moduleinfo)) -+ return 0; -+#endif - -- if (moduleinfo.IsEmpty()) -+ if (moduleinfo.IsEmpty() || moduleinfo->IsNull() || moduleinfo->IsUndefined()) - { - // It's not yet loaded - return 0; -@@ -23,7 +35,7 @@ SWIG_V8_GetModule(void *) { - - v8::Local moduleinfo_extern = v8::Local::Cast(moduleinfo); - -- if (moduleinfo_extern.IsEmpty()) -+ if (moduleinfo_extern.IsEmpty() || moduleinfo_extern->IsNull() || moduleinfo_extern->IsUndefined()) - { - // Something's not right - return 0; -diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg -index 5ac52a51dc..30002c02a3 100644 ---- a/Lib/javascript/v8/javascriptrun.swg -+++ b/Lib/javascript/v8/javascriptrun.swg -@@ -193,8 +193,10 @@ public: - void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - void (*dtor) (const v8::WeakCallbackData &data); -+#else -+ void (*dtor) (const v8::WeakCallbackInfo &data); - #endif - }; - -@@ -241,9 +243,12 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val - SWIGV8_Proxy *proxy = static_cast(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); -+#else -+SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo &data) { -+ SWIGV8_Proxy *proxy = data.GetParameter(); - #endif - - delete proxy; -@@ -312,12 +317,18 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, sw - } else { - cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); - } --#else -+#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { - cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); - } else { - cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor); - } -+#else -+ if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { -+ cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor, v8::WeakCallbackType::kParameter); -+ } else { -+ cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor, v8::WeakCallbackType::kParameter); -+ } - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) -@@ -470,7 +481,14 @@ int SwigV8Packed_Check(v8::Handle valRef) { - - v8::Handle objRef = valRef->ToObject(); - if(objRef->InternalFieldCount() < 1) return false; -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - v8::Handle flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); -+#else -+ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); -+ v8::Local flag; -+ if (!objRef->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&flag)) -+ return false; -+#endif - return (flag->IsBoolean() && flag->BooleanValue()); - } - -@@ -519,10 +537,13 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist - SwigV8PackedData *cdata = static_cast(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent *object, SwigV8PackedData *cdata) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData &data) { - v8::Local object = data.GetValue(); - SwigV8PackedData *cdata = data.GetParameter(); -+#else -+SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo &data) { -+ SwigV8PackedData *cdata = data.GetParameter(); - #endif - - delete cdata; -@@ -537,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackDataDispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - object->Dispose(); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object.Clear(); - #endif - } -@@ -550,7 +571,12 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - // v8::Handle obj = SWIGV8_OBJECT_NEW(); - v8::Local obj = SWIGV8_OBJECT_NEW(); - -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true)); -+#else -+ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); -+ obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, SWIGV8_BOOLEAN_NEW(true)); -+#endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) - obj->SetPointerInInternalField(0, cdata); -@@ -573,9 +599,11 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete); - // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete); -+#else -+ cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter); - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) - -From 9ce8d7e7c99e75163318428aeff6e60d398fcdca Mon Sep 17 00:00:00 2001 -From: Patrick Schneider -Date: Thu, 13 Apr 2017 19:39:44 +0200 -Subject: [PATCH 2/2] Remove warnings on Node 6.x aka V8 5.0 and 5.1 - -The proposed changes targetted at 5.2 (or 5.4 to be more precise, since there is no Node release with V8 5.2 or 5.3) work for lower versions as well and bust the deprecation warnings there. ---- - Lib/javascript/v8/javascriptcode.swg | 14 +++++++------- - Lib/javascript/v8/javascripthelpers.swg | 8 ++++---- - Lib/javascript/v8/javascriptinit.swg | 4 ++-- - Lib/javascript/v8/javascriptrun.swg | 16 ++++++++-------- - 4 files changed, 21 insertions(+), 21 deletions(-) - -diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg -index b8c5089816..c4aaf3db0c 100644 ---- a/Lib/javascript/v8/javascriptcode.swg -+++ b/Lib/javascript/v8/javascriptcode.swg -@@ -133,7 +133,7 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v - SWIGV8_Proxy *proxy = static_cast(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - static void $jswrapper(v8::Isolate *isolate, v8::Persistent *object, SWIGV8_Proxy *proxy) { --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - static void $jswrapper(const v8::WeakCallbackData &data) { - v8::Local object = data.GetValue(); - SWIGV8_Proxy *proxy = data.GetParameter(); -@@ -150,7 +150,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat - } - delete proxy; - --#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#if (V8_MAJOR_VERSION-0) < 5 - object.Clear(); - #endif - -@@ -160,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat - object.Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) - object->Dispose(isolate); --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - object->Dispose(); - #endif - } -@@ -182,7 +182,7 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v - SWIGV8_Proxy *proxy = static_cast(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) { --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - static void $jswrapper(const v8::WeakCallbackData &data) { - v8::Local object = data.GetValue(); - SWIGV8_Proxy *proxy = data.GetParameter(); -@@ -205,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackInfo &data) { - object->Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - object->Dispose(); --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - object.Clear(); - #endif - } -@@ -219,7 +219,7 @@ static void $jswrapper(const v8::WeakCallbackInfo &data) { - * ----------------------------------------------------------------------------- */ - %fragment("js_getter", "templates") - %{ --#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#if (V8_MAJOR_VERSION-0) < 5 - static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { - #else - static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { -@@ -245,7 +245,7 @@ fail: - * ----------------------------------------------------------------------------- */ - %fragment("js_setter", "templates") - %{ --#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#if (V8_MAJOR_VERSION-0) < 5 - static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { - #else - static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { -diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg -index 74610793af..7b8a5ec237 100644 ---- a/Lib/javascript/v8/javascripthelpers.swg -+++ b/Lib/javascript/v8/javascripthelpers.swg -@@ -6,7 +6,7 @@ typedef v8::InvocationCallback SwigV8FunctionCallback; - typedef v8::AccessorGetter SwigV8AccessorGetterCallback; - typedef v8::AccessorSetter SwigV8AccessorSetterCallback; - typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - typedef v8::FunctionCallback SwigV8FunctionCallback; - typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; - typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; -@@ -70,14 +70,14 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle obj, const char - */ - SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle obj, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { --#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#if (V8_MAJOR_VERSION-0) < 5 - obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); - #else - obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter); - #endif - } - --#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#if (V8_MAJOR_VERSION-0) < 5 - SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) - #else - SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) -@@ -87,7 +87,7 @@ SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::LocalWriteUtf8(buffer, 256); - res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); - #else -diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg -index 86008d927f..e83f478d9d 100644 ---- a/Lib/javascript/v8/javascriptinit.swg -+++ b/Lib/javascript/v8/javascriptinit.swg -@@ -7,7 +7,7 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { - v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); - v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); - assert(!mod.IsEmpty()); --#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#if (V8_MAJOR_VERSION-0) < 5 - global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod); - #else - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); -@@ -18,7 +18,7 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { - SWIGRUNTIME swig_module_info * - SWIG_V8_GetModule(void *) { - v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); --#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#if (V8_MAJOR_VERSION-0) < 5 - v8::Local moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data")); - #else - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); -diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg -index 30002c02a3..0af9f4eb0a 100644 ---- a/Lib/javascript/v8/javascriptrun.swg -+++ b/Lib/javascript/v8/javascriptrun.swg -@@ -193,7 +193,7 @@ public: - void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy); --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - void (*dtor) (const v8::WeakCallbackData &data); - #else - void (*dtor) (const v8::WeakCallbackInfo &data); -@@ -243,7 +243,7 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val - SWIGV8_Proxy *proxy = static_cast(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) { --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); - #else -@@ -317,7 +317,7 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, sw - } else { - cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); - } --#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { - cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); - } else { -@@ -481,7 +481,7 @@ int SwigV8Packed_Check(v8::Handle valRef) { - - v8::Handle objRef = valRef->ToObject(); - if(objRef->InternalFieldCount() < 1) return false; --#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#if (V8_MAJOR_VERSION-0) < 5 - v8::Handle flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); - #else - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); -@@ -537,7 +537,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist - SwigV8PackedData *cdata = static_cast(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent *object, SwigV8PackedData *cdata) { --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData &data) { - v8::Local object = data.GetValue(); - SwigV8PackedData *cdata = data.GetParameter(); -@@ -558,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfoDispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - object->Dispose(); --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - object.Clear(); - #endif - } -@@ -571,7 +571,7 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - // v8::Handle obj = SWIGV8_OBJECT_NEW(); - v8::Local obj = SWIGV8_OBJECT_NEW(); - --#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#if (V8_MAJOR_VERSION-0) < 5 - obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true)); - #else - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); -@@ -599,7 +599,7 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); --#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+#elif (V8_MAJOR_VERSION-0) < 5 - cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete); - // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete); - #else diff --git a/swig.spec b/swig.spec index 99733c5..7d214d0 100644 --- a/swig.spec +++ b/swig.spec @@ -1,13 +1,30 @@ # We can skip tests %bcond_without testsuite +%if %{without testsuite} +%global lualang 0 +%global phplang 0 +%global rubylang 0 +%global python2lang 0 +%global python3lang 0 +%global golang 0 +%global octave 0 +%global Rlang 0 +%global javalang 0 +%endif + %{!?tcl:%global tcl 1} %{!?guile:%global guile 0} %{!?lualang:%global lualang 1} -# Disable PHP tests, because they fail with PHP 7.2.0 -%{!?phplang:%global phplang 0} +%{!?phplang:%global phplang 1} +# Disable Ruby test failed with swig 4.0.0 +%ifarch s390 s390x +%{!?rubylang:%global rubylang 0} +%else %{!?rubylang:%global rubylang 1} -%{!?python2lang:%global python2lang 0} +%endif +%{!?python2lang:%global python2lang 1} +%{!?python3lang:%global python3lang 1} %if 0%{?rhel} %{!?golang:%global golang 0} @@ -25,7 +42,8 @@ %{!?javalang:%global javalang 1} %endif -%ifarch %{ix86} x86_64 %{arm} aarch64 ppc64le +# Do not run Go tests, they failed with 4.0.0 on ppc64le +%ifarch %{ix86} x86_64 %{arm} aarch64 %{!?golang:%global golang 1} %else %{!?golang:%global golang 0} @@ -33,8 +51,8 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 3.0.12 -Release: 24%{?dist} +Version: 4.0.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 @@ -47,21 +65,6 @@ Source4: ccache-swig.csh %endif Patch0: swig308-Do-not-use-isystem.patch -Patch1: swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch -# Upstream pull request to support Node v7/v8 -Patch2: https://patch-diff.githubusercontent.com/raw/swig/swig/pull/968/swig-node-v7.patch -# Fix generated code for constant expressions containing wchar_t L -# literals. -Patch3: swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch -Patch4: swig-3.0.12-Fix-type-promotion-wrapping-some-non-trivial-constan.patch -Patch5: swig-3.0.12-Correct-php-testcase.patch -Patch6: swig-3.0.12-Fix-go-version-matching-in-configure-for-go1.10.patch -# Backport upstream Coverity fixes (BZ# 1570037) -Patch7: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch -Patch8: swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch -Patch9: swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch -Patch10: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch -Patch11: swig-3.0.12-Support-Octave-4.4.patch BuildRequires: perl-interpreter, pcre-devel %if %{python2lang} @@ -95,7 +98,9 @@ BuildRequires: guile-devel BuildRequires: octave-devel %endif %if %{golang} +#BuildRequires: gcc-go BuildRequires: golang +BuildRequires: golang-bin BuildRequires: golang-shared BuildRequires: golang-src %endif @@ -155,20 +160,9 @@ This package contains file with commands for easier debugging of SWIG in gdb. %prep -%setup -q +%setup -q -n swig-%{version} %patch0 -p1 -b .isystem -%patch1 -p1 -%patch2 -p1 -b .bak -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -189,9 +183,15 @@ done %else --without-python \ %endif +%if %{python3lang} --with-python3=%__python3 \ +%else + --without-python3 \ +%endif %if %{phplang} --with-php=%{__php} \ +%else + --without-php \ %endif %if ! %{javalang} --without-java \ @@ -332,6 +332,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri May 03 2019 Jitka Plesnikova - 4.0.0-1 +- Update to 4.0.0 + * Sun Feb 03 2019 Fedora Release Engineering - 3.0.12-24 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild From 315c07294eb5c6b20f2d8d1993c07b8e04fa3fc0 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 14 May 2019 08:40:21 +0200 Subject: [PATCH 025/103] Update package description --- swig.spec | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/swig.spec b/swig.spec index a883216..f8e7828 100644 --- a/swig.spec +++ b/swig.spec @@ -124,11 +124,15 @@ BuildRequires: php, php-devel %description Simplified Wrapper and Interface Generator (SWIG) is a software development tool for connecting C, C++ and Objective C programs with a -variety of high-level programming languages. SWIG is primarily used -with Perl, Python and Tcl/TK, but it has also been extended to Java, -Eiffel and Guile. SWIG is normally used to create high-level -interpreted programming environments, systems integration, and as a -tool for building user interfaces +variety of high-level programming languages. SWIG is used with different +types of target languages including common scripting languages such as +Javascript, Perl, PHP, Python, Tcl and Ruby. The list of supported +languages also includes non-scripting languages such as C#, D, Go language, +Java including Android, Lua, OCaml, Octave, Scilab and R. Also several +interpreted and compiled Scheme implementations (Guile, MzScheme/Racket) +are supported. SWIG is most commonly used to create high-level interpreted +or compiled programming environments, user interfaces, and as a tool for +testing and prototyping C/C++ software. %if %{with build_ccache_swig} %package -n ccache-swig From 17b9b5c606530d78d31a0e004f19d3611f3b45f8 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 5 Jun 2019 15:27:55 +0200 Subject: [PATCH 026/103] Updated package description --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index f8e7828..387b3b3 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.0.0 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -338,6 +338,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Jun 05 2019 Jitka Plesnikova - 4.0.0-2 +- Updated package description + * Fri May 03 2019 Jitka Plesnikova - 4.0.0-1 - Update to 4.0.0 From 02347479a3aba90f277927b4c00b5d83aefd56f9 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 27 Jul 2019 00:42:01 +0000 Subject: [PATCH 027/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_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 387b3b3..ae237d9 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.0.0 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -338,6 +338,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Jul 27 2019 Fedora Release Engineering - 4.0.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Wed Jun 05 2019 Jitka Plesnikova - 4.0.0-2 - Updated package description From 9f07bb803068aef39a01e7f53788bbde17e491a5 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 7 Aug 2019 12:58:20 +0200 Subject: [PATCH 028/103] Disable Go tests --- swig.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index ae237d9..d15950b 100644 --- a/swig.spec +++ b/swig.spec @@ -49,10 +49,14 @@ %{!?golang:%global golang 0} %endif +# Tests fail with GO 1.13-beta1 +# https://github.com/swig/swig/issues/1607 +%global golang 0 + Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.0 -Release: 3%{?dist} +Release: 4%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -338,6 +342,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Aug 06 2019 Jitka Plesnikova - 4.0.0-4 +- Disable Go tests, they fail with Go 1.13-beta + * Sat Jul 27 2019 Fedora Release Engineering - 4.0.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild From 84ea8a4c6795c7ec62add4f363c6915ef1763b83 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 12 Aug 2019 14:34:44 +0200 Subject: [PATCH 029/103] Backport upstream fix for Go tests (BZ#1736731) --- swig.spec | 20 +- ...n-check-and-Go-in-tree-example-tests.patch | 54 + ...-all-Go-tests-to-build-with-go-build.patch | 2648 +++++++++++++++++ ...0-Restore-setting-of-GOVERSIONOPTION.patch | 25 + 4 files changed, 2742 insertions(+), 5 deletions(-) create mode 100644 swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch create mode 100644 swig400-Fix-all-Go-tests-to-build-with-go-build.patch create mode 100644 swig400-Restore-setting-of-GOVERSIONOPTION.patch diff --git a/swig.spec b/swig.spec index d15950b..0896c73 100644 --- a/swig.spec +++ b/swig.spec @@ -2,6 +2,7 @@ %bcond_without testsuite %if %{without testsuite} +%global tcl 0 %global lualang 0 %global phplang 0 %global rubylang 0 @@ -49,14 +50,10 @@ %{!?golang:%global golang 0} %endif -# Tests fail with GO 1.13-beta1 -# https://github.com/swig/swig/issues/1607 -%global golang 0 - Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.0 -Release: 4%{?dist} +Release: 5%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -71,6 +68,10 @@ Source4: ccache-swig.csh Patch0: swig308-Do-not-use-isystem.patch # https://github.com/swig/swig/pull/1522 Patch1: swig-octave-ldflags.patch +# Fix Go tests for Go 1.13-beta1 (BZ#1736731) +Patch2: swig400-Fix-all-Go-tests-to-build-with-go-build.patch +Patch3: swig400-Restore-setting-of-GOVERSIONOPTION.patch +Patch4: swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch BuildRequires: perl-interpreter, pcre-devel %if %{python2lang} @@ -173,6 +174,9 @@ in gdb. %patch0 -p1 -b .isystem %patch1 -p1 -b .octave-ldflags +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -203,6 +207,9 @@ done %else --without-php \ %endif +%if ! %{tcl} + --without-tcl \ +%endif %if ! %{javalang} --without-java \ %endif @@ -342,6 +349,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Aug 12 2019 Jitka Plesnikova - 4.0.0-5 +- Backport upstream fix for Go tests (BZ#1736731) + * Tue Aug 06 2019 Jitka Plesnikova - 4.0.0-4 - Disable Go tests, they fail with Go 1.13-beta diff --git a/swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch b/swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch new file mode 100644 index 0000000..11be2c5 --- /dev/null +++ b/swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch @@ -0,0 +1,54 @@ +From 62136ff782e9bf6641970f716d7d40afcf6c49ea Mon Sep 17 00:00:00 2001 +From: Ian Lance Taylor +Date: Fri, 9 Aug 2019 14:06:45 -0700 +Subject: [PATCH] Fix Go version check and Go in-tree example tests + +Fixes #1607 +--- + Examples/Makefile.in | 4 ++-- + configure.ac | 5 +++-- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/Examples/Makefile.in b/Examples/Makefile.in +index 9e05d2763..6fbca29db 100644 +--- a/Examples/Makefile.in ++++ b/Examples/Makefile.in +@@ -1484,7 +1484,7 @@ go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + rm -f gopath/$(GOMOD)/src/runme/*; \ + fi + if test -f $(SRCDIR)$(RUNME).go; then \ +- cp $(SRCDIR)/$(RUNME).go gopath/$(GOMOD)/src/runme/; \ ++ cp $(SRCDIR)$(RUNME).go gopath/$(GOMOD)/src/runme/; \ + fi + GOPATH=`pwd`/gopath/$(GOMOD); \ + export GOPATH; \ +@@ -1533,7 +1533,7 @@ go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + rm -f gopath/$(GOMOD)/src/runme/*; \ + fi + if test -f $(SRCDIR)$(RUNME).go; then \ +- cp $(SRCDIR)/$(RUNME).go gopath/$(GOMOD)/src/runme/; \ ++ cp $(SRCDIR)$(RUNME).go gopath/$(GOMOD)/src/runme/; \ + fi + GOPATH=`pwd`/gopath/$(GOMOD); \ + export GOPATH; \ +diff --git a/configure.ac b/configure.ac +index 73c38a72c..63509cd66 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2391,10 +2391,11 @@ else + + if test -n "$GO" ; then + GOVERSIONOPTION=version ++ go_version=$($GO $GOVERSIONOPTION | sed -e 's/go version //') + AC_MSG_CHECKING([whether go version is too old]) + case $go_version in +- go1.[012345]*) +- AC_MSG_RESULT([yes - minimum version is 1.6]) ++ go1.[012]*) ++ AC_MSG_RESULT([yes - minimum version is 1.3]) + GO= + GOOPT="-intgosize 32" + ;; +-- +2.20.1 + diff --git a/swig400-Fix-all-Go-tests-to-build-with-go-build.patch b/swig400-Fix-all-Go-tests-to-build-with-go-build.patch new file mode 100644 index 0000000..861160d --- /dev/null +++ b/swig400-Fix-all-Go-tests-to-build-with-go-build.patch @@ -0,0 +1,2648 @@ +From 7aafe3d8b2c8b138c431d5fcc98a4d2a7c3270f9 Mon Sep 17 00:00:00 2001 +From: Ian Lance Taylor +Date: Thu, 8 Aug 2019 14:30:50 -0700 +Subject: [PATCH 1/2] Fix all Go tests to build with "go build" + +Tested against Go 1.6 through Go 1.13beta1, and gccgo. + +Fixes #1607 +--- + Examples/Makefile.in | 154 ++++-------------- + Examples/go/callback/runme.go | 2 +- + Examples/go/class/runme.go | 2 +- + Examples/go/constants/runme.go | 2 +- + Examples/go/director/runme.go | 2 +- + Examples/go/enum/runme.go | 2 +- + Examples/go/extend/runme.go | 2 +- + Examples/go/funcptr/runme.go | 2 +- + Examples/go/multimap/runme.go | 2 +- + Examples/go/pointer/runme.go | 2 +- + Examples/go/reference/runme.go | 2 +- + Examples/go/simple/runme.go | 2 +- + Examples/go/template/runme.go | 2 +- + Examples/go/variables/runme.go | 2 +- + Examples/test-suite/go/Makefile.in | 118 ++++++-------- + .../test-suite/go/abstract_access_runme.go | 2 +- + .../test-suite/go/abstract_typedef2_runme.go | 2 +- + .../test-suite/go/abstract_typedef_runme.go | 2 +- + .../test-suite/go/abstract_virtual_runme.go | 2 +- + Examples/test-suite/go/argout_runme.go | 2 +- + Examples/test-suite/go/array_member_runme.go | 2 +- + Examples/test-suite/go/arrays_global_runme.go | 2 +- + Examples/test-suite/go/char_binary_runme.go | 2 +- + Examples/test-suite/go/class_ignore_runme.go | 2 +- + .../test-suite/go/class_scope_weird_runme.go | 2 +- + .../test-suite/go/compactdefaultargs_runme.go | 2 +- + Examples/test-suite/go/constover_runme.go | 2 +- + .../test-suite/go/constructor_copy_runme.go | 2 +- + Examples/test-suite/go/contract_runme.go | 2 +- + ...cpp11_strongly_typed_enumerations_runme.go | 2 +- + Examples/test-suite/go/cpp_enum_runme.go | 2 +- + Examples/test-suite/go/cpp_namespace_runme.go | 2 +- + Examples/test-suite/go/cpp_static_runme.go | 2 +- + Examples/test-suite/go/default_args_runme.go | 2 +- + .../go/default_constructor_runme.go | 2 +- + .../go/director_alternating_runme.go | 2 +- + .../test-suite/go/director_basic_runme.go | 2 +- + .../test-suite/go/director_classic_runme.go | 2 +- + .../test-suite/go/director_default_runme.go | 2 +- + .../test-suite/go/director_detect_runme.go | 2 +- + Examples/test-suite/go/director_enum_runme.go | 2 +- + .../test-suite/go/director_exception_runme.go | 2 +- + .../test-suite/go/director_extend_runme.go | 2 +- + .../test-suite/go/director_finalizer_runme.go | 2 +- + Examples/test-suite/go/director_frob_runme.go | 2 +- + .../test-suite/go/director_nested_runme.go | 2 +- + .../test-suite/go/director_profile_runme.go | 2 +- + .../test-suite/go/director_protected_runme.go | 2 +- + .../test-suite/go/director_string_runme.go | 2 +- + .../test-suite/go/director_unroll_runme.go | 2 +- + Examples/test-suite/go/disown_runme.go | 2 +- + Examples/test-suite/go/dynamic_cast_runme.go | 2 +- + Examples/test-suite/go/empty_c_runme.go | 2 +- + Examples/test-suite/go/empty_runme.go | 2 +- + Examples/test-suite/go/enum_template_runme.go | 2 +- + Examples/test-suite/go/enums_runme.go | 2 +- + .../test-suite/go/exception_order_runme.go | 2 +- + .../test-suite/go/extend_placement_runme.go | 2 +- + .../test-suite/go/extend_template_ns_runme.go | 2 +- + .../test-suite/go/extend_template_runme.go | 2 +- + .../test-suite/go/extend_variable_runme.go | 2 +- + Examples/test-suite/go/extern_c_runme.go | 2 +- + Examples/test-suite/go/friends_runme.go | 2 +- + Examples/test-suite/go/fvirtual_runme.go | 2 +- + Examples/test-suite/go/global_ns_arg_runme.go | 2 +- + .../test-suite/go/go_director_inout_runme.go | 2 +- + Examples/test-suite/go/go_inout_runme.go | 2 +- + Examples/test-suite/go/grouping_runme.go | 2 +- + .../test-suite/go/import_nomodule_runme.go | 2 +- + Examples/test-suite/go/inctest_runme.go | 2 +- + .../test-suite/go/inherit_member_runme.go | 2 +- + .../test-suite/go/inherit_missing_runme.go | 2 +- + Examples/test-suite/go/input_runme.go | 2 +- + .../test-suite/go/keyword_rename_c_runme.go | 2 +- + .../test-suite/go/keyword_rename_runme.go | 2 +- + Examples/test-suite/go/li_attribute_runme.go | 2 +- + .../test-suite/go/li_carrays_cpp_runme.go | 2 +- + Examples/test-suite/go/li_carrays_runme.go | 2 +- + Examples/test-suite/go/li_cdata_cpp_runme.go | 2 +- + Examples/test-suite/go/li_cdata_runme.go | 2 +- + Examples/test-suite/go/li_cmalloc_runme.go | 2 +- + .../test-suite/go/li_cpointer_cpp_runme.go | 2 +- + Examples/test-suite/go/li_cpointer_runme.go | 2 +- + Examples/test-suite/go/li_std_map_runme.go | 2 +- + .../test-suite/go/li_std_vector_ptr_runme.go | 2 +- + .../test-suite/go/member_pointer_runme.go | 2 +- + .../test-suite/go/memberin_extend_c_runme.go | 2 +- + Examples/test-suite/go/minherit_runme.go | 2 +- + .../test-suite/go/namespace_class_runme.go | 2 +- + .../test-suite/go/namespace_typemap_runme.go | 2 +- + .../go/namespace_virtual_method_runme.go | 2 +- + Examples/test-suite/go/naturalvar_runme.go | 2 +- + .../test-suite/go/nested_workaround_runme.go | 2 +- + .../go/overload_complicated_runme.go | 2 +- + Examples/test-suite/go/overload_copy_runme.go | 2 +- + .../test-suite/go/overload_extend2_runme.go | 2 +- + .../test-suite/go/overload_extend_c_runme.go | 2 +- + .../test-suite/go/overload_extend_runme.go | 2 +- + .../go/overload_polymorphic_runme.go | 2 +- + .../test-suite/go/overload_rename_runme.go | 2 +- + .../test-suite/go/overload_simple_runme.go | 2 +- + .../test-suite/go/overload_subtype_runme.go | 2 +- + .../go/overload_template_fast_runme.go | 2 +- + .../test-suite/go/overload_template_runme.go | 2 +- + Examples/test-suite/go/preproc_runme.go | 2 +- + Examples/test-suite/go/primitive_ref_runme.go | 2 +- + Examples/test-suite/go/profiletest_runme.go | 2 +- + Examples/test-suite/go/refcount_runme.go | 2 +- + .../go/reference_global_vars_runme.go | 2 +- + Examples/test-suite/go/rename_scope_runme.go | 2 +- + Examples/test-suite/go/rename_simple_runme.go | 2 +- + .../go/rename_strip_encoder_runme.go | 2 +- + Examples/test-suite/go/ret_by_value_runme.go | 2 +- + .../test-suite/go/return_const_value_runme.go | 2 +- + .../go/smart_pointer_extend_runme.go | 2 +- + .../go/smart_pointer_member_runme.go | 2 +- + .../go/smart_pointer_multi_runme.go | 2 +- + .../go/smart_pointer_multi_typedef_runme.go | 2 +- + .../go/smart_pointer_overload_runme.go | 2 +- + .../go/smart_pointer_rename_runme.go | 2 +- + .../go/smart_pointer_simple_runme.go | 2 +- + .../smart_pointer_templatevariables_runme.go | 2 +- + .../go/smart_pointer_typedef_runme.go | 2 +- + Examples/test-suite/go/sneaky1_runme.go | 2 +- + .../go/special_variable_macros_runme.go | 2 +- + .../go/static_const_member_2_runme.go | 2 +- + .../go/struct_initialization_runme.go | 2 +- + Examples/test-suite/go/struct_rename_runme.go | 2 +- + Examples/test-suite/go/struct_value_runme.go | 2 +- + .../go/template_default_arg_runme.go | 2 +- + .../test-suite/go/template_extend1_runme.go | 2 +- + .../test-suite/go/template_extend2_runme.go | 2 +- + .../test-suite/go/template_inherit_runme.go | 2 +- + Examples/test-suite/go/template_ns4_runme.go | 2 +- + Examples/test-suite/go/template_ns_runme.go | 2 +- + .../test-suite/go/template_opaque_runme.go | 2 +- + .../test-suite/go/template_ref_type_runme.go | 2 +- + .../test-suite/go/template_rename_runme.go | 2 +- + .../test-suite/go/template_static_runme.go | 2 +- + .../go/template_tbase_template_runme.go | 2 +- + .../go/template_type_namespace_runme.go | 2 +- + .../go/template_typedef_cplx3_runme.go | 2 +- + .../go/template_typedef_cplx4_runme.go | 2 +- + .../test-suite/go/threads_exception_runme.go | 2 +- + Examples/test-suite/go/typedef_class_runme.go | 2 +- + .../test-suite/go/typedef_funcptr_runme.go | 2 +- + .../test-suite/go/typedef_inherit_runme.go | 2 +- + Examples/test-suite/go/typedef_scope_runme.go | 2 +- + .../test-suite/go/typemap_namespace_runme.go | 2 +- + .../test-suite/go/typemap_ns_using_runme.go | 2 +- + .../go/typemap_out_optimal_runme.go | 2 +- + Examples/test-suite/go/typename_runme.go | 2 +- + Examples/test-suite/go/unions_runme.go | 2 +- + Examples/test-suite/go/using1_runme.go | 2 +- + Examples/test-suite/go/using2_runme.go | 2 +- + .../test-suite/go/using_composition_runme.go | 2 +- + Examples/test-suite/go/using_extend_runme.go | 2 +- + Examples/test-suite/go/using_inherit_runme.go | 2 +- + Examples/test-suite/go/using_private_runme.go | 2 +- + .../test-suite/go/using_protected_runme.go | 2 +- + .../test-suite/go/varargs_overload_runme.go | 2 +- + Examples/test-suite/go/varargs_runme.go | 2 +- + .../test-suite/go/virtual_derivation_runme.go | 2 +- + Examples/test-suite/go/virtual_poly_runme.go | 2 +- + Examples/test-suite/go/voidtest_runme.go | 2 +- + Examples/test-suite/go/wrapmacro_runme.go | 2 +- + configure.ac | 38 +---- + 167 files changed, 246 insertions(+), 392 deletions(-) + +diff --git a/Examples/Makefile.in b/Examples/Makefile.in +index 98be7873f..9e05d2763 100644 +--- a/Examples/Makefile.in ++++ b/Examples/Makefile.in +@@ -1436,34 +1436,20 @@ scilab_clean: + GO = @GO@ + GOGCC = @GOGCC@ + GCCGO = @GCCGO@ +-GO1 = @GO1@ +-GO12 = @GO12@ +-GO13 = @GO13@ +-GO15 = @GO15@ +-GOC = @GOC@ + GOOPT = @GOOPT@ + GCCGOOPT = @GCCGOOPT@ + GOVERSIONOPTION = @GOVERSIONOPTION@ + + GOSWIGARG = `if $(GOGCC) ; then echo -gccgo; fi` +-GOCOMPILEARG = `if $(GO15); then echo tool compile; elif $(GO1) ; then echo tool $(GOC:c=g) ; fi` `if $(GO13) || $(GO15); then echo -pack ; fi` + + GOSRCS = $(INTERFACE:.i=.go) + GOCSRCS = $(INTERFACE:.i=_gc.c) + +-GOLD = `if $(GO15); then echo link; else echo $(GOC:c=l); fi` +-GOTOOL = `if $(GO1) ; then echo go tool; fi` +-GOPACK = `if $(GO1) ; then echo go tool pack; else echo gopack; fi` +- + GOPACKAGE = $(notdir $(INTERFACE:.i=.a)) + + GOPATHPARENTDIR = gopath/$(GOMOD)/src + GOPATHDIR = $(GOPATHPARENTDIR)/$(INTERFACE:.i=) + +-GOOBJEXT = `if $(GO15); then echo o; else echo $(GOC:c=); fi` +-GOGCOBJS = $(GOSRCS:.go=.$(GOOBJEXT)) +-GOGCCOBJS = $(GOSRCS:.go=.@OBJEXT@) +- + # ---------------------------------------------------------------- + # Build a Go module (C) + # ---------------------------------------------------------------- +@@ -1478,49 +1464,13 @@ $(GOPATHPARENTDIR)/go.mod: + echo "go 1.12" >> $(GOPATHDIR)/go.mod + mv -f $(GOPATHDIR)/go.mod $(GOPATHPARENTDIR)/go.mod + +-go_nocgo: $(SRCDIR_SRCS) +- $(SWIG) -go -no-cgo $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) +- if $(GO12) || $(GO13) || $(GO15) || $(GOGCC); then \ +- $(CC) -g -c $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES); \ +- else \ +- $(CC) -g -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES); \ +- $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO); \ +- fi +- if $(GOGCC) ; then \ +- $(COMPILETOOL) $(GCCGO) -g -c -I . $(GOSRCS); \ +- else \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . $(GOSRCS); \ +- $(COMPILETOOL) $(GOTOOL) $(GOC) -I $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`} $(GOCSRCS); \ +- rm -f $(GOPACKAGE); \ +- if $(GO13) || $(GO15); then \ +- cp $(GOGCOBJS) $(GOPACKAGE); \ +- $(COMPILETOOL) $(GOPACK) r $(GOPACKAGE) $(GOCSRCS:.c=.$(GOOBJEXT)) $(OBJS) $(IOBJS); \ +- elif $(GO12); then \ +- $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)) $(OBJS) $(IOBJS); \ +- else \ +- $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)); \ +- fi; \ +- fi +- if test -f $(SRCDIR)$(RUNME).go; then \ +- if $(GOGCC) ; then \ +- $(COMPILETOOL) $(GCCGO) -g -c $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GCCGO) -o $(RUNME) $(RUNME).@OBJEXT@ $(GOGCCOBJS) $(OBJS) $(IOBJS); \ +- elif $(GO12) || $(GO13) || $(GO15); then \ +- $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -linkmode external -extld "$(CC)" -extldflags "$(CFLAGS) $(LDFLAGS)" -o $(RUNME) $(RUNME).$(GOOBJEXT); \ +- else \ +- $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $(RUNME) $(RUNME).$(GOOBJEXT); \ +- fi; \ +- fi +- + go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + $(SWIG) -go -import-prefix swigtests $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + @mkdir gopath 2>/dev/null || true + @mkdir gopath/$(GOMOD) 2>/dev/null || true + @mkdir gopath/$(GOMOD)/src 2>/dev/null || true + @mkdir $(GOPATHDIR) 2>/dev/null || true +- rm -f $(GOPATHDIR)/* ++ rm -rf $(GOPATHDIR)/* + cp $(ISRCS) $(GOPATHDIR)/ + if test -f $(IWRAP:.i=.h); then \ + cp $(IWRAP:.i=.h) $(GOPATHDIR)/; \ +@@ -1529,6 +1479,13 @@ go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + cp $(SRCDIR_SRCS) $(GOPATHDIR)/; \ + fi + cp $(GOSRCS) $(GOPATHDIR)/ ++ @if test -f $(SRCDIR)$(RUNME).go; then \ ++ mkdir gopath/$(GOMOD)/src/runme 2>/dev/null || true; \ ++ rm -f gopath/$(GOMOD)/src/runme/*; \ ++ fi ++ if test -f $(SRCDIR)$(RUNME).go; then \ ++ cp $(SRCDIR)/$(RUNME).go gopath/$(GOMOD)/src/runme/; \ ++ fi + GOPATH=`pwd`/gopath/$(GOMOD); \ + export GOPATH; \ + CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ +@@ -1537,82 +1494,29 @@ go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + export CGO_CFLAGS; \ + CGO_LDFLAGS="$(LDFLAGS) -lm"; \ + export CGO_LDFLAGS; \ +- (cd $(GOPATHDIR)/ && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)) ++ (cd $(GOPATHDIR)/ && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)); \ + if $(GOGCC); then \ + cp $(GOPATHDIR)/$(GOPACKAGE) $(GOPATHDIR)/$(GOPACKAGE:.a=.gox); \ +- fi ++ fi; \ + if test -f $(SRCDIR)$(RUNME).go; then \ +- if $(GOGCC) ; then \ +- $(COMPILETOOL) $(GCCGO) -c -g -I $(GOPATHDIR) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GCCGO) -o $(RUNME) $(RUNME).@OBJEXT@ $(GOPATHDIR)/$(GOPACKAGE); \ +- elif $(GO12) || $(GO13) || $(GO15); then \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I $(GOPATHDIR) -o $(RUNME).$(GOOBJEXT) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L $(GOPATHDIR) -linkmode external -extld "$(CC)" -extldflags "$(CFLAGS) $(LDFLAGS)" -o $(RUNME) $(RUNME).$(GOOBJEXT); \ +- else \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $(RUNME) $(RUNME).$(GOOBJEXT); \ +- fi; \ ++ mkdir gopath/$(GOMOD)/src/swigtests 2>/dev/null || true; \ ++ mkdir gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=) 2>/dev/null || true; \ ++ cp $(GOPATHDIR)/* gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=)/; \ ++ (cd gopath/$(GOMOD)/src/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme $(RUNME).go); \ ++ cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ + fi + + # ---------------------------------------------------------------- + # Build a Go module (C++) + # ---------------------------------------------------------------- + +-go_cpp_nocgo: $(SRCDIR_SRCS) +- $(SWIG) -go -c++ -no-cgo $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) +- if $(GO12) || $(GO13) || $(GO15) || $(GOGCC); then \ +- if test -n "$(SRCDIR_CXXSRCS)$(SRCDIR_SRCS)"; then \ +- $(CXX) -g -c $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_CXXSRCS) $(SRCDIR_SRCS) $(INCLUDES); \ +- fi; \ +- $(foreach f,$(ICXXSRCS), \ +- $(CXX) -g -c $(CPPFLAGS) $(CXXFLAGS) -o $(addsuffix .@OBJEXT@,$(basename $f)) $f $(INCLUDES); \ +- ) \ +- else \ +- $(CXX) -g -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES); \ +- $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO); \ +- fi +- if ! $(GOGCC) ; then \ +- $(foreach f,$(GOSRCS), \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . -o $(addsuffix .$(GOOBJEXT),$(basename $f)) $f \ +- ); \ +- $(foreach f,$(GOCSRCS), \ +- $(COMPILETOOL) $(GOTOOL) $(GOC) -I $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`} \ +- -o $(addsuffix .$(GOOBJEXT),$(basename $f)) $f; \ +- ) \ +- rm -f $(GOPACKAGE); \ +- if $(GO13) || $(GO15); then \ +- cp $(GOGCOBJS) $(GOPACKAGE); \ +- $(COMPILETOOL) $(GOPACK) r $(GOPACKAGE) $(GOCSRCS:.c=.$(GOOBJEXT)) $(OBJS) $(IOBJS); \ +- elif $(GO12); then \ +- $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)) $(OBJS) $(IOBJS); \ +- else \ +- $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)); \ +- fi; \ +- else \ +- $(foreach f,$(GOSRCS), \ +- $(COMPILETOOL) $(GCCGO) -g -c -I . -o $(addsuffix .@OBJEXT@,$(basename $f)) $f \ +- ); \ +- fi +- if test -f $(SRCDIR)$(RUNME).go; then \ +- if $(GOGCC) ; then \ +- $(COMPILETOOL) $(GCCGO) -g -c $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GCCGO) -o $(RUNME) $(RUNME).@OBJEXT@ $(GOGCCOBJS) $(OBJS) $(IOBJS) -lstdc++; \ +- elif $(GO12) || $(GO13) || $(GO15); then \ +- $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -linkmode external -extld "$(CXX)" -extldflags "$(CXXFLAGS) $(LDFLAGS)" -o $(RUNME) $(RUNME).$(GOOBJEXT); \ +- else \ +- $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $(RUNME) $(RUNME).$(GOOBJEXT); \ +- fi; \ +- fi +- + go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + $(SWIG) -go -c++ -import-prefix swigtests $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + @mkdir gopath 2>/dev/null || true + @mkdir gopath/$(GOMOD) 2>/dev/null || true + @mkdir gopath/$(GOMOD)/src 2>/dev/null || true + @mkdir $(GOPATHDIR) 2>/dev/null || true +- rm -f $(GOPATHDIR)/* ++ rm -rf $(GOPATHDIR)/* + cp $(ICXXSRCS) $(GOPATHDIR)/ + if test -f $(IWRAP:.i=.h); then \ + cp $(IWRAP:.i=.h) $(GOPATHDIR)/; \ +@@ -1624,6 +1528,13 @@ go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + cp $(SRCDIR_SRCS) $(GOPATHDIR)/; \ + fi + cp $(GOSRCS) $(GOPATHDIR)/ ++ @if test -f $(SRCDIR)$(RUNME).go; then \ ++ mkdir gopath/$(GOMOD)/src/runme 2>/dev/null || true; \ ++ rm -f gopath/$(GOMOD)/src/runme/*; \ ++ fi ++ if test -f $(SRCDIR)$(RUNME).go; then \ ++ cp $(SRCDIR)/$(RUNME).go gopath/$(GOMOD)/src/runme/; \ ++ fi + GOPATH=`pwd`/gopath/$(GOMOD); \ + export GOPATH; \ + CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ +@@ -1634,21 +1545,16 @@ go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + export CGO_CXXFLAGS; \ + CGO_LDFLAGS="$(LDFLAGS) -lm"; \ + export CGO_LDFLAGS; \ +- (cd $(GOPATHDIR) && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)) ++ (cd $(GOPATHDIR) && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)); \ + if $(GOGCC); then \ + cp $(GOPATHDIR)/$(GOPACKAGE) $(GOPATHDIR)/$(GOPACKAGE:.a=.gox); \ +- fi ++ fi; \ + if test -f $(SRCDIR)$(RUNME).go; then \ +- if $(GOGCC) ; then \ +- $(COMPILETOOL) $(GCCGO) -g -c -I $(GOPATHDIR) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GCCGO) -o $(RUNME) $(RUNME).@OBJEXT@ $(GOPATHDIR)/$(GOPACKAGE) -lstdc++; \ +- elif $(GO12) || $(GO13) || $(GO15); then \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I $(GOPATHDIR) -o $(RUNME).$(GOOBJEXT) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L $(GOPATHDIR) -linkmode external -extld "$(CXX)" -extldflags "$(CXXFLAGS) $(LDFLAGS)" -o $(RUNME) $(RUNME).$(GOOBJEXT); \ +- else \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $(RUNME) $(RUNME).$(GOOBJEXT); \ +- fi; \ ++ mkdir gopath/$(GOMOD)/src/swigtests 2>/dev/null || true; \ ++ mkdir gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=) 2>/dev/null || true; \ ++ cp $(GOPATHDIR)/* gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=)/; \ ++ (cd gopath/$(GOMOD)/src/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme $(RUNME).go); \ ++ cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ + fi + + # ----------------------------------------------------------------- +diff --git a/Examples/go/callback/runme.go b/Examples/go/callback/runme.go +index 2c1d81343..7c9ffd681 100644 +--- a/Examples/go/callback/runme.go ++++ b/Examples/go/callback/runme.go +@@ -3,7 +3,7 @@ package main + import ( + "fmt" + +- . "example" ++ . "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/class/runme.go b/Examples/go/class/runme.go +index d2f292ed4..a09a18247 100644 +--- a/Examples/go/class/runme.go ++++ b/Examples/go/class/runme.go +@@ -5,7 +5,7 @@ package main + import ( + "fmt" + +- . "example" ++ . "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/constants/runme.go b/Examples/go/constants/runme.go +index d56fd62c8..57ef21a8b 100644 +--- a/Examples/go/constants/runme.go ++++ b/Examples/go/constants/runme.go +@@ -3,7 +3,7 @@ package main + import ( + "fmt" + +- "example" ++ "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/director/runme.go b/Examples/go/director/runme.go +index 0e0da07bd..e28eccba6 100644 +--- a/Examples/go/director/runme.go ++++ b/Examples/go/director/runme.go +@@ -4,7 +4,7 @@ import ( + "fmt" + "os" + +- "example" ++ "swigtests/example" + ) + + func Compare(name string, got string, exp string) error { +diff --git a/Examples/go/enum/runme.go b/Examples/go/enum/runme.go +index 50887056e..c0642e0b5 100644 +--- a/Examples/go/enum/runme.go ++++ b/Examples/go/enum/runme.go +@@ -3,7 +3,7 @@ package main + import ( + "fmt" + +- . "example" ++ . "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/extend/runme.go b/Examples/go/extend/runme.go +index af64a6e5d..716af52c5 100644 +--- a/Examples/go/extend/runme.go ++++ b/Examples/go/extend/runme.go +@@ -5,7 +5,7 @@ package main + import ( + "fmt" + +- . "example" ++ . "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/funcptr/runme.go b/Examples/go/funcptr/runme.go +index 4b20db4fb..87ec7d495 100644 +--- a/Examples/go/funcptr/runme.go ++++ b/Examples/go/funcptr/runme.go +@@ -3,7 +3,7 @@ package main + import ( + "fmt" + +- . "example" ++ . "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/multimap/runme.go b/Examples/go/multimap/runme.go +index 571fac7c2..2f8b20568 100644 +--- a/Examples/go/multimap/runme.go ++++ b/Examples/go/multimap/runme.go +@@ -3,7 +3,7 @@ package main + import ( + "fmt" + +- . "example" ++ . "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/pointer/runme.go b/Examples/go/pointer/runme.go +index 0cf340f51..73c6b2b3c 100644 +--- a/Examples/go/pointer/runme.go ++++ b/Examples/go/pointer/runme.go +@@ -3,7 +3,7 @@ package main + import ( + "fmt" + +- . "example" ++ . "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/reference/runme.go b/Examples/go/reference/runme.go +index 9999733b3..7391d9c8b 100644 +--- a/Examples/go/reference/runme.go ++++ b/Examples/go/reference/runme.go +@@ -5,7 +5,7 @@ package main + import ( + "fmt" + +- . "example" ++ . "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/simple/runme.go b/Examples/go/simple/runme.go +index 0bd4657f9..5bc055f2e 100644 +--- a/Examples/go/simple/runme.go ++++ b/Examples/go/simple/runme.go +@@ -3,7 +3,7 @@ package main + import ( + "fmt" + +- "example" ++ "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/template/runme.go b/Examples/go/template/runme.go +index 347795377..e000b1579 100644 +--- a/Examples/go/template/runme.go ++++ b/Examples/go/template/runme.go +@@ -5,7 +5,7 @@ package main + import ( + "fmt" + +- . "example" ++ . "swigtests/example" + ) + + func main() { +diff --git a/Examples/go/variables/runme.go b/Examples/go/variables/runme.go +index e2dd0c67f..85ca8c638 100644 +--- a/Examples/go/variables/runme.go ++++ b/Examples/go/variables/runme.go +@@ -5,7 +5,7 @@ package main + import ( + "fmt" + +- "example" ++ "swigtests/example" + ) + + func main() { +diff --git a/Examples/test-suite/go/Makefile.in b/Examples/test-suite/go/Makefile.in +index d07a56bec..8283327d6 100644 +--- a/Examples/test-suite/go/Makefile.in ++++ b/Examples/test-suite/go/Makefile.in +@@ -6,24 +6,10 @@ LANGUAGE = go + GO = @GO@ + GOGCC = @GOGCC@ + GCCGO = @GCCGO@ +-GO1 = @GO1@ +-GO12 = @GO12@ +-GO13 = @GO13@ +-GO15 = @GO15@ +-GOC = @GOC@ + GOVERSIONOPTION = @GOVERSIONOPTION@ + host = @host@ + SCRIPTSUFFIX = _runme.go + +-GOCOMPILEARG = `if $(GO15); then echo tool compile; elif $(GO1); then echo tool $(GOC:c=g); fi` +-GOLD = `if $(GO15); then echo link; else echo $(GOC:c=l); fi` +-GOTOOL = `if $(GO1) ; then echo go tool; fi` +-GOPACK = `if $(GO1) ; then echo go tool pack; else echo gopack; fi` +- +-GOOBJEXT = `if $(GO15); then echo o; else echo $(GOC:c=); fi` +- +-OSXOLDGOLINKFLAGS = `if [ -n "\`$(GO) $(GOVERSIONOPTION) | grep -E 'go1($|.0|.1|.2|.3)'\`" ] && [ -n "\`echo $(host) | grep darwin\`" ]; then echo "-Wl,-U,__cgo_topofstack"; fi` +- + SO = @SO@ + + srcdir = @srcdir@ +@@ -49,27 +35,11 @@ INCLUDES = -I$(abs_top_srcdir)/$(EXAMPLES)/$(TEST_SUITE) + $(setup) + +$(swig_and_compile_cpp) + $(run_testcase_cpp) +- if ! $(GO15); then \ +- $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' CXXSRCS='$(CXXSRCS)' \ +- SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ +- INCLUDES='$(INCLUDES)' SWIGOPT='$(SWIGOPT)' NOLINK=true \ +- TARGET='$(TARGETPREFIX)$*$(TARGETSUFFIX)' INTERFACEDIR='$(INTERFACEDIR)' INTERFACE='$*.i' \ +- $(LANGUAGE)$(VARIANT)_cpp_nocgo && \ +- $(run_testcase_cpp); \ +- fi + + %.ctest: + $(setup) + +$(swig_and_compile_c) + $(run_testcase) +- if ! $(GO15); then \ +- $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' CSRCS='$(CSRCS)' \ +- SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ +- INCLUDES='$(INCLUDES)' SWIGOPT='$(SWIGOPT)' NOLINK=true \ +- TARGET='$(TARGETPREFIX)$*$(TARGETSUFFIX)' INTERFACEDIR='$(INTERFACEDIR)' INTERFACE='$*.i' \ +- $(LANGUAGE)$(VARIANT)_nocgo && \ +- $(run_testcase); \ +- fi + + %.multicpptest: + $(setup) +@@ -136,54 +106,66 @@ go_subdir_import.multicpptest: + # Runs the testcase. + run_testcase = \ + if test -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); then \ +- if $(GOGCC) ; then \ +- $(COMPILETOOL) $(GCCGO) -c -g -I gopath/src/$* $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ +- $(COMPILETOOL) $(GCCGO) -o $*_runme $(SCRIPTPREFIX)$*_runme.@OBJEXT@ gopath/src/$*/$*.a; \ +- elif $(GO12) || $(GO13) || $(GO15); then \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I gopath/src/$* $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L gopath/src/$* -linkmode external -extld $(CC) -extldflags "$(CFLAGS) $(OSXOLDGOLINKFLAGS)" -o $*_runme $(SCRIPTPREFIX)$*_runme.$(GOOBJEXT); \ +- else \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L . -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $*_runme $(SCRIPTPREFIX)$*_runme.$(GOOBJEXT); \ +- fi && \ ++ GOPATH=`pwd`/gopath/; \ ++ export GOPATH; \ ++ CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ ++ export CGO_CPPFLAGS; \ ++ CGO_CFLAGS="$(CFLAGS)"; \ ++ export CGO_CFLAGS; \ ++ CGO_CXXFLAGS="$(CXXFLAGS)"; \ ++ export CGO_CXXFLAGS; \ ++ CGO_LDFLAGS="$(LDFLAGS) -lm"; \ ++ export CGO_LDFLAGS; \ ++ mkdir gopath/src/swigtests 2>/dev/null || true; \ ++ mkdir gopath/src/swigtests/$* 2>/dev/null || true; \ ++ cp gopath/src/$*/* gopath/src/swigtests/$*/; \ ++ mkdir gopath/src/$*/runme 2>/dev/null || true; \ ++ cp $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) gopath/src/$*/runme/runme.go; \ ++ (cd gopath/src/$*/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme runme.go); \ ++ cp gopath/src/$*/runme/runme $*_runme; \ + env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./$*_runme; \ + fi + + run_testcase_cpp = \ + if test -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); then \ +- if $(GOGCC) ; then \ +- $(COMPILETOOL) $(GCCGO) -c -g -I gopath/src/$* $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ +- $(COMPILETOOL) $(GCCGO) -o $*_runme $(SCRIPTPREFIX)$*_runme.@OBJEXT@ gopath/src/$*/$*.a -lstdc++; \ +- elif $(GO12) || $(GO13) || $(GO15); then \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I gopath/src/$* $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L gopath/src/$* -linkmode external -extld $(CXX) -extldflags "$(CXXFLAGS) $(OSXOLDGOLINKFLAGS)" -o $*_runme $(SCRIPTPREFIX)$*_runme.$(GOOBJEXT); \ +- else \ +- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ +- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L . -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $*_runme $(SCRIPTPREFIX)$*_runme.$(GOOBJEXT); \ +- fi && \ ++ GOPATH=`pwd`/gopath/; \ ++ export GOPATH; \ ++ CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ ++ export CGO_CPPFLAGS; \ ++ CGO_CFLAGS="$(CFLAGS)"; \ ++ export CGO_CFLAGS; \ ++ CGO_CXXFLAGS="$(CXXFLAGS)"; \ ++ export CGO_CXXFLAGS; \ ++ CGO_LDFLAGS="$(LDFLAGS) -lm"; \ ++ export CGO_LDFLAGS; \ ++ mkdir gopath/src/swigtests 2>/dev/null || true; \ ++ mkdir gopath/src/swigtests/$* 2>/dev/null || true; \ ++ cp gopath/src/$*/* gopath/src/swigtests/$*/; \ ++ mkdir gopath/src/$*/runme 2>/dev/null || true; \ ++ cp $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) gopath/src/$*/runme/runme.go; \ ++ (cd gopath/src/$*/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme runme.go); \ ++ cp gopath/src/$*/runme/runme $*_runme; \ + env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./$*_runme; \ + fi + + run_multi_testcase = \ + if test -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); then \ +- if $(GO15) || $(GOGCC); then \ +- files=`cat $(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$*.list`; \ +- mkdir gopath/$*/src/$* 2>/dev/null || true; \ +- cp $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) gopath/$*/src/$*; \ +- GOPATH="`pwd`/gopath/$*"; \ +- export GOPATH; \ +- CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) `for f in $$files; do echo -I ../$$f; done`"; \ +- export CGO_CPPFLAGS; \ +- CGO_CFLAGS="$(CFLAGS)"; \ +- export CGO_CFLAGS; \ +- CGO_CXXFLAGS="$(CXXFLAGS)"; \ +- export CGO_CXXFLAGS; \ +- CGO_LDFLAGS="$(LDFLAGS) -lm"; \ +- export CGO_LDFLAGS; \ +- (cd gopath/$*/src/$* && \ +- $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o ../../../../$*_runme) && \ +- env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./$*_runme; \ +- fi; \ ++ files=`cat $(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$*.list`; \ ++ mkdir gopath/$*/src/$* 2>/dev/null || true; \ ++ cp $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) gopath/$*/src/$*; \ ++ GOPATH="`pwd`/gopath/$*"; \ ++ export GOPATH; \ ++ CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) `for f in $$files; do echo -I ../$$f; done`"; \ ++ export CGO_CPPFLAGS; \ ++ CGO_CFLAGS="$(CFLAGS)"; \ ++ export CGO_CFLAGS; \ ++ CGO_CXXFLAGS="$(CXXFLAGS)"; \ ++ export CGO_CXXFLAGS; \ ++ CGO_LDFLAGS="$(LDFLAGS) -lm"; \ ++ export CGO_LDFLAGS; \ ++ (cd gopath/$*/src/$* && \ ++ $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o ../../../../$*_runme) && \ ++ env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./$*_runme; \ + fi + + %.clean: +diff --git a/Examples/test-suite/go/abstract_access_runme.go b/Examples/test-suite/go/abstract_access_runme.go +index 5102236f9..0a0e56fef 100644 +--- a/Examples/test-suite/go/abstract_access_runme.go ++++ b/Examples/test-suite/go/abstract_access_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "abstract_access" ++import "swigtests/abstract_access" + + func main() { + d := abstract_access.NewD() +diff --git a/Examples/test-suite/go/abstract_typedef2_runme.go b/Examples/test-suite/go/abstract_typedef2_runme.go +index 76a5fc8de..5e2ed1e7a 100644 +--- a/Examples/test-suite/go/abstract_typedef2_runme.go ++++ b/Examples/test-suite/go/abstract_typedef2_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "abstract_typedef2" ++import "swigtests/abstract_typedef2" + + func main() { + abstract_typedef2.NewA_UF() +diff --git a/Examples/test-suite/go/abstract_typedef_runme.go b/Examples/test-suite/go/abstract_typedef_runme.go +index 56aaa613f..1ad49f59d 100644 +--- a/Examples/test-suite/go/abstract_typedef_runme.go ++++ b/Examples/test-suite/go/abstract_typedef_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "abstract_typedef" ++import "swigtests/abstract_typedef" + + func main() { + e := abstract_typedef.NewEngine() +diff --git a/Examples/test-suite/go/abstract_virtual_runme.go b/Examples/test-suite/go/abstract_virtual_runme.go +index e19eac27d..d333d50b3 100644 +--- a/Examples/test-suite/go/abstract_virtual_runme.go ++++ b/Examples/test-suite/go/abstract_virtual_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "abstract_virtual" ++import "swigtests/abstract_virtual" + + func main() { + abstract_virtual.NewD() +diff --git a/Examples/test-suite/go/argout_runme.go b/Examples/test-suite/go/argout_runme.go +index bb8ab9ed2..b2edf54b6 100644 +--- a/Examples/test-suite/go/argout_runme.go ++++ b/Examples/test-suite/go/argout_runme.go +@@ -1,6 +1,6 @@ + package main + +-import wrap "argout" ++import wrap "swigtests/argout" + + func main() { + ip := wrap.New_intp() +diff --git a/Examples/test-suite/go/array_member_runme.go b/Examples/test-suite/go/array_member_runme.go +index 4f029db98..d8c3896ee 100644 +--- a/Examples/test-suite/go/array_member_runme.go ++++ b/Examples/test-suite/go/array_member_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "array_member" ++import . "swigtests/array_member" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/arrays_global_runme.go b/Examples/test-suite/go/arrays_global_runme.go +index 35b049d9a..9c4a9e57a 100644 +--- a/Examples/test-suite/go/arrays_global_runme.go ++++ b/Examples/test-suite/go/arrays_global_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "arrays_global" ++import . "swigtests/arrays_global" + + func main() { + SetArray_i(GetArray_const_i()) +diff --git a/Examples/test-suite/go/char_binary_runme.go b/Examples/test-suite/go/char_binary_runme.go +index d47d616af..3c8c2d72d 100644 +--- a/Examples/test-suite/go/char_binary_runme.go ++++ b/Examples/test-suite/go/char_binary_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "char_binary" ++import . "swigtests/char_binary" + + func main() { + t := NewTest() +diff --git a/Examples/test-suite/go/class_ignore_runme.go b/Examples/test-suite/go/class_ignore_runme.go +index 24261c637..11cf81d91 100644 +--- a/Examples/test-suite/go/class_ignore_runme.go ++++ b/Examples/test-suite/go/class_ignore_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "class_ignore" ++import "swigtests/class_ignore" + + func main() { + a := class_ignore.NewBar() +diff --git a/Examples/test-suite/go/class_scope_weird_runme.go b/Examples/test-suite/go/class_scope_weird_runme.go +index a42bdad21..477699061 100644 +--- a/Examples/test-suite/go/class_scope_weird_runme.go ++++ b/Examples/test-suite/go/class_scope_weird_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "class_scope_weird" ++import "swigtests/class_scope_weird" + + func main() { + f := class_scope_weird.NewFoo() +diff --git a/Examples/test-suite/go/compactdefaultargs_runme.go b/Examples/test-suite/go/compactdefaultargs_runme.go +index fe6224ca2..c9e90087f 100644 +--- a/Examples/test-suite/go/compactdefaultargs_runme.go ++++ b/Examples/test-suite/go/compactdefaultargs_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "compactdefaultargs" ++import . "swigtests/compactdefaultargs" + + func main() { + defaults1 := NewDefaults1(1000) +diff --git a/Examples/test-suite/go/constover_runme.go b/Examples/test-suite/go/constover_runme.go +index 6c837095a..51d965e7f 100644 +--- a/Examples/test-suite/go/constover_runme.go ++++ b/Examples/test-suite/go/constover_runme.go +@@ -4,7 +4,7 @@ import ( + "fmt" + "os" + +- "constover" ++ "swigtests/constover" + ) + + func main() { +diff --git a/Examples/test-suite/go/constructor_copy_runme.go b/Examples/test-suite/go/constructor_copy_runme.go +index 68c428853..ca4725549 100644 +--- a/Examples/test-suite/go/constructor_copy_runme.go ++++ b/Examples/test-suite/go/constructor_copy_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "constructor_copy" ++import . "swigtests/constructor_copy" + + func main() { + f1 := NewFoo1(3) +diff --git a/Examples/test-suite/go/contract_runme.go b/Examples/test-suite/go/contract_runme.go +index b028855c3..7c9d0979e 100644 +--- a/Examples/test-suite/go/contract_runme.go ++++ b/Examples/test-suite/go/contract_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "contract" ++import "swigtests/contract" + + func main() { + contract.Test_preassert(1, 2) +diff --git a/Examples/test-suite/go/cpp11_strongly_typed_enumerations_runme.go b/Examples/test-suite/go/cpp11_strongly_typed_enumerations_runme.go +index f9ca74a1e..926b6f756 100644 +--- a/Examples/test-suite/go/cpp11_strongly_typed_enumerations_runme.go ++++ b/Examples/test-suite/go/cpp11_strongly_typed_enumerations_runme.go +@@ -1,7 +1,7 @@ + package main + + import "fmt" +-import . "cpp11_strongly_typed_enumerations" ++import . "swigtests/cpp11_strongly_typed_enumerations" + + func enumCheck(actual int, expected int) int { + if actual != expected { +diff --git a/Examples/test-suite/go/cpp_enum_runme.go b/Examples/test-suite/go/cpp_enum_runme.go +index 8906dd4f1..9b8930a44 100644 +--- a/Examples/test-suite/go/cpp_enum_runme.go ++++ b/Examples/test-suite/go/cpp_enum_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "cpp_enum" ++import "swigtests/cpp_enum" + + func main() { + f := cpp_enum.NewFoo() +diff --git a/Examples/test-suite/go/cpp_namespace_runme.go b/Examples/test-suite/go/cpp_namespace_runme.go +index aecdd9543..71affc57d 100644 +--- a/Examples/test-suite/go/cpp_namespace_runme.go ++++ b/Examples/test-suite/go/cpp_namespace_runme.go +@@ -1,7 +1,7 @@ + // Note: This example assumes that namespaces are flattened + package main + +-import "cpp_namespace" ++import "swigtests/cpp_namespace" + + func main() { + n := cpp_namespace.Fact(4) +diff --git a/Examples/test-suite/go/cpp_static_runme.go b/Examples/test-suite/go/cpp_static_runme.go +index 1ad981a60..d482298eb 100644 +--- a/Examples/test-suite/go/cpp_static_runme.go ++++ b/Examples/test-suite/go/cpp_static_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "cpp_static" ++import . "swigtests/cpp_static" + + func main() { + StaticFunctionTestStatic_func() +diff --git a/Examples/test-suite/go/default_args_runme.go b/Examples/test-suite/go/default_args_runme.go +index a39f95716..5b6f404e3 100644 +--- a/Examples/test-suite/go/default_args_runme.go ++++ b/Examples/test-suite/go/default_args_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "default_args" ++import "swigtests/default_args" + + func main() { + if default_args.StaticsStaticmethod() != 60 { +diff --git a/Examples/test-suite/go/default_constructor_runme.go b/Examples/test-suite/go/default_constructor_runme.go +index eeac7eaf8..90d960143 100644 +--- a/Examples/test-suite/go/default_constructor_runme.go ++++ b/Examples/test-suite/go/default_constructor_runme.go +@@ -1,6 +1,6 @@ + package main + +-import dc "default_constructor" ++import dc "swigtests/default_constructor" + + func main() { + a := dc.NewA() +diff --git a/Examples/test-suite/go/director_alternating_runme.go b/Examples/test-suite/go/director_alternating_runme.go +index b4793aa8f..2df31db82 100644 +--- a/Examples/test-suite/go/director_alternating_runme.go ++++ b/Examples/test-suite/go/director_alternating_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "director_alternating" ++import . "swigtests/director_alternating" + + func main() { + id := GetBar().Id() +diff --git a/Examples/test-suite/go/director_basic_runme.go b/Examples/test-suite/go/director_basic_runme.go +index 360424d9b..c308f2520 100644 +--- a/Examples/test-suite/go/director_basic_runme.go ++++ b/Examples/test-suite/go/director_basic_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "director_basic" ++import "swigtests/director_basic" + + type GoFoo struct{} + +diff --git a/Examples/test-suite/go/director_classic_runme.go b/Examples/test-suite/go/director_classic_runme.go +index 230c9638d..d8acc1337 100644 +--- a/Examples/test-suite/go/director_classic_runme.go ++++ b/Examples/test-suite/go/director_classic_runme.go +@@ -1,7 +1,7 @@ + package main + + import "fmt" +-import . "director_classic" ++import . "swigtests/director_classic" + + type TargetLangPerson struct{} // From Person + func (p *TargetLangPerson) Id() string { +diff --git a/Examples/test-suite/go/director_default_runme.go b/Examples/test-suite/go/director_default_runme.go +index ac2aace1d..557d5c54b 100644 +--- a/Examples/test-suite/go/director_default_runme.go ++++ b/Examples/test-suite/go/director_default_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "director_default" ++import . "swigtests/director_default" + + func main() { + NewFoo() +diff --git a/Examples/test-suite/go/director_detect_runme.go b/Examples/test-suite/go/director_detect_runme.go +index 0c3c95fdc..f82a0c04a 100644 +--- a/Examples/test-suite/go/director_detect_runme.go ++++ b/Examples/test-suite/go/director_detect_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "director_detect" ++import "swigtests/director_detect" + + type MyBar struct { + val int +diff --git a/Examples/test-suite/go/director_enum_runme.go b/Examples/test-suite/go/director_enum_runme.go +index 002d425d2..3e67417b2 100644 +--- a/Examples/test-suite/go/director_enum_runme.go ++++ b/Examples/test-suite/go/director_enum_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "director_enum" ++import "swigtests/director_enum" + + type MyFoo struct{} // From director_enum.Foo + func (p *MyFoo) Say_hi(val director_enum.EnumDirectorHello) director_enum.EnumDirectorHello { +diff --git a/Examples/test-suite/go/director_exception_runme.go b/Examples/test-suite/go/director_exception_runme.go +index 55231ff16..167d75193 100644 +--- a/Examples/test-suite/go/director_exception_runme.go ++++ b/Examples/test-suite/go/director_exception_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "director_exception" ++import . "swigtests/director_exception" + + type Exception struct { + msg string +diff --git a/Examples/test-suite/go/director_extend_runme.go b/Examples/test-suite/go/director_extend_runme.go +index 27e55b997..adfb6ddb7 100644 +--- a/Examples/test-suite/go/director_extend_runme.go ++++ b/Examples/test-suite/go/director_extend_runme.go +@@ -5,7 +5,7 @@ + + package main + +-import . "director_extend" ++import . "swigtests/director_extend" + + func main() { + m := NewSpObject() +diff --git a/Examples/test-suite/go/director_finalizer_runme.go b/Examples/test-suite/go/director_finalizer_runme.go +index d36a4ba33..5cd9d95e0 100644 +--- a/Examples/test-suite/go/director_finalizer_runme.go ++++ b/Examples/test-suite/go/director_finalizer_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "director_finalizer" ++import . "swigtests/director_finalizer" + + type MyFoo struct{} // From Foo + func DeleteMyFoo(p Foo) { +diff --git a/Examples/test-suite/go/director_frob_runme.go b/Examples/test-suite/go/director_frob_runme.go +index 3985eb14b..7354fa76b 100644 +--- a/Examples/test-suite/go/director_frob_runme.go ++++ b/Examples/test-suite/go/director_frob_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "director_frob" ++import . "swigtests/director_frob" + + func main() { + foo := NewBravo() +diff --git a/Examples/test-suite/go/director_nested_runme.go b/Examples/test-suite/go/director_nested_runme.go +index a1193ad59..b04893582 100644 +--- a/Examples/test-suite/go/director_nested_runme.go ++++ b/Examples/test-suite/go/director_nested_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "director_nested" ++import . "swigtests/director_nested" + + type A struct{} // From FooBar_int + func (p *A) Do_step() string { +diff --git a/Examples/test-suite/go/director_profile_runme.go b/Examples/test-suite/go/director_profile_runme.go +index a9bc7934b..da0ea219b 100644 +--- a/Examples/test-suite/go/director_profile_runme.go ++++ b/Examples/test-suite/go/director_profile_runme.go +@@ -1,7 +1,7 @@ + package main + + import "fmt" +-import "director_profile" ++import "swigtests/director_profile" + + type MyB struct{} // From director_profile.B + func (p *MyB) Vfi(a int) int { +diff --git a/Examples/test-suite/go/director_protected_runme.go b/Examples/test-suite/go/director_protected_runme.go +index bfd50c6b2..0012ccdb2 100644 +--- a/Examples/test-suite/go/director_protected_runme.go ++++ b/Examples/test-suite/go/director_protected_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "director_protected" ++import . "swigtests/director_protected" + + type FooBar struct{} // From Bar + func (p *FooBar) Ping() string { +diff --git a/Examples/test-suite/go/director_string_runme.go b/Examples/test-suite/go/director_string_runme.go +index f4f9cc150..0c73b6a29 100644 +--- a/Examples/test-suite/go/director_string_runme.go ++++ b/Examples/test-suite/go/director_string_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "director_string" ++import . "swigtests/director_string" + + type B struct { // From A + abi A +diff --git a/Examples/test-suite/go/director_unroll_runme.go b/Examples/test-suite/go/director_unroll_runme.go +index 6a919f656..560034c8a 100644 +--- a/Examples/test-suite/go/director_unroll_runme.go ++++ b/Examples/test-suite/go/director_unroll_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "director_unroll" ++import "swigtests/director_unroll" + + type MyFoo struct{} // From director_unroll.Foo + func (p *MyFoo) Ping() string { +diff --git a/Examples/test-suite/go/disown_runme.go b/Examples/test-suite/go/disown_runme.go +index 4484515fd..ba072a888 100644 +--- a/Examples/test-suite/go/disown_runme.go ++++ b/Examples/test-suite/go/disown_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "disown" ++import . "swigtests/disown" + + func main() { + a := NewA() +diff --git a/Examples/test-suite/go/dynamic_cast_runme.go b/Examples/test-suite/go/dynamic_cast_runme.go +index 46ba23698..213bc0ce5 100644 +--- a/Examples/test-suite/go/dynamic_cast_runme.go ++++ b/Examples/test-suite/go/dynamic_cast_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "dynamic_cast" ++import "swigtests/dynamic_cast" + + func main() { + f := dynamic_cast.NewFoo() +diff --git a/Examples/test-suite/go/empty_c_runme.go b/Examples/test-suite/go/empty_c_runme.go +index 1a1bd9cc5..f093103f6 100644 +--- a/Examples/test-suite/go/empty_c_runme.go ++++ b/Examples/test-suite/go/empty_c_runme.go +@@ -1,6 +1,6 @@ + package main + +-import _ "empty_c" ++import _ "swigtests/empty_c" + + func main() { + } +diff --git a/Examples/test-suite/go/empty_runme.go b/Examples/test-suite/go/empty_runme.go +index 681a6f3ad..03f423b8b 100644 +--- a/Examples/test-suite/go/empty_runme.go ++++ b/Examples/test-suite/go/empty_runme.go +@@ -1,6 +1,6 @@ + package main + +-import _ "empty" ++import _ "swigtests/empty" + + func main() { + } +diff --git a/Examples/test-suite/go/enum_template_runme.go b/Examples/test-suite/go/enum_template_runme.go +index c60a452d7..7f43eab68 100644 +--- a/Examples/test-suite/go/enum_template_runme.go ++++ b/Examples/test-suite/go/enum_template_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "enum_template" ++import "swigtests/enum_template" + + func main() { + if enum_template.MakeETest() != 1 { +diff --git a/Examples/test-suite/go/enums_runme.go b/Examples/test-suite/go/enums_runme.go +index 7a528b3e2..4a879a048 100644 +--- a/Examples/test-suite/go/enums_runme.go ++++ b/Examples/test-suite/go/enums_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "enums" ++import "swigtests/enums" + + func main() { + enums.Bar2(1) +diff --git a/Examples/test-suite/go/exception_order_runme.go b/Examples/test-suite/go/exception_order_runme.go +index 21dcff312..ee67712fc 100644 +--- a/Examples/test-suite/go/exception_order_runme.go ++++ b/Examples/test-suite/go/exception_order_runme.go +@@ -1,7 +1,7 @@ + package main + + import "strings" +-import . "exception_order" ++import . "swigtests/exception_order" + + func main() { + a := NewA() +diff --git a/Examples/test-suite/go/extend_placement_runme.go b/Examples/test-suite/go/extend_placement_runme.go +index 253ec6618..879589679 100644 +--- a/Examples/test-suite/go/extend_placement_runme.go ++++ b/Examples/test-suite/go/extend_placement_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "extend_placement" ++import "swigtests/extend_placement" + + func main() { + foo := extend_placement.NewFoo() +diff --git a/Examples/test-suite/go/extend_template_ns_runme.go b/Examples/test-suite/go/extend_template_ns_runme.go +index d005172a4..b1dd43a78 100644 +--- a/Examples/test-suite/go/extend_template_ns_runme.go ++++ b/Examples/test-suite/go/extend_template_ns_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "extend_template_ns" ++import . "swigtests/extend_template_ns" + + func main() { + f := NewFoo_One() +diff --git a/Examples/test-suite/go/extend_template_runme.go b/Examples/test-suite/go/extend_template_runme.go +index a5c4da4e1..4a6b7099b 100644 +--- a/Examples/test-suite/go/extend_template_runme.go ++++ b/Examples/test-suite/go/extend_template_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "extend_template" ++import "swigtests/extend_template" + + func main() { + f := extend_template.NewFoo_0() +diff --git a/Examples/test-suite/go/extend_variable_runme.go b/Examples/test-suite/go/extend_variable_runme.go +index 9425aee4d..278bffed6 100644 +--- a/Examples/test-suite/go/extend_variable_runme.go ++++ b/Examples/test-suite/go/extend_variable_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "extend_variable" ++import . "swigtests/extend_variable" + + func main() { + if FooBar != 42 { +diff --git a/Examples/test-suite/go/extern_c_runme.go b/Examples/test-suite/go/extern_c_runme.go +index 9bc2cd0cc..1cbfd9d80 100644 +--- a/Examples/test-suite/go/extern_c_runme.go ++++ b/Examples/test-suite/go/extern_c_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "extern_c" ++import "swigtests/extern_c" + + func main() { + extern_c.RealFunction(2) +diff --git a/Examples/test-suite/go/friends_runme.go b/Examples/test-suite/go/friends_runme.go +index 2e34a4db0..b6b9e93f3 100644 +--- a/Examples/test-suite/go/friends_runme.go ++++ b/Examples/test-suite/go/friends_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "friends" ++import "swigtests/friends" + + func main() { + a := friends.NewA(2) +diff --git a/Examples/test-suite/go/fvirtual_runme.go b/Examples/test-suite/go/fvirtual_runme.go +index 86ef90f18..01b94f419 100644 +--- a/Examples/test-suite/go/fvirtual_runme.go ++++ b/Examples/test-suite/go/fvirtual_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "fvirtual" ++import . "swigtests/fvirtual" + + func main() { + sw := NewNodeSwitch() +diff --git a/Examples/test-suite/go/global_ns_arg_runme.go b/Examples/test-suite/go/global_ns_arg_runme.go +index e86aa6747..aeacd91a3 100644 +--- a/Examples/test-suite/go/global_ns_arg_runme.go ++++ b/Examples/test-suite/go/global_ns_arg_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "global_ns_arg" ++import . "swigtests/global_ns_arg" + + func main() { + Foo(1) +diff --git a/Examples/test-suite/go/go_director_inout_runme.go b/Examples/test-suite/go/go_director_inout_runme.go +index e6768a465..171b3c223 100644 +--- a/Examples/test-suite/go/go_director_inout_runme.go ++++ b/Examples/test-suite/go/go_director_inout_runme.go +@@ -1,7 +1,7 @@ + package main + + import ( +- wrap "go_director_inout" ++ wrap "swigtests/go_director_inout" + ) + + type GoMyClass struct {} +diff --git a/Examples/test-suite/go/go_inout_runme.go b/Examples/test-suite/go/go_inout_runme.go +index 4599aa104..2dc5b9908 100644 +--- a/Examples/test-suite/go/go_inout_runme.go ++++ b/Examples/test-suite/go/go_inout_runme.go +@@ -5,7 +5,7 @@ import ( + "fmt" + "reflect" + +- "go_inout" ++ "swigtests/go_inout" + ) + + type S struct { +diff --git a/Examples/test-suite/go/grouping_runme.go b/Examples/test-suite/go/grouping_runme.go +index f808e1286..d5f347579 100644 +--- a/Examples/test-suite/go/grouping_runme.go ++++ b/Examples/test-suite/go/grouping_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "grouping" ++import "swigtests/grouping" + + func main() { + x := grouping.Test1(42) +diff --git a/Examples/test-suite/go/import_nomodule_runme.go b/Examples/test-suite/go/import_nomodule_runme.go +index 48592df25..23680159d 100644 +--- a/Examples/test-suite/go/import_nomodule_runme.go ++++ b/Examples/test-suite/go/import_nomodule_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "import_nomodule" ++import . "swigtests/import_nomodule" + + func main() { + f := Create_Foo() +diff --git a/Examples/test-suite/go/inctest_runme.go b/Examples/test-suite/go/inctest_runme.go +index 3148abcd2..490721e75 100644 +--- a/Examples/test-suite/go/inctest_runme.go ++++ b/Examples/test-suite/go/inctest_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "inctest" ++import "swigtests/inctest" + + func main() { + inctest.NewA() +diff --git a/Examples/test-suite/go/inherit_member_runme.go b/Examples/test-suite/go/inherit_member_runme.go +index 6fd70cf80..10dabad96 100644 +--- a/Examples/test-suite/go/inherit_member_runme.go ++++ b/Examples/test-suite/go/inherit_member_runme.go +@@ -1,6 +1,6 @@ + package main + +-import wrap "inherit_member" ++import wrap "swigtests/inherit_member" + + func main() { + s := wrap.NewChild() +diff --git a/Examples/test-suite/go/inherit_missing_runme.go b/Examples/test-suite/go/inherit_missing_runme.go +index c70c48306..b4706e974 100644 +--- a/Examples/test-suite/go/inherit_missing_runme.go ++++ b/Examples/test-suite/go/inherit_missing_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "inherit_missing" ++import "swigtests/inherit_missing" + + func main() { + a := inherit_missing.New_Foo() +diff --git a/Examples/test-suite/go/input_runme.go b/Examples/test-suite/go/input_runme.go +index ddc2992fe..c5eb9e45d 100644 +--- a/Examples/test-suite/go/input_runme.go ++++ b/Examples/test-suite/go/input_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "input" ++import . "swigtests/input" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/keyword_rename_c_runme.go b/Examples/test-suite/go/keyword_rename_c_runme.go +index 26f2ea42b..28f6ddd12 100644 +--- a/Examples/test-suite/go/keyword_rename_c_runme.go ++++ b/Examples/test-suite/go/keyword_rename_c_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "keyword_rename_c" ++import "swigtests/keyword_rename_c" + + func main() { + keyword_rename_c.Xgo(1) +diff --git a/Examples/test-suite/go/keyword_rename_runme.go b/Examples/test-suite/go/keyword_rename_runme.go +index 7a40ff83d..f93c7ab14 100644 +--- a/Examples/test-suite/go/keyword_rename_runme.go ++++ b/Examples/test-suite/go/keyword_rename_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "keyword_rename" ++import "swigtests/keyword_rename" + + func main() { + keyword_rename.Xgo(1) +diff --git a/Examples/test-suite/go/li_attribute_runme.go b/Examples/test-suite/go/li_attribute_runme.go +index b502b8cea..0702b898f 100644 +--- a/Examples/test-suite/go/li_attribute_runme.go ++++ b/Examples/test-suite/go/li_attribute_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "li_attribute" ++import "swigtests/li_attribute" + + func main() { + aa := li_attribute.NewA(1, 2, 3) +diff --git a/Examples/test-suite/go/li_carrays_cpp_runme.go b/Examples/test-suite/go/li_carrays_cpp_runme.go +index cfc171284..a96291c7b 100644 +--- a/Examples/test-suite/go/li_carrays_cpp_runme.go ++++ b/Examples/test-suite/go/li_carrays_cpp_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "li_carrays_cpp" ++import . "swigtests/li_carrays_cpp" + + func main() { + d := NewDoubleArray(10) +diff --git a/Examples/test-suite/go/li_carrays_runme.go b/Examples/test-suite/go/li_carrays_runme.go +index 9128bbfd1..eefc6ad72 100644 +--- a/Examples/test-suite/go/li_carrays_runme.go ++++ b/Examples/test-suite/go/li_carrays_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "li_carrays" ++import . "swigtests/li_carrays" + + func main() { + d := NewDoubleArray(10) +diff --git a/Examples/test-suite/go/li_cdata_cpp_runme.go b/Examples/test-suite/go/li_cdata_cpp_runme.go +index daa5384f7..5849c50d4 100644 +--- a/Examples/test-suite/go/li_cdata_cpp_runme.go ++++ b/Examples/test-suite/go/li_cdata_cpp_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "li_cdata_cpp" ++import . "swigtests/li_cdata_cpp" + + func main() { + s := "ABC abc" +diff --git a/Examples/test-suite/go/li_cdata_runme.go b/Examples/test-suite/go/li_cdata_runme.go +index 9458dab43..0c3e591ce 100644 +--- a/Examples/test-suite/go/li_cdata_runme.go ++++ b/Examples/test-suite/go/li_cdata_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "li_cdata" ++import . "swigtests/li_cdata" + + func main() { + s := "ABC abc" +diff --git a/Examples/test-suite/go/li_cmalloc_runme.go b/Examples/test-suite/go/li_cmalloc_runme.go +index 5b9f9704a..fb1b009c3 100644 +--- a/Examples/test-suite/go/li_cmalloc_runme.go ++++ b/Examples/test-suite/go/li_cmalloc_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "li_cmalloc" ++import . "swigtests/li_cmalloc" + + func main() { + p := Malloc_int() +diff --git a/Examples/test-suite/go/li_cpointer_cpp_runme.go b/Examples/test-suite/go/li_cpointer_cpp_runme.go +index 0de57c624..f422b2310 100644 +--- a/Examples/test-suite/go/li_cpointer_cpp_runme.go ++++ b/Examples/test-suite/go/li_cpointer_cpp_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "li_cpointer_cpp" ++import . "swigtests/li_cpointer_cpp" + + func main() { + p := New_intp() +diff --git a/Examples/test-suite/go/li_cpointer_runme.go b/Examples/test-suite/go/li_cpointer_runme.go +index 0fe29e77d..1a83bc62f 100644 +--- a/Examples/test-suite/go/li_cpointer_runme.go ++++ b/Examples/test-suite/go/li_cpointer_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "li_cpointer" ++import . "swigtests/li_cpointer" + + func main() { + p := New_intp() +diff --git a/Examples/test-suite/go/li_std_map_runme.go b/Examples/test-suite/go/li_std_map_runme.go +index 5c5cc2e4c..019ac6e30 100644 +--- a/Examples/test-suite/go/li_std_map_runme.go ++++ b/Examples/test-suite/go/li_std_map_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "li_std_map" ++import "swigtests/li_std_map" + + func main() { + a1 := li_std_map.NewA(3) +diff --git a/Examples/test-suite/go/li_std_vector_ptr_runme.go b/Examples/test-suite/go/li_std_vector_ptr_runme.go +index d66ff19c6..9a62d3796 100644 +--- a/Examples/test-suite/go/li_std_vector_ptr_runme.go ++++ b/Examples/test-suite/go/li_std_vector_ptr_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "li_std_vector_ptr" ++import . "swigtests/li_std_vector_ptr" + import "fmt" + + func check(val1 int, val2 int) { +diff --git a/Examples/test-suite/go/member_pointer_runme.go b/Examples/test-suite/go/member_pointer_runme.go +index 731526b75..02789382e 100644 +--- a/Examples/test-suite/go/member_pointer_runme.go ++++ b/Examples/test-suite/go/member_pointer_runme.go +@@ -3,7 +3,7 @@ + package main + + import "fmt" +-import . "member_pointer" ++import . "swigtests/member_pointer" + + func check(what string, expected float64, actual float64) { + if expected != actual { +diff --git a/Examples/test-suite/go/memberin_extend_c_runme.go b/Examples/test-suite/go/memberin_extend_c_runme.go +index 0551acc90..696f08abb 100644 +--- a/Examples/test-suite/go/memberin_extend_c_runme.go ++++ b/Examples/test-suite/go/memberin_extend_c_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "memberin_extend_c" ++import "swigtests/memberin_extend_c" + + func main() { + t := memberin_extend_c.NewPerson() +diff --git a/Examples/test-suite/go/minherit_runme.go b/Examples/test-suite/go/minherit_runme.go +index 9b7873cb0..f1504af31 100644 +--- a/Examples/test-suite/go/minherit_runme.go ++++ b/Examples/test-suite/go/minherit_runme.go +@@ -1,7 +1,7 @@ + package main + + import "fmt" +-import "minherit" ++import "swigtests/minherit" + + func main() { + a := minherit.NewFoo() +diff --git a/Examples/test-suite/go/namespace_class_runme.go b/Examples/test-suite/go/namespace_class_runme.go +index 4c240b6a4..435ee868a 100644 +--- a/Examples/test-suite/go/namespace_class_runme.go ++++ b/Examples/test-suite/go/namespace_class_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "namespace_class" ++import . "swigtests/namespace_class" + + func main() { + EulerT3DToFrame(1, 1, 1) +diff --git a/Examples/test-suite/go/namespace_typemap_runme.go b/Examples/test-suite/go/namespace_typemap_runme.go +index 47e2b64f1..6da43331b 100644 +--- a/Examples/test-suite/go/namespace_typemap_runme.go ++++ b/Examples/test-suite/go/namespace_typemap_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "namespace_typemap" ++import . "swigtests/namespace_typemap" + + func main() { + if Stest1("hello") != "hello" { +diff --git a/Examples/test-suite/go/namespace_virtual_method_runme.go b/Examples/test-suite/go/namespace_virtual_method_runme.go +index a8cb38bad..7ac4d3304 100644 +--- a/Examples/test-suite/go/namespace_virtual_method_runme.go ++++ b/Examples/test-suite/go/namespace_virtual_method_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "namespace_virtual_method" ++import "swigtests/namespace_virtual_method" + + func main() { + _ = namespace_virtual_method.NewSpam() +diff --git a/Examples/test-suite/go/naturalvar_runme.go b/Examples/test-suite/go/naturalvar_runme.go +index ed47e9d2d..458745ec4 100644 +--- a/Examples/test-suite/go/naturalvar_runme.go ++++ b/Examples/test-suite/go/naturalvar_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "naturalvar" ++import . "swigtests/naturalvar" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/nested_workaround_runme.go b/Examples/test-suite/go/nested_workaround_runme.go +index 8b31a7f4b..f42b48764 100644 +--- a/Examples/test-suite/go/nested_workaround_runme.go ++++ b/Examples/test-suite/go/nested_workaround_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "nested_workaround" ++import . "swigtests/nested_workaround" + + func main() { + inner := NewInner(5) +diff --git a/Examples/test-suite/go/overload_complicated_runme.go b/Examples/test-suite/go/overload_complicated_runme.go +index ce9d124c8..c238d974f 100644 +--- a/Examples/test-suite/go/overload_complicated_runme.go ++++ b/Examples/test-suite/go/overload_complicated_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "overload_complicated" ++import . "swigtests/overload_complicated" + + func main() { + var pInt *int +diff --git a/Examples/test-suite/go/overload_copy_runme.go b/Examples/test-suite/go/overload_copy_runme.go +index 55ec4a333..9815d76ef 100644 +--- a/Examples/test-suite/go/overload_copy_runme.go ++++ b/Examples/test-suite/go/overload_copy_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "overload_copy" ++import . "swigtests/overload_copy" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/overload_extend2_runme.go b/Examples/test-suite/go/overload_extend2_runme.go +index db790989c..d549098ba 100644 +--- a/Examples/test-suite/go/overload_extend2_runme.go ++++ b/Examples/test-suite/go/overload_extend2_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "overload_extend2" ++import "swigtests/overload_extend2" + + func main() { + f := overload_extend2.NewFoo() +diff --git a/Examples/test-suite/go/overload_extend_c_runme.go b/Examples/test-suite/go/overload_extend_c_runme.go +index 4d3b2b6e1..93b91d9e1 100644 +--- a/Examples/test-suite/go/overload_extend_c_runme.go ++++ b/Examples/test-suite/go/overload_extend_c_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "overload_extend_c" ++import "swigtests/overload_extend_c" + + func main() { + f := overload_extend_c.NewFoo() +diff --git a/Examples/test-suite/go/overload_extend_runme.go b/Examples/test-suite/go/overload_extend_runme.go +index d73d6cf3c..c1435f376 100644 +--- a/Examples/test-suite/go/overload_extend_runme.go ++++ b/Examples/test-suite/go/overload_extend_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "overload_extend" ++import "swigtests/overload_extend" + + func main() { + f := overload_extend.NewFoo() +diff --git a/Examples/test-suite/go/overload_polymorphic_runme.go b/Examples/test-suite/go/overload_polymorphic_runme.go +index 12b9777e6..6a4301f46 100644 +--- a/Examples/test-suite/go/overload_polymorphic_runme.go ++++ b/Examples/test-suite/go/overload_polymorphic_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "overload_polymorphic" ++import "swigtests/overload_polymorphic" + + func main(){ + t := overload_polymorphic.NewDerived() +diff --git a/Examples/test-suite/go/overload_rename_runme.go b/Examples/test-suite/go/overload_rename_runme.go +index 3bd4a69c5..982b1786a 100644 +--- a/Examples/test-suite/go/overload_rename_runme.go ++++ b/Examples/test-suite/go/overload_rename_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "overload_rename" ++import "swigtests/overload_rename" + + func main() { + _ = overload_rename.NewFoo(float32(1)) +diff --git a/Examples/test-suite/go/overload_simple_runme.go b/Examples/test-suite/go/overload_simple_runme.go +index 3eb859bac..23a80bf69 100644 +--- a/Examples/test-suite/go/overload_simple_runme.go ++++ b/Examples/test-suite/go/overload_simple_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "overload_simple" ++import . "swigtests/overload_simple" + + func main() { + if Foo(3) != "foo:int" { +diff --git a/Examples/test-suite/go/overload_subtype_runme.go b/Examples/test-suite/go/overload_subtype_runme.go +index 45d5a025f..09f7a83f4 100644 +--- a/Examples/test-suite/go/overload_subtype_runme.go ++++ b/Examples/test-suite/go/overload_subtype_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "overload_subtype" ++import . "swigtests/overload_subtype" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/overload_template_fast_runme.go b/Examples/test-suite/go/overload_template_fast_runme.go +index 63809c0ff..3b348f366 100644 +--- a/Examples/test-suite/go/overload_template_fast_runme.go ++++ b/Examples/test-suite/go/overload_template_fast_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "overload_template_fast" ++import . "swigtests/overload_template_fast" + + func main() { + _ = Foo() +diff --git a/Examples/test-suite/go/overload_template_runme.go b/Examples/test-suite/go/overload_template_runme.go +index f3a08ecd6..b85afb4d1 100644 +--- a/Examples/test-suite/go/overload_template_runme.go ++++ b/Examples/test-suite/go/overload_template_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "overload_template" ++import . "swigtests/overload_template" + + func main() { + _ = Foo() +diff --git a/Examples/test-suite/go/preproc_runme.go b/Examples/test-suite/go/preproc_runme.go +index 3c55aae72..878305463 100644 +--- a/Examples/test-suite/go/preproc_runme.go ++++ b/Examples/test-suite/go/preproc_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "preproc" ++import "swigtests/preproc" + + func main() { + if preproc.GetEndif() != 1 { +diff --git a/Examples/test-suite/go/primitive_ref_runme.go b/Examples/test-suite/go/primitive_ref_runme.go +index a1de2f8a5..8dcf9f5a9 100644 +--- a/Examples/test-suite/go/primitive_ref_runme.go ++++ b/Examples/test-suite/go/primitive_ref_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "primitive_ref" ++import . "swigtests/primitive_ref" + + func main() { + if Ref_int(3) != 3 { +diff --git a/Examples/test-suite/go/profiletest_runme.go b/Examples/test-suite/go/profiletest_runme.go +index c2b922ba3..68509f550 100644 +--- a/Examples/test-suite/go/profiletest_runme.go ++++ b/Examples/test-suite/go/profiletest_runme.go +@@ -1,7 +1,7 @@ + package main + + import "fmt" +-import "profiletest" ++import "swigtests/profiletest" + + func main() { + a := profiletest.NewA() +diff --git a/Examples/test-suite/go/refcount_runme.go b/Examples/test-suite/go/refcount_runme.go +index 07d407273..76e30dda3 100644 +--- a/Examples/test-suite/go/refcount_runme.go ++++ b/Examples/test-suite/go/refcount_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "refcount" ++import . "swigtests/refcount" + + // very innocent example + +diff --git a/Examples/test-suite/go/reference_global_vars_runme.go b/Examples/test-suite/go/reference_global_vars_runme.go +index 908358f95..f8c125854 100644 +--- a/Examples/test-suite/go/reference_global_vars_runme.go ++++ b/Examples/test-suite/go/reference_global_vars_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "reference_global_vars" ++import . "swigtests/reference_global_vars" + + func main() { + // const class reference variable +diff --git a/Examples/test-suite/go/rename_scope_runme.go b/Examples/test-suite/go/rename_scope_runme.go +index 13bd3f178..4ad7549ad 100644 +--- a/Examples/test-suite/go/rename_scope_runme.go ++++ b/Examples/test-suite/go/rename_scope_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "rename_scope" ++import . "swigtests/rename_scope" + + func main() { + a := NewNatural_UP() +diff --git a/Examples/test-suite/go/rename_simple_runme.go b/Examples/test-suite/go/rename_simple_runme.go +index bd559ef27..efe1edc7b 100644 +--- a/Examples/test-suite/go/rename_simple_runme.go ++++ b/Examples/test-suite/go/rename_simple_runme.go +@@ -1,7 +1,7 @@ + package main + + import "fmt" +-import . "rename_simple" ++import . "swigtests/rename_simple" + + func main() { + s := NewNewStruct() +diff --git a/Examples/test-suite/go/rename_strip_encoder_runme.go b/Examples/test-suite/go/rename_strip_encoder_runme.go +index ae670600c..74a0dbaaf 100644 +--- a/Examples/test-suite/go/rename_strip_encoder_runme.go ++++ b/Examples/test-suite/go/rename_strip_encoder_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "rename_strip_encoder" ++import . "swigtests/rename_strip_encoder" + + func main() { + _ = NewSomeWidget() +diff --git a/Examples/test-suite/go/ret_by_value_runme.go b/Examples/test-suite/go/ret_by_value_runme.go +index 9659d21e9..345868dcd 100644 +--- a/Examples/test-suite/go/ret_by_value_runme.go ++++ b/Examples/test-suite/go/ret_by_value_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "ret_by_value" ++import "swigtests/ret_by_value" + + func main() { + a := ret_by_value.Get_test() +diff --git a/Examples/test-suite/go/return_const_value_runme.go b/Examples/test-suite/go/return_const_value_runme.go +index aadb1265e..fc6baa240 100644 +--- a/Examples/test-suite/go/return_const_value_runme.go ++++ b/Examples/test-suite/go/return_const_value_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "return_const_value" ++import "swigtests/return_const_value" + + func main() { + p := return_const_value.Foo_ptrGetPtr() +diff --git a/Examples/test-suite/go/smart_pointer_extend_runme.go b/Examples/test-suite/go/smart_pointer_extend_runme.go +index a851e26b7..f91c9ac99 100644 +--- a/Examples/test-suite/go/smart_pointer_extend_runme.go ++++ b/Examples/test-suite/go/smart_pointer_extend_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "smart_pointer_extend" ++import . "swigtests/smart_pointer_extend" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/smart_pointer_member_runme.go b/Examples/test-suite/go/smart_pointer_member_runme.go +index e7fe7c4c2..ca2ac2c76 100644 +--- a/Examples/test-suite/go/smart_pointer_member_runme.go ++++ b/Examples/test-suite/go/smart_pointer_member_runme.go +@@ -1,7 +1,7 @@ + package main + + import "fmt" +-import . "smart_pointer_member" ++import . "swigtests/smart_pointer_member" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/smart_pointer_multi_runme.go b/Examples/test-suite/go/smart_pointer_multi_runme.go +index 7c76061af..a8ec39f54 100644 +--- a/Examples/test-suite/go/smart_pointer_multi_runme.go ++++ b/Examples/test-suite/go/smart_pointer_multi_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "smart_pointer_multi" ++import . "swigtests/smart_pointer_multi" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/smart_pointer_multi_typedef_runme.go b/Examples/test-suite/go/smart_pointer_multi_typedef_runme.go +index e584cf7a2..6bfd21ef6 100644 +--- a/Examples/test-suite/go/smart_pointer_multi_typedef_runme.go ++++ b/Examples/test-suite/go/smart_pointer_multi_typedef_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "smart_pointer_multi_typedef" ++import . "swigtests/smart_pointer_multi_typedef" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/smart_pointer_overload_runme.go b/Examples/test-suite/go/smart_pointer_overload_runme.go +index 9481554f0..c28ce6100 100644 +--- a/Examples/test-suite/go/smart_pointer_overload_runme.go ++++ b/Examples/test-suite/go/smart_pointer_overload_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "smart_pointer_overload" ++import . "swigtests/smart_pointer_overload" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/smart_pointer_rename_runme.go b/Examples/test-suite/go/smart_pointer_rename_runme.go +index 44841f5e6..22c0eb1e9 100644 +--- a/Examples/test-suite/go/smart_pointer_rename_runme.go ++++ b/Examples/test-suite/go/smart_pointer_rename_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "smart_pointer_rename" ++import . "swigtests/smart_pointer_rename" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/smart_pointer_simple_runme.go b/Examples/test-suite/go/smart_pointer_simple_runme.go +index b468bd2e5..8a14dcf9b 100644 +--- a/Examples/test-suite/go/smart_pointer_simple_runme.go ++++ b/Examples/test-suite/go/smart_pointer_simple_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "smart_pointer_simple" ++import . "swigtests/smart_pointer_simple" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/smart_pointer_templatevariables_runme.go b/Examples/test-suite/go/smart_pointer_templatevariables_runme.go +index 6d4ea91de..8f7102d43 100644 +--- a/Examples/test-suite/go/smart_pointer_templatevariables_runme.go ++++ b/Examples/test-suite/go/smart_pointer_templatevariables_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "smart_pointer_templatevariables" ++import . "swigtests/smart_pointer_templatevariables" + + func main() { + d := NewDiffImContainerPtr_D(Create(1234, 5678)) +diff --git a/Examples/test-suite/go/smart_pointer_typedef_runme.go b/Examples/test-suite/go/smart_pointer_typedef_runme.go +index e89a8b150..5468a2926 100644 +--- a/Examples/test-suite/go/smart_pointer_typedef_runme.go ++++ b/Examples/test-suite/go/smart_pointer_typedef_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "smart_pointer_typedef" ++import . "swigtests/smart_pointer_typedef" + + func main() { + f := NewFoo() +diff --git a/Examples/test-suite/go/sneaky1_runme.go b/Examples/test-suite/go/sneaky1_runme.go +index 57c779724..c17f0ffc6 100644 +--- a/Examples/test-suite/go/sneaky1_runme.go ++++ b/Examples/test-suite/go/sneaky1_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "sneaky1" ++import "swigtests/sneaky1" + + func main() { + _ = sneaky1.Add(3, 4) +diff --git a/Examples/test-suite/go/special_variable_macros_runme.go b/Examples/test-suite/go/special_variable_macros_runme.go +index 9338e6558..597c48748 100644 +--- a/Examples/test-suite/go/special_variable_macros_runme.go ++++ b/Examples/test-suite/go/special_variable_macros_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "special_variable_macros" ++import "swigtests/special_variable_macros" + + func main() { + name := special_variable_macros.NewName() +diff --git a/Examples/test-suite/go/static_const_member_2_runme.go b/Examples/test-suite/go/static_const_member_2_runme.go +index ff8cbbbcd..7586eb404 100644 +--- a/Examples/test-suite/go/static_const_member_2_runme.go ++++ b/Examples/test-suite/go/static_const_member_2_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "static_const_member_2" ++import . "swigtests/static_const_member_2" + + func main() { + _ = NewTest_int() +diff --git a/Examples/test-suite/go/struct_initialization_runme.go b/Examples/test-suite/go/struct_initialization_runme.go +index a815bd3f5..d5eb4e968 100644 +--- a/Examples/test-suite/go/struct_initialization_runme.go ++++ b/Examples/test-suite/go/struct_initialization_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "struct_initialization" ++import . "swigtests/struct_initialization" + + func main() { + if GetInstanceC1().GetX() != 10 { +diff --git a/Examples/test-suite/go/struct_rename_runme.go b/Examples/test-suite/go/struct_rename_runme.go +index de99fc320..6d619e090 100644 +--- a/Examples/test-suite/go/struct_rename_runme.go ++++ b/Examples/test-suite/go/struct_rename_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "struct_rename" ++import "swigtests/struct_rename" + + func main() { + _ = struct_rename.NewBar() +diff --git a/Examples/test-suite/go/struct_value_runme.go b/Examples/test-suite/go/struct_value_runme.go +index 3b5e5c1dc..c43a67a88 100644 +--- a/Examples/test-suite/go/struct_value_runme.go ++++ b/Examples/test-suite/go/struct_value_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "struct_value" ++import "swigtests/struct_value" + + func main() { + b := struct_value.NewBar() +diff --git a/Examples/test-suite/go/template_default_arg_runme.go b/Examples/test-suite/go/template_default_arg_runme.go +index d67e63fa7..9558c7496 100644 +--- a/Examples/test-suite/go/template_default_arg_runme.go ++++ b/Examples/test-suite/go/template_default_arg_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "template_default_arg" ++import "swigtests/template_default_arg" + + func main() { + helloInt := template_default_arg.NewHello_int() +diff --git a/Examples/test-suite/go/template_extend1_runme.go b/Examples/test-suite/go/template_extend1_runme.go +index 0912fa6ed..f2469ab15 100644 +--- a/Examples/test-suite/go/template_extend1_runme.go ++++ b/Examples/test-suite/go/template_extend1_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "template_extend1" ++import "swigtests/template_extend1" + + func main() { + a := template_extend1.NewLBaz() +diff --git a/Examples/test-suite/go/template_extend2_runme.go b/Examples/test-suite/go/template_extend2_runme.go +index ced3d93cc..c3669bc95 100644 +--- a/Examples/test-suite/go/template_extend2_runme.go ++++ b/Examples/test-suite/go/template_extend2_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "template_extend2" ++import "swigtests/template_extend2" + + func main() { + a := template_extend2.NewLBaz() +diff --git a/Examples/test-suite/go/template_inherit_runme.go b/Examples/test-suite/go/template_inherit_runme.go +index a8d5126dc..10071b128 100644 +--- a/Examples/test-suite/go/template_inherit_runme.go ++++ b/Examples/test-suite/go/template_inherit_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "template_inherit" ++import . "swigtests/template_inherit" + + func main() { + a := NewFooInt() +diff --git a/Examples/test-suite/go/template_ns4_runme.go b/Examples/test-suite/go/template_ns4_runme.go +index 6c658ec97..c1b356b3f 100644 +--- a/Examples/test-suite/go/template_ns4_runme.go ++++ b/Examples/test-suite/go/template_ns4_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "template_ns4" ++import . "swigtests/template_ns4" + + func main() { + d := Make_Class_DD() +diff --git a/Examples/test-suite/go/template_ns_runme.go b/Examples/test-suite/go/template_ns_runme.go +index cfc56fa3c..e77c17bf7 100644 +--- a/Examples/test-suite/go/template_ns_runme.go ++++ b/Examples/test-suite/go/template_ns_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "template_ns" ++import . "swigtests/template_ns" + + func main() { + p1 := NewPairii(2, 3) +diff --git a/Examples/test-suite/go/template_opaque_runme.go b/Examples/test-suite/go/template_opaque_runme.go +index 71701df53..b3bf61043 100644 +--- a/Examples/test-suite/go/template_opaque_runme.go ++++ b/Examples/test-suite/go/template_opaque_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "template_opaque" ++import "swigtests/template_opaque" + + func main() { + v := template_opaque.NewOpaqueVectorType(int64(10)) +diff --git a/Examples/test-suite/go/template_ref_type_runme.go b/Examples/test-suite/go/template_ref_type_runme.go +index a01ce3d31..516b6c721 100644 +--- a/Examples/test-suite/go/template_ref_type_runme.go ++++ b/Examples/test-suite/go/template_ref_type_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "template_ref_type" ++import "swigtests/template_ref_type" + + func main() { + xr := template_ref_type.NewXC() +diff --git a/Examples/test-suite/go/template_rename_runme.go b/Examples/test-suite/go/template_rename_runme.go +index 6e04f8845..08cf3fb48 100644 +--- a/Examples/test-suite/go/template_rename_runme.go ++++ b/Examples/test-suite/go/template_rename_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "template_rename" ++import "swigtests/template_rename" + + func main() { + i := template_rename.NewIFoo() +diff --git a/Examples/test-suite/go/template_static_runme.go b/Examples/test-suite/go/template_static_runme.go +index f10ea78f7..205813dbf 100644 +--- a/Examples/test-suite/go/template_static_runme.go ++++ b/Examples/test-suite/go/template_static_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "template_static" ++import . "swigtests/template_static" + + func main() { + FooBar_double(1) +diff --git a/Examples/test-suite/go/template_tbase_template_runme.go b/Examples/test-suite/go/template_tbase_template_runme.go +index e1c46aaf7..a4832439f 100644 +--- a/Examples/test-suite/go/template_tbase_template_runme.go ++++ b/Examples/test-suite/go/template_tbase_template_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "template_tbase_template" ++import . "swigtests/template_tbase_template" + + func main() { + a := Make_Class_dd() +diff --git a/Examples/test-suite/go/template_type_namespace_runme.go b/Examples/test-suite/go/template_type_namespace_runme.go +index 1356f9b08..562fae78d 100644 +--- a/Examples/test-suite/go/template_type_namespace_runme.go ++++ b/Examples/test-suite/go/template_type_namespace_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "template_type_namespace" ++import . "swigtests/template_type_namespace" + + func main() { + if Foo().Get(0) == "" { +diff --git a/Examples/test-suite/go/template_typedef_cplx3_runme.go b/Examples/test-suite/go/template_typedef_cplx3_runme.go +index 0a2b31301..52a9bc7f6 100644 +--- a/Examples/test-suite/go/template_typedef_cplx3_runme.go ++++ b/Examples/test-suite/go/template_typedef_cplx3_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "template_typedef_cplx3" ++import . "swigtests/template_typedef_cplx3" + + func main() { + // this is OK +diff --git a/Examples/test-suite/go/template_typedef_cplx4_runme.go b/Examples/test-suite/go/template_typedef_cplx4_runme.go +index d8952cfb6..84347e404 100644 +--- a/Examples/test-suite/go/template_typedef_cplx4_runme.go ++++ b/Examples/test-suite/go/template_typedef_cplx4_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "template_typedef_cplx4" ++import . "swigtests/template_typedef_cplx4" + + func main() { + // this is OK +diff --git a/Examples/test-suite/go/threads_exception_runme.go b/Examples/test-suite/go/threads_exception_runme.go +index e3da1dc25..b554f0e28 100644 +--- a/Examples/test-suite/go/threads_exception_runme.go ++++ b/Examples/test-suite/go/threads_exception_runme.go +@@ -1,7 +1,7 @@ + package main + + import "strings" +-import "threads_exception" ++import "swigtests/threads_exception" + + func main() { + t := threads_exception.NewTest() +diff --git a/Examples/test-suite/go/typedef_class_runme.go b/Examples/test-suite/go/typedef_class_runme.go +index d94126d3b..157a91745 100644 +--- a/Examples/test-suite/go/typedef_class_runme.go ++++ b/Examples/test-suite/go/typedef_class_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "typedef_class" ++import "swigtests/typedef_class" + + func main() { + a := typedef_class.NewRealA() +diff --git a/Examples/test-suite/go/typedef_funcptr_runme.go b/Examples/test-suite/go/typedef_funcptr_runme.go +index 9d55f3f04..f76f088af 100644 +--- a/Examples/test-suite/go/typedef_funcptr_runme.go ++++ b/Examples/test-suite/go/typedef_funcptr_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "typedef_funcptr" ++import . "swigtests/typedef_funcptr" + + func main() { + a := 100 +diff --git a/Examples/test-suite/go/typedef_inherit_runme.go b/Examples/test-suite/go/typedef_inherit_runme.go +index 7a65569f2..f2dbb3263 100644 +--- a/Examples/test-suite/go/typedef_inherit_runme.go ++++ b/Examples/test-suite/go/typedef_inherit_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "typedef_inherit" ++import "swigtests/typedef_inherit" + + func main() { + a := typedef_inherit.NewFoo() +diff --git a/Examples/test-suite/go/typedef_scope_runme.go b/Examples/test-suite/go/typedef_scope_runme.go +index af282b16f..9c845bb69 100644 +--- a/Examples/test-suite/go/typedef_scope_runme.go ++++ b/Examples/test-suite/go/typedef_scope_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "typedef_scope" ++import "swigtests/typedef_scope" + + func main() { + b := typedef_scope.NewBar() +diff --git a/Examples/test-suite/go/typemap_namespace_runme.go b/Examples/test-suite/go/typemap_namespace_runme.go +index a2880d4a8..f0860803e 100644 +--- a/Examples/test-suite/go/typemap_namespace_runme.go ++++ b/Examples/test-suite/go/typemap_namespace_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "typemap_namespace" ++import . "swigtests/typemap_namespace" + + func main() { + if Test1("hello") != "hello" { +diff --git a/Examples/test-suite/go/typemap_ns_using_runme.go b/Examples/test-suite/go/typemap_ns_using_runme.go +index c4c21cf75..00e1131d6 100644 +--- a/Examples/test-suite/go/typemap_ns_using_runme.go ++++ b/Examples/test-suite/go/typemap_ns_using_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "typemap_ns_using" ++import "swigtests/typemap_ns_using" + + func main() { + if typemap_ns_using.Spam(37) != 37 { +diff --git a/Examples/test-suite/go/typemap_out_optimal_runme.go b/Examples/test-suite/go/typemap_out_optimal_runme.go +index 7cc3b38e3..0cccd97a6 100644 +--- a/Examples/test-suite/go/typemap_out_optimal_runme.go ++++ b/Examples/test-suite/go/typemap_out_optimal_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "typemap_out_optimal" ++import . "swigtests/typemap_out_optimal" + + func main() { + SetXXDebug(false) +diff --git a/Examples/test-suite/go/typename_runme.go b/Examples/test-suite/go/typename_runme.go +index d1665099c..1e1696d0a 100644 +--- a/Examples/test-suite/go/typename_runme.go ++++ b/Examples/test-suite/go/typename_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "typename" ++import "swigtests/typename" + + func main() { + f := typename.NewFoo() +diff --git a/Examples/test-suite/go/unions_runme.go b/Examples/test-suite/go/unions_runme.go +index b76ca5c75..6e2981192 100644 +--- a/Examples/test-suite/go/unions_runme.go ++++ b/Examples/test-suite/go/unions_runme.go +@@ -3,7 +3,7 @@ + + package main + +-import "unions" ++import "swigtests/unions" + + func main() { + // Create new instances of SmallStruct and BigStruct for later use +diff --git a/Examples/test-suite/go/using1_runme.go b/Examples/test-suite/go/using1_runme.go +index a6a6fa738..09cc381cc 100644 +--- a/Examples/test-suite/go/using1_runme.go ++++ b/Examples/test-suite/go/using1_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "using1" ++import "swigtests/using1" + + func main() { + if using1.Spam(37) != 37 { +diff --git a/Examples/test-suite/go/using2_runme.go b/Examples/test-suite/go/using2_runme.go +index f6b8d49b5..8109037f9 100644 +--- a/Examples/test-suite/go/using2_runme.go ++++ b/Examples/test-suite/go/using2_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "using2" ++import "swigtests/using2" + + func main() { + if using2.Spam(37) != 37 { +diff --git a/Examples/test-suite/go/using_composition_runme.go b/Examples/test-suite/go/using_composition_runme.go +index 712d1fad5..7ef09fef9 100644 +--- a/Examples/test-suite/go/using_composition_runme.go ++++ b/Examples/test-suite/go/using_composition_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "using_composition" ++import . "swigtests/using_composition" + + func main() { + f := NewFooBar() +diff --git a/Examples/test-suite/go/using_extend_runme.go b/Examples/test-suite/go/using_extend_runme.go +index 27d1ccc62..dac300ba4 100644 +--- a/Examples/test-suite/go/using_extend_runme.go ++++ b/Examples/test-suite/go/using_extend_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "using_extend" ++import . "swigtests/using_extend" + + func main() { + f := NewFooBar() +diff --git a/Examples/test-suite/go/using_inherit_runme.go b/Examples/test-suite/go/using_inherit_runme.go +index a88171817..c8755902f 100644 +--- a/Examples/test-suite/go/using_inherit_runme.go ++++ b/Examples/test-suite/go/using_inherit_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "using_inherit" ++import . "swigtests/using_inherit" + + func main() { + b := NewBar() +diff --git a/Examples/test-suite/go/using_private_runme.go b/Examples/test-suite/go/using_private_runme.go +index 2da62dc2e..4c86ef514 100644 +--- a/Examples/test-suite/go/using_private_runme.go ++++ b/Examples/test-suite/go/using_private_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "using_private" ++import . "swigtests/using_private" + + func main() { + f := NewFooBar() +diff --git a/Examples/test-suite/go/using_protected_runme.go b/Examples/test-suite/go/using_protected_runme.go +index 3fd5029f7..431081827 100644 +--- a/Examples/test-suite/go/using_protected_runme.go ++++ b/Examples/test-suite/go/using_protected_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "using_protected" ++import . "swigtests/using_protected" + + func main() { + f := NewFooBar() +diff --git a/Examples/test-suite/go/varargs_overload_runme.go b/Examples/test-suite/go/varargs_overload_runme.go +index 8ce580d65..50a430894 100644 +--- a/Examples/test-suite/go/varargs_overload_runme.go ++++ b/Examples/test-suite/go/varargs_overload_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "varargs_overload" ++import "swigtests/varargs_overload" + + func main() { + if varargs_overload.Vararg_over1("Hello") != "Hello" { +diff --git a/Examples/test-suite/go/varargs_runme.go b/Examples/test-suite/go/varargs_runme.go +index 60bd8829a..eb2fa94aa 100644 +--- a/Examples/test-suite/go/varargs_runme.go ++++ b/Examples/test-suite/go/varargs_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "varargs" ++import "swigtests/varargs" + + func main() { + if varargs.Test("Hello") != "Hello" { +diff --git a/Examples/test-suite/go/virtual_derivation_runme.go b/Examples/test-suite/go/virtual_derivation_runme.go +index 4e2c6e585..21135308c 100644 +--- a/Examples/test-suite/go/virtual_derivation_runme.go ++++ b/Examples/test-suite/go/virtual_derivation_runme.go +@@ -1,6 +1,6 @@ + package main + +-import . "virtual_derivation" ++import . "swigtests/virtual_derivation" + + // very innocent example + +diff --git a/Examples/test-suite/go/virtual_poly_runme.go b/Examples/test-suite/go/virtual_poly_runme.go +index 32906b391..9973f24c7 100644 +--- a/Examples/test-suite/go/virtual_poly_runme.go ++++ b/Examples/test-suite/go/virtual_poly_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "virtual_poly" ++import "swigtests/virtual_poly" + + func main() { + d := virtual_poly.NewNDouble(3.5) +diff --git a/Examples/test-suite/go/voidtest_runme.go b/Examples/test-suite/go/voidtest_runme.go +index 133545cea..35c5289fd 100644 +--- a/Examples/test-suite/go/voidtest_runme.go ++++ b/Examples/test-suite/go/voidtest_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "voidtest" ++import "swigtests/voidtest" + + func main() { + voidtest.Globalfunc() +diff --git a/Examples/test-suite/go/wrapmacro_runme.go b/Examples/test-suite/go/wrapmacro_runme.go +index a251a05e8..d792d4ffe 100644 +--- a/Examples/test-suite/go/wrapmacro_runme.go ++++ b/Examples/test-suite/go/wrapmacro_runme.go +@@ -1,6 +1,6 @@ + package main + +-import "wrapmacro" ++import "swigtests/wrapmacro" + + func main() { + a := 2 +diff --git a/configure.ac b/configure.ac +index 543274359..a38e97d2a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2370,11 +2370,6 @@ AS_HELP_STRING([--with-go=path], [Set location of Go compiler]),[GOBIN="$withval + if test x"${GOBIN}" = xno; then + AC_MSG_NOTICE([Disabling Go]) + GO= +- GOC= +- GO1=false +- GO12=false +- GO13=false +- GO15=false + GOGCC=false + GCCGO= + GOOPT= +@@ -2390,30 +2385,15 @@ else + + GOGCC=false + GCCGO= +- GO1=false +- GO12=false +- GO13=false +- GO15=false + GOOPT= + GCCGOOPT= + GOVERSIONOPTION= + + if test -n "$GO" ; then +- GO1=true +- GOVERSIONOPTION=version +- go_version=$($GO $GOVERSIONOPTION | sed -e 's/go version //') +- case "$go_version" in +- go1 | go1.[[01234]] | go1.[[01234]].*) +- GOC=$(sh -c "$(go env) && echo \$GOCHAR")c +- ;; +- *) +- GOC=compile +- ;; +- esac + AC_MSG_CHECKING([whether go version is too old]) + case $go_version in +- go1.1.* | go1.1 | go1.0 | go1.0.* | go1 ) +- AC_MSG_RESULT([yes - minimum version is 1.2]) ++ go1.[012345]*) ++ AC_MSG_RESULT([yes - minimum version is 1.6]) + GO= + GOOPT="-intgosize 32" + ;; +@@ -2429,20 +2409,6 @@ else + esac + ;; + esac +- case $go_version in +- go1.0 | go1.0.* | go1 | go1.1 | go1.1.*) +- GOOPT="$GOOPT -use-shlib" +- ;; +- go1.2 | go1.2.*) +- GO12=true +- ;; +- go1.3 | go1.3.* | go1.4 | go1.4.*) +- GO13=true +- ;; +- *) +- GO15=true +- ;; +- esac + fi + + AC_CHECK_PROGS(GCCGO, gccgo) +-- +2.20.1 + diff --git a/swig400-Restore-setting-of-GOVERSIONOPTION.patch b/swig400-Restore-setting-of-GOVERSIONOPTION.patch new file mode 100644 index 0000000..d66b0fa --- /dev/null +++ b/swig400-Restore-setting-of-GOVERSIONOPTION.patch @@ -0,0 +1,25 @@ +From 6b108c19e1504c937e1a7d50147575dd8e624b73 Mon Sep 17 00:00:00 2001 +From: Ian Lance Taylor +Date: Thu, 8 Aug 2019 22:59:57 -0700 +Subject: [PATCH 2/2] Restore setting of GOVERSIONOPTION + +Accidentally removed in last commit. +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index a38e97d2a..73c38a72c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2390,6 +2390,7 @@ else + GOVERSIONOPTION= + + if test -n "$GO" ; then ++ GOVERSIONOPTION=version + AC_MSG_CHECKING([whether go version is too old]) + case $go_version in + go1.[012345]*) +-- +2.20.1 + From 0390543ac4f23abe19a654d0ef1e23d79789f0dc Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 22 Aug 2019 09:08:41 +0200 Subject: [PATCH 030/103] Update to 4.0.1 --- .gitignore | 1 + sources | 2 +- swig-octave-ldflags.patch | 16 - swig-octave5.1.patch | 28 - swig.spec | 21 +- ...n-check-and-Go-in-tree-example-tests.patch | 54 - ...-all-Go-tests-to-build-with-go-build.patch | 2648 ----------------- ...0-Restore-setting-of-GOVERSIONOPTION.patch | 25 - 8 files changed, 11 insertions(+), 2784 deletions(-) delete mode 100644 swig-octave-ldflags.patch delete mode 100644 swig-octave5.1.patch delete mode 100644 swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch delete mode 100644 swig400-Fix-all-Go-tests-to-build-with-go-build.patch delete mode 100644 swig400-Restore-setting-of-GOVERSIONOPTION.patch diff --git a/.gitignore b/.gitignore index 5bed377..5a3031c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ swig-2.0.0.tar.gz /swig-3.0.11.tar.gz /swig-3.0.12.tar.gz /swig-4.0.0.tar.gz +/swig-4.0.1.tar.gz diff --git a/sources b/sources index b2e84a2..49043de 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.0.0.tar.gz) = c897b87fb8b21caf8d1bee2c39cb9675a3b0ee047110e808c310a2787f8b89585738726e9f517c64e9d2f1b8311136365c569528f399b444b1081f69689b7165 +SHA512 (swig-4.0.1.tar.gz) = 595ef01cb83adfa960ceed9c325a9429192549e8d1e9aa3ab35a4301512a61d82e2e89a8c7939c2a5a0811254ea1832a443bd387e11459eb2b0bafc563ad1308 diff --git a/swig-octave-ldflags.patch b/swig-octave-ldflags.patch deleted file mode 100644 index 531258f..0000000 --- a/swig-octave-ldflags.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index 1873797..754238f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1114,7 +1114,10 @@ if test -n "$OCTAVE"; then - - AC_MSG_CHECKING([for Octave linker flags]) - OCTAVE_LDFLAGS= -- for var in RDYNAMIC_FLAG LFLAGS RLD_FLAG OCTAVE_LIBS LIBS; do -+ for var in OCTLIBDIR; do -+ OCTAVE_LDFLAGS="${OCTAVE_LDFLAGS} "-L`env - ${mkoctfile} -p ${var}` -+ done -+ for var in RDYNAMIC_FLAG RLD_FLAG OCTAVE_LIBS LIBS; do - OCTAVE_LDFLAGS="${OCTAVE_LDFLAGS} "`env - ${mkoctfile} -p ${var}` - done - AC_MSG_RESULT([$OCTAVE_LDFLAGS]) diff --git a/swig-octave5.1.patch b/swig-octave5.1.patch deleted file mode 100644 index df67179..0000000 --- a/swig-octave5.1.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit c38b7de6a120e6392abff50afd9bb919cc858cfc -Author: Orion Poplawski -Date: Sun Mar 10 11:47:27 2019 -0600 - - Fix format-security error with octave 5.1 - -diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg -index 3012331..ff614e6 100644 ---- a/Lib/octave/octrun.swg -+++ b/Lib/octave/octrun.swg -@@ -51,7 +51,7 @@ SWIGRUNTIME octave_value SWIG_Error(int code, const char *msg) { - octave_value type(SWIG_ErrorType(code)); - std::string r = msg; - r += " (" + type.string_value() + ")"; -- error(r.c_str()); -+ error("%s", r.c_str()); - return octave_value(r); - } - -@@ -840,7 +840,7 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); - const std::string opname = std::string("__") + octave_base_value::get_umap_name(umap) + std::string("__"); - octave_value ret; - if (!dispatch_unary_op(opname, ret)) { -- error((opname + std::string(" method not found")).c_str()); -+ error("%s", (opname + std::string(" method not found")).c_str()); - return octave_value(); - } - return ret; diff --git a/swig.spec b/swig.spec index 0896c73..10f6d10 100644 --- a/swig.spec +++ b/swig.spec @@ -52,8 +52,8 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.0.0 -Release: 5%{?dist} +Version: 4.0.1 +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 @@ -66,12 +66,6 @@ Source4: ccache-swig.csh %endif Patch0: swig308-Do-not-use-isystem.patch -# https://github.com/swig/swig/pull/1522 -Patch1: swig-octave-ldflags.patch -# Fix Go tests for Go 1.13-beta1 (BZ#1736731) -Patch2: swig400-Fix-all-Go-tests-to-build-with-go-build.patch -Patch3: swig400-Restore-setting-of-GOVERSIONOPTION.patch -Patch4: swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch BuildRequires: perl-interpreter, pcre-devel %if %{python2lang} @@ -173,10 +167,6 @@ in gdb. %setup -q -n swig-%{version} %patch0 -p1 -b .isystem -%patch1 -p1 -b .octave-ldflags -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -349,6 +339,13 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Aug 21 2019 Jitka Plesnikova - 4.0.1-1 +- Update to 4.0.0 + - Add Python 3.8 support + - Python Sphinx compatibility added for Doxygen comments + - Fix some C++17 compatibility problems in Python and Ruby generated + code + * Mon Aug 12 2019 Jitka Plesnikova - 4.0.0-5 - Backport upstream fix for Go tests (BZ#1736731) diff --git a/swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch b/swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch deleted file mode 100644 index 11be2c5..0000000 --- a/swig400-Fix-Go-version-check-and-Go-in-tree-example-tests.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 62136ff782e9bf6641970f716d7d40afcf6c49ea Mon Sep 17 00:00:00 2001 -From: Ian Lance Taylor -Date: Fri, 9 Aug 2019 14:06:45 -0700 -Subject: [PATCH] Fix Go version check and Go in-tree example tests - -Fixes #1607 ---- - Examples/Makefile.in | 4 ++-- - configure.ac | 5 +++-- - 2 files changed, 5 insertions(+), 4 deletions(-) - -diff --git a/Examples/Makefile.in b/Examples/Makefile.in -index 9e05d2763..6fbca29db 100644 ---- a/Examples/Makefile.in -+++ b/Examples/Makefile.in -@@ -1484,7 +1484,7 @@ go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - rm -f gopath/$(GOMOD)/src/runme/*; \ - fi - if test -f $(SRCDIR)$(RUNME).go; then \ -- cp $(SRCDIR)/$(RUNME).go gopath/$(GOMOD)/src/runme/; \ -+ cp $(SRCDIR)$(RUNME).go gopath/$(GOMOD)/src/runme/; \ - fi - GOPATH=`pwd`/gopath/$(GOMOD); \ - export GOPATH; \ -@@ -1533,7 +1533,7 @@ go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - rm -f gopath/$(GOMOD)/src/runme/*; \ - fi - if test -f $(SRCDIR)$(RUNME).go; then \ -- cp $(SRCDIR)/$(RUNME).go gopath/$(GOMOD)/src/runme/; \ -+ cp $(SRCDIR)$(RUNME).go gopath/$(GOMOD)/src/runme/; \ - fi - GOPATH=`pwd`/gopath/$(GOMOD); \ - export GOPATH; \ -diff --git a/configure.ac b/configure.ac -index 73c38a72c..63509cd66 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2391,10 +2391,11 @@ else - - if test -n "$GO" ; then - GOVERSIONOPTION=version -+ go_version=$($GO $GOVERSIONOPTION | sed -e 's/go version //') - AC_MSG_CHECKING([whether go version is too old]) - case $go_version in -- go1.[012345]*) -- AC_MSG_RESULT([yes - minimum version is 1.6]) -+ go1.[012]*) -+ AC_MSG_RESULT([yes - minimum version is 1.3]) - GO= - GOOPT="-intgosize 32" - ;; --- -2.20.1 - diff --git a/swig400-Fix-all-Go-tests-to-build-with-go-build.patch b/swig400-Fix-all-Go-tests-to-build-with-go-build.patch deleted file mode 100644 index 861160d..0000000 --- a/swig400-Fix-all-Go-tests-to-build-with-go-build.patch +++ /dev/null @@ -1,2648 +0,0 @@ -From 7aafe3d8b2c8b138c431d5fcc98a4d2a7c3270f9 Mon Sep 17 00:00:00 2001 -From: Ian Lance Taylor -Date: Thu, 8 Aug 2019 14:30:50 -0700 -Subject: [PATCH 1/2] Fix all Go tests to build with "go build" - -Tested against Go 1.6 through Go 1.13beta1, and gccgo. - -Fixes #1607 ---- - Examples/Makefile.in | 154 ++++-------------- - Examples/go/callback/runme.go | 2 +- - Examples/go/class/runme.go | 2 +- - Examples/go/constants/runme.go | 2 +- - Examples/go/director/runme.go | 2 +- - Examples/go/enum/runme.go | 2 +- - Examples/go/extend/runme.go | 2 +- - Examples/go/funcptr/runme.go | 2 +- - Examples/go/multimap/runme.go | 2 +- - Examples/go/pointer/runme.go | 2 +- - Examples/go/reference/runme.go | 2 +- - Examples/go/simple/runme.go | 2 +- - Examples/go/template/runme.go | 2 +- - Examples/go/variables/runme.go | 2 +- - Examples/test-suite/go/Makefile.in | 118 ++++++-------- - .../test-suite/go/abstract_access_runme.go | 2 +- - .../test-suite/go/abstract_typedef2_runme.go | 2 +- - .../test-suite/go/abstract_typedef_runme.go | 2 +- - .../test-suite/go/abstract_virtual_runme.go | 2 +- - Examples/test-suite/go/argout_runme.go | 2 +- - Examples/test-suite/go/array_member_runme.go | 2 +- - Examples/test-suite/go/arrays_global_runme.go | 2 +- - Examples/test-suite/go/char_binary_runme.go | 2 +- - Examples/test-suite/go/class_ignore_runme.go | 2 +- - .../test-suite/go/class_scope_weird_runme.go | 2 +- - .../test-suite/go/compactdefaultargs_runme.go | 2 +- - Examples/test-suite/go/constover_runme.go | 2 +- - .../test-suite/go/constructor_copy_runme.go | 2 +- - Examples/test-suite/go/contract_runme.go | 2 +- - ...cpp11_strongly_typed_enumerations_runme.go | 2 +- - Examples/test-suite/go/cpp_enum_runme.go | 2 +- - Examples/test-suite/go/cpp_namespace_runme.go | 2 +- - Examples/test-suite/go/cpp_static_runme.go | 2 +- - Examples/test-suite/go/default_args_runme.go | 2 +- - .../go/default_constructor_runme.go | 2 +- - .../go/director_alternating_runme.go | 2 +- - .../test-suite/go/director_basic_runme.go | 2 +- - .../test-suite/go/director_classic_runme.go | 2 +- - .../test-suite/go/director_default_runme.go | 2 +- - .../test-suite/go/director_detect_runme.go | 2 +- - Examples/test-suite/go/director_enum_runme.go | 2 +- - .../test-suite/go/director_exception_runme.go | 2 +- - .../test-suite/go/director_extend_runme.go | 2 +- - .../test-suite/go/director_finalizer_runme.go | 2 +- - Examples/test-suite/go/director_frob_runme.go | 2 +- - .../test-suite/go/director_nested_runme.go | 2 +- - .../test-suite/go/director_profile_runme.go | 2 +- - .../test-suite/go/director_protected_runme.go | 2 +- - .../test-suite/go/director_string_runme.go | 2 +- - .../test-suite/go/director_unroll_runme.go | 2 +- - Examples/test-suite/go/disown_runme.go | 2 +- - Examples/test-suite/go/dynamic_cast_runme.go | 2 +- - Examples/test-suite/go/empty_c_runme.go | 2 +- - Examples/test-suite/go/empty_runme.go | 2 +- - Examples/test-suite/go/enum_template_runme.go | 2 +- - Examples/test-suite/go/enums_runme.go | 2 +- - .../test-suite/go/exception_order_runme.go | 2 +- - .../test-suite/go/extend_placement_runme.go | 2 +- - .../test-suite/go/extend_template_ns_runme.go | 2 +- - .../test-suite/go/extend_template_runme.go | 2 +- - .../test-suite/go/extend_variable_runme.go | 2 +- - Examples/test-suite/go/extern_c_runme.go | 2 +- - Examples/test-suite/go/friends_runme.go | 2 +- - Examples/test-suite/go/fvirtual_runme.go | 2 +- - Examples/test-suite/go/global_ns_arg_runme.go | 2 +- - .../test-suite/go/go_director_inout_runme.go | 2 +- - Examples/test-suite/go/go_inout_runme.go | 2 +- - Examples/test-suite/go/grouping_runme.go | 2 +- - .../test-suite/go/import_nomodule_runme.go | 2 +- - Examples/test-suite/go/inctest_runme.go | 2 +- - .../test-suite/go/inherit_member_runme.go | 2 +- - .../test-suite/go/inherit_missing_runme.go | 2 +- - Examples/test-suite/go/input_runme.go | 2 +- - .../test-suite/go/keyword_rename_c_runme.go | 2 +- - .../test-suite/go/keyword_rename_runme.go | 2 +- - Examples/test-suite/go/li_attribute_runme.go | 2 +- - .../test-suite/go/li_carrays_cpp_runme.go | 2 +- - Examples/test-suite/go/li_carrays_runme.go | 2 +- - Examples/test-suite/go/li_cdata_cpp_runme.go | 2 +- - Examples/test-suite/go/li_cdata_runme.go | 2 +- - Examples/test-suite/go/li_cmalloc_runme.go | 2 +- - .../test-suite/go/li_cpointer_cpp_runme.go | 2 +- - Examples/test-suite/go/li_cpointer_runme.go | 2 +- - Examples/test-suite/go/li_std_map_runme.go | 2 +- - .../test-suite/go/li_std_vector_ptr_runme.go | 2 +- - .../test-suite/go/member_pointer_runme.go | 2 +- - .../test-suite/go/memberin_extend_c_runme.go | 2 +- - Examples/test-suite/go/minherit_runme.go | 2 +- - .../test-suite/go/namespace_class_runme.go | 2 +- - .../test-suite/go/namespace_typemap_runme.go | 2 +- - .../go/namespace_virtual_method_runme.go | 2 +- - Examples/test-suite/go/naturalvar_runme.go | 2 +- - .../test-suite/go/nested_workaround_runme.go | 2 +- - .../go/overload_complicated_runme.go | 2 +- - Examples/test-suite/go/overload_copy_runme.go | 2 +- - .../test-suite/go/overload_extend2_runme.go | 2 +- - .../test-suite/go/overload_extend_c_runme.go | 2 +- - .../test-suite/go/overload_extend_runme.go | 2 +- - .../go/overload_polymorphic_runme.go | 2 +- - .../test-suite/go/overload_rename_runme.go | 2 +- - .../test-suite/go/overload_simple_runme.go | 2 +- - .../test-suite/go/overload_subtype_runme.go | 2 +- - .../go/overload_template_fast_runme.go | 2 +- - .../test-suite/go/overload_template_runme.go | 2 +- - Examples/test-suite/go/preproc_runme.go | 2 +- - Examples/test-suite/go/primitive_ref_runme.go | 2 +- - Examples/test-suite/go/profiletest_runme.go | 2 +- - Examples/test-suite/go/refcount_runme.go | 2 +- - .../go/reference_global_vars_runme.go | 2 +- - Examples/test-suite/go/rename_scope_runme.go | 2 +- - Examples/test-suite/go/rename_simple_runme.go | 2 +- - .../go/rename_strip_encoder_runme.go | 2 +- - Examples/test-suite/go/ret_by_value_runme.go | 2 +- - .../test-suite/go/return_const_value_runme.go | 2 +- - .../go/smart_pointer_extend_runme.go | 2 +- - .../go/smart_pointer_member_runme.go | 2 +- - .../go/smart_pointer_multi_runme.go | 2 +- - .../go/smart_pointer_multi_typedef_runme.go | 2 +- - .../go/smart_pointer_overload_runme.go | 2 +- - .../go/smart_pointer_rename_runme.go | 2 +- - .../go/smart_pointer_simple_runme.go | 2 +- - .../smart_pointer_templatevariables_runme.go | 2 +- - .../go/smart_pointer_typedef_runme.go | 2 +- - Examples/test-suite/go/sneaky1_runme.go | 2 +- - .../go/special_variable_macros_runme.go | 2 +- - .../go/static_const_member_2_runme.go | 2 +- - .../go/struct_initialization_runme.go | 2 +- - Examples/test-suite/go/struct_rename_runme.go | 2 +- - Examples/test-suite/go/struct_value_runme.go | 2 +- - .../go/template_default_arg_runme.go | 2 +- - .../test-suite/go/template_extend1_runme.go | 2 +- - .../test-suite/go/template_extend2_runme.go | 2 +- - .../test-suite/go/template_inherit_runme.go | 2 +- - Examples/test-suite/go/template_ns4_runme.go | 2 +- - Examples/test-suite/go/template_ns_runme.go | 2 +- - .../test-suite/go/template_opaque_runme.go | 2 +- - .../test-suite/go/template_ref_type_runme.go | 2 +- - .../test-suite/go/template_rename_runme.go | 2 +- - .../test-suite/go/template_static_runme.go | 2 +- - .../go/template_tbase_template_runme.go | 2 +- - .../go/template_type_namespace_runme.go | 2 +- - .../go/template_typedef_cplx3_runme.go | 2 +- - .../go/template_typedef_cplx4_runme.go | 2 +- - .../test-suite/go/threads_exception_runme.go | 2 +- - Examples/test-suite/go/typedef_class_runme.go | 2 +- - .../test-suite/go/typedef_funcptr_runme.go | 2 +- - .../test-suite/go/typedef_inherit_runme.go | 2 +- - Examples/test-suite/go/typedef_scope_runme.go | 2 +- - .../test-suite/go/typemap_namespace_runme.go | 2 +- - .../test-suite/go/typemap_ns_using_runme.go | 2 +- - .../go/typemap_out_optimal_runme.go | 2 +- - Examples/test-suite/go/typename_runme.go | 2 +- - Examples/test-suite/go/unions_runme.go | 2 +- - Examples/test-suite/go/using1_runme.go | 2 +- - Examples/test-suite/go/using2_runme.go | 2 +- - .../test-suite/go/using_composition_runme.go | 2 +- - Examples/test-suite/go/using_extend_runme.go | 2 +- - Examples/test-suite/go/using_inherit_runme.go | 2 +- - Examples/test-suite/go/using_private_runme.go | 2 +- - .../test-suite/go/using_protected_runme.go | 2 +- - .../test-suite/go/varargs_overload_runme.go | 2 +- - Examples/test-suite/go/varargs_runme.go | 2 +- - .../test-suite/go/virtual_derivation_runme.go | 2 +- - Examples/test-suite/go/virtual_poly_runme.go | 2 +- - Examples/test-suite/go/voidtest_runme.go | 2 +- - Examples/test-suite/go/wrapmacro_runme.go | 2 +- - configure.ac | 38 +---- - 167 files changed, 246 insertions(+), 392 deletions(-) - -diff --git a/Examples/Makefile.in b/Examples/Makefile.in -index 98be7873f..9e05d2763 100644 ---- a/Examples/Makefile.in -+++ b/Examples/Makefile.in -@@ -1436,34 +1436,20 @@ scilab_clean: - GO = @GO@ - GOGCC = @GOGCC@ - GCCGO = @GCCGO@ --GO1 = @GO1@ --GO12 = @GO12@ --GO13 = @GO13@ --GO15 = @GO15@ --GOC = @GOC@ - GOOPT = @GOOPT@ - GCCGOOPT = @GCCGOOPT@ - GOVERSIONOPTION = @GOVERSIONOPTION@ - - GOSWIGARG = `if $(GOGCC) ; then echo -gccgo; fi` --GOCOMPILEARG = `if $(GO15); then echo tool compile; elif $(GO1) ; then echo tool $(GOC:c=g) ; fi` `if $(GO13) || $(GO15); then echo -pack ; fi` - - GOSRCS = $(INTERFACE:.i=.go) - GOCSRCS = $(INTERFACE:.i=_gc.c) - --GOLD = `if $(GO15); then echo link; else echo $(GOC:c=l); fi` --GOTOOL = `if $(GO1) ; then echo go tool; fi` --GOPACK = `if $(GO1) ; then echo go tool pack; else echo gopack; fi` -- - GOPACKAGE = $(notdir $(INTERFACE:.i=.a)) - - GOPATHPARENTDIR = gopath/$(GOMOD)/src - GOPATHDIR = $(GOPATHPARENTDIR)/$(INTERFACE:.i=) - --GOOBJEXT = `if $(GO15); then echo o; else echo $(GOC:c=); fi` --GOGCOBJS = $(GOSRCS:.go=.$(GOOBJEXT)) --GOGCCOBJS = $(GOSRCS:.go=.@OBJEXT@) -- - # ---------------------------------------------------------------- - # Build a Go module (C) - # ---------------------------------------------------------------- -@@ -1478,49 +1464,13 @@ $(GOPATHPARENTDIR)/go.mod: - echo "go 1.12" >> $(GOPATHDIR)/go.mod - mv -f $(GOPATHDIR)/go.mod $(GOPATHPARENTDIR)/go.mod - --go_nocgo: $(SRCDIR_SRCS) -- $(SWIG) -go -no-cgo $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) -- if $(GO12) || $(GO13) || $(GO15) || $(GOGCC); then \ -- $(CC) -g -c $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES); \ -- else \ -- $(CC) -g -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES); \ -- $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO); \ -- fi -- if $(GOGCC) ; then \ -- $(COMPILETOOL) $(GCCGO) -g -c -I . $(GOSRCS); \ -- else \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . $(GOSRCS); \ -- $(COMPILETOOL) $(GOTOOL) $(GOC) -I $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`} $(GOCSRCS); \ -- rm -f $(GOPACKAGE); \ -- if $(GO13) || $(GO15); then \ -- cp $(GOGCOBJS) $(GOPACKAGE); \ -- $(COMPILETOOL) $(GOPACK) r $(GOPACKAGE) $(GOCSRCS:.c=.$(GOOBJEXT)) $(OBJS) $(IOBJS); \ -- elif $(GO12); then \ -- $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)) $(OBJS) $(IOBJS); \ -- else \ -- $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)); \ -- fi; \ -- fi -- if test -f $(SRCDIR)$(RUNME).go; then \ -- if $(GOGCC) ; then \ -- $(COMPILETOOL) $(GCCGO) -g -c $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GCCGO) -o $(RUNME) $(RUNME).@OBJEXT@ $(GOGCCOBJS) $(OBJS) $(IOBJS); \ -- elif $(GO12) || $(GO13) || $(GO15); then \ -- $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -linkmode external -extld "$(CC)" -extldflags "$(CFLAGS) $(LDFLAGS)" -o $(RUNME) $(RUNME).$(GOOBJEXT); \ -- else \ -- $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $(RUNME) $(RUNME).$(GOOBJEXT); \ -- fi; \ -- fi -- - go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - $(SWIG) -go -import-prefix swigtests $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - @mkdir gopath 2>/dev/null || true - @mkdir gopath/$(GOMOD) 2>/dev/null || true - @mkdir gopath/$(GOMOD)/src 2>/dev/null || true - @mkdir $(GOPATHDIR) 2>/dev/null || true -- rm -f $(GOPATHDIR)/* -+ rm -rf $(GOPATHDIR)/* - cp $(ISRCS) $(GOPATHDIR)/ - if test -f $(IWRAP:.i=.h); then \ - cp $(IWRAP:.i=.h) $(GOPATHDIR)/; \ -@@ -1529,6 +1479,13 @@ go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - cp $(SRCDIR_SRCS) $(GOPATHDIR)/; \ - fi - cp $(GOSRCS) $(GOPATHDIR)/ -+ @if test -f $(SRCDIR)$(RUNME).go; then \ -+ mkdir gopath/$(GOMOD)/src/runme 2>/dev/null || true; \ -+ rm -f gopath/$(GOMOD)/src/runme/*; \ -+ fi -+ if test -f $(SRCDIR)$(RUNME).go; then \ -+ cp $(SRCDIR)/$(RUNME).go gopath/$(GOMOD)/src/runme/; \ -+ fi - GOPATH=`pwd`/gopath/$(GOMOD); \ - export GOPATH; \ - CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ -@@ -1537,82 +1494,29 @@ go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - export CGO_CFLAGS; \ - CGO_LDFLAGS="$(LDFLAGS) -lm"; \ - export CGO_LDFLAGS; \ -- (cd $(GOPATHDIR)/ && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)) -+ (cd $(GOPATHDIR)/ && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)); \ - if $(GOGCC); then \ - cp $(GOPATHDIR)/$(GOPACKAGE) $(GOPATHDIR)/$(GOPACKAGE:.a=.gox); \ -- fi -+ fi; \ - if test -f $(SRCDIR)$(RUNME).go; then \ -- if $(GOGCC) ; then \ -- $(COMPILETOOL) $(GCCGO) -c -g -I $(GOPATHDIR) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GCCGO) -o $(RUNME) $(RUNME).@OBJEXT@ $(GOPATHDIR)/$(GOPACKAGE); \ -- elif $(GO12) || $(GO13) || $(GO15); then \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I $(GOPATHDIR) -o $(RUNME).$(GOOBJEXT) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L $(GOPATHDIR) -linkmode external -extld "$(CC)" -extldflags "$(CFLAGS) $(LDFLAGS)" -o $(RUNME) $(RUNME).$(GOOBJEXT); \ -- else \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $(RUNME) $(RUNME).$(GOOBJEXT); \ -- fi; \ -+ mkdir gopath/$(GOMOD)/src/swigtests 2>/dev/null || true; \ -+ mkdir gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=) 2>/dev/null || true; \ -+ cp $(GOPATHDIR)/* gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=)/; \ -+ (cd gopath/$(GOMOD)/src/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme $(RUNME).go); \ -+ cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ - fi - - # ---------------------------------------------------------------- - # Build a Go module (C++) - # ---------------------------------------------------------------- - --go_cpp_nocgo: $(SRCDIR_SRCS) -- $(SWIG) -go -c++ -no-cgo $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) -- if $(GO12) || $(GO13) || $(GO15) || $(GOGCC); then \ -- if test -n "$(SRCDIR_CXXSRCS)$(SRCDIR_SRCS)"; then \ -- $(CXX) -g -c $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_CXXSRCS) $(SRCDIR_SRCS) $(INCLUDES); \ -- fi; \ -- $(foreach f,$(ICXXSRCS), \ -- $(CXX) -g -c $(CPPFLAGS) $(CXXFLAGS) -o $(addsuffix .@OBJEXT@,$(basename $f)) $f $(INCLUDES); \ -- ) \ -- else \ -- $(CXX) -g -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES); \ -- $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO); \ -- fi -- if ! $(GOGCC) ; then \ -- $(foreach f,$(GOSRCS), \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . -o $(addsuffix .$(GOOBJEXT),$(basename $f)) $f \ -- ); \ -- $(foreach f,$(GOCSRCS), \ -- $(COMPILETOOL) $(GOTOOL) $(GOC) -I $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`} \ -- -o $(addsuffix .$(GOOBJEXT),$(basename $f)) $f; \ -- ) \ -- rm -f $(GOPACKAGE); \ -- if $(GO13) || $(GO15); then \ -- cp $(GOGCOBJS) $(GOPACKAGE); \ -- $(COMPILETOOL) $(GOPACK) r $(GOPACKAGE) $(GOCSRCS:.c=.$(GOOBJEXT)) $(OBJS) $(IOBJS); \ -- elif $(GO12); then \ -- $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)) $(OBJS) $(IOBJS); \ -- else \ -- $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)); \ -- fi; \ -- else \ -- $(foreach f,$(GOSRCS), \ -- $(COMPILETOOL) $(GCCGO) -g -c -I . -o $(addsuffix .@OBJEXT@,$(basename $f)) $f \ -- ); \ -- fi -- if test -f $(SRCDIR)$(RUNME).go; then \ -- if $(GOGCC) ; then \ -- $(COMPILETOOL) $(GCCGO) -g -c $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GCCGO) -o $(RUNME) $(RUNME).@OBJEXT@ $(GOGCCOBJS) $(OBJS) $(IOBJS) -lstdc++; \ -- elif $(GO12) || $(GO13) || $(GO15); then \ -- $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -linkmode external -extld "$(CXX)" -extldflags "$(CXXFLAGS) $(LDFLAGS)" -o $(RUNME) $(RUNME).$(GOOBJEXT); \ -- else \ -- $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $(RUNME) $(RUNME).$(GOOBJEXT); \ -- fi; \ -- fi -- - go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - $(SWIG) -go -c++ -import-prefix swigtests $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - @mkdir gopath 2>/dev/null || true - @mkdir gopath/$(GOMOD) 2>/dev/null || true - @mkdir gopath/$(GOMOD)/src 2>/dev/null || true - @mkdir $(GOPATHDIR) 2>/dev/null || true -- rm -f $(GOPATHDIR)/* -+ rm -rf $(GOPATHDIR)/* - cp $(ICXXSRCS) $(GOPATHDIR)/ - if test -f $(IWRAP:.i=.h); then \ - cp $(IWRAP:.i=.h) $(GOPATHDIR)/; \ -@@ -1624,6 +1528,13 @@ go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - cp $(SRCDIR_SRCS) $(GOPATHDIR)/; \ - fi - cp $(GOSRCS) $(GOPATHDIR)/ -+ @if test -f $(SRCDIR)$(RUNME).go; then \ -+ mkdir gopath/$(GOMOD)/src/runme 2>/dev/null || true; \ -+ rm -f gopath/$(GOMOD)/src/runme/*; \ -+ fi -+ if test -f $(SRCDIR)$(RUNME).go; then \ -+ cp $(SRCDIR)/$(RUNME).go gopath/$(GOMOD)/src/runme/; \ -+ fi - GOPATH=`pwd`/gopath/$(GOMOD); \ - export GOPATH; \ - CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ -@@ -1634,21 +1545,16 @@ go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - export CGO_CXXFLAGS; \ - CGO_LDFLAGS="$(LDFLAGS) -lm"; \ - export CGO_LDFLAGS; \ -- (cd $(GOPATHDIR) && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)) -+ (cd $(GOPATHDIR) && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)); \ - if $(GOGCC); then \ - cp $(GOPATHDIR)/$(GOPACKAGE) $(GOPATHDIR)/$(GOPACKAGE:.a=.gox); \ -- fi -+ fi; \ - if test -f $(SRCDIR)$(RUNME).go; then \ -- if $(GOGCC) ; then \ -- $(COMPILETOOL) $(GCCGO) -g -c -I $(GOPATHDIR) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GCCGO) -o $(RUNME) $(RUNME).@OBJEXT@ $(GOPATHDIR)/$(GOPACKAGE) -lstdc++; \ -- elif $(GO12) || $(GO13) || $(GO15); then \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I $(GOPATHDIR) -o $(RUNME).$(GOOBJEXT) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L $(GOPATHDIR) -linkmode external -extld "$(CXX)" -extldflags "$(CXXFLAGS) $(LDFLAGS)" -o $(RUNME) $(RUNME).$(GOOBJEXT); \ -- else \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) $(SRCDIR)$(RUNME).go; \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $(RUNME) $(RUNME).$(GOOBJEXT); \ -- fi; \ -+ mkdir gopath/$(GOMOD)/src/swigtests 2>/dev/null || true; \ -+ mkdir gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=) 2>/dev/null || true; \ -+ cp $(GOPATHDIR)/* gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=)/; \ -+ (cd gopath/$(GOMOD)/src/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme $(RUNME).go); \ -+ cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ - fi - - # ----------------------------------------------------------------- -diff --git a/Examples/go/callback/runme.go b/Examples/go/callback/runme.go -index 2c1d81343..7c9ffd681 100644 ---- a/Examples/go/callback/runme.go -+++ b/Examples/go/callback/runme.go -@@ -3,7 +3,7 @@ package main - import ( - "fmt" - -- . "example" -+ . "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/class/runme.go b/Examples/go/class/runme.go -index d2f292ed4..a09a18247 100644 ---- a/Examples/go/class/runme.go -+++ b/Examples/go/class/runme.go -@@ -5,7 +5,7 @@ package main - import ( - "fmt" - -- . "example" -+ . "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/constants/runme.go b/Examples/go/constants/runme.go -index d56fd62c8..57ef21a8b 100644 ---- a/Examples/go/constants/runme.go -+++ b/Examples/go/constants/runme.go -@@ -3,7 +3,7 @@ package main - import ( - "fmt" - -- "example" -+ "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/director/runme.go b/Examples/go/director/runme.go -index 0e0da07bd..e28eccba6 100644 ---- a/Examples/go/director/runme.go -+++ b/Examples/go/director/runme.go -@@ -4,7 +4,7 @@ import ( - "fmt" - "os" - -- "example" -+ "swigtests/example" - ) - - func Compare(name string, got string, exp string) error { -diff --git a/Examples/go/enum/runme.go b/Examples/go/enum/runme.go -index 50887056e..c0642e0b5 100644 ---- a/Examples/go/enum/runme.go -+++ b/Examples/go/enum/runme.go -@@ -3,7 +3,7 @@ package main - import ( - "fmt" - -- . "example" -+ . "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/extend/runme.go b/Examples/go/extend/runme.go -index af64a6e5d..716af52c5 100644 ---- a/Examples/go/extend/runme.go -+++ b/Examples/go/extend/runme.go -@@ -5,7 +5,7 @@ package main - import ( - "fmt" - -- . "example" -+ . "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/funcptr/runme.go b/Examples/go/funcptr/runme.go -index 4b20db4fb..87ec7d495 100644 ---- a/Examples/go/funcptr/runme.go -+++ b/Examples/go/funcptr/runme.go -@@ -3,7 +3,7 @@ package main - import ( - "fmt" - -- . "example" -+ . "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/multimap/runme.go b/Examples/go/multimap/runme.go -index 571fac7c2..2f8b20568 100644 ---- a/Examples/go/multimap/runme.go -+++ b/Examples/go/multimap/runme.go -@@ -3,7 +3,7 @@ package main - import ( - "fmt" - -- . "example" -+ . "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/pointer/runme.go b/Examples/go/pointer/runme.go -index 0cf340f51..73c6b2b3c 100644 ---- a/Examples/go/pointer/runme.go -+++ b/Examples/go/pointer/runme.go -@@ -3,7 +3,7 @@ package main - import ( - "fmt" - -- . "example" -+ . "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/reference/runme.go b/Examples/go/reference/runme.go -index 9999733b3..7391d9c8b 100644 ---- a/Examples/go/reference/runme.go -+++ b/Examples/go/reference/runme.go -@@ -5,7 +5,7 @@ package main - import ( - "fmt" - -- . "example" -+ . "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/simple/runme.go b/Examples/go/simple/runme.go -index 0bd4657f9..5bc055f2e 100644 ---- a/Examples/go/simple/runme.go -+++ b/Examples/go/simple/runme.go -@@ -3,7 +3,7 @@ package main - import ( - "fmt" - -- "example" -+ "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/template/runme.go b/Examples/go/template/runme.go -index 347795377..e000b1579 100644 ---- a/Examples/go/template/runme.go -+++ b/Examples/go/template/runme.go -@@ -5,7 +5,7 @@ package main - import ( - "fmt" - -- . "example" -+ . "swigtests/example" - ) - - func main() { -diff --git a/Examples/go/variables/runme.go b/Examples/go/variables/runme.go -index e2dd0c67f..85ca8c638 100644 ---- a/Examples/go/variables/runme.go -+++ b/Examples/go/variables/runme.go -@@ -5,7 +5,7 @@ package main - import ( - "fmt" - -- "example" -+ "swigtests/example" - ) - - func main() { -diff --git a/Examples/test-suite/go/Makefile.in b/Examples/test-suite/go/Makefile.in -index d07a56bec..8283327d6 100644 ---- a/Examples/test-suite/go/Makefile.in -+++ b/Examples/test-suite/go/Makefile.in -@@ -6,24 +6,10 @@ LANGUAGE = go - GO = @GO@ - GOGCC = @GOGCC@ - GCCGO = @GCCGO@ --GO1 = @GO1@ --GO12 = @GO12@ --GO13 = @GO13@ --GO15 = @GO15@ --GOC = @GOC@ - GOVERSIONOPTION = @GOVERSIONOPTION@ - host = @host@ - SCRIPTSUFFIX = _runme.go - --GOCOMPILEARG = `if $(GO15); then echo tool compile; elif $(GO1); then echo tool $(GOC:c=g); fi` --GOLD = `if $(GO15); then echo link; else echo $(GOC:c=l); fi` --GOTOOL = `if $(GO1) ; then echo go tool; fi` --GOPACK = `if $(GO1) ; then echo go tool pack; else echo gopack; fi` -- --GOOBJEXT = `if $(GO15); then echo o; else echo $(GOC:c=); fi` -- --OSXOLDGOLINKFLAGS = `if [ -n "\`$(GO) $(GOVERSIONOPTION) | grep -E 'go1($|.0|.1|.2|.3)'\`" ] && [ -n "\`echo $(host) | grep darwin\`" ]; then echo "-Wl,-U,__cgo_topofstack"; fi` -- - SO = @SO@ - - srcdir = @srcdir@ -@@ -49,27 +35,11 @@ INCLUDES = -I$(abs_top_srcdir)/$(EXAMPLES)/$(TEST_SUITE) - $(setup) - +$(swig_and_compile_cpp) - $(run_testcase_cpp) -- if ! $(GO15); then \ -- $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' CXXSRCS='$(CXXSRCS)' \ -- SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ -- INCLUDES='$(INCLUDES)' SWIGOPT='$(SWIGOPT)' NOLINK=true \ -- TARGET='$(TARGETPREFIX)$*$(TARGETSUFFIX)' INTERFACEDIR='$(INTERFACEDIR)' INTERFACE='$*.i' \ -- $(LANGUAGE)$(VARIANT)_cpp_nocgo && \ -- $(run_testcase_cpp); \ -- fi - - %.ctest: - $(setup) - +$(swig_and_compile_c) - $(run_testcase) -- if ! $(GO15); then \ -- $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' CSRCS='$(CSRCS)' \ -- SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ -- INCLUDES='$(INCLUDES)' SWIGOPT='$(SWIGOPT)' NOLINK=true \ -- TARGET='$(TARGETPREFIX)$*$(TARGETSUFFIX)' INTERFACEDIR='$(INTERFACEDIR)' INTERFACE='$*.i' \ -- $(LANGUAGE)$(VARIANT)_nocgo && \ -- $(run_testcase); \ -- fi - - %.multicpptest: - $(setup) -@@ -136,54 +106,66 @@ go_subdir_import.multicpptest: - # Runs the testcase. - run_testcase = \ - if test -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); then \ -- if $(GOGCC) ; then \ -- $(COMPILETOOL) $(GCCGO) -c -g -I gopath/src/$* $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ -- $(COMPILETOOL) $(GCCGO) -o $*_runme $(SCRIPTPREFIX)$*_runme.@OBJEXT@ gopath/src/$*/$*.a; \ -- elif $(GO12) || $(GO13) || $(GO15); then \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I gopath/src/$* $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L gopath/src/$* -linkmode external -extld $(CC) -extldflags "$(CFLAGS) $(OSXOLDGOLINKFLAGS)" -o $*_runme $(SCRIPTPREFIX)$*_runme.$(GOOBJEXT); \ -- else \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L . -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $*_runme $(SCRIPTPREFIX)$*_runme.$(GOOBJEXT); \ -- fi && \ -+ GOPATH=`pwd`/gopath/; \ -+ export GOPATH; \ -+ CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ -+ export CGO_CPPFLAGS; \ -+ CGO_CFLAGS="$(CFLAGS)"; \ -+ export CGO_CFLAGS; \ -+ CGO_CXXFLAGS="$(CXXFLAGS)"; \ -+ export CGO_CXXFLAGS; \ -+ CGO_LDFLAGS="$(LDFLAGS) -lm"; \ -+ export CGO_LDFLAGS; \ -+ mkdir gopath/src/swigtests 2>/dev/null || true; \ -+ mkdir gopath/src/swigtests/$* 2>/dev/null || true; \ -+ cp gopath/src/$*/* gopath/src/swigtests/$*/; \ -+ mkdir gopath/src/$*/runme 2>/dev/null || true; \ -+ cp $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) gopath/src/$*/runme/runme.go; \ -+ (cd gopath/src/$*/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme runme.go); \ -+ cp gopath/src/$*/runme/runme $*_runme; \ - env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./$*_runme; \ - fi - - run_testcase_cpp = \ - if test -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); then \ -- if $(GOGCC) ; then \ -- $(COMPILETOOL) $(GCCGO) -c -g -I gopath/src/$* $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ -- $(COMPILETOOL) $(GCCGO) -o $*_runme $(SCRIPTPREFIX)$*_runme.@OBJEXT@ gopath/src/$*/$*.a -lstdc++; \ -- elif $(GO12) || $(GO13) || $(GO15); then \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I gopath/src/$* $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L gopath/src/$* -linkmode external -extld $(CXX) -extldflags "$(CXXFLAGS) $(OSXOLDGOLINKFLAGS)" -o $*_runme $(SCRIPTPREFIX)$*_runme.$(GOOBJEXT); \ -- else \ -- $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) && \ -- $(COMPILETOOL) $(GOTOOL) $(GOLD) -L . -r $${GOROOT:-`go env GOROOT`}/pkg/$${GOOS:-`go env GOOS`}_$${GOARCH:-`go env GOARCH`}:. -o $*_runme $(SCRIPTPREFIX)$*_runme.$(GOOBJEXT); \ -- fi && \ -+ GOPATH=`pwd`/gopath/; \ -+ export GOPATH; \ -+ CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ -+ export CGO_CPPFLAGS; \ -+ CGO_CFLAGS="$(CFLAGS)"; \ -+ export CGO_CFLAGS; \ -+ CGO_CXXFLAGS="$(CXXFLAGS)"; \ -+ export CGO_CXXFLAGS; \ -+ CGO_LDFLAGS="$(LDFLAGS) -lm"; \ -+ export CGO_LDFLAGS; \ -+ mkdir gopath/src/swigtests 2>/dev/null || true; \ -+ mkdir gopath/src/swigtests/$* 2>/dev/null || true; \ -+ cp gopath/src/$*/* gopath/src/swigtests/$*/; \ -+ mkdir gopath/src/$*/runme 2>/dev/null || true; \ -+ cp $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) gopath/src/$*/runme/runme.go; \ -+ (cd gopath/src/$*/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme runme.go); \ -+ cp gopath/src/$*/runme/runme $*_runme; \ - env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./$*_runme; \ - fi - - run_multi_testcase = \ - if test -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); then \ -- if $(GO15) || $(GOGCC); then \ -- files=`cat $(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$*.list`; \ -- mkdir gopath/$*/src/$* 2>/dev/null || true; \ -- cp $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) gopath/$*/src/$*; \ -- GOPATH="`pwd`/gopath/$*"; \ -- export GOPATH; \ -- CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) `for f in $$files; do echo -I ../$$f; done`"; \ -- export CGO_CPPFLAGS; \ -- CGO_CFLAGS="$(CFLAGS)"; \ -- export CGO_CFLAGS; \ -- CGO_CXXFLAGS="$(CXXFLAGS)"; \ -- export CGO_CXXFLAGS; \ -- CGO_LDFLAGS="$(LDFLAGS) -lm"; \ -- export CGO_LDFLAGS; \ -- (cd gopath/$*/src/$* && \ -- $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o ../../../../$*_runme) && \ -- env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./$*_runme; \ -- fi; \ -+ files=`cat $(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$*.list`; \ -+ mkdir gopath/$*/src/$* 2>/dev/null || true; \ -+ cp $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) gopath/$*/src/$*; \ -+ GOPATH="`pwd`/gopath/$*"; \ -+ export GOPATH; \ -+ CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) `for f in $$files; do echo -I ../$$f; done`"; \ -+ export CGO_CPPFLAGS; \ -+ CGO_CFLAGS="$(CFLAGS)"; \ -+ export CGO_CFLAGS; \ -+ CGO_CXXFLAGS="$(CXXFLAGS)"; \ -+ export CGO_CXXFLAGS; \ -+ CGO_LDFLAGS="$(LDFLAGS) -lm"; \ -+ export CGO_LDFLAGS; \ -+ (cd gopath/$*/src/$* && \ -+ $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o ../../../../$*_runme) && \ -+ env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./$*_runme; \ - fi - - %.clean: -diff --git a/Examples/test-suite/go/abstract_access_runme.go b/Examples/test-suite/go/abstract_access_runme.go -index 5102236f9..0a0e56fef 100644 ---- a/Examples/test-suite/go/abstract_access_runme.go -+++ b/Examples/test-suite/go/abstract_access_runme.go -@@ -1,6 +1,6 @@ - package main - --import "abstract_access" -+import "swigtests/abstract_access" - - func main() { - d := abstract_access.NewD() -diff --git a/Examples/test-suite/go/abstract_typedef2_runme.go b/Examples/test-suite/go/abstract_typedef2_runme.go -index 76a5fc8de..5e2ed1e7a 100644 ---- a/Examples/test-suite/go/abstract_typedef2_runme.go -+++ b/Examples/test-suite/go/abstract_typedef2_runme.go -@@ -1,6 +1,6 @@ - package main - --import "abstract_typedef2" -+import "swigtests/abstract_typedef2" - - func main() { - abstract_typedef2.NewA_UF() -diff --git a/Examples/test-suite/go/abstract_typedef_runme.go b/Examples/test-suite/go/abstract_typedef_runme.go -index 56aaa613f..1ad49f59d 100644 ---- a/Examples/test-suite/go/abstract_typedef_runme.go -+++ b/Examples/test-suite/go/abstract_typedef_runme.go -@@ -1,6 +1,6 @@ - package main - --import "abstract_typedef" -+import "swigtests/abstract_typedef" - - func main() { - e := abstract_typedef.NewEngine() -diff --git a/Examples/test-suite/go/abstract_virtual_runme.go b/Examples/test-suite/go/abstract_virtual_runme.go -index e19eac27d..d333d50b3 100644 ---- a/Examples/test-suite/go/abstract_virtual_runme.go -+++ b/Examples/test-suite/go/abstract_virtual_runme.go -@@ -1,6 +1,6 @@ - package main - --import "abstract_virtual" -+import "swigtests/abstract_virtual" - - func main() { - abstract_virtual.NewD() -diff --git a/Examples/test-suite/go/argout_runme.go b/Examples/test-suite/go/argout_runme.go -index bb8ab9ed2..b2edf54b6 100644 ---- a/Examples/test-suite/go/argout_runme.go -+++ b/Examples/test-suite/go/argout_runme.go -@@ -1,6 +1,6 @@ - package main - --import wrap "argout" -+import wrap "swigtests/argout" - - func main() { - ip := wrap.New_intp() -diff --git a/Examples/test-suite/go/array_member_runme.go b/Examples/test-suite/go/array_member_runme.go -index 4f029db98..d8c3896ee 100644 ---- a/Examples/test-suite/go/array_member_runme.go -+++ b/Examples/test-suite/go/array_member_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "array_member" -+import . "swigtests/array_member" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/arrays_global_runme.go b/Examples/test-suite/go/arrays_global_runme.go -index 35b049d9a..9c4a9e57a 100644 ---- a/Examples/test-suite/go/arrays_global_runme.go -+++ b/Examples/test-suite/go/arrays_global_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "arrays_global" -+import . "swigtests/arrays_global" - - func main() { - SetArray_i(GetArray_const_i()) -diff --git a/Examples/test-suite/go/char_binary_runme.go b/Examples/test-suite/go/char_binary_runme.go -index d47d616af..3c8c2d72d 100644 ---- a/Examples/test-suite/go/char_binary_runme.go -+++ b/Examples/test-suite/go/char_binary_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "char_binary" -+import . "swigtests/char_binary" - - func main() { - t := NewTest() -diff --git a/Examples/test-suite/go/class_ignore_runme.go b/Examples/test-suite/go/class_ignore_runme.go -index 24261c637..11cf81d91 100644 ---- a/Examples/test-suite/go/class_ignore_runme.go -+++ b/Examples/test-suite/go/class_ignore_runme.go -@@ -1,6 +1,6 @@ - package main - --import "class_ignore" -+import "swigtests/class_ignore" - - func main() { - a := class_ignore.NewBar() -diff --git a/Examples/test-suite/go/class_scope_weird_runme.go b/Examples/test-suite/go/class_scope_weird_runme.go -index a42bdad21..477699061 100644 ---- a/Examples/test-suite/go/class_scope_weird_runme.go -+++ b/Examples/test-suite/go/class_scope_weird_runme.go -@@ -1,6 +1,6 @@ - package main - --import "class_scope_weird" -+import "swigtests/class_scope_weird" - - func main() { - f := class_scope_weird.NewFoo() -diff --git a/Examples/test-suite/go/compactdefaultargs_runme.go b/Examples/test-suite/go/compactdefaultargs_runme.go -index fe6224ca2..c9e90087f 100644 ---- a/Examples/test-suite/go/compactdefaultargs_runme.go -+++ b/Examples/test-suite/go/compactdefaultargs_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "compactdefaultargs" -+import . "swigtests/compactdefaultargs" - - func main() { - defaults1 := NewDefaults1(1000) -diff --git a/Examples/test-suite/go/constover_runme.go b/Examples/test-suite/go/constover_runme.go -index 6c837095a..51d965e7f 100644 ---- a/Examples/test-suite/go/constover_runme.go -+++ b/Examples/test-suite/go/constover_runme.go -@@ -4,7 +4,7 @@ import ( - "fmt" - "os" - -- "constover" -+ "swigtests/constover" - ) - - func main() { -diff --git a/Examples/test-suite/go/constructor_copy_runme.go b/Examples/test-suite/go/constructor_copy_runme.go -index 68c428853..ca4725549 100644 ---- a/Examples/test-suite/go/constructor_copy_runme.go -+++ b/Examples/test-suite/go/constructor_copy_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "constructor_copy" -+import . "swigtests/constructor_copy" - - func main() { - f1 := NewFoo1(3) -diff --git a/Examples/test-suite/go/contract_runme.go b/Examples/test-suite/go/contract_runme.go -index b028855c3..7c9d0979e 100644 ---- a/Examples/test-suite/go/contract_runme.go -+++ b/Examples/test-suite/go/contract_runme.go -@@ -1,6 +1,6 @@ - package main - --import "contract" -+import "swigtests/contract" - - func main() { - contract.Test_preassert(1, 2) -diff --git a/Examples/test-suite/go/cpp11_strongly_typed_enumerations_runme.go b/Examples/test-suite/go/cpp11_strongly_typed_enumerations_runme.go -index f9ca74a1e..926b6f756 100644 ---- a/Examples/test-suite/go/cpp11_strongly_typed_enumerations_runme.go -+++ b/Examples/test-suite/go/cpp11_strongly_typed_enumerations_runme.go -@@ -1,7 +1,7 @@ - package main - - import "fmt" --import . "cpp11_strongly_typed_enumerations" -+import . "swigtests/cpp11_strongly_typed_enumerations" - - func enumCheck(actual int, expected int) int { - if actual != expected { -diff --git a/Examples/test-suite/go/cpp_enum_runme.go b/Examples/test-suite/go/cpp_enum_runme.go -index 8906dd4f1..9b8930a44 100644 ---- a/Examples/test-suite/go/cpp_enum_runme.go -+++ b/Examples/test-suite/go/cpp_enum_runme.go -@@ -1,6 +1,6 @@ - package main - --import "cpp_enum" -+import "swigtests/cpp_enum" - - func main() { - f := cpp_enum.NewFoo() -diff --git a/Examples/test-suite/go/cpp_namespace_runme.go b/Examples/test-suite/go/cpp_namespace_runme.go -index aecdd9543..71affc57d 100644 ---- a/Examples/test-suite/go/cpp_namespace_runme.go -+++ b/Examples/test-suite/go/cpp_namespace_runme.go -@@ -1,7 +1,7 @@ - // Note: This example assumes that namespaces are flattened - package main - --import "cpp_namespace" -+import "swigtests/cpp_namespace" - - func main() { - n := cpp_namespace.Fact(4) -diff --git a/Examples/test-suite/go/cpp_static_runme.go b/Examples/test-suite/go/cpp_static_runme.go -index 1ad981a60..d482298eb 100644 ---- a/Examples/test-suite/go/cpp_static_runme.go -+++ b/Examples/test-suite/go/cpp_static_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "cpp_static" -+import . "swigtests/cpp_static" - - func main() { - StaticFunctionTestStatic_func() -diff --git a/Examples/test-suite/go/default_args_runme.go b/Examples/test-suite/go/default_args_runme.go -index a39f95716..5b6f404e3 100644 ---- a/Examples/test-suite/go/default_args_runme.go -+++ b/Examples/test-suite/go/default_args_runme.go -@@ -1,6 +1,6 @@ - package main - --import "default_args" -+import "swigtests/default_args" - - func main() { - if default_args.StaticsStaticmethod() != 60 { -diff --git a/Examples/test-suite/go/default_constructor_runme.go b/Examples/test-suite/go/default_constructor_runme.go -index eeac7eaf8..90d960143 100644 ---- a/Examples/test-suite/go/default_constructor_runme.go -+++ b/Examples/test-suite/go/default_constructor_runme.go -@@ -1,6 +1,6 @@ - package main - --import dc "default_constructor" -+import dc "swigtests/default_constructor" - - func main() { - a := dc.NewA() -diff --git a/Examples/test-suite/go/director_alternating_runme.go b/Examples/test-suite/go/director_alternating_runme.go -index b4793aa8f..2df31db82 100644 ---- a/Examples/test-suite/go/director_alternating_runme.go -+++ b/Examples/test-suite/go/director_alternating_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "director_alternating" -+import . "swigtests/director_alternating" - - func main() { - id := GetBar().Id() -diff --git a/Examples/test-suite/go/director_basic_runme.go b/Examples/test-suite/go/director_basic_runme.go -index 360424d9b..c308f2520 100644 ---- a/Examples/test-suite/go/director_basic_runme.go -+++ b/Examples/test-suite/go/director_basic_runme.go -@@ -1,6 +1,6 @@ - package main - --import "director_basic" -+import "swigtests/director_basic" - - type GoFoo struct{} - -diff --git a/Examples/test-suite/go/director_classic_runme.go b/Examples/test-suite/go/director_classic_runme.go -index 230c9638d..d8acc1337 100644 ---- a/Examples/test-suite/go/director_classic_runme.go -+++ b/Examples/test-suite/go/director_classic_runme.go -@@ -1,7 +1,7 @@ - package main - - import "fmt" --import . "director_classic" -+import . "swigtests/director_classic" - - type TargetLangPerson struct{} // From Person - func (p *TargetLangPerson) Id() string { -diff --git a/Examples/test-suite/go/director_default_runme.go b/Examples/test-suite/go/director_default_runme.go -index ac2aace1d..557d5c54b 100644 ---- a/Examples/test-suite/go/director_default_runme.go -+++ b/Examples/test-suite/go/director_default_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "director_default" -+import . "swigtests/director_default" - - func main() { - NewFoo() -diff --git a/Examples/test-suite/go/director_detect_runme.go b/Examples/test-suite/go/director_detect_runme.go -index 0c3c95fdc..f82a0c04a 100644 ---- a/Examples/test-suite/go/director_detect_runme.go -+++ b/Examples/test-suite/go/director_detect_runme.go -@@ -1,6 +1,6 @@ - package main - --import "director_detect" -+import "swigtests/director_detect" - - type MyBar struct { - val int -diff --git a/Examples/test-suite/go/director_enum_runme.go b/Examples/test-suite/go/director_enum_runme.go -index 002d425d2..3e67417b2 100644 ---- a/Examples/test-suite/go/director_enum_runme.go -+++ b/Examples/test-suite/go/director_enum_runme.go -@@ -1,6 +1,6 @@ - package main - --import "director_enum" -+import "swigtests/director_enum" - - type MyFoo struct{} // From director_enum.Foo - func (p *MyFoo) Say_hi(val director_enum.EnumDirectorHello) director_enum.EnumDirectorHello { -diff --git a/Examples/test-suite/go/director_exception_runme.go b/Examples/test-suite/go/director_exception_runme.go -index 55231ff16..167d75193 100644 ---- a/Examples/test-suite/go/director_exception_runme.go -+++ b/Examples/test-suite/go/director_exception_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "director_exception" -+import . "swigtests/director_exception" - - type Exception struct { - msg string -diff --git a/Examples/test-suite/go/director_extend_runme.go b/Examples/test-suite/go/director_extend_runme.go -index 27e55b997..adfb6ddb7 100644 ---- a/Examples/test-suite/go/director_extend_runme.go -+++ b/Examples/test-suite/go/director_extend_runme.go -@@ -5,7 +5,7 @@ - - package main - --import . "director_extend" -+import . "swigtests/director_extend" - - func main() { - m := NewSpObject() -diff --git a/Examples/test-suite/go/director_finalizer_runme.go b/Examples/test-suite/go/director_finalizer_runme.go -index d36a4ba33..5cd9d95e0 100644 ---- a/Examples/test-suite/go/director_finalizer_runme.go -+++ b/Examples/test-suite/go/director_finalizer_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "director_finalizer" -+import . "swigtests/director_finalizer" - - type MyFoo struct{} // From Foo - func DeleteMyFoo(p Foo) { -diff --git a/Examples/test-suite/go/director_frob_runme.go b/Examples/test-suite/go/director_frob_runme.go -index 3985eb14b..7354fa76b 100644 ---- a/Examples/test-suite/go/director_frob_runme.go -+++ b/Examples/test-suite/go/director_frob_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "director_frob" -+import . "swigtests/director_frob" - - func main() { - foo := NewBravo() -diff --git a/Examples/test-suite/go/director_nested_runme.go b/Examples/test-suite/go/director_nested_runme.go -index a1193ad59..b04893582 100644 ---- a/Examples/test-suite/go/director_nested_runme.go -+++ b/Examples/test-suite/go/director_nested_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "director_nested" -+import . "swigtests/director_nested" - - type A struct{} // From FooBar_int - func (p *A) Do_step() string { -diff --git a/Examples/test-suite/go/director_profile_runme.go b/Examples/test-suite/go/director_profile_runme.go -index a9bc7934b..da0ea219b 100644 ---- a/Examples/test-suite/go/director_profile_runme.go -+++ b/Examples/test-suite/go/director_profile_runme.go -@@ -1,7 +1,7 @@ - package main - - import "fmt" --import "director_profile" -+import "swigtests/director_profile" - - type MyB struct{} // From director_profile.B - func (p *MyB) Vfi(a int) int { -diff --git a/Examples/test-suite/go/director_protected_runme.go b/Examples/test-suite/go/director_protected_runme.go -index bfd50c6b2..0012ccdb2 100644 ---- a/Examples/test-suite/go/director_protected_runme.go -+++ b/Examples/test-suite/go/director_protected_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "director_protected" -+import . "swigtests/director_protected" - - type FooBar struct{} // From Bar - func (p *FooBar) Ping() string { -diff --git a/Examples/test-suite/go/director_string_runme.go b/Examples/test-suite/go/director_string_runme.go -index f4f9cc150..0c73b6a29 100644 ---- a/Examples/test-suite/go/director_string_runme.go -+++ b/Examples/test-suite/go/director_string_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "director_string" -+import . "swigtests/director_string" - - type B struct { // From A - abi A -diff --git a/Examples/test-suite/go/director_unroll_runme.go b/Examples/test-suite/go/director_unroll_runme.go -index 6a919f656..560034c8a 100644 ---- a/Examples/test-suite/go/director_unroll_runme.go -+++ b/Examples/test-suite/go/director_unroll_runme.go -@@ -1,6 +1,6 @@ - package main - --import "director_unroll" -+import "swigtests/director_unroll" - - type MyFoo struct{} // From director_unroll.Foo - func (p *MyFoo) Ping() string { -diff --git a/Examples/test-suite/go/disown_runme.go b/Examples/test-suite/go/disown_runme.go -index 4484515fd..ba072a888 100644 ---- a/Examples/test-suite/go/disown_runme.go -+++ b/Examples/test-suite/go/disown_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "disown" -+import . "swigtests/disown" - - func main() { - a := NewA() -diff --git a/Examples/test-suite/go/dynamic_cast_runme.go b/Examples/test-suite/go/dynamic_cast_runme.go -index 46ba23698..213bc0ce5 100644 ---- a/Examples/test-suite/go/dynamic_cast_runme.go -+++ b/Examples/test-suite/go/dynamic_cast_runme.go -@@ -1,6 +1,6 @@ - package main - --import "dynamic_cast" -+import "swigtests/dynamic_cast" - - func main() { - f := dynamic_cast.NewFoo() -diff --git a/Examples/test-suite/go/empty_c_runme.go b/Examples/test-suite/go/empty_c_runme.go -index 1a1bd9cc5..f093103f6 100644 ---- a/Examples/test-suite/go/empty_c_runme.go -+++ b/Examples/test-suite/go/empty_c_runme.go -@@ -1,6 +1,6 @@ - package main - --import _ "empty_c" -+import _ "swigtests/empty_c" - - func main() { - } -diff --git a/Examples/test-suite/go/empty_runme.go b/Examples/test-suite/go/empty_runme.go -index 681a6f3ad..03f423b8b 100644 ---- a/Examples/test-suite/go/empty_runme.go -+++ b/Examples/test-suite/go/empty_runme.go -@@ -1,6 +1,6 @@ - package main - --import _ "empty" -+import _ "swigtests/empty" - - func main() { - } -diff --git a/Examples/test-suite/go/enum_template_runme.go b/Examples/test-suite/go/enum_template_runme.go -index c60a452d7..7f43eab68 100644 ---- a/Examples/test-suite/go/enum_template_runme.go -+++ b/Examples/test-suite/go/enum_template_runme.go -@@ -1,6 +1,6 @@ - package main - --import "enum_template" -+import "swigtests/enum_template" - - func main() { - if enum_template.MakeETest() != 1 { -diff --git a/Examples/test-suite/go/enums_runme.go b/Examples/test-suite/go/enums_runme.go -index 7a528b3e2..4a879a048 100644 ---- a/Examples/test-suite/go/enums_runme.go -+++ b/Examples/test-suite/go/enums_runme.go -@@ -1,6 +1,6 @@ - package main - --import "enums" -+import "swigtests/enums" - - func main() { - enums.Bar2(1) -diff --git a/Examples/test-suite/go/exception_order_runme.go b/Examples/test-suite/go/exception_order_runme.go -index 21dcff312..ee67712fc 100644 ---- a/Examples/test-suite/go/exception_order_runme.go -+++ b/Examples/test-suite/go/exception_order_runme.go -@@ -1,7 +1,7 @@ - package main - - import "strings" --import . "exception_order" -+import . "swigtests/exception_order" - - func main() { - a := NewA() -diff --git a/Examples/test-suite/go/extend_placement_runme.go b/Examples/test-suite/go/extend_placement_runme.go -index 253ec6618..879589679 100644 ---- a/Examples/test-suite/go/extend_placement_runme.go -+++ b/Examples/test-suite/go/extend_placement_runme.go -@@ -1,6 +1,6 @@ - package main - --import "extend_placement" -+import "swigtests/extend_placement" - - func main() { - foo := extend_placement.NewFoo() -diff --git a/Examples/test-suite/go/extend_template_ns_runme.go b/Examples/test-suite/go/extend_template_ns_runme.go -index d005172a4..b1dd43a78 100644 ---- a/Examples/test-suite/go/extend_template_ns_runme.go -+++ b/Examples/test-suite/go/extend_template_ns_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "extend_template_ns" -+import . "swigtests/extend_template_ns" - - func main() { - f := NewFoo_One() -diff --git a/Examples/test-suite/go/extend_template_runme.go b/Examples/test-suite/go/extend_template_runme.go -index a5c4da4e1..4a6b7099b 100644 ---- a/Examples/test-suite/go/extend_template_runme.go -+++ b/Examples/test-suite/go/extend_template_runme.go -@@ -1,6 +1,6 @@ - package main - --import "extend_template" -+import "swigtests/extend_template" - - func main() { - f := extend_template.NewFoo_0() -diff --git a/Examples/test-suite/go/extend_variable_runme.go b/Examples/test-suite/go/extend_variable_runme.go -index 9425aee4d..278bffed6 100644 ---- a/Examples/test-suite/go/extend_variable_runme.go -+++ b/Examples/test-suite/go/extend_variable_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "extend_variable" -+import . "swigtests/extend_variable" - - func main() { - if FooBar != 42 { -diff --git a/Examples/test-suite/go/extern_c_runme.go b/Examples/test-suite/go/extern_c_runme.go -index 9bc2cd0cc..1cbfd9d80 100644 ---- a/Examples/test-suite/go/extern_c_runme.go -+++ b/Examples/test-suite/go/extern_c_runme.go -@@ -1,6 +1,6 @@ - package main - --import "extern_c" -+import "swigtests/extern_c" - - func main() { - extern_c.RealFunction(2) -diff --git a/Examples/test-suite/go/friends_runme.go b/Examples/test-suite/go/friends_runme.go -index 2e34a4db0..b6b9e93f3 100644 ---- a/Examples/test-suite/go/friends_runme.go -+++ b/Examples/test-suite/go/friends_runme.go -@@ -1,6 +1,6 @@ - package main - --import "friends" -+import "swigtests/friends" - - func main() { - a := friends.NewA(2) -diff --git a/Examples/test-suite/go/fvirtual_runme.go b/Examples/test-suite/go/fvirtual_runme.go -index 86ef90f18..01b94f419 100644 ---- a/Examples/test-suite/go/fvirtual_runme.go -+++ b/Examples/test-suite/go/fvirtual_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "fvirtual" -+import . "swigtests/fvirtual" - - func main() { - sw := NewNodeSwitch() -diff --git a/Examples/test-suite/go/global_ns_arg_runme.go b/Examples/test-suite/go/global_ns_arg_runme.go -index e86aa6747..aeacd91a3 100644 ---- a/Examples/test-suite/go/global_ns_arg_runme.go -+++ b/Examples/test-suite/go/global_ns_arg_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "global_ns_arg" -+import . "swigtests/global_ns_arg" - - func main() { - Foo(1) -diff --git a/Examples/test-suite/go/go_director_inout_runme.go b/Examples/test-suite/go/go_director_inout_runme.go -index e6768a465..171b3c223 100644 ---- a/Examples/test-suite/go/go_director_inout_runme.go -+++ b/Examples/test-suite/go/go_director_inout_runme.go -@@ -1,7 +1,7 @@ - package main - - import ( -- wrap "go_director_inout" -+ wrap "swigtests/go_director_inout" - ) - - type GoMyClass struct {} -diff --git a/Examples/test-suite/go/go_inout_runme.go b/Examples/test-suite/go/go_inout_runme.go -index 4599aa104..2dc5b9908 100644 ---- a/Examples/test-suite/go/go_inout_runme.go -+++ b/Examples/test-suite/go/go_inout_runme.go -@@ -5,7 +5,7 @@ import ( - "fmt" - "reflect" - -- "go_inout" -+ "swigtests/go_inout" - ) - - type S struct { -diff --git a/Examples/test-suite/go/grouping_runme.go b/Examples/test-suite/go/grouping_runme.go -index f808e1286..d5f347579 100644 ---- a/Examples/test-suite/go/grouping_runme.go -+++ b/Examples/test-suite/go/grouping_runme.go -@@ -1,6 +1,6 @@ - package main - --import "grouping" -+import "swigtests/grouping" - - func main() { - x := grouping.Test1(42) -diff --git a/Examples/test-suite/go/import_nomodule_runme.go b/Examples/test-suite/go/import_nomodule_runme.go -index 48592df25..23680159d 100644 ---- a/Examples/test-suite/go/import_nomodule_runme.go -+++ b/Examples/test-suite/go/import_nomodule_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "import_nomodule" -+import . "swigtests/import_nomodule" - - func main() { - f := Create_Foo() -diff --git a/Examples/test-suite/go/inctest_runme.go b/Examples/test-suite/go/inctest_runme.go -index 3148abcd2..490721e75 100644 ---- a/Examples/test-suite/go/inctest_runme.go -+++ b/Examples/test-suite/go/inctest_runme.go -@@ -1,6 +1,6 @@ - package main - --import "inctest" -+import "swigtests/inctest" - - func main() { - inctest.NewA() -diff --git a/Examples/test-suite/go/inherit_member_runme.go b/Examples/test-suite/go/inherit_member_runme.go -index 6fd70cf80..10dabad96 100644 ---- a/Examples/test-suite/go/inherit_member_runme.go -+++ b/Examples/test-suite/go/inherit_member_runme.go -@@ -1,6 +1,6 @@ - package main - --import wrap "inherit_member" -+import wrap "swigtests/inherit_member" - - func main() { - s := wrap.NewChild() -diff --git a/Examples/test-suite/go/inherit_missing_runme.go b/Examples/test-suite/go/inherit_missing_runme.go -index c70c48306..b4706e974 100644 ---- a/Examples/test-suite/go/inherit_missing_runme.go -+++ b/Examples/test-suite/go/inherit_missing_runme.go -@@ -1,6 +1,6 @@ - package main - --import "inherit_missing" -+import "swigtests/inherit_missing" - - func main() { - a := inherit_missing.New_Foo() -diff --git a/Examples/test-suite/go/input_runme.go b/Examples/test-suite/go/input_runme.go -index ddc2992fe..c5eb9e45d 100644 ---- a/Examples/test-suite/go/input_runme.go -+++ b/Examples/test-suite/go/input_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "input" -+import . "swigtests/input" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/keyword_rename_c_runme.go b/Examples/test-suite/go/keyword_rename_c_runme.go -index 26f2ea42b..28f6ddd12 100644 ---- a/Examples/test-suite/go/keyword_rename_c_runme.go -+++ b/Examples/test-suite/go/keyword_rename_c_runme.go -@@ -1,6 +1,6 @@ - package main - --import "keyword_rename_c" -+import "swigtests/keyword_rename_c" - - func main() { - keyword_rename_c.Xgo(1) -diff --git a/Examples/test-suite/go/keyword_rename_runme.go b/Examples/test-suite/go/keyword_rename_runme.go -index 7a40ff83d..f93c7ab14 100644 ---- a/Examples/test-suite/go/keyword_rename_runme.go -+++ b/Examples/test-suite/go/keyword_rename_runme.go -@@ -1,6 +1,6 @@ - package main - --import "keyword_rename" -+import "swigtests/keyword_rename" - - func main() { - keyword_rename.Xgo(1) -diff --git a/Examples/test-suite/go/li_attribute_runme.go b/Examples/test-suite/go/li_attribute_runme.go -index b502b8cea..0702b898f 100644 ---- a/Examples/test-suite/go/li_attribute_runme.go -+++ b/Examples/test-suite/go/li_attribute_runme.go -@@ -1,6 +1,6 @@ - package main - --import "li_attribute" -+import "swigtests/li_attribute" - - func main() { - aa := li_attribute.NewA(1, 2, 3) -diff --git a/Examples/test-suite/go/li_carrays_cpp_runme.go b/Examples/test-suite/go/li_carrays_cpp_runme.go -index cfc171284..a96291c7b 100644 ---- a/Examples/test-suite/go/li_carrays_cpp_runme.go -+++ b/Examples/test-suite/go/li_carrays_cpp_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "li_carrays_cpp" -+import . "swigtests/li_carrays_cpp" - - func main() { - d := NewDoubleArray(10) -diff --git a/Examples/test-suite/go/li_carrays_runme.go b/Examples/test-suite/go/li_carrays_runme.go -index 9128bbfd1..eefc6ad72 100644 ---- a/Examples/test-suite/go/li_carrays_runme.go -+++ b/Examples/test-suite/go/li_carrays_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "li_carrays" -+import . "swigtests/li_carrays" - - func main() { - d := NewDoubleArray(10) -diff --git a/Examples/test-suite/go/li_cdata_cpp_runme.go b/Examples/test-suite/go/li_cdata_cpp_runme.go -index daa5384f7..5849c50d4 100644 ---- a/Examples/test-suite/go/li_cdata_cpp_runme.go -+++ b/Examples/test-suite/go/li_cdata_cpp_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "li_cdata_cpp" -+import . "swigtests/li_cdata_cpp" - - func main() { - s := "ABC abc" -diff --git a/Examples/test-suite/go/li_cdata_runme.go b/Examples/test-suite/go/li_cdata_runme.go -index 9458dab43..0c3e591ce 100644 ---- a/Examples/test-suite/go/li_cdata_runme.go -+++ b/Examples/test-suite/go/li_cdata_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "li_cdata" -+import . "swigtests/li_cdata" - - func main() { - s := "ABC abc" -diff --git a/Examples/test-suite/go/li_cmalloc_runme.go b/Examples/test-suite/go/li_cmalloc_runme.go -index 5b9f9704a..fb1b009c3 100644 ---- a/Examples/test-suite/go/li_cmalloc_runme.go -+++ b/Examples/test-suite/go/li_cmalloc_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "li_cmalloc" -+import . "swigtests/li_cmalloc" - - func main() { - p := Malloc_int() -diff --git a/Examples/test-suite/go/li_cpointer_cpp_runme.go b/Examples/test-suite/go/li_cpointer_cpp_runme.go -index 0de57c624..f422b2310 100644 ---- a/Examples/test-suite/go/li_cpointer_cpp_runme.go -+++ b/Examples/test-suite/go/li_cpointer_cpp_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "li_cpointer_cpp" -+import . "swigtests/li_cpointer_cpp" - - func main() { - p := New_intp() -diff --git a/Examples/test-suite/go/li_cpointer_runme.go b/Examples/test-suite/go/li_cpointer_runme.go -index 0fe29e77d..1a83bc62f 100644 ---- a/Examples/test-suite/go/li_cpointer_runme.go -+++ b/Examples/test-suite/go/li_cpointer_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "li_cpointer" -+import . "swigtests/li_cpointer" - - func main() { - p := New_intp() -diff --git a/Examples/test-suite/go/li_std_map_runme.go b/Examples/test-suite/go/li_std_map_runme.go -index 5c5cc2e4c..019ac6e30 100644 ---- a/Examples/test-suite/go/li_std_map_runme.go -+++ b/Examples/test-suite/go/li_std_map_runme.go -@@ -1,6 +1,6 @@ - package main - --import "li_std_map" -+import "swigtests/li_std_map" - - func main() { - a1 := li_std_map.NewA(3) -diff --git a/Examples/test-suite/go/li_std_vector_ptr_runme.go b/Examples/test-suite/go/li_std_vector_ptr_runme.go -index d66ff19c6..9a62d3796 100644 ---- a/Examples/test-suite/go/li_std_vector_ptr_runme.go -+++ b/Examples/test-suite/go/li_std_vector_ptr_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "li_std_vector_ptr" -+import . "swigtests/li_std_vector_ptr" - import "fmt" - - func check(val1 int, val2 int) { -diff --git a/Examples/test-suite/go/member_pointer_runme.go b/Examples/test-suite/go/member_pointer_runme.go -index 731526b75..02789382e 100644 ---- a/Examples/test-suite/go/member_pointer_runme.go -+++ b/Examples/test-suite/go/member_pointer_runme.go -@@ -3,7 +3,7 @@ - package main - - import "fmt" --import . "member_pointer" -+import . "swigtests/member_pointer" - - func check(what string, expected float64, actual float64) { - if expected != actual { -diff --git a/Examples/test-suite/go/memberin_extend_c_runme.go b/Examples/test-suite/go/memberin_extend_c_runme.go -index 0551acc90..696f08abb 100644 ---- a/Examples/test-suite/go/memberin_extend_c_runme.go -+++ b/Examples/test-suite/go/memberin_extend_c_runme.go -@@ -1,6 +1,6 @@ - package main - --import "memberin_extend_c" -+import "swigtests/memberin_extend_c" - - func main() { - t := memberin_extend_c.NewPerson() -diff --git a/Examples/test-suite/go/minherit_runme.go b/Examples/test-suite/go/minherit_runme.go -index 9b7873cb0..f1504af31 100644 ---- a/Examples/test-suite/go/minherit_runme.go -+++ b/Examples/test-suite/go/minherit_runme.go -@@ -1,7 +1,7 @@ - package main - - import "fmt" --import "minherit" -+import "swigtests/minherit" - - func main() { - a := minherit.NewFoo() -diff --git a/Examples/test-suite/go/namespace_class_runme.go b/Examples/test-suite/go/namespace_class_runme.go -index 4c240b6a4..435ee868a 100644 ---- a/Examples/test-suite/go/namespace_class_runme.go -+++ b/Examples/test-suite/go/namespace_class_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "namespace_class" -+import . "swigtests/namespace_class" - - func main() { - EulerT3DToFrame(1, 1, 1) -diff --git a/Examples/test-suite/go/namespace_typemap_runme.go b/Examples/test-suite/go/namespace_typemap_runme.go -index 47e2b64f1..6da43331b 100644 ---- a/Examples/test-suite/go/namespace_typemap_runme.go -+++ b/Examples/test-suite/go/namespace_typemap_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "namespace_typemap" -+import . "swigtests/namespace_typemap" - - func main() { - if Stest1("hello") != "hello" { -diff --git a/Examples/test-suite/go/namespace_virtual_method_runme.go b/Examples/test-suite/go/namespace_virtual_method_runme.go -index a8cb38bad..7ac4d3304 100644 ---- a/Examples/test-suite/go/namespace_virtual_method_runme.go -+++ b/Examples/test-suite/go/namespace_virtual_method_runme.go -@@ -1,6 +1,6 @@ - package main - --import "namespace_virtual_method" -+import "swigtests/namespace_virtual_method" - - func main() { - _ = namespace_virtual_method.NewSpam() -diff --git a/Examples/test-suite/go/naturalvar_runme.go b/Examples/test-suite/go/naturalvar_runme.go -index ed47e9d2d..458745ec4 100644 ---- a/Examples/test-suite/go/naturalvar_runme.go -+++ b/Examples/test-suite/go/naturalvar_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "naturalvar" -+import . "swigtests/naturalvar" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/nested_workaround_runme.go b/Examples/test-suite/go/nested_workaround_runme.go -index 8b31a7f4b..f42b48764 100644 ---- a/Examples/test-suite/go/nested_workaround_runme.go -+++ b/Examples/test-suite/go/nested_workaround_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "nested_workaround" -+import . "swigtests/nested_workaround" - - func main() { - inner := NewInner(5) -diff --git a/Examples/test-suite/go/overload_complicated_runme.go b/Examples/test-suite/go/overload_complicated_runme.go -index ce9d124c8..c238d974f 100644 ---- a/Examples/test-suite/go/overload_complicated_runme.go -+++ b/Examples/test-suite/go/overload_complicated_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "overload_complicated" -+import . "swigtests/overload_complicated" - - func main() { - var pInt *int -diff --git a/Examples/test-suite/go/overload_copy_runme.go b/Examples/test-suite/go/overload_copy_runme.go -index 55ec4a333..9815d76ef 100644 ---- a/Examples/test-suite/go/overload_copy_runme.go -+++ b/Examples/test-suite/go/overload_copy_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "overload_copy" -+import . "swigtests/overload_copy" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/overload_extend2_runme.go b/Examples/test-suite/go/overload_extend2_runme.go -index db790989c..d549098ba 100644 ---- a/Examples/test-suite/go/overload_extend2_runme.go -+++ b/Examples/test-suite/go/overload_extend2_runme.go -@@ -1,6 +1,6 @@ - package main - --import "overload_extend2" -+import "swigtests/overload_extend2" - - func main() { - f := overload_extend2.NewFoo() -diff --git a/Examples/test-suite/go/overload_extend_c_runme.go b/Examples/test-suite/go/overload_extend_c_runme.go -index 4d3b2b6e1..93b91d9e1 100644 ---- a/Examples/test-suite/go/overload_extend_c_runme.go -+++ b/Examples/test-suite/go/overload_extend_c_runme.go -@@ -1,6 +1,6 @@ - package main - --import "overload_extend_c" -+import "swigtests/overload_extend_c" - - func main() { - f := overload_extend_c.NewFoo() -diff --git a/Examples/test-suite/go/overload_extend_runme.go b/Examples/test-suite/go/overload_extend_runme.go -index d73d6cf3c..c1435f376 100644 ---- a/Examples/test-suite/go/overload_extend_runme.go -+++ b/Examples/test-suite/go/overload_extend_runme.go -@@ -1,6 +1,6 @@ - package main - --import "overload_extend" -+import "swigtests/overload_extend" - - func main() { - f := overload_extend.NewFoo() -diff --git a/Examples/test-suite/go/overload_polymorphic_runme.go b/Examples/test-suite/go/overload_polymorphic_runme.go -index 12b9777e6..6a4301f46 100644 ---- a/Examples/test-suite/go/overload_polymorphic_runme.go -+++ b/Examples/test-suite/go/overload_polymorphic_runme.go -@@ -1,6 +1,6 @@ - package main - --import "overload_polymorphic" -+import "swigtests/overload_polymorphic" - - func main(){ - t := overload_polymorphic.NewDerived() -diff --git a/Examples/test-suite/go/overload_rename_runme.go b/Examples/test-suite/go/overload_rename_runme.go -index 3bd4a69c5..982b1786a 100644 ---- a/Examples/test-suite/go/overload_rename_runme.go -+++ b/Examples/test-suite/go/overload_rename_runme.go -@@ -1,6 +1,6 @@ - package main - --import "overload_rename" -+import "swigtests/overload_rename" - - func main() { - _ = overload_rename.NewFoo(float32(1)) -diff --git a/Examples/test-suite/go/overload_simple_runme.go b/Examples/test-suite/go/overload_simple_runme.go -index 3eb859bac..23a80bf69 100644 ---- a/Examples/test-suite/go/overload_simple_runme.go -+++ b/Examples/test-suite/go/overload_simple_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "overload_simple" -+import . "swigtests/overload_simple" - - func main() { - if Foo(3) != "foo:int" { -diff --git a/Examples/test-suite/go/overload_subtype_runme.go b/Examples/test-suite/go/overload_subtype_runme.go -index 45d5a025f..09f7a83f4 100644 ---- a/Examples/test-suite/go/overload_subtype_runme.go -+++ b/Examples/test-suite/go/overload_subtype_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "overload_subtype" -+import . "swigtests/overload_subtype" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/overload_template_fast_runme.go b/Examples/test-suite/go/overload_template_fast_runme.go -index 63809c0ff..3b348f366 100644 ---- a/Examples/test-suite/go/overload_template_fast_runme.go -+++ b/Examples/test-suite/go/overload_template_fast_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "overload_template_fast" -+import . "swigtests/overload_template_fast" - - func main() { - _ = Foo() -diff --git a/Examples/test-suite/go/overload_template_runme.go b/Examples/test-suite/go/overload_template_runme.go -index f3a08ecd6..b85afb4d1 100644 ---- a/Examples/test-suite/go/overload_template_runme.go -+++ b/Examples/test-suite/go/overload_template_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "overload_template" -+import . "swigtests/overload_template" - - func main() { - _ = Foo() -diff --git a/Examples/test-suite/go/preproc_runme.go b/Examples/test-suite/go/preproc_runme.go -index 3c55aae72..878305463 100644 ---- a/Examples/test-suite/go/preproc_runme.go -+++ b/Examples/test-suite/go/preproc_runme.go -@@ -1,6 +1,6 @@ - package main - --import "preproc" -+import "swigtests/preproc" - - func main() { - if preproc.GetEndif() != 1 { -diff --git a/Examples/test-suite/go/primitive_ref_runme.go b/Examples/test-suite/go/primitive_ref_runme.go -index a1de2f8a5..8dcf9f5a9 100644 ---- a/Examples/test-suite/go/primitive_ref_runme.go -+++ b/Examples/test-suite/go/primitive_ref_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "primitive_ref" -+import . "swigtests/primitive_ref" - - func main() { - if Ref_int(3) != 3 { -diff --git a/Examples/test-suite/go/profiletest_runme.go b/Examples/test-suite/go/profiletest_runme.go -index c2b922ba3..68509f550 100644 ---- a/Examples/test-suite/go/profiletest_runme.go -+++ b/Examples/test-suite/go/profiletest_runme.go -@@ -1,7 +1,7 @@ - package main - - import "fmt" --import "profiletest" -+import "swigtests/profiletest" - - func main() { - a := profiletest.NewA() -diff --git a/Examples/test-suite/go/refcount_runme.go b/Examples/test-suite/go/refcount_runme.go -index 07d407273..76e30dda3 100644 ---- a/Examples/test-suite/go/refcount_runme.go -+++ b/Examples/test-suite/go/refcount_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "refcount" -+import . "swigtests/refcount" - - // very innocent example - -diff --git a/Examples/test-suite/go/reference_global_vars_runme.go b/Examples/test-suite/go/reference_global_vars_runme.go -index 908358f95..f8c125854 100644 ---- a/Examples/test-suite/go/reference_global_vars_runme.go -+++ b/Examples/test-suite/go/reference_global_vars_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "reference_global_vars" -+import . "swigtests/reference_global_vars" - - func main() { - // const class reference variable -diff --git a/Examples/test-suite/go/rename_scope_runme.go b/Examples/test-suite/go/rename_scope_runme.go -index 13bd3f178..4ad7549ad 100644 ---- a/Examples/test-suite/go/rename_scope_runme.go -+++ b/Examples/test-suite/go/rename_scope_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "rename_scope" -+import . "swigtests/rename_scope" - - func main() { - a := NewNatural_UP() -diff --git a/Examples/test-suite/go/rename_simple_runme.go b/Examples/test-suite/go/rename_simple_runme.go -index bd559ef27..efe1edc7b 100644 ---- a/Examples/test-suite/go/rename_simple_runme.go -+++ b/Examples/test-suite/go/rename_simple_runme.go -@@ -1,7 +1,7 @@ - package main - - import "fmt" --import . "rename_simple" -+import . "swigtests/rename_simple" - - func main() { - s := NewNewStruct() -diff --git a/Examples/test-suite/go/rename_strip_encoder_runme.go b/Examples/test-suite/go/rename_strip_encoder_runme.go -index ae670600c..74a0dbaaf 100644 ---- a/Examples/test-suite/go/rename_strip_encoder_runme.go -+++ b/Examples/test-suite/go/rename_strip_encoder_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "rename_strip_encoder" -+import . "swigtests/rename_strip_encoder" - - func main() { - _ = NewSomeWidget() -diff --git a/Examples/test-suite/go/ret_by_value_runme.go b/Examples/test-suite/go/ret_by_value_runme.go -index 9659d21e9..345868dcd 100644 ---- a/Examples/test-suite/go/ret_by_value_runme.go -+++ b/Examples/test-suite/go/ret_by_value_runme.go -@@ -1,6 +1,6 @@ - package main - --import "ret_by_value" -+import "swigtests/ret_by_value" - - func main() { - a := ret_by_value.Get_test() -diff --git a/Examples/test-suite/go/return_const_value_runme.go b/Examples/test-suite/go/return_const_value_runme.go -index aadb1265e..fc6baa240 100644 ---- a/Examples/test-suite/go/return_const_value_runme.go -+++ b/Examples/test-suite/go/return_const_value_runme.go -@@ -1,6 +1,6 @@ - package main - --import "return_const_value" -+import "swigtests/return_const_value" - - func main() { - p := return_const_value.Foo_ptrGetPtr() -diff --git a/Examples/test-suite/go/smart_pointer_extend_runme.go b/Examples/test-suite/go/smart_pointer_extend_runme.go -index a851e26b7..f91c9ac99 100644 ---- a/Examples/test-suite/go/smart_pointer_extend_runme.go -+++ b/Examples/test-suite/go/smart_pointer_extend_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "smart_pointer_extend" -+import . "swigtests/smart_pointer_extend" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/smart_pointer_member_runme.go b/Examples/test-suite/go/smart_pointer_member_runme.go -index e7fe7c4c2..ca2ac2c76 100644 ---- a/Examples/test-suite/go/smart_pointer_member_runme.go -+++ b/Examples/test-suite/go/smart_pointer_member_runme.go -@@ -1,7 +1,7 @@ - package main - - import "fmt" --import . "smart_pointer_member" -+import . "swigtests/smart_pointer_member" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/smart_pointer_multi_runme.go b/Examples/test-suite/go/smart_pointer_multi_runme.go -index 7c76061af..a8ec39f54 100644 ---- a/Examples/test-suite/go/smart_pointer_multi_runme.go -+++ b/Examples/test-suite/go/smart_pointer_multi_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "smart_pointer_multi" -+import . "swigtests/smart_pointer_multi" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/smart_pointer_multi_typedef_runme.go b/Examples/test-suite/go/smart_pointer_multi_typedef_runme.go -index e584cf7a2..6bfd21ef6 100644 ---- a/Examples/test-suite/go/smart_pointer_multi_typedef_runme.go -+++ b/Examples/test-suite/go/smart_pointer_multi_typedef_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "smart_pointer_multi_typedef" -+import . "swigtests/smart_pointer_multi_typedef" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/smart_pointer_overload_runme.go b/Examples/test-suite/go/smart_pointer_overload_runme.go -index 9481554f0..c28ce6100 100644 ---- a/Examples/test-suite/go/smart_pointer_overload_runme.go -+++ b/Examples/test-suite/go/smart_pointer_overload_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "smart_pointer_overload" -+import . "swigtests/smart_pointer_overload" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/smart_pointer_rename_runme.go b/Examples/test-suite/go/smart_pointer_rename_runme.go -index 44841f5e6..22c0eb1e9 100644 ---- a/Examples/test-suite/go/smart_pointer_rename_runme.go -+++ b/Examples/test-suite/go/smart_pointer_rename_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "smart_pointer_rename" -+import . "swigtests/smart_pointer_rename" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/smart_pointer_simple_runme.go b/Examples/test-suite/go/smart_pointer_simple_runme.go -index b468bd2e5..8a14dcf9b 100644 ---- a/Examples/test-suite/go/smart_pointer_simple_runme.go -+++ b/Examples/test-suite/go/smart_pointer_simple_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "smart_pointer_simple" -+import . "swigtests/smart_pointer_simple" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/smart_pointer_templatevariables_runme.go b/Examples/test-suite/go/smart_pointer_templatevariables_runme.go -index 6d4ea91de..8f7102d43 100644 ---- a/Examples/test-suite/go/smart_pointer_templatevariables_runme.go -+++ b/Examples/test-suite/go/smart_pointer_templatevariables_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "smart_pointer_templatevariables" -+import . "swigtests/smart_pointer_templatevariables" - - func main() { - d := NewDiffImContainerPtr_D(Create(1234, 5678)) -diff --git a/Examples/test-suite/go/smart_pointer_typedef_runme.go b/Examples/test-suite/go/smart_pointer_typedef_runme.go -index e89a8b150..5468a2926 100644 ---- a/Examples/test-suite/go/smart_pointer_typedef_runme.go -+++ b/Examples/test-suite/go/smart_pointer_typedef_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "smart_pointer_typedef" -+import . "swigtests/smart_pointer_typedef" - - func main() { - f := NewFoo() -diff --git a/Examples/test-suite/go/sneaky1_runme.go b/Examples/test-suite/go/sneaky1_runme.go -index 57c779724..c17f0ffc6 100644 ---- a/Examples/test-suite/go/sneaky1_runme.go -+++ b/Examples/test-suite/go/sneaky1_runme.go -@@ -1,6 +1,6 @@ - package main - --import "sneaky1" -+import "swigtests/sneaky1" - - func main() { - _ = sneaky1.Add(3, 4) -diff --git a/Examples/test-suite/go/special_variable_macros_runme.go b/Examples/test-suite/go/special_variable_macros_runme.go -index 9338e6558..597c48748 100644 ---- a/Examples/test-suite/go/special_variable_macros_runme.go -+++ b/Examples/test-suite/go/special_variable_macros_runme.go -@@ -1,6 +1,6 @@ - package main - --import "special_variable_macros" -+import "swigtests/special_variable_macros" - - func main() { - name := special_variable_macros.NewName() -diff --git a/Examples/test-suite/go/static_const_member_2_runme.go b/Examples/test-suite/go/static_const_member_2_runme.go -index ff8cbbbcd..7586eb404 100644 ---- a/Examples/test-suite/go/static_const_member_2_runme.go -+++ b/Examples/test-suite/go/static_const_member_2_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "static_const_member_2" -+import . "swigtests/static_const_member_2" - - func main() { - _ = NewTest_int() -diff --git a/Examples/test-suite/go/struct_initialization_runme.go b/Examples/test-suite/go/struct_initialization_runme.go -index a815bd3f5..d5eb4e968 100644 ---- a/Examples/test-suite/go/struct_initialization_runme.go -+++ b/Examples/test-suite/go/struct_initialization_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "struct_initialization" -+import . "swigtests/struct_initialization" - - func main() { - if GetInstanceC1().GetX() != 10 { -diff --git a/Examples/test-suite/go/struct_rename_runme.go b/Examples/test-suite/go/struct_rename_runme.go -index de99fc320..6d619e090 100644 ---- a/Examples/test-suite/go/struct_rename_runme.go -+++ b/Examples/test-suite/go/struct_rename_runme.go -@@ -1,6 +1,6 @@ - package main - --import "struct_rename" -+import "swigtests/struct_rename" - - func main() { - _ = struct_rename.NewBar() -diff --git a/Examples/test-suite/go/struct_value_runme.go b/Examples/test-suite/go/struct_value_runme.go -index 3b5e5c1dc..c43a67a88 100644 ---- a/Examples/test-suite/go/struct_value_runme.go -+++ b/Examples/test-suite/go/struct_value_runme.go -@@ -1,6 +1,6 @@ - package main - --import "struct_value" -+import "swigtests/struct_value" - - func main() { - b := struct_value.NewBar() -diff --git a/Examples/test-suite/go/template_default_arg_runme.go b/Examples/test-suite/go/template_default_arg_runme.go -index d67e63fa7..9558c7496 100644 ---- a/Examples/test-suite/go/template_default_arg_runme.go -+++ b/Examples/test-suite/go/template_default_arg_runme.go -@@ -1,6 +1,6 @@ - package main - --import "template_default_arg" -+import "swigtests/template_default_arg" - - func main() { - helloInt := template_default_arg.NewHello_int() -diff --git a/Examples/test-suite/go/template_extend1_runme.go b/Examples/test-suite/go/template_extend1_runme.go -index 0912fa6ed..f2469ab15 100644 ---- a/Examples/test-suite/go/template_extend1_runme.go -+++ b/Examples/test-suite/go/template_extend1_runme.go -@@ -1,6 +1,6 @@ - package main - --import "template_extend1" -+import "swigtests/template_extend1" - - func main() { - a := template_extend1.NewLBaz() -diff --git a/Examples/test-suite/go/template_extend2_runme.go b/Examples/test-suite/go/template_extend2_runme.go -index ced3d93cc..c3669bc95 100644 ---- a/Examples/test-suite/go/template_extend2_runme.go -+++ b/Examples/test-suite/go/template_extend2_runme.go -@@ -1,6 +1,6 @@ - package main - --import "template_extend2" -+import "swigtests/template_extend2" - - func main() { - a := template_extend2.NewLBaz() -diff --git a/Examples/test-suite/go/template_inherit_runme.go b/Examples/test-suite/go/template_inherit_runme.go -index a8d5126dc..10071b128 100644 ---- a/Examples/test-suite/go/template_inherit_runme.go -+++ b/Examples/test-suite/go/template_inherit_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "template_inherit" -+import . "swigtests/template_inherit" - - func main() { - a := NewFooInt() -diff --git a/Examples/test-suite/go/template_ns4_runme.go b/Examples/test-suite/go/template_ns4_runme.go -index 6c658ec97..c1b356b3f 100644 ---- a/Examples/test-suite/go/template_ns4_runme.go -+++ b/Examples/test-suite/go/template_ns4_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "template_ns4" -+import . "swigtests/template_ns4" - - func main() { - d := Make_Class_DD() -diff --git a/Examples/test-suite/go/template_ns_runme.go b/Examples/test-suite/go/template_ns_runme.go -index cfc56fa3c..e77c17bf7 100644 ---- a/Examples/test-suite/go/template_ns_runme.go -+++ b/Examples/test-suite/go/template_ns_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "template_ns" -+import . "swigtests/template_ns" - - func main() { - p1 := NewPairii(2, 3) -diff --git a/Examples/test-suite/go/template_opaque_runme.go b/Examples/test-suite/go/template_opaque_runme.go -index 71701df53..b3bf61043 100644 ---- a/Examples/test-suite/go/template_opaque_runme.go -+++ b/Examples/test-suite/go/template_opaque_runme.go -@@ -1,6 +1,6 @@ - package main - --import "template_opaque" -+import "swigtests/template_opaque" - - func main() { - v := template_opaque.NewOpaqueVectorType(int64(10)) -diff --git a/Examples/test-suite/go/template_ref_type_runme.go b/Examples/test-suite/go/template_ref_type_runme.go -index a01ce3d31..516b6c721 100644 ---- a/Examples/test-suite/go/template_ref_type_runme.go -+++ b/Examples/test-suite/go/template_ref_type_runme.go -@@ -1,6 +1,6 @@ - package main - --import "template_ref_type" -+import "swigtests/template_ref_type" - - func main() { - xr := template_ref_type.NewXC() -diff --git a/Examples/test-suite/go/template_rename_runme.go b/Examples/test-suite/go/template_rename_runme.go -index 6e04f8845..08cf3fb48 100644 ---- a/Examples/test-suite/go/template_rename_runme.go -+++ b/Examples/test-suite/go/template_rename_runme.go -@@ -1,6 +1,6 @@ - package main - --import "template_rename" -+import "swigtests/template_rename" - - func main() { - i := template_rename.NewIFoo() -diff --git a/Examples/test-suite/go/template_static_runme.go b/Examples/test-suite/go/template_static_runme.go -index f10ea78f7..205813dbf 100644 ---- a/Examples/test-suite/go/template_static_runme.go -+++ b/Examples/test-suite/go/template_static_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "template_static" -+import . "swigtests/template_static" - - func main() { - FooBar_double(1) -diff --git a/Examples/test-suite/go/template_tbase_template_runme.go b/Examples/test-suite/go/template_tbase_template_runme.go -index e1c46aaf7..a4832439f 100644 ---- a/Examples/test-suite/go/template_tbase_template_runme.go -+++ b/Examples/test-suite/go/template_tbase_template_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "template_tbase_template" -+import . "swigtests/template_tbase_template" - - func main() { - a := Make_Class_dd() -diff --git a/Examples/test-suite/go/template_type_namespace_runme.go b/Examples/test-suite/go/template_type_namespace_runme.go -index 1356f9b08..562fae78d 100644 ---- a/Examples/test-suite/go/template_type_namespace_runme.go -+++ b/Examples/test-suite/go/template_type_namespace_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "template_type_namespace" -+import . "swigtests/template_type_namespace" - - func main() { - if Foo().Get(0) == "" { -diff --git a/Examples/test-suite/go/template_typedef_cplx3_runme.go b/Examples/test-suite/go/template_typedef_cplx3_runme.go -index 0a2b31301..52a9bc7f6 100644 ---- a/Examples/test-suite/go/template_typedef_cplx3_runme.go -+++ b/Examples/test-suite/go/template_typedef_cplx3_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "template_typedef_cplx3" -+import . "swigtests/template_typedef_cplx3" - - func main() { - // this is OK -diff --git a/Examples/test-suite/go/template_typedef_cplx4_runme.go b/Examples/test-suite/go/template_typedef_cplx4_runme.go -index d8952cfb6..84347e404 100644 ---- a/Examples/test-suite/go/template_typedef_cplx4_runme.go -+++ b/Examples/test-suite/go/template_typedef_cplx4_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "template_typedef_cplx4" -+import . "swigtests/template_typedef_cplx4" - - func main() { - // this is OK -diff --git a/Examples/test-suite/go/threads_exception_runme.go b/Examples/test-suite/go/threads_exception_runme.go -index e3da1dc25..b554f0e28 100644 ---- a/Examples/test-suite/go/threads_exception_runme.go -+++ b/Examples/test-suite/go/threads_exception_runme.go -@@ -1,7 +1,7 @@ - package main - - import "strings" --import "threads_exception" -+import "swigtests/threads_exception" - - func main() { - t := threads_exception.NewTest() -diff --git a/Examples/test-suite/go/typedef_class_runme.go b/Examples/test-suite/go/typedef_class_runme.go -index d94126d3b..157a91745 100644 ---- a/Examples/test-suite/go/typedef_class_runme.go -+++ b/Examples/test-suite/go/typedef_class_runme.go -@@ -1,6 +1,6 @@ - package main - --import "typedef_class" -+import "swigtests/typedef_class" - - func main() { - a := typedef_class.NewRealA() -diff --git a/Examples/test-suite/go/typedef_funcptr_runme.go b/Examples/test-suite/go/typedef_funcptr_runme.go -index 9d55f3f04..f76f088af 100644 ---- a/Examples/test-suite/go/typedef_funcptr_runme.go -+++ b/Examples/test-suite/go/typedef_funcptr_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "typedef_funcptr" -+import . "swigtests/typedef_funcptr" - - func main() { - a := 100 -diff --git a/Examples/test-suite/go/typedef_inherit_runme.go b/Examples/test-suite/go/typedef_inherit_runme.go -index 7a65569f2..f2dbb3263 100644 ---- a/Examples/test-suite/go/typedef_inherit_runme.go -+++ b/Examples/test-suite/go/typedef_inherit_runme.go -@@ -1,6 +1,6 @@ - package main - --import "typedef_inherit" -+import "swigtests/typedef_inherit" - - func main() { - a := typedef_inherit.NewFoo() -diff --git a/Examples/test-suite/go/typedef_scope_runme.go b/Examples/test-suite/go/typedef_scope_runme.go -index af282b16f..9c845bb69 100644 ---- a/Examples/test-suite/go/typedef_scope_runme.go -+++ b/Examples/test-suite/go/typedef_scope_runme.go -@@ -1,6 +1,6 @@ - package main - --import "typedef_scope" -+import "swigtests/typedef_scope" - - func main() { - b := typedef_scope.NewBar() -diff --git a/Examples/test-suite/go/typemap_namespace_runme.go b/Examples/test-suite/go/typemap_namespace_runme.go -index a2880d4a8..f0860803e 100644 ---- a/Examples/test-suite/go/typemap_namespace_runme.go -+++ b/Examples/test-suite/go/typemap_namespace_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "typemap_namespace" -+import . "swigtests/typemap_namespace" - - func main() { - if Test1("hello") != "hello" { -diff --git a/Examples/test-suite/go/typemap_ns_using_runme.go b/Examples/test-suite/go/typemap_ns_using_runme.go -index c4c21cf75..00e1131d6 100644 ---- a/Examples/test-suite/go/typemap_ns_using_runme.go -+++ b/Examples/test-suite/go/typemap_ns_using_runme.go -@@ -1,6 +1,6 @@ - package main - --import "typemap_ns_using" -+import "swigtests/typemap_ns_using" - - func main() { - if typemap_ns_using.Spam(37) != 37 { -diff --git a/Examples/test-suite/go/typemap_out_optimal_runme.go b/Examples/test-suite/go/typemap_out_optimal_runme.go -index 7cc3b38e3..0cccd97a6 100644 ---- a/Examples/test-suite/go/typemap_out_optimal_runme.go -+++ b/Examples/test-suite/go/typemap_out_optimal_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "typemap_out_optimal" -+import . "swigtests/typemap_out_optimal" - - func main() { - SetXXDebug(false) -diff --git a/Examples/test-suite/go/typename_runme.go b/Examples/test-suite/go/typename_runme.go -index d1665099c..1e1696d0a 100644 ---- a/Examples/test-suite/go/typename_runme.go -+++ b/Examples/test-suite/go/typename_runme.go -@@ -1,6 +1,6 @@ - package main - --import "typename" -+import "swigtests/typename" - - func main() { - f := typename.NewFoo() -diff --git a/Examples/test-suite/go/unions_runme.go b/Examples/test-suite/go/unions_runme.go -index b76ca5c75..6e2981192 100644 ---- a/Examples/test-suite/go/unions_runme.go -+++ b/Examples/test-suite/go/unions_runme.go -@@ -3,7 +3,7 @@ - - package main - --import "unions" -+import "swigtests/unions" - - func main() { - // Create new instances of SmallStruct and BigStruct for later use -diff --git a/Examples/test-suite/go/using1_runme.go b/Examples/test-suite/go/using1_runme.go -index a6a6fa738..09cc381cc 100644 ---- a/Examples/test-suite/go/using1_runme.go -+++ b/Examples/test-suite/go/using1_runme.go -@@ -1,6 +1,6 @@ - package main - --import "using1" -+import "swigtests/using1" - - func main() { - if using1.Spam(37) != 37 { -diff --git a/Examples/test-suite/go/using2_runme.go b/Examples/test-suite/go/using2_runme.go -index f6b8d49b5..8109037f9 100644 ---- a/Examples/test-suite/go/using2_runme.go -+++ b/Examples/test-suite/go/using2_runme.go -@@ -1,6 +1,6 @@ - package main - --import "using2" -+import "swigtests/using2" - - func main() { - if using2.Spam(37) != 37 { -diff --git a/Examples/test-suite/go/using_composition_runme.go b/Examples/test-suite/go/using_composition_runme.go -index 712d1fad5..7ef09fef9 100644 ---- a/Examples/test-suite/go/using_composition_runme.go -+++ b/Examples/test-suite/go/using_composition_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "using_composition" -+import . "swigtests/using_composition" - - func main() { - f := NewFooBar() -diff --git a/Examples/test-suite/go/using_extend_runme.go b/Examples/test-suite/go/using_extend_runme.go -index 27d1ccc62..dac300ba4 100644 ---- a/Examples/test-suite/go/using_extend_runme.go -+++ b/Examples/test-suite/go/using_extend_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "using_extend" -+import . "swigtests/using_extend" - - func main() { - f := NewFooBar() -diff --git a/Examples/test-suite/go/using_inherit_runme.go b/Examples/test-suite/go/using_inherit_runme.go -index a88171817..c8755902f 100644 ---- a/Examples/test-suite/go/using_inherit_runme.go -+++ b/Examples/test-suite/go/using_inherit_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "using_inherit" -+import . "swigtests/using_inherit" - - func main() { - b := NewBar() -diff --git a/Examples/test-suite/go/using_private_runme.go b/Examples/test-suite/go/using_private_runme.go -index 2da62dc2e..4c86ef514 100644 ---- a/Examples/test-suite/go/using_private_runme.go -+++ b/Examples/test-suite/go/using_private_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "using_private" -+import . "swigtests/using_private" - - func main() { - f := NewFooBar() -diff --git a/Examples/test-suite/go/using_protected_runme.go b/Examples/test-suite/go/using_protected_runme.go -index 3fd5029f7..431081827 100644 ---- a/Examples/test-suite/go/using_protected_runme.go -+++ b/Examples/test-suite/go/using_protected_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "using_protected" -+import . "swigtests/using_protected" - - func main() { - f := NewFooBar() -diff --git a/Examples/test-suite/go/varargs_overload_runme.go b/Examples/test-suite/go/varargs_overload_runme.go -index 8ce580d65..50a430894 100644 ---- a/Examples/test-suite/go/varargs_overload_runme.go -+++ b/Examples/test-suite/go/varargs_overload_runme.go -@@ -1,6 +1,6 @@ - package main - --import "varargs_overload" -+import "swigtests/varargs_overload" - - func main() { - if varargs_overload.Vararg_over1("Hello") != "Hello" { -diff --git a/Examples/test-suite/go/varargs_runme.go b/Examples/test-suite/go/varargs_runme.go -index 60bd8829a..eb2fa94aa 100644 ---- a/Examples/test-suite/go/varargs_runme.go -+++ b/Examples/test-suite/go/varargs_runme.go -@@ -1,6 +1,6 @@ - package main - --import "varargs" -+import "swigtests/varargs" - - func main() { - if varargs.Test("Hello") != "Hello" { -diff --git a/Examples/test-suite/go/virtual_derivation_runme.go b/Examples/test-suite/go/virtual_derivation_runme.go -index 4e2c6e585..21135308c 100644 ---- a/Examples/test-suite/go/virtual_derivation_runme.go -+++ b/Examples/test-suite/go/virtual_derivation_runme.go -@@ -1,6 +1,6 @@ - package main - --import . "virtual_derivation" -+import . "swigtests/virtual_derivation" - - // very innocent example - -diff --git a/Examples/test-suite/go/virtual_poly_runme.go b/Examples/test-suite/go/virtual_poly_runme.go -index 32906b391..9973f24c7 100644 ---- a/Examples/test-suite/go/virtual_poly_runme.go -+++ b/Examples/test-suite/go/virtual_poly_runme.go -@@ -1,6 +1,6 @@ - package main - --import "virtual_poly" -+import "swigtests/virtual_poly" - - func main() { - d := virtual_poly.NewNDouble(3.5) -diff --git a/Examples/test-suite/go/voidtest_runme.go b/Examples/test-suite/go/voidtest_runme.go -index 133545cea..35c5289fd 100644 ---- a/Examples/test-suite/go/voidtest_runme.go -+++ b/Examples/test-suite/go/voidtest_runme.go -@@ -1,6 +1,6 @@ - package main - --import "voidtest" -+import "swigtests/voidtest" - - func main() { - voidtest.Globalfunc() -diff --git a/Examples/test-suite/go/wrapmacro_runme.go b/Examples/test-suite/go/wrapmacro_runme.go -index a251a05e8..d792d4ffe 100644 ---- a/Examples/test-suite/go/wrapmacro_runme.go -+++ b/Examples/test-suite/go/wrapmacro_runme.go -@@ -1,6 +1,6 @@ - package main - --import "wrapmacro" -+import "swigtests/wrapmacro" - - func main() { - a := 2 -diff --git a/configure.ac b/configure.ac -index 543274359..a38e97d2a 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2370,11 +2370,6 @@ AS_HELP_STRING([--with-go=path], [Set location of Go compiler]),[GOBIN="$withval - if test x"${GOBIN}" = xno; then - AC_MSG_NOTICE([Disabling Go]) - GO= -- GOC= -- GO1=false -- GO12=false -- GO13=false -- GO15=false - GOGCC=false - GCCGO= - GOOPT= -@@ -2390,30 +2385,15 @@ else - - GOGCC=false - GCCGO= -- GO1=false -- GO12=false -- GO13=false -- GO15=false - GOOPT= - GCCGOOPT= - GOVERSIONOPTION= - - if test -n "$GO" ; then -- GO1=true -- GOVERSIONOPTION=version -- go_version=$($GO $GOVERSIONOPTION | sed -e 's/go version //') -- case "$go_version" in -- go1 | go1.[[01234]] | go1.[[01234]].*) -- GOC=$(sh -c "$(go env) && echo \$GOCHAR")c -- ;; -- *) -- GOC=compile -- ;; -- esac - AC_MSG_CHECKING([whether go version is too old]) - case $go_version in -- go1.1.* | go1.1 | go1.0 | go1.0.* | go1 ) -- AC_MSG_RESULT([yes - minimum version is 1.2]) -+ go1.[012345]*) -+ AC_MSG_RESULT([yes - minimum version is 1.6]) - GO= - GOOPT="-intgosize 32" - ;; -@@ -2429,20 +2409,6 @@ else - esac - ;; - esac -- case $go_version in -- go1.0 | go1.0.* | go1 | go1.1 | go1.1.*) -- GOOPT="$GOOPT -use-shlib" -- ;; -- go1.2 | go1.2.*) -- GO12=true -- ;; -- go1.3 | go1.3.* | go1.4 | go1.4.*) -- GO13=true -- ;; -- *) -- GO15=true -- ;; -- esac - fi - - AC_CHECK_PROGS(GCCGO, gccgo) --- -2.20.1 - diff --git a/swig400-Restore-setting-of-GOVERSIONOPTION.patch b/swig400-Restore-setting-of-GOVERSIONOPTION.patch deleted file mode 100644 index d66b0fa..0000000 --- a/swig400-Restore-setting-of-GOVERSIONOPTION.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 6b108c19e1504c937e1a7d50147575dd8e624b73 Mon Sep 17 00:00:00 2001 -From: Ian Lance Taylor -Date: Thu, 8 Aug 2019 22:59:57 -0700 -Subject: [PATCH 2/2] Restore setting of GOVERSIONOPTION - -Accidentally removed in last commit. ---- - configure.ac | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configure.ac b/configure.ac -index a38e97d2a..73c38a72c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2390,6 +2390,7 @@ else - GOVERSIONOPTION= - - if test -n "$GO" ; then -+ GOVERSIONOPTION=version - AC_MSG_CHECKING([whether go version is too old]) - case $go_version in - go1.[012345]*) --- -2.20.1 - From 4ddcbf819793f130eedadc0b3b6a605092f114e7 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 17 Oct 2019 16:08:54 +0200 Subject: [PATCH 031/103] Disable Ruby tests on x86_64 --- swig.spec | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/swig.spec b/swig.spec index 10f6d10..8844df0 100644 --- a/swig.spec +++ b/swig.spec @@ -18,8 +18,9 @@ %{!?guile:%global guile 0} %{!?lualang:%global lualang 1} %{!?phplang:%global phplang 1} -# Disable Ruby test failed with swig 4.0.0 -%ifarch s390 s390x +# Disable Ruby test failed with swig 4.0.0 on s390 +# Tests on x86_64 fails with Ruby 2.6.4 +%ifarch s390 s390x x86_64 %{!?rubylang:%global rubylang 0} %else %{!?rubylang:%global rubylang 1} @@ -53,7 +54,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.1 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -339,8 +340,11 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Oct 17 2019 Jitka Plesnikova - 4.0.1-2 +- Disable Ruby tests on x86_64 + * Wed Aug 21 2019 Jitka Plesnikova - 4.0.1-1 -- Update to 4.0.0 +- Update to 4.0.1 - Add Python 3.8 support - Python Sphinx compatibility added for Doxygen comments - Fix some C++17 compatibility problems in Python and Ruby generated From 38e811319e50356d13ed821acf028b626c7a23ff Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 19 Nov 2019 16:22:01 +0100 Subject: [PATCH 032/103] Disable Ruby tests on all archs --- swig.spec | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/swig.spec b/swig.spec index 8844df0..24f9a3b 100644 --- a/swig.spec +++ b/swig.spec @@ -20,11 +20,8 @@ %{!?phplang:%global phplang 1} # Disable Ruby test failed with swig 4.0.0 on s390 # Tests on x86_64 fails with Ruby 2.6.4 -%ifarch s390 s390x x86_64 +# https://github.com/swig/swig/issues/1646 %{!?rubylang:%global rubylang 0} -%else -%{!?rubylang:%global rubylang 1} -%endif %{!?python2lang:%global python2lang 1} %{!?python3lang:%global python3lang 1} @@ -54,7 +51,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.1 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -340,6 +337,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Nov 19 2019 Jitka Plesnikova - 4.0.1-3 +- Disable Ruby tests on all archs + * Thu Oct 17 2019 Jitka Plesnikova - 4.0.1-2 - Disable Ruby tests on x86_64 From 6ad2ca7ed237bc9deb60e284d61e61fc154d5119 Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Sun, 19 Jan 2020 08:12:39 +0900 Subject: [PATCH 033/103] Backport upstream fixes for ruby 2.7 (as small as possible for now) --- swig-4.0.1-ruby27-minimum.patch | 11 +++++++++++ swig.spec | 10 +++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 swig-4.0.1-ruby27-minimum.patch diff --git a/swig-4.0.1-ruby27-minimum.patch b/swig-4.0.1-ruby27-minimum.patch new file mode 100644 index 0000000..4370b35 --- /dev/null +++ b/swig-4.0.1-ruby27-minimum.patch @@ -0,0 +1,11 @@ +--- swig-4.0.1/Lib/ruby/rubytracking.swg.orig 2019-08-21 06:34:03.000000000 +0900 ++++ swig-4.0.1/Lib/ruby/rubytracking.swg 2020-01-18 18:32:38.909450596 +0900 +@@ -69,7 +69,7 @@ SWIGRUNTIME void SWIG_RubyInitializeTrac + swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value); + } + +- rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", swig_ruby_trackings_count, NULL); ++ rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", (rb_gvar_getter_t *)swig_ruby_trackings_count, (rb_gvar_setter_t *)NULL); + } + + /* Add a Tracking from a C/C++ struct to a Ruby object */ diff --git a/swig.spec b/swig.spec index 24f9a3b..2ff9791 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.0.1 -Release: 3%{?dist} +Release: 4%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -64,6 +64,10 @@ Source4: ccache-swig.csh %endif Patch0: swig308-Do-not-use-isystem.patch +# https://github.com/swig/swig/issues/1689 +# https://github.com/swig/swig/pull/1692/commits/00e291b319bd6b58bf061feee3721a58c9c6be32 +# For now, modify as small as possible for ruby 2.7 build +Patch1: swig-4.0.1-ruby27-minimum.patch BuildRequires: perl-interpreter, pcre-devel %if %{python2lang} @@ -165,6 +169,7 @@ in gdb. %setup -q -n swig-%{version} %patch0 -p1 -b .isystem +%patch1 -p1 -b .ruby27 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -337,6 +342,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Sat Jan 18 2020 Mamoru TASAKA - 4.0.1-4 +- Backport upstream fixes for ruby 2.7 (as small as possible for now) + * Tue Nov 19 2019 Jitka Plesnikova - 4.0.1-3 - Disable Ruby tests on all archs From 5d06ee3b4967295ca02b7144c2498b647b6a7afb Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 23 Jan 2020 16:29:48 +0100 Subject: [PATCH 034/103] Add support for Ruby 2.7; Fix code generated for Ruby global variables --- swig-4.0.1-Add-support-for-Ruby-2.7.patch | 296 ++++++++++ ...-generated-for-Ruby-global-variables.patch | 534 ++++++++++++++++++ swig.spec | 25 +- swig308-Do-not-use-isystem.patch | 2 +- 4 files changed, 848 insertions(+), 9 deletions(-) create mode 100644 swig-4.0.1-Add-support-for-Ruby-2.7.patch create mode 100644 swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch diff --git a/swig-4.0.1-Add-support-for-Ruby-2.7.patch b/swig-4.0.1-Add-support-for-Ruby-2.7.patch new file mode 100644 index 0000000..359422b --- /dev/null +++ b/swig-4.0.1-Add-support-for-Ruby-2.7.patch @@ -0,0 +1,296 @@ +From 00e291b319bd6b58bf061feee3721a58c9c6be32 Mon Sep 17 00:00:00 2001 +From: Thomas Reitmayr +Date: Mon, 30 Dec 2019 20:11:03 +0100 +Subject: [PATCH] Add support for Ruby 2.7 + +This commit fixes the signatures of various callback methods +and cleans up the macro definitions used for casting callbacks. + +Note that the transparent version of the macro RUBY_METHOD_FUNC +is currently masked behind RUBY_DEVEL, see commit +https://github.com/ruby/ruby/commit/1d91feaf13e0ffe04b2dabc6e77e4101b6d0bb07 +In order to still support strict signature checking and prevent +nasty deprecation warnings, the use of RUBY_METHOD_FUNC had to +be replaced with VALUEFUNC. +--- + Lib/ruby/rubyclasses.swg | 14 +++++++------- + Lib/ruby/rubyhead.swg | 26 +++++++++----------------- + Lib/ruby/rubyprimtypes.swg | 15 ++++++++------- + Lib/ruby/rubytracking.swg | 10 +++++----- + Source/Modules/ruby.cxx | 22 +++++++++------------- + 5 files changed, 38 insertions(+), 49 deletions(-) + +diff --git a/Lib/ruby/rubyclasses.swg b/Lib/ruby/rubyclasses.swg +index f7b51bdcc..b345fcebe 100644 +--- a/Lib/ruby/rubyclasses.swg ++++ b/Lib/ruby/rubyclasses.swg +@@ -174,7 +174,7 @@ namespace swig { + return rb_inspect(_obj); + } + +- static VALUE swig_rescue_swallow(VALUE) ++ static VALUE swig_rescue_swallow(VALUE, VALUE) + { + /* + VALUE errstr = rb_obj_as_string(rb_errinfo()); +@@ -203,8 +203,8 @@ namespace swig { + args.id = op_id; + args.nargs = 1; + args.target = VALUE(other); +- ret = rb_rescue(RUBY_METHOD_FUNC(swig_rescue_funcall), VALUE(&args), +- (RUBY_METHOD_FUNC(swig_rescue_swallow)), Qnil); ++ ret = rb_rescue(VALUEFUNC(swig_rescue_funcall), VALUE(&args), ++ (VALUEFUNC(swig_rescue_swallow)), Qnil); + } + if (ret == Qnil) { + VALUE a = rb_funcall( _obj, hash_id, 0 ); +@@ -243,8 +243,8 @@ namespace swig { + args.id = op_id; + args.nargs = 0; + args.target = Qnil; +- ret = rb_rescue(RUBY_METHOD_FUNC(swig_rescue_funcall), VALUE(&args), +- (RUBY_METHOD_FUNC(swig_rescue_swallow)), Qnil); ++ ret = rb_rescue(VALUEFUNC(swig_rescue_funcall), VALUE(&args), ++ (VALUEFUNC(swig_rescue_swallow)), Qnil); + SWIG_RUBY_THREAD_END_BLOCK; + return ret; + } +@@ -262,8 +262,8 @@ namespace swig { + args.id = op_id; + args.nargs = 1; + args.target = VALUE(other); +- ret = rb_rescue(RUBY_METHOD_FUNC(swig_rescue_funcall), VALUE(&args), +- (RUBY_METHOD_FUNC(swig_rescue_swallow)), Qnil); ++ ret = rb_rescue(VALUEFUNC(swig_rescue_funcall), VALUE(&args), ++ (VALUEFUNC(swig_rescue_swallow)), Qnil); + SWIG_RUBY_THREAD_END_BLOCK; + return GC_VALUE(ret); + } +diff --git a/Lib/ruby/rubyhead.swg b/Lib/ruby/rubyhead.swg +index 90f07cf68..9a0400eea 100644 +--- a/Lib/ruby/rubyhead.swg ++++ b/Lib/ruby/rubyhead.swg +@@ -110,26 +110,18 @@ + * can be passed as an argument to API functions like Data_Wrap_Struct() + * and Data_Make_Struct(). + */ +- +-#ifdef __cplusplus +-# ifndef RUBY_METHOD_FUNC /* These definitions should work for Ruby 1.4.6 */ +-# define PROTECTFUNC(f) ((VALUE (*)()) f) +-# define VALUEFUNC(f) ((VALUE (*)()) f) +-# define VOIDFUNC(f) ((void (*)()) f) +-# else +-# ifndef ANYARGS /* These definitions should work for Ruby 1.6 */ +-# define PROTECTFUNC(f) ((VALUE (*)()) f) +-# define VALUEFUNC(f) ((VALUE (*)()) f) +-# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) +-# else /* These definitions should work for Ruby 1.7+ */ +-# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f) +-# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f) +-# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) +-# endif +-# endif ++#if defined(__cplusplus) && !defined(RB_METHOD_DEFINITION_DECL) ++# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f) ++# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f) ++# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) ++# define VOID_ANYARGS_FUNC(f) ((void (*)(ANYARGS))(f)) ++# define INT_ANYARGS_FUNC(f) ((int (*)(ANYARGS))(f)) + #else ++# define PROTECTFUNC(f) (f) + # define VALUEFUNC(f) (f) + # define VOIDFUNC(f) (f) ++# define VOID_ANYARGS_FUNC(f) (f) ++# define INT_ANYARGS_FUNC(f) (f) + #endif + + /* Don't use for expressions have side effect */ +diff --git a/Lib/ruby/rubyprimtypes.swg b/Lib/ruby/rubyprimtypes.swg +index 3a848191c..4b078deea 100644 +--- a/Lib/ruby/rubyprimtypes.swg ++++ b/Lib/ruby/rubyprimtypes.swg +@@ -10,15 +10,16 @@ + %fragment("SWIG_ruby_failed","header") + { + SWIGINTERN VALUE +-SWIG_ruby_failed(void) ++SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2)) + { + return Qnil; + } + } + + %define %ruby_aux_method(Type, Method, Action) +-SWIGINTERN VALUE SWIG_AUX_##Method##(VALUE *args) ++SWIGINTERN VALUE SWIG_AUX_##Method##(VALUE arg) + { ++ VALUE *args = (VALUE *)arg; + VALUE obj = args[0]; + VALUE type = TYPE(obj); + Type *res = (Type *)(args[1]); +@@ -79,7 +80,7 @@ SWIG_AsVal_dec(long)(VALUE obj, long* val) + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); +- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2LONG), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { ++ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2LONG), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } +@@ -111,7 +112,7 @@ SWIG_AsVal_dec(unsigned long)(VALUE obj, unsigned long *val) + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); +- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { ++ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } +@@ -149,7 +150,7 @@ SWIG_AsVal_dec(long long)(VALUE obj, long long *val) + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); +- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2LL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { ++ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2LL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } +@@ -187,7 +188,7 @@ SWIG_AsVal_dec(unsigned long long)(VALUE obj, unsigned long long *val) + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); +- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2ULL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { ++ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2ULL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } +@@ -215,7 +216,7 @@ SWIG_AsVal_dec(double)(VALUE obj, double *val) + VALUE a[2]; + a[0] = obj; + a[1] = (VALUE)(&v); +- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2DBL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { ++ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2DBL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { + if (val) *val = v; + return SWIG_OK; + } +diff --git a/Lib/ruby/rubytracking.swg b/Lib/ruby/rubytracking.swg +index b9fb249d8..221a68193 100644 +--- a/Lib/ruby/rubytracking.swg ++++ b/Lib/ruby/rubytracking.swg +@@ -32,7 +32,7 @@ extern "C" { + */ + static st_table* swig_ruby_trackings = NULL; + +-static VALUE swig_ruby_trackings_count(ANYARGS) { ++static VALUE swig_ruby_trackings_count(ID id, VALUE *var) { + return SWIG2NUM(swig_ruby_trackings->num_entries); + } + +@@ -69,7 +69,7 @@ SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) { + swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value); + } + +- rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", swig_ruby_trackings_count, NULL); ++ rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", VALUEFUNC(swig_ruby_trackings_count), VOID_ANYARGS_FUNC((rb_gvar_setter_t*)NULL)); + } + + /* Add a Tracking from a C/C++ struct to a Ruby object */ +@@ -118,13 +118,13 @@ SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) { + to the passed callback function. */ + + /* Proxy method to abstract the internal trackings datatype */ +-static int swig_ruby_internal_iterate_callback(void* ptr, VALUE obj, void(*meth)(void* ptr, VALUE obj)) { +- (*meth)(ptr, obj); ++static int swig_ruby_internal_iterate_callback(st_data_t ptr, st_data_t obj, st_data_t meth) { ++ ((void (*) (void *, VALUE))meth)((void *)ptr, (VALUE)obj); + return ST_CONTINUE; + } + + SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) { +- st_foreach(swig_ruby_trackings, (int (*)(ANYARGS))&swig_ruby_internal_iterate_callback, (st_data_t)meth); ++ st_foreach(swig_ruby_trackings, INT_ANYARGS_FUNC(swig_ruby_internal_iterate_callback), (st_data_t)meth); + } + + #ifdef __cplusplus +diff --git a/Source/Modules/ruby.cxx b/Source/Modules/ruby.cxx +index c8f582679..01b75befa 100644 +--- a/Source/Modules/ruby.cxx ++++ b/Source/Modules/ruby.cxx +@@ -2191,6 +2191,7 @@ public: + String *tm; + String *getfname, *setfname; + Wrapper *getf, *setf; ++ const int assignable = is_assignable(n); + + // Determine whether virtual global variables shall be used + // which have different getter and setter signatures, +@@ -2206,7 +2207,7 @@ public: + getfname = Swig_name_wrapper(getname); + Setattr(n, "wrap:name", getfname); + Printv(getf->def, "SWIGINTERN VALUE\n", getfname, "(", NIL); +- Printf(getf->def, (use_virtual_var) ? "ID id" : "VALUE self"); ++ Printf(getf->def, (use_virtual_var) ? "ID id, VALUE *data" : "VALUE self"); + Printf(getf->def, ") {"); + Wrapper_add_local(getf, "_val", "VALUE _val"); + +@@ -2229,8 +2230,8 @@ public: + + Wrapper_print(getf, f_wrappers); + +- if (!is_assignable(n)) { +- setfname = NewString("NULL"); ++ if (!assignable) { ++ setfname = NewString("(rb_gvar_setter_t *)NULL"); + } else { + /* create setter */ + String* docs = docstring(n, AUTODOC_SETTER); +@@ -2242,7 +2243,7 @@ public: + Setattr(n, "wrap:name", setfname); + Printf(setf->def, "SWIGINTERN "); + if (use_virtual_var) { +- Printv(setf->def, "void\n", setfname, "(VALUE _val, ID id) {", NIL); ++ Printv(setf->def, "void\n", setfname, "(VALUE _val, ID id, VALUE *data) {", NIL); + } else { + Printv(setf->def, "VALUE\n", setfname, "(VALUE self, VALUE _val) {", NIL); + } +@@ -2273,7 +2274,7 @@ public: + if (CPlusPlus) { + Insert(getfname, 0, "VALUEFUNC("); + Append(getfname, ")"); +- Insert(setfname, 0, (use_virtual_var) ? "(void (*)(ANYARGS))(" : "VALUEFUNC("); ++ Insert(setfname, 0, (use_virtual_var) ? "VOID_ANYARGS_FUNC(" : "VALUEFUNC("); + Append(setfname, ")"); + } + +@@ -2282,7 +2283,7 @@ public: + case STATIC_VAR: + /* C++ class variable */ + Printv(s, tab4, "rb_define_singleton_method(", klass->vname, ", \"", klass->strip(iname), "\", ", getfname, ", 0);\n", NIL); +- if (!GetFlag(n, "feature:immutable")) { ++ if (assignable) { + Printv(s, tab4, "rb_define_singleton_method(", klass->vname, ", \"", klass->strip(iname), "=\", ", setfname, ", 1);\n", NIL); + } + Printv(klass->init, s, NIL); +@@ -2293,16 +2294,11 @@ public: + assert(current == NO_CPP); + if (!useGlobalModule) { + Printv(s, tab4, "rb_define_singleton_method(", modvar, ", \"", iname, "\", ", getfname, ", 0);\n", NIL); +- if (!GetFlag(n, "feature:immutable")) { ++ if (assignable) { + Printv(s, tab4, "rb_define_singleton_method(", modvar, ", \"", iname, "=\", ", setfname, ", 1);\n", NIL); + } + } else { +- Printv(s, tab4, "rb_define_virtual_variable(\"$", iname, "\", ", getfname, ", ", NIL); +- if (GetFlag(n, "feature:immutable")) { +- Printv(s, tab4, "0);\n", NIL); +- } else { +- Printv(s, tab4, setfname, ");\n", NIL); +- } ++ Printv(s, tab4, "rb_define_virtual_variable(\"$", iname, "\", ", getfname, ", ", setfname, ");\n", NIL); + } + Printv(f_init, s, NIL); + Delete(s); +-- +2.21.1 + diff --git a/swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch b/swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch new file mode 100644 index 0000000..7e24cb8 --- /dev/null +++ b/swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch @@ -0,0 +1,534 @@ +From 18a3ef391121d7c4d819448c929721fd1708b40b Mon Sep 17 00:00:00 2001 +From: Thomas Reitmayr +Date: Sun, 27 Oct 2019 21:41:03 +0100 +Subject: [PATCH] Fix code generated for Ruby global variables + +This commit fixes swig#1653 by creating a Ruby virtual variable +for a C/c++ global variable when SWIG is invoked with the +-globalmodule option. +--- + Doc/Manual/Ruby.html | 18 +++++++ + Examples/test-suite/common.mk | 2 + + Examples/test-suite/global_immutable_vars.i | 24 +++++++++ + .../test-suite/global_immutable_vars_cpp.i | 24 +++++++++ + Examples/test-suite/ruby/Makefile.in | 4 ++ + .../ruby/global_immutable_vars_cpp_runme.rb | 47 +++++++++++++++++ + .../ruby/global_immutable_vars_runme.rb | 51 +++++++++++++++++++ + .../ruby_global_immutable_vars_cpp_runme.rb | 47 +++++++++++++++++ + .../ruby/ruby_global_immutable_vars_runme.rb | 51 +++++++++++++++++++ + .../test-suite/ruby_global_immutable_vars.i | 25 +++++++++ + .../ruby_global_immutable_vars_cpp.i | 23 +++++++++ + Source/Modules/ruby.cxx | 36 +++++++++---- + 12 files changed, 342 insertions(+), 10 deletions(-) + create mode 100644 Examples/test-suite/global_immutable_vars.i + create mode 100644 Examples/test-suite/global_immutable_vars_cpp.i + create mode 100644 Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb + create mode 100644 Examples/test-suite/ruby/global_immutable_vars_runme.rb + create mode 100644 Examples/test-suite/ruby/ruby_global_immutable_vars_cpp_runme.rb + create mode 100644 Examples/test-suite/ruby/ruby_global_immutable_vars_runme.rb + create mode 100644 Examples/test-suite/ruby_global_immutable_vars.i + create mode 100644 Examples/test-suite/ruby_global_immutable_vars_cpp.i + +diff --git a/Doc/Manual/Ruby.html b/Doc/Manual/Ruby.html +index 3cfd1292c..6939a8a18 100644 +--- a/Doc/Manual/Ruby.html ++++ b/Doc/Manual/Ruby.html +@@ -615,6 +615,24 @@ directive. For example:

+ effect until it is explicitly disabled using %mutable. +

+ ++

Note: When SWIG is invoked with the -globalmodule option in ++effect, the C/C++ global variables will be translated into Ruby global ++variables. Type-checking and the optional read-only characteristic are ++available in the same way as described above. However the example would ++then have to be modified and executed in the following way: ++ ++

++
$ irb
++irb(main):001:0> require 'Example'
++true
++irb(main):002:0> $variable1 = 2
++2
++irb(main):003:0> $Variable2 = 4 * 10.3
++41.2
++irb(main):004:0> $Variable2
++41.2
++
++ +

34.3.4 Constants

+ + +diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk +index 5f7792810..008916a56 100644 +--- a/Examples/test-suite/common.mk ++++ b/Examples/test-suite/common.mk +@@ -250,6 +250,7 @@ CPP_TEST_CASES += \ + funcptr_cpp \ + functors \ + fvirtual \ ++ global_immutable_vars_cpp \ + global_namespace \ + global_ns_arg \ + global_scope_types \ +@@ -689,6 +690,7 @@ C_TEST_CASES += \ + funcptr \ + function_typedef \ + global_functions \ ++ global_immutable_vars \ + immutable_values \ + inctest \ + infinity \ +diff --git a/Examples/test-suite/global_immutable_vars.i b/Examples/test-suite/global_immutable_vars.i +new file mode 100644 +index 000000000..cd8cb184b +--- /dev/null ++++ b/Examples/test-suite/global_immutable_vars.i +@@ -0,0 +1,24 @@ ++%module global_immutable_vars ++ ++// Test immutable and mutable global variables, ++// see http://www.swig.org/Doc4.0/SWIGDocumentation.html#SWIG_readonly_variables ++ ++%inline %{ ++ int default_mutable_var = 40; ++%} ++ ++%immutable; ++%feature("immutable", "0") specific_mutable_var; ++ ++%inline %{ ++ int global_immutable_var = 41; ++ int specific_mutable_var = 42; ++%} ++ ++%mutable; ++%immutable specific_immutable_var; ++%inline %{ ++ int global_mutable_var = 43; ++ int specific_immutable_var = 44; ++%} ++ +diff --git a/Examples/test-suite/global_immutable_vars_cpp.i b/Examples/test-suite/global_immutable_vars_cpp.i +new file mode 100644 +index 000000000..66eb8545d +--- /dev/null ++++ b/Examples/test-suite/global_immutable_vars_cpp.i +@@ -0,0 +1,24 @@ ++%module global_immutable_vars_cpp ++ ++// Test immutable and mutable global variables, ++// see http://www.swig.org/Doc4.0/SWIGDocumentation.html#SWIG_readonly_variables ++ ++%inline %{ ++ int default_mutable_var = 40; ++%} ++ ++%immutable; ++%feature("immutable", "0") specific_mutable_var; ++ ++%inline %{ ++ int global_immutable_var = 41; ++ int specific_mutable_var = 42; ++%} ++ ++%mutable; ++%immutable specific_immutable_var; ++%inline %{ ++ int global_mutable_var = 43; ++ int specific_immutable_var = 44; ++%} ++ +diff --git a/Examples/test-suite/ruby/Makefile.in b/Examples/test-suite/ruby/Makefile.in +index d75cdb058..2c59029ec 100644 +--- a/Examples/test-suite/ruby/Makefile.in ++++ b/Examples/test-suite/ruby/Makefile.in +@@ -23,6 +23,7 @@ CPP_TEST_CASES = \ + li_std_wstring_inherit \ + primitive_types \ + ruby_alias_method \ ++ ruby_global_immutable_vars_cpp \ + ruby_keywords \ + ruby_minherit_shared_ptr \ + ruby_naming \ +@@ -48,6 +49,7 @@ C_TEST_CASES += \ + li_cstring \ + ruby_alias_global_function \ + ruby_alias_module_function \ ++ ruby_global_immutable_vars \ + ruby_manual_proxy \ + + include $(srcdir)/../common.mk +@@ -57,6 +59,8 @@ SWIGOPT += -w801 -noautorename -features autodoc=4 + + # Custom tests - tests with additional commandline options + ruby_alias_global_function.ctest: SWIGOPT += -globalmodule ++ruby_global_immutable_vars.ctest: SWIGOPT += -globalmodule ++ruby_global_immutable_vars_cpp.cpptest: SWIGOPT += -globalmodule + ruby_naming.cpptest: SWIGOPT += -autorename + + # Rules for the different types of tests +diff --git a/Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb b/Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb +new file mode 100644 +index 000000000..c40896a86 +--- /dev/null ++++ b/Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb +@@ -0,0 +1,47 @@ ++#!/usr/bin/env ruby ++# ++# C++ version of global_immutable_vars_runme.rb ++# ++ ++require 'swig_assert' ++ ++require 'global_immutable_vars_cpp' ++ ++# first check if all variables can be read ++swig_assert_each_line( < e ++ had_exception = true ++end ++swig_assert(had_exception, nil, ++ "Global_immutable_vars_cpp::global_immutable_var is writable (expected to be immutable)") ++ ++had_exception = false ++begin ++ Global_immutable_vars_cpp::specific_immutable_var = 81 ++rescue NoMethodError => e ++ had_exception = true ++end ++swig_assert(had_exception, nil, ++ "Global_immutable_vars_cpp::specific_immutable_var is writable (expected to be immutable)") ++ +diff --git a/Examples/test-suite/ruby/global_immutable_vars_runme.rb b/Examples/test-suite/ruby/global_immutable_vars_runme.rb +new file mode 100644 +index 000000000..af55cfeb3 +--- /dev/null ++++ b/Examples/test-suite/ruby/global_immutable_vars_runme.rb +@@ -0,0 +1,51 @@ ++#!/usr/bin/env ruby ++# ++# Here the proper generation of mutable and immutable variables is tested ++# in the target language. ++# Immutable variables do not have "=" methods generated by SWIG, ++# therefore trying to assign these variables shall throw a NoMethodError ++# exception. ++# ++ ++require 'swig_assert' ++ ++require 'global_immutable_vars' ++ ++# first check if all variables can be read ++swig_assert_each_line( < e ++ had_exception = true ++end ++swig_assert(had_exception, nil, ++ "Global_immutable_vars::global_immutable_var is writable (expected to be immutable)") ++ ++had_exception = false ++begin ++ Global_immutable_vars::specific_immutable_var = 81 ++rescue NoMethodError => e ++ had_exception = true ++end ++swig_assert(had_exception, nil, ++ "Global_immutable_vars::specific_immutable_var is writable (expected to be immutable)") ++ +diff --git a/Examples/test-suite/ruby/ruby_global_immutable_vars_cpp_runme.rb b/Examples/test-suite/ruby/ruby_global_immutable_vars_cpp_runme.rb +new file mode 100644 +index 000000000..8453254eb +--- /dev/null ++++ b/Examples/test-suite/ruby/ruby_global_immutable_vars_cpp_runme.rb +@@ -0,0 +1,47 @@ ++#!/usr/bin/env ruby ++# ++# C++ version of ruby_global_immutable_vars_runme.rb. ++# ++ ++require 'swig_assert' ++ ++require 'ruby_global_immutable_vars_cpp' ++ ++# first check if all variables can be read ++swig_assert_each_line( < e ++ had_exception = true ++end ++swig_assert(had_exception, nil, ++ "$global_immutable_var is writable (expected to be immutable)") ++ ++had_exception = false ++begin ++ $specific_immutable_var = 81 ++rescue NameError => e ++ had_exception = true ++end ++swig_assert(had_exception, nil, ++ "$specific_immutable_var is writable (expected to be immutable)") ++ +diff --git a/Examples/test-suite/ruby/ruby_global_immutable_vars_runme.rb b/Examples/test-suite/ruby/ruby_global_immutable_vars_runme.rb +new file mode 100644 +index 000000000..fda1ccf0f +--- /dev/null ++++ b/Examples/test-suite/ruby/ruby_global_immutable_vars_runme.rb +@@ -0,0 +1,51 @@ ++#!/usr/bin/env ruby ++# ++# This test program is similar to global_immutable_vars_runme.rb ++# with the difference that the global variables to check are also ++# Ruby global variables (SWIG Ruby option "-globalmodule"). ++# ++# Immutable global variables shall throw a NameError exception. ++# ++ ++require 'swig_assert' ++ ++require 'ruby_global_immutable_vars' ++ ++# first check if all variables can be read ++swig_assert_each_line( < e ++ had_exception = true ++end ++swig_assert(had_exception, nil, ++ "$global_immutable_var is writable (expected to be immutable)") ++ ++had_exception = false ++begin ++ $specific_immutable_var = 81 ++rescue NameError => e ++ had_exception = true ++end ++swig_assert(had_exception, nil, ++ "$specific_immutable_var is writable (expected to be immutable)") ++ +diff --git a/Examples/test-suite/ruby_global_immutable_vars.i b/Examples/test-suite/ruby_global_immutable_vars.i +new file mode 100644 +index 000000000..dc49cd946 +--- /dev/null ++++ b/Examples/test-suite/ruby_global_immutable_vars.i +@@ -0,0 +1,25 @@ ++%module ruby_global_immutable_vars ++ ++// This copy of global_immutable_vars.i shall be compiled with the ++// SWIG Ruby option "-globalmodule" in order to check the code path ++// for registering global methods (in contrast to module methods). ++ ++%inline %{ ++ int default_mutable_var = 40; ++%} ++ ++%immutable; ++%feature("immutable", "0") specific_mutable_var; ++ ++%inline %{ ++ int global_immutable_var = 41; ++ int specific_mutable_var = 42; ++%} ++ ++%mutable; ++%immutable specific_immutable_var; ++%inline %{ ++ int global_mutable_var = 43; ++ int specific_immutable_var = 44; ++%} ++ +diff --git a/Examples/test-suite/ruby_global_immutable_vars_cpp.i b/Examples/test-suite/ruby_global_immutable_vars_cpp.i +new file mode 100644 +index 000000000..cf3145e80 +--- /dev/null ++++ b/Examples/test-suite/ruby_global_immutable_vars_cpp.i +@@ -0,0 +1,23 @@ ++%module ruby_global_immutable_vars_cpp ++ ++// C++ version of ruby_global_immutable_vars.i ++ ++%inline %{ ++ int default_mutable_var = 40; ++%} ++ ++%immutable; ++%feature("immutable", "0") specific_mutable_var; ++ ++%inline %{ ++ int global_immutable_var = 41; ++ int specific_mutable_var = 42; ++%} ++ ++%mutable; ++%immutable specific_immutable_var; ++%inline %{ ++ int global_mutable_var = 43; ++ int specific_immutable_var = 44; ++%} ++ +diff --git a/Source/Modules/ruby.cxx b/Source/Modules/ruby.cxx +index 6a1e16d5d..c8f582679 100644 +--- a/Source/Modules/ruby.cxx ++++ b/Source/Modules/ruby.cxx +@@ -2192,6 +2192,11 @@ public: + String *getfname, *setfname; + Wrapper *getf, *setf; + ++ // Determine whether virtual global variables shall be used ++ // which have different getter and setter signatures, ++ // see https://docs.ruby-lang.org/en/2.6.0/extension_rdoc.html#label-Global+Variables+Shared+Between+C+and+Ruby ++ const bool use_virtual_var = (current == NO_CPP && useGlobalModule); ++ + getf = NewWrapper(); + setf = NewWrapper(); + +@@ -2201,7 +2206,7 @@ public: + getfname = Swig_name_wrapper(getname); + Setattr(n, "wrap:name", getfname); + Printv(getf->def, "SWIGINTERN VALUE\n", getfname, "(", NIL); +- Printf(getf->def, "VALUE self"); ++ Printf(getf->def, (use_virtual_var) ? "ID id" : "VALUE self"); + Printf(getf->def, ") {"); + Wrapper_add_local(getf, "_val", "VALUE _val"); + +@@ -2235,8 +2240,12 @@ public: + String *setname = Swig_name_set(NSPACE_TODO, iname); + setfname = Swig_name_wrapper(setname); + Setattr(n, "wrap:name", setfname); +- Printv(setf->def, "SWIGINTERN VALUE\n", setfname, "(VALUE self, ", NIL); +- Printf(setf->def, "VALUE _val) {"); ++ Printf(setf->def, "SWIGINTERN "); ++ if (use_virtual_var) { ++ Printv(setf->def, "void\n", setfname, "(VALUE _val, ID id) {", NIL); ++ } else { ++ Printv(setf->def, "VALUE\n", setfname, "(VALUE self, VALUE _val) {", NIL); ++ } + tm = Swig_typemap_lookup("varin", n, name, 0); + if (tm) { + Replaceall(tm, "$input", "_val"); +@@ -2247,9 +2256,14 @@ public: + } else { + Swig_warning(WARN_TYPEMAP_VARIN_UNDEF, input_file, line_number, "Unable to set variable of type %s\n", SwigType_str(t, 0)); + } +- Printv(setf->code, tab4, "return _val;\n", NIL); +- Printf(setf->code, "fail:\n"); +- Printv(setf->code, tab4, "return Qnil;\n", NIL); ++ if (use_virtual_var) { ++ Printf(setf->code, "fail:\n"); ++ Printv(setf->code, tab4, "return;\n", NIL); ++ } else { ++ Printv(setf->code, tab4, "return _val;\n", NIL); ++ Printf(setf->code, "fail:\n"); ++ Printv(setf->code, tab4, "return Qnil;\n", NIL); ++ } + Printf(setf->code, "}\n"); + Wrapper_print(setf, f_wrappers); + Delete(setname); +@@ -2259,7 +2273,7 @@ public: + if (CPlusPlus) { + Insert(getfname, 0, "VALUEFUNC("); + Append(getfname, ")"); +- Insert(setfname, 0, "VALUEFUNC("); ++ Insert(setfname, 0, (use_virtual_var) ? "(void (*)(ANYARGS))(" : "VALUEFUNC("); + Append(setfname, ")"); + } + +@@ -2283,9 +2297,11 @@ public: + Printv(s, tab4, "rb_define_singleton_method(", modvar, ", \"", iname, "=\", ", setfname, ", 1);\n", NIL); + } + } else { +- Printv(s, tab4, "rb_define_global_method(\"", iname, "\", ", getfname, ", 0);\n", NIL); +- if (!GetFlag(n, "feature:immutable")) { +- Printv(s, tab4, "rb_define_global_method(\"", iname, "=\", ", setfname, ", 1);\n", NIL); ++ Printv(s, tab4, "rb_define_virtual_variable(\"$", iname, "\", ", getfname, ", ", NIL); ++ if (GetFlag(n, "feature:immutable")) { ++ Printv(s, tab4, "0);\n", NIL); ++ } else { ++ Printv(s, tab4, setfname, ");\n", NIL); + } + } + Printv(f_init, s, NIL); +-- +2.21.1 + diff --git a/swig.spec b/swig.spec index 2ff9791..dc7930a 100644 --- a/swig.spec +++ b/swig.spec @@ -19,9 +19,11 @@ %{!?lualang:%global lualang 1} %{!?phplang:%global phplang 1} # Disable Ruby test failed with swig 4.0.0 on s390 -# Tests on x86_64 fails with Ruby 2.6.4 -# https://github.com/swig/swig/issues/1646 +%ifarch s390x %{!?rubylang:%global rubylang 0} +%else +%{!?rubylang:%global rubylang 1} +%endif %{!?python2lang:%global python2lang 1} %{!?python3lang:%global python3lang 1} @@ -51,7 +53,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.1 -Release: 4%{?dist} +Release: 5%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -64,10 +66,12 @@ Source4: ccache-swig.csh %endif Patch0: swig308-Do-not-use-isystem.patch -# https://github.com/swig/swig/issues/1689 -# https://github.com/swig/swig/pull/1692/commits/00e291b319bd6b58bf061feee3721a58c9c6be32 -# For now, modify as small as possible for ruby 2.7 build -Patch1: swig-4.0.1-ruby27-minimum.patch +# Fix code generated for Ruby global variables +# https://github.com/swig/swig/issues/1668 +Patch1: swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch +# Add support for Ruby 2.7 +# https://github.com/swig/swig/pull/1692 +Patch2: swig-4.0.1-Add-support-for-Ruby-2.7.patch BuildRequires: perl-interpreter, pcre-devel %if %{python2lang} @@ -169,7 +173,8 @@ in gdb. %setup -q -n swig-%{version} %patch0 -p1 -b .isystem -%patch1 -p1 -b .ruby27 +%patch1 -p1 -b .global +%patch2 -p1 -b .ruby27 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -342,6 +347,10 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Jan 23 2020 Jitka Plesnikova - 4.0.1-5 +- Add support for Ruby 2.7 +- Fix code generated for Ruby global variables + * Sat Jan 18 2020 Mamoru TASAKA - 4.0.1-4 - Backport upstream fixes for ruby 2.7 (as small as possible for now) diff --git a/swig308-Do-not-use-isystem.patch b/swig308-Do-not-use-isystem.patch index 48f0105..efd0312 100644 --- a/swig308-Do-not-use-isystem.patch +++ b/swig308-Do-not-use-isystem.patch @@ -1,7 +1,7 @@ diff -up swig-3.0.8/configure.ac.orig swig-3.0.8/configure.ac --- swig-3.0.8/configure.ac.orig 2016-02-02 16:01:09.094852303 +0100 +++ swig-3.0.8/configure.ac 2016-02-02 16:01:42.096702679 +0100 -@@ -131,7 +131,8 @@ AC_SUBST(BOOST_CPPFLAGS) +@@ -118,7 +118,8 @@ AC_SUBST(BOOST_CPPFLAGS) dnl How to specify include directories that may be system directories. # -I should not be used on system directories (GCC) if test "$GCC" = yes; then From 174b2c16fcfdc9bf14feeb02fc92fc1a353c71c4 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 31 Jan 2020 00:48:34 +0000 Subject: [PATCH 035/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_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 dc7930a..c396cb1 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.1 -Release: 5%{?dist} +Release: 6%{?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 +* Fri Jan 31 2020 Fedora Release Engineering - 4.0.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Thu Jan 23 2020 Jitka Plesnikova - 4.0.1-5 - Add support for Ruby 2.7 - Fix code generated for Ruby global variables From 035e9e01d495827588b32fdd1d44e3a9547985ea Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Tue, 4 Feb 2020 16:17:25 -0500 Subject: [PATCH 036/103] Fix crash in Python backend when using empty docstrings --- ...-backend-when-using-empty-docstrings.patch | 88 +++++++++++++++++++ swig.spec | 9 +- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch diff --git a/swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch b/swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch new file mode 100644 index 0000000..c9b5ce7 --- /dev/null +++ b/swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch @@ -0,0 +1,88 @@ +From e14532ce52a654768cc4010e9e18e1a0a4d965db Mon Sep 17 00:00:00 2001 +From: Vadim Zeitlin +Date: Sat, 25 Jan 2020 17:06:20 +0100 +Subject: [PATCH] Fix crash in Python backend when using empty docstrings + +Due to confusion in build_combined_docstring(), we could call +DohDelete() on the "feature:docstring" string, which resulted in a crash +when trying to use it later. + +Fix this and simplify the code at the same time by ensuring that we +always use a copy of "feature:docstring" if it's not empty or don't use +it at all if it's empty -- like this we don't have to check for its +length each time before using it. + +Closes #1648. +--- + Examples/test-suite/autodoc.i | 9 +++++++++ + Examples/test-suite/python/autodoc_runme.py | 2 ++ + Source/Modules/python.cxx | 15 +++++++++++---- + 3 files changed, 22 insertions(+), 4 deletions(-) + +diff --git a/Examples/test-suite/autodoc.i b/Examples/test-suite/autodoc.i +index 9f4365ee1c..efc7201553 100644 +--- a/Examples/test-suite/autodoc.i ++++ b/Examples/test-suite/autodoc.i +@@ -183,3 +183,12 @@ const int PROCESS_DEFAULT_VALUE = 17; + typedef long int some_type; + int process_complex_defval(int val = PROCESS_DEFAULT_VALUE, int factor = some_type(-1)) { return val*factor; } + %} ++ ++// Test for empty docstring, which should be ignored. ++%feature("docstring") "" ++ ++%inline %{ ++struct a_structure{ ++ char my_array[1]; ++}; ++%} +diff --git a/Examples/test-suite/python/autodoc_runme.py b/Examples/test-suite/python/autodoc_runme.py +index 6002d49fec..7bc918644d 100644 +--- a/Examples/test-suite/python/autodoc_runme.py ++++ b/Examples/test-suite/python/autodoc_runme.py +@@ -279,3 +279,5 @@ def check(got, expected, expected_builtin=None, skip=False): + check(inspect.getdoc(process4), "process4(int _from=0, int _in=1, int var=2) -> int") + + check(inspect.getdoc(process_complex_defval), "process_complex_defval(val=PROCESS_DEFAULT_VALUE, factor=some_type(-1)) -> int") ++ ++check(inspect.getdoc(a_structure.__init__), "__init__(a_structure self) -> a_structure", None, skip) +diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx +index 1dbedad26a..f6b47be244 100644 +--- a/Source/Modules/python.cxx ++++ b/Source/Modules/python.cxx +@@ -1484,8 +1484,15 @@ class PYTHON:public Language { + + String *build_combined_docstring(Node *n, autodoc_t ad_type, const String *indent = "", bool low_level = false) { + String *docstr = Getattr(n, "feature:docstring"); +- if (docstr && Len(docstr)) { +- docstr = Copy(docstr); ++ if (docstr) { ++ // Simplify the code below by just ignoring empty docstrings. ++ if (!Len(docstr)) ++ docstr = NULL; ++ else ++ docstr = Copy(docstr); ++ } ++ ++ if (docstr) { + char *t = Char(docstr); + if (*t == '{') { + Delitem(docstr, 0); +@@ -1496,7 +1503,7 @@ class PYTHON:public Language { + if (Getattr(n, "feature:autodoc") && !GetFlag(n, "feature:noautodoc")) { + String *autodoc = make_autodoc(n, ad_type, low_level); + if (autodoc && Len(autodoc) > 0) { +- if (docstr && Len(docstr)) { ++ if (docstr) { + Append(autodoc, "\n"); + Append(autodoc, docstr); + } +@@ -1509,7 +1516,7 @@ class PYTHON:public Language { + Delete(autodoc); + } + +- if (!docstr || !Len(docstr)) { ++ if (!docstr) { + if (doxygen) { + docstr = Getattr(n, "python:docstring"); + if (!docstr && doxygenTranslator->hasDocumentation(n)) { diff --git a/swig.spec b/swig.spec index c396cb1..996ead8 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.1 -Release: 6%{?dist} +Release: 7%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -72,6 +72,9 @@ Patch1: swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch # Add support for Ruby 2.7 # https://github.com/swig/swig/pull/1692 Patch2: swig-4.0.1-Add-support-for-Ruby-2.7.patch +# Fix crash in Python backend when using empty docstrings +# https://github.com/swig/swig/pull/1710 +Patch3: swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch BuildRequires: perl-interpreter, pcre-devel %if %{python2lang} @@ -175,6 +178,7 @@ in gdb. %patch0 -p1 -b .isystem %patch1 -p1 -b .global %patch2 -p1 -b .ruby27 +%patch3 -p1 -b .python for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -347,6 +351,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Feb 04 2020 Michael Jeanson - 4.0.1-7 +- Fix crash in Python backend when using empty docstrings + * Fri Jan 31 2020 Fedora Release Engineering - 4.0.1-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 81741091cfedb3cade0dfa2ae2375fcb40ccfa23 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 25 Feb 2020 01:00:31 +0000 Subject: [PATCH 037/103] Add fix for newer NodeJS version, minor spec cleanups --- swig-Upgrade-to-support-newer-NodeJS.patch | 1863 ++++++++++++++++++++ swig.spec | 16 +- 2 files changed, 1871 insertions(+), 8 deletions(-) create mode 100644 swig-Upgrade-to-support-newer-NodeJS.patch diff --git a/swig-Upgrade-to-support-newer-NodeJS.patch b/swig-Upgrade-to-support-newer-NodeJS.patch new file mode 100644 index 0000000..e3338ef --- /dev/null +++ b/swig-Upgrade-to-support-newer-NodeJS.patch @@ -0,0 +1,1863 @@ +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 996ead8..dbe1d80 100644 --- a/swig.spec +++ b/swig.spec @@ -37,7 +37,7 @@ %{!?Rlang:%global Rlang 1} %bcond_without build_ccache_swig %endif -%ifarch aarch64 %{arm} %{mips} ppc64le ppc %{power64} s390 s390x +%ifarch aarch64 %{arm} %{mips} ppc %{power64} s390 s390x %{!?javalang:%global javalang 0} %else %{!?javalang:%global javalang 1} @@ -53,7 +53,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.1 -Release: 7%{?dist} +Release: 8%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -75,6 +75,8 @@ Patch2: swig-4.0.1-Add-support-for-Ruby-2.7.patch # Fix crash in Python backend when using empty docstrings # https://github.com/swig/swig/pull/1710 Patch3: swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch +# https://github.com/swig/swig/pull/1702 +Patch4: swig-Upgrade-to-support-newer-NodeJS.patch BuildRequires: perl-interpreter, pcre-devel %if %{python2lang} @@ -173,12 +175,7 @@ This package contains file with commands for easier debugging of SWIG in gdb. %prep -%setup -q -n swig-%{version} - -%patch0 -p1 -b .isystem -%patch1 -p1 -b .global -%patch2 -p1 -b .ruby27 -%patch3 -p1 -b .python +%autosetup -p1 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -351,6 +348,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Feb 25 2020 Peter Robinson - 4.0.1-8 +- Add fix for newer NodeJS version + * Tue Feb 04 2020 Michael Jeanson - 4.0.1-7 - Fix crash in Python backend when using empty docstrings From 97c4bc9ad91753ec853c45e3d7587e4070b2ba24 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 9 Mar 2020 10:07:01 +0100 Subject: [PATCH 038/103] Remove BR for Python 2 (bug#1807547) --- swig.spec | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/swig.spec b/swig.spec index dbe1d80..d21ec0c 100644 --- a/swig.spec +++ b/swig.spec @@ -4,9 +4,9 @@ %if %{without testsuite} %global tcl 0 %global lualang 0 +%global perllang 0 %global phplang 0 %global rubylang 0 -%global python2lang 0 %global python3lang 0 %global golang 0 %global octave 0 @@ -17,6 +17,7 @@ %{!?tcl:%global tcl 1} %{!?guile:%global guile 0} %{!?lualang:%global lualang 1} +%{!?perllang:%global perllang 1} %{!?phplang:%global phplang 1} # Disable Ruby test failed with swig 4.0.0 on s390 %ifarch s390x @@ -24,7 +25,6 @@ %else %{!?rubylang:%global rubylang 1} %endif -%{!?python2lang:%global python2lang 1} %{!?python3lang:%global python3lang 1} %if 0%{?rhel} @@ -53,7 +53,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.1 -Release: 8%{?dist} +Release: 9%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -79,9 +79,6 @@ Patch3: swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch Patch4: swig-Upgrade-to-support-newer-NodeJS.patch BuildRequires: perl-interpreter, pcre-devel -%if %{python2lang} -BuildRequires: python2-devel -%endif BuildRequires: python%{python3_pkgversion}-devel BuildRequires: autoconf, automake, gawk, dos2unix BuildRequires: gcc-c++ @@ -191,13 +188,9 @@ done # It causes that log had more then 600M. %configure \ --without-ocaml \ -%if %{python2lang} - --with-python=%__python2\ -%else - --without-python \ -%endif %if %{python3lang} --with-python3=%__python3 \ + --with-2to3=%{_bindir}/2to3 \ %else --without-python3 \ %endif @@ -206,6 +199,9 @@ done %else --without-php \ %endif +%if ! %{perllang} + --without-perl5 \ +%endif %if ! %{tcl} --without-tcl \ %endif @@ -219,7 +215,7 @@ done --without-go \ %endif %if %{octave} - --with-octave=/usr/bin/octave \ + --with-octave=%{_bindir}/octave \ --without-maximum-compile-warnings \ %endif %if %{without build_ccache_swig} @@ -348,6 +344,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Mar 06 2020 Jitka Plesnikova - 4.0.1-9 +- Remove BR for Python 2 (bug#1807547) + * Tue Feb 25 2020 Peter Robinson - 4.0.1-8 - Add fix for newer NodeJS version From 67adf0affe5871a3a22d2f649d1ed6291df87840 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 10 Jun 2020 10:48:04 +0200 Subject: [PATCH 039/103] Update to 4.0.2 --- .gitignore | 1 + sources | 2 +- swig-4.0.1-Add-support-for-Ruby-2.7.patch | 296 ---------- ...-generated-for-Ruby-global-variables.patch | 534 ------------------ ...-backend-when-using-empty-docstrings.patch | 88 --- swig-4.0.1-ruby27-minimum.patch | 11 - swig.spec | 19 +- swig308-Do-not-use-isystem.patch | 13 - 8 files changed, 8 insertions(+), 956 deletions(-) delete mode 100644 swig-4.0.1-Add-support-for-Ruby-2.7.patch delete mode 100644 swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch delete mode 100644 swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch delete mode 100644 swig-4.0.1-ruby27-minimum.patch delete mode 100644 swig308-Do-not-use-isystem.patch diff --git a/.gitignore b/.gitignore index 5a3031c..2286b59 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ swig-2.0.0.tar.gz /swig-3.0.12.tar.gz /swig-4.0.0.tar.gz /swig-4.0.1.tar.gz +/swig-4.0.2.tar.gz diff --git a/sources b/sources index 49043de..f9f798f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (swig-4.0.1.tar.gz) = 595ef01cb83adfa960ceed9c325a9429192549e8d1e9aa3ab35a4301512a61d82e2e89a8c7939c2a5a0811254ea1832a443bd387e11459eb2b0bafc563ad1308 +SHA512 (swig-4.0.2.tar.gz) = 05e7da70ce6d9a733b96c0bcfa3c1b82765bd859f48c74759bbf4bb1467acb1809caa310cba5e2b3280cd704fca249eaa0624821dffae1d2a75097c7f55d14ed diff --git a/swig-4.0.1-Add-support-for-Ruby-2.7.patch b/swig-4.0.1-Add-support-for-Ruby-2.7.patch deleted file mode 100644 index 359422b..0000000 --- a/swig-4.0.1-Add-support-for-Ruby-2.7.patch +++ /dev/null @@ -1,296 +0,0 @@ -From 00e291b319bd6b58bf061feee3721a58c9c6be32 Mon Sep 17 00:00:00 2001 -From: Thomas Reitmayr -Date: Mon, 30 Dec 2019 20:11:03 +0100 -Subject: [PATCH] Add support for Ruby 2.7 - -This commit fixes the signatures of various callback methods -and cleans up the macro definitions used for casting callbacks. - -Note that the transparent version of the macro RUBY_METHOD_FUNC -is currently masked behind RUBY_DEVEL, see commit -https://github.com/ruby/ruby/commit/1d91feaf13e0ffe04b2dabc6e77e4101b6d0bb07 -In order to still support strict signature checking and prevent -nasty deprecation warnings, the use of RUBY_METHOD_FUNC had to -be replaced with VALUEFUNC. ---- - Lib/ruby/rubyclasses.swg | 14 +++++++------- - Lib/ruby/rubyhead.swg | 26 +++++++++----------------- - Lib/ruby/rubyprimtypes.swg | 15 ++++++++------- - Lib/ruby/rubytracking.swg | 10 +++++----- - Source/Modules/ruby.cxx | 22 +++++++++------------- - 5 files changed, 38 insertions(+), 49 deletions(-) - -diff --git a/Lib/ruby/rubyclasses.swg b/Lib/ruby/rubyclasses.swg -index f7b51bdcc..b345fcebe 100644 ---- a/Lib/ruby/rubyclasses.swg -+++ b/Lib/ruby/rubyclasses.swg -@@ -174,7 +174,7 @@ namespace swig { - return rb_inspect(_obj); - } - -- static VALUE swig_rescue_swallow(VALUE) -+ static VALUE swig_rescue_swallow(VALUE, VALUE) - { - /* - VALUE errstr = rb_obj_as_string(rb_errinfo()); -@@ -203,8 +203,8 @@ namespace swig { - args.id = op_id; - args.nargs = 1; - args.target = VALUE(other); -- ret = rb_rescue(RUBY_METHOD_FUNC(swig_rescue_funcall), VALUE(&args), -- (RUBY_METHOD_FUNC(swig_rescue_swallow)), Qnil); -+ ret = rb_rescue(VALUEFUNC(swig_rescue_funcall), VALUE(&args), -+ (VALUEFUNC(swig_rescue_swallow)), Qnil); - } - if (ret == Qnil) { - VALUE a = rb_funcall( _obj, hash_id, 0 ); -@@ -243,8 +243,8 @@ namespace swig { - args.id = op_id; - args.nargs = 0; - args.target = Qnil; -- ret = rb_rescue(RUBY_METHOD_FUNC(swig_rescue_funcall), VALUE(&args), -- (RUBY_METHOD_FUNC(swig_rescue_swallow)), Qnil); -+ ret = rb_rescue(VALUEFUNC(swig_rescue_funcall), VALUE(&args), -+ (VALUEFUNC(swig_rescue_swallow)), Qnil); - SWIG_RUBY_THREAD_END_BLOCK; - return ret; - } -@@ -262,8 +262,8 @@ namespace swig { - args.id = op_id; - args.nargs = 1; - args.target = VALUE(other); -- ret = rb_rescue(RUBY_METHOD_FUNC(swig_rescue_funcall), VALUE(&args), -- (RUBY_METHOD_FUNC(swig_rescue_swallow)), Qnil); -+ ret = rb_rescue(VALUEFUNC(swig_rescue_funcall), VALUE(&args), -+ (VALUEFUNC(swig_rescue_swallow)), Qnil); - SWIG_RUBY_THREAD_END_BLOCK; - return GC_VALUE(ret); - } -diff --git a/Lib/ruby/rubyhead.swg b/Lib/ruby/rubyhead.swg -index 90f07cf68..9a0400eea 100644 ---- a/Lib/ruby/rubyhead.swg -+++ b/Lib/ruby/rubyhead.swg -@@ -110,26 +110,18 @@ - * can be passed as an argument to API functions like Data_Wrap_Struct() - * and Data_Make_Struct(). - */ -- --#ifdef __cplusplus --# ifndef RUBY_METHOD_FUNC /* These definitions should work for Ruby 1.4.6 */ --# define PROTECTFUNC(f) ((VALUE (*)()) f) --# define VALUEFUNC(f) ((VALUE (*)()) f) --# define VOIDFUNC(f) ((void (*)()) f) --# else --# ifndef ANYARGS /* These definitions should work for Ruby 1.6 */ --# define PROTECTFUNC(f) ((VALUE (*)()) f) --# define VALUEFUNC(f) ((VALUE (*)()) f) --# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) --# else /* These definitions should work for Ruby 1.7+ */ --# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f) --# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f) --# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) --# endif --# endif -+#if defined(__cplusplus) && !defined(RB_METHOD_DEFINITION_DECL) -+# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f) -+# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f) -+# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f) -+# define VOID_ANYARGS_FUNC(f) ((void (*)(ANYARGS))(f)) -+# define INT_ANYARGS_FUNC(f) ((int (*)(ANYARGS))(f)) - #else -+# define PROTECTFUNC(f) (f) - # define VALUEFUNC(f) (f) - # define VOIDFUNC(f) (f) -+# define VOID_ANYARGS_FUNC(f) (f) -+# define INT_ANYARGS_FUNC(f) (f) - #endif - - /* Don't use for expressions have side effect */ -diff --git a/Lib/ruby/rubyprimtypes.swg b/Lib/ruby/rubyprimtypes.swg -index 3a848191c..4b078deea 100644 ---- a/Lib/ruby/rubyprimtypes.swg -+++ b/Lib/ruby/rubyprimtypes.swg -@@ -10,15 +10,16 @@ - %fragment("SWIG_ruby_failed","header") - { - SWIGINTERN VALUE --SWIG_ruby_failed(void) -+SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2)) - { - return Qnil; - } - } - - %define %ruby_aux_method(Type, Method, Action) --SWIGINTERN VALUE SWIG_AUX_##Method##(VALUE *args) -+SWIGINTERN VALUE SWIG_AUX_##Method##(VALUE arg) - { -+ VALUE *args = (VALUE *)arg; - VALUE obj = args[0]; - VALUE type = TYPE(obj); - Type *res = (Type *)(args[1]); -@@ -79,7 +80,7 @@ SWIG_AsVal_dec(long)(VALUE obj, long* val) - VALUE a[2]; - a[0] = obj; - a[1] = (VALUE)(&v); -- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2LONG), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { -+ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2LONG), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { - if (val) *val = v; - return SWIG_OK; - } -@@ -111,7 +112,7 @@ SWIG_AsVal_dec(unsigned long)(VALUE obj, unsigned long *val) - VALUE a[2]; - a[0] = obj; - a[1] = (VALUE)(&v); -- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { -+ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { - if (val) *val = v; - return SWIG_OK; - } -@@ -149,7 +150,7 @@ SWIG_AsVal_dec(long long)(VALUE obj, long long *val) - VALUE a[2]; - a[0] = obj; - a[1] = (VALUE)(&v); -- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2LL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { -+ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2LL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { - if (val) *val = v; - return SWIG_OK; - } -@@ -187,7 +188,7 @@ SWIG_AsVal_dec(unsigned long long)(VALUE obj, unsigned long long *val) - VALUE a[2]; - a[0] = obj; - a[1] = (VALUE)(&v); -- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2ULL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { -+ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2ULL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { - if (val) *val = v; - return SWIG_OK; - } -@@ -215,7 +216,7 @@ SWIG_AsVal_dec(double)(VALUE obj, double *val) - VALUE a[2]; - a[0] = obj; - a[1] = (VALUE)(&v); -- if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2DBL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { -+ if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2DBL), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) { - if (val) *val = v; - return SWIG_OK; - } -diff --git a/Lib/ruby/rubytracking.swg b/Lib/ruby/rubytracking.swg -index b9fb249d8..221a68193 100644 ---- a/Lib/ruby/rubytracking.swg -+++ b/Lib/ruby/rubytracking.swg -@@ -32,7 +32,7 @@ extern "C" { - */ - static st_table* swig_ruby_trackings = NULL; - --static VALUE swig_ruby_trackings_count(ANYARGS) { -+static VALUE swig_ruby_trackings_count(ID id, VALUE *var) { - return SWIG2NUM(swig_ruby_trackings->num_entries); - } - -@@ -69,7 +69,7 @@ SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) { - swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value); - } - -- rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", swig_ruby_trackings_count, NULL); -+ rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", VALUEFUNC(swig_ruby_trackings_count), VOID_ANYARGS_FUNC((rb_gvar_setter_t*)NULL)); - } - - /* Add a Tracking from a C/C++ struct to a Ruby object */ -@@ -118,13 +118,13 @@ SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) { - to the passed callback function. */ - - /* Proxy method to abstract the internal trackings datatype */ --static int swig_ruby_internal_iterate_callback(void* ptr, VALUE obj, void(*meth)(void* ptr, VALUE obj)) { -- (*meth)(ptr, obj); -+static int swig_ruby_internal_iterate_callback(st_data_t ptr, st_data_t obj, st_data_t meth) { -+ ((void (*) (void *, VALUE))meth)((void *)ptr, (VALUE)obj); - return ST_CONTINUE; - } - - SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) { -- st_foreach(swig_ruby_trackings, (int (*)(ANYARGS))&swig_ruby_internal_iterate_callback, (st_data_t)meth); -+ st_foreach(swig_ruby_trackings, INT_ANYARGS_FUNC(swig_ruby_internal_iterate_callback), (st_data_t)meth); - } - - #ifdef __cplusplus -diff --git a/Source/Modules/ruby.cxx b/Source/Modules/ruby.cxx -index c8f582679..01b75befa 100644 ---- a/Source/Modules/ruby.cxx -+++ b/Source/Modules/ruby.cxx -@@ -2191,6 +2191,7 @@ public: - String *tm; - String *getfname, *setfname; - Wrapper *getf, *setf; -+ const int assignable = is_assignable(n); - - // Determine whether virtual global variables shall be used - // which have different getter and setter signatures, -@@ -2206,7 +2207,7 @@ public: - getfname = Swig_name_wrapper(getname); - Setattr(n, "wrap:name", getfname); - Printv(getf->def, "SWIGINTERN VALUE\n", getfname, "(", NIL); -- Printf(getf->def, (use_virtual_var) ? "ID id" : "VALUE self"); -+ Printf(getf->def, (use_virtual_var) ? "ID id, VALUE *data" : "VALUE self"); - Printf(getf->def, ") {"); - Wrapper_add_local(getf, "_val", "VALUE _val"); - -@@ -2229,8 +2230,8 @@ public: - - Wrapper_print(getf, f_wrappers); - -- if (!is_assignable(n)) { -- setfname = NewString("NULL"); -+ if (!assignable) { -+ setfname = NewString("(rb_gvar_setter_t *)NULL"); - } else { - /* create setter */ - String* docs = docstring(n, AUTODOC_SETTER); -@@ -2242,7 +2243,7 @@ public: - Setattr(n, "wrap:name", setfname); - Printf(setf->def, "SWIGINTERN "); - if (use_virtual_var) { -- Printv(setf->def, "void\n", setfname, "(VALUE _val, ID id) {", NIL); -+ Printv(setf->def, "void\n", setfname, "(VALUE _val, ID id, VALUE *data) {", NIL); - } else { - Printv(setf->def, "VALUE\n", setfname, "(VALUE self, VALUE _val) {", NIL); - } -@@ -2273,7 +2274,7 @@ public: - if (CPlusPlus) { - Insert(getfname, 0, "VALUEFUNC("); - Append(getfname, ")"); -- Insert(setfname, 0, (use_virtual_var) ? "(void (*)(ANYARGS))(" : "VALUEFUNC("); -+ Insert(setfname, 0, (use_virtual_var) ? "VOID_ANYARGS_FUNC(" : "VALUEFUNC("); - Append(setfname, ")"); - } - -@@ -2282,7 +2283,7 @@ public: - case STATIC_VAR: - /* C++ class variable */ - Printv(s, tab4, "rb_define_singleton_method(", klass->vname, ", \"", klass->strip(iname), "\", ", getfname, ", 0);\n", NIL); -- if (!GetFlag(n, "feature:immutable")) { -+ if (assignable) { - Printv(s, tab4, "rb_define_singleton_method(", klass->vname, ", \"", klass->strip(iname), "=\", ", setfname, ", 1);\n", NIL); - } - Printv(klass->init, s, NIL); -@@ -2293,16 +2294,11 @@ public: - assert(current == NO_CPP); - if (!useGlobalModule) { - Printv(s, tab4, "rb_define_singleton_method(", modvar, ", \"", iname, "\", ", getfname, ", 0);\n", NIL); -- if (!GetFlag(n, "feature:immutable")) { -+ if (assignable) { - Printv(s, tab4, "rb_define_singleton_method(", modvar, ", \"", iname, "=\", ", setfname, ", 1);\n", NIL); - } - } else { -- Printv(s, tab4, "rb_define_virtual_variable(\"$", iname, "\", ", getfname, ", ", NIL); -- if (GetFlag(n, "feature:immutable")) { -- Printv(s, tab4, "0);\n", NIL); -- } else { -- Printv(s, tab4, setfname, ");\n", NIL); -- } -+ Printv(s, tab4, "rb_define_virtual_variable(\"$", iname, "\", ", getfname, ", ", setfname, ");\n", NIL); - } - Printv(f_init, s, NIL); - Delete(s); --- -2.21.1 - diff --git a/swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch b/swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch deleted file mode 100644 index 7e24cb8..0000000 --- a/swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch +++ /dev/null @@ -1,534 +0,0 @@ -From 18a3ef391121d7c4d819448c929721fd1708b40b Mon Sep 17 00:00:00 2001 -From: Thomas Reitmayr -Date: Sun, 27 Oct 2019 21:41:03 +0100 -Subject: [PATCH] Fix code generated for Ruby global variables - -This commit fixes swig#1653 by creating a Ruby virtual variable -for a C/c++ global variable when SWIG is invoked with the --globalmodule option. ---- - Doc/Manual/Ruby.html | 18 +++++++ - Examples/test-suite/common.mk | 2 + - Examples/test-suite/global_immutable_vars.i | 24 +++++++++ - .../test-suite/global_immutable_vars_cpp.i | 24 +++++++++ - Examples/test-suite/ruby/Makefile.in | 4 ++ - .../ruby/global_immutable_vars_cpp_runme.rb | 47 +++++++++++++++++ - .../ruby/global_immutable_vars_runme.rb | 51 +++++++++++++++++++ - .../ruby_global_immutable_vars_cpp_runme.rb | 47 +++++++++++++++++ - .../ruby/ruby_global_immutable_vars_runme.rb | 51 +++++++++++++++++++ - .../test-suite/ruby_global_immutable_vars.i | 25 +++++++++ - .../ruby_global_immutable_vars_cpp.i | 23 +++++++++ - Source/Modules/ruby.cxx | 36 +++++++++---- - 12 files changed, 342 insertions(+), 10 deletions(-) - create mode 100644 Examples/test-suite/global_immutable_vars.i - create mode 100644 Examples/test-suite/global_immutable_vars_cpp.i - create mode 100644 Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb - create mode 100644 Examples/test-suite/ruby/global_immutable_vars_runme.rb - create mode 100644 Examples/test-suite/ruby/ruby_global_immutable_vars_cpp_runme.rb - create mode 100644 Examples/test-suite/ruby/ruby_global_immutable_vars_runme.rb - create mode 100644 Examples/test-suite/ruby_global_immutable_vars.i - create mode 100644 Examples/test-suite/ruby_global_immutable_vars_cpp.i - -diff --git a/Doc/Manual/Ruby.html b/Doc/Manual/Ruby.html -index 3cfd1292c..6939a8a18 100644 ---- a/Doc/Manual/Ruby.html -+++ b/Doc/Manual/Ruby.html -@@ -615,6 +615,24 @@ directive. For example:

- effect until it is explicitly disabled using %mutable. -

- -+

Note: When SWIG is invoked with the -globalmodule option in -+effect, the C/C++ global variables will be translated into Ruby global -+variables. Type-checking and the optional read-only characteristic are -+available in the same way as described above. However the example would -+then have to be modified and executed in the following way: -+ -+

-+
$ irb
-+irb(main):001:0> require 'Example'
-+true
-+irb(main):002:0> $variable1 = 2
-+2
-+irb(main):003:0> $Variable2 = 4 * 10.3
-+41.2
-+irb(main):004:0> $Variable2
-+41.2
-+
-+ -

34.3.4 Constants

- - -diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk -index 5f7792810..008916a56 100644 ---- a/Examples/test-suite/common.mk -+++ b/Examples/test-suite/common.mk -@@ -250,6 +250,7 @@ CPP_TEST_CASES += \ - funcptr_cpp \ - functors \ - fvirtual \ -+ global_immutable_vars_cpp \ - global_namespace \ - global_ns_arg \ - global_scope_types \ -@@ -689,6 +690,7 @@ C_TEST_CASES += \ - funcptr \ - function_typedef \ - global_functions \ -+ global_immutable_vars \ - immutable_values \ - inctest \ - infinity \ -diff --git a/Examples/test-suite/global_immutable_vars.i b/Examples/test-suite/global_immutable_vars.i -new file mode 100644 -index 000000000..cd8cb184b ---- /dev/null -+++ b/Examples/test-suite/global_immutable_vars.i -@@ -0,0 +1,24 @@ -+%module global_immutable_vars -+ -+// Test immutable and mutable global variables, -+// see http://www.swig.org/Doc4.0/SWIGDocumentation.html#SWIG_readonly_variables -+ -+%inline %{ -+ int default_mutable_var = 40; -+%} -+ -+%immutable; -+%feature("immutable", "0") specific_mutable_var; -+ -+%inline %{ -+ int global_immutable_var = 41; -+ int specific_mutable_var = 42; -+%} -+ -+%mutable; -+%immutable specific_immutable_var; -+%inline %{ -+ int global_mutable_var = 43; -+ int specific_immutable_var = 44; -+%} -+ -diff --git a/Examples/test-suite/global_immutable_vars_cpp.i b/Examples/test-suite/global_immutable_vars_cpp.i -new file mode 100644 -index 000000000..66eb8545d ---- /dev/null -+++ b/Examples/test-suite/global_immutable_vars_cpp.i -@@ -0,0 +1,24 @@ -+%module global_immutable_vars_cpp -+ -+// Test immutable and mutable global variables, -+// see http://www.swig.org/Doc4.0/SWIGDocumentation.html#SWIG_readonly_variables -+ -+%inline %{ -+ int default_mutable_var = 40; -+%} -+ -+%immutable; -+%feature("immutable", "0") specific_mutable_var; -+ -+%inline %{ -+ int global_immutable_var = 41; -+ int specific_mutable_var = 42; -+%} -+ -+%mutable; -+%immutable specific_immutable_var; -+%inline %{ -+ int global_mutable_var = 43; -+ int specific_immutable_var = 44; -+%} -+ -diff --git a/Examples/test-suite/ruby/Makefile.in b/Examples/test-suite/ruby/Makefile.in -index d75cdb058..2c59029ec 100644 ---- a/Examples/test-suite/ruby/Makefile.in -+++ b/Examples/test-suite/ruby/Makefile.in -@@ -23,6 +23,7 @@ CPP_TEST_CASES = \ - li_std_wstring_inherit \ - primitive_types \ - ruby_alias_method \ -+ ruby_global_immutable_vars_cpp \ - ruby_keywords \ - ruby_minherit_shared_ptr \ - ruby_naming \ -@@ -48,6 +49,7 @@ C_TEST_CASES += \ - li_cstring \ - ruby_alias_global_function \ - ruby_alias_module_function \ -+ ruby_global_immutable_vars \ - ruby_manual_proxy \ - - include $(srcdir)/../common.mk -@@ -57,6 +59,8 @@ SWIGOPT += -w801 -noautorename -features autodoc=4 - - # Custom tests - tests with additional commandline options - ruby_alias_global_function.ctest: SWIGOPT += -globalmodule -+ruby_global_immutable_vars.ctest: SWIGOPT += -globalmodule -+ruby_global_immutable_vars_cpp.cpptest: SWIGOPT += -globalmodule - ruby_naming.cpptest: SWIGOPT += -autorename - - # Rules for the different types of tests -diff --git a/Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb b/Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb -new file mode 100644 -index 000000000..c40896a86 ---- /dev/null -+++ b/Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb -@@ -0,0 +1,47 @@ -+#!/usr/bin/env ruby -+# -+# C++ version of global_immutable_vars_runme.rb -+# -+ -+require 'swig_assert' -+ -+require 'global_immutable_vars_cpp' -+ -+# first check if all variables can be read -+swig_assert_each_line( < e -+ had_exception = true -+end -+swig_assert(had_exception, nil, -+ "Global_immutable_vars_cpp::global_immutable_var is writable (expected to be immutable)") -+ -+had_exception = false -+begin -+ Global_immutable_vars_cpp::specific_immutable_var = 81 -+rescue NoMethodError => e -+ had_exception = true -+end -+swig_assert(had_exception, nil, -+ "Global_immutable_vars_cpp::specific_immutable_var is writable (expected to be immutable)") -+ -diff --git a/Examples/test-suite/ruby/global_immutable_vars_runme.rb b/Examples/test-suite/ruby/global_immutable_vars_runme.rb -new file mode 100644 -index 000000000..af55cfeb3 ---- /dev/null -+++ b/Examples/test-suite/ruby/global_immutable_vars_runme.rb -@@ -0,0 +1,51 @@ -+#!/usr/bin/env ruby -+# -+# Here the proper generation of mutable and immutable variables is tested -+# in the target language. -+# Immutable variables do not have "=" methods generated by SWIG, -+# therefore trying to assign these variables shall throw a NoMethodError -+# exception. -+# -+ -+require 'swig_assert' -+ -+require 'global_immutable_vars' -+ -+# first check if all variables can be read -+swig_assert_each_line( < e -+ had_exception = true -+end -+swig_assert(had_exception, nil, -+ "Global_immutable_vars::global_immutable_var is writable (expected to be immutable)") -+ -+had_exception = false -+begin -+ Global_immutable_vars::specific_immutable_var = 81 -+rescue NoMethodError => e -+ had_exception = true -+end -+swig_assert(had_exception, nil, -+ "Global_immutable_vars::specific_immutable_var is writable (expected to be immutable)") -+ -diff --git a/Examples/test-suite/ruby/ruby_global_immutable_vars_cpp_runme.rb b/Examples/test-suite/ruby/ruby_global_immutable_vars_cpp_runme.rb -new file mode 100644 -index 000000000..8453254eb ---- /dev/null -+++ b/Examples/test-suite/ruby/ruby_global_immutable_vars_cpp_runme.rb -@@ -0,0 +1,47 @@ -+#!/usr/bin/env ruby -+# -+# C++ version of ruby_global_immutable_vars_runme.rb. -+# -+ -+require 'swig_assert' -+ -+require 'ruby_global_immutable_vars_cpp' -+ -+# first check if all variables can be read -+swig_assert_each_line( < e -+ had_exception = true -+end -+swig_assert(had_exception, nil, -+ "$global_immutable_var is writable (expected to be immutable)") -+ -+had_exception = false -+begin -+ $specific_immutable_var = 81 -+rescue NameError => e -+ had_exception = true -+end -+swig_assert(had_exception, nil, -+ "$specific_immutable_var is writable (expected to be immutable)") -+ -diff --git a/Examples/test-suite/ruby/ruby_global_immutable_vars_runme.rb b/Examples/test-suite/ruby/ruby_global_immutable_vars_runme.rb -new file mode 100644 -index 000000000..fda1ccf0f ---- /dev/null -+++ b/Examples/test-suite/ruby/ruby_global_immutable_vars_runme.rb -@@ -0,0 +1,51 @@ -+#!/usr/bin/env ruby -+# -+# This test program is similar to global_immutable_vars_runme.rb -+# with the difference that the global variables to check are also -+# Ruby global variables (SWIG Ruby option "-globalmodule"). -+# -+# Immutable global variables shall throw a NameError exception. -+# -+ -+require 'swig_assert' -+ -+require 'ruby_global_immutable_vars' -+ -+# first check if all variables can be read -+swig_assert_each_line( < e -+ had_exception = true -+end -+swig_assert(had_exception, nil, -+ "$global_immutable_var is writable (expected to be immutable)") -+ -+had_exception = false -+begin -+ $specific_immutable_var = 81 -+rescue NameError => e -+ had_exception = true -+end -+swig_assert(had_exception, nil, -+ "$specific_immutable_var is writable (expected to be immutable)") -+ -diff --git a/Examples/test-suite/ruby_global_immutable_vars.i b/Examples/test-suite/ruby_global_immutable_vars.i -new file mode 100644 -index 000000000..dc49cd946 ---- /dev/null -+++ b/Examples/test-suite/ruby_global_immutable_vars.i -@@ -0,0 +1,25 @@ -+%module ruby_global_immutable_vars -+ -+// This copy of global_immutable_vars.i shall be compiled with the -+// SWIG Ruby option "-globalmodule" in order to check the code path -+// for registering global methods (in contrast to module methods). -+ -+%inline %{ -+ int default_mutable_var = 40; -+%} -+ -+%immutable; -+%feature("immutable", "0") specific_mutable_var; -+ -+%inline %{ -+ int global_immutable_var = 41; -+ int specific_mutable_var = 42; -+%} -+ -+%mutable; -+%immutable specific_immutable_var; -+%inline %{ -+ int global_mutable_var = 43; -+ int specific_immutable_var = 44; -+%} -+ -diff --git a/Examples/test-suite/ruby_global_immutable_vars_cpp.i b/Examples/test-suite/ruby_global_immutable_vars_cpp.i -new file mode 100644 -index 000000000..cf3145e80 ---- /dev/null -+++ b/Examples/test-suite/ruby_global_immutable_vars_cpp.i -@@ -0,0 +1,23 @@ -+%module ruby_global_immutable_vars_cpp -+ -+// C++ version of ruby_global_immutable_vars.i -+ -+%inline %{ -+ int default_mutable_var = 40; -+%} -+ -+%immutable; -+%feature("immutable", "0") specific_mutable_var; -+ -+%inline %{ -+ int global_immutable_var = 41; -+ int specific_mutable_var = 42; -+%} -+ -+%mutable; -+%immutable specific_immutable_var; -+%inline %{ -+ int global_mutable_var = 43; -+ int specific_immutable_var = 44; -+%} -+ -diff --git a/Source/Modules/ruby.cxx b/Source/Modules/ruby.cxx -index 6a1e16d5d..c8f582679 100644 ---- a/Source/Modules/ruby.cxx -+++ b/Source/Modules/ruby.cxx -@@ -2192,6 +2192,11 @@ public: - String *getfname, *setfname; - Wrapper *getf, *setf; - -+ // Determine whether virtual global variables shall be used -+ // which have different getter and setter signatures, -+ // see https://docs.ruby-lang.org/en/2.6.0/extension_rdoc.html#label-Global+Variables+Shared+Between+C+and+Ruby -+ const bool use_virtual_var = (current == NO_CPP && useGlobalModule); -+ - getf = NewWrapper(); - setf = NewWrapper(); - -@@ -2201,7 +2206,7 @@ public: - getfname = Swig_name_wrapper(getname); - Setattr(n, "wrap:name", getfname); - Printv(getf->def, "SWIGINTERN VALUE\n", getfname, "(", NIL); -- Printf(getf->def, "VALUE self"); -+ Printf(getf->def, (use_virtual_var) ? "ID id" : "VALUE self"); - Printf(getf->def, ") {"); - Wrapper_add_local(getf, "_val", "VALUE _val"); - -@@ -2235,8 +2240,12 @@ public: - String *setname = Swig_name_set(NSPACE_TODO, iname); - setfname = Swig_name_wrapper(setname); - Setattr(n, "wrap:name", setfname); -- Printv(setf->def, "SWIGINTERN VALUE\n", setfname, "(VALUE self, ", NIL); -- Printf(setf->def, "VALUE _val) {"); -+ Printf(setf->def, "SWIGINTERN "); -+ if (use_virtual_var) { -+ Printv(setf->def, "void\n", setfname, "(VALUE _val, ID id) {", NIL); -+ } else { -+ Printv(setf->def, "VALUE\n", setfname, "(VALUE self, VALUE _val) {", NIL); -+ } - tm = Swig_typemap_lookup("varin", n, name, 0); - if (tm) { - Replaceall(tm, "$input", "_val"); -@@ -2247,9 +2256,14 @@ public: - } else { - Swig_warning(WARN_TYPEMAP_VARIN_UNDEF, input_file, line_number, "Unable to set variable of type %s\n", SwigType_str(t, 0)); - } -- Printv(setf->code, tab4, "return _val;\n", NIL); -- Printf(setf->code, "fail:\n"); -- Printv(setf->code, tab4, "return Qnil;\n", NIL); -+ if (use_virtual_var) { -+ Printf(setf->code, "fail:\n"); -+ Printv(setf->code, tab4, "return;\n", NIL); -+ } else { -+ Printv(setf->code, tab4, "return _val;\n", NIL); -+ Printf(setf->code, "fail:\n"); -+ Printv(setf->code, tab4, "return Qnil;\n", NIL); -+ } - Printf(setf->code, "}\n"); - Wrapper_print(setf, f_wrappers); - Delete(setname); -@@ -2259,7 +2273,7 @@ public: - if (CPlusPlus) { - Insert(getfname, 0, "VALUEFUNC("); - Append(getfname, ")"); -- Insert(setfname, 0, "VALUEFUNC("); -+ Insert(setfname, 0, (use_virtual_var) ? "(void (*)(ANYARGS))(" : "VALUEFUNC("); - Append(setfname, ")"); - } - -@@ -2283,9 +2297,11 @@ public: - Printv(s, tab4, "rb_define_singleton_method(", modvar, ", \"", iname, "=\", ", setfname, ", 1);\n", NIL); - } - } else { -- Printv(s, tab4, "rb_define_global_method(\"", iname, "\", ", getfname, ", 0);\n", NIL); -- if (!GetFlag(n, "feature:immutable")) { -- Printv(s, tab4, "rb_define_global_method(\"", iname, "=\", ", setfname, ", 1);\n", NIL); -+ Printv(s, tab4, "rb_define_virtual_variable(\"$", iname, "\", ", getfname, ", ", NIL); -+ if (GetFlag(n, "feature:immutable")) { -+ Printv(s, tab4, "0);\n", NIL); -+ } else { -+ Printv(s, tab4, setfname, ");\n", NIL); - } - } - Printv(f_init, s, NIL); --- -2.21.1 - diff --git a/swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch b/swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch deleted file mode 100644 index c9b5ce7..0000000 --- a/swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch +++ /dev/null @@ -1,88 +0,0 @@ -From e14532ce52a654768cc4010e9e18e1a0a4d965db Mon Sep 17 00:00:00 2001 -From: Vadim Zeitlin -Date: Sat, 25 Jan 2020 17:06:20 +0100 -Subject: [PATCH] Fix crash in Python backend when using empty docstrings - -Due to confusion in build_combined_docstring(), we could call -DohDelete() on the "feature:docstring" string, which resulted in a crash -when trying to use it later. - -Fix this and simplify the code at the same time by ensuring that we -always use a copy of "feature:docstring" if it's not empty or don't use -it at all if it's empty -- like this we don't have to check for its -length each time before using it. - -Closes #1648. ---- - Examples/test-suite/autodoc.i | 9 +++++++++ - Examples/test-suite/python/autodoc_runme.py | 2 ++ - Source/Modules/python.cxx | 15 +++++++++++---- - 3 files changed, 22 insertions(+), 4 deletions(-) - -diff --git a/Examples/test-suite/autodoc.i b/Examples/test-suite/autodoc.i -index 9f4365ee1c..efc7201553 100644 ---- a/Examples/test-suite/autodoc.i -+++ b/Examples/test-suite/autodoc.i -@@ -183,3 +183,12 @@ const int PROCESS_DEFAULT_VALUE = 17; - typedef long int some_type; - int process_complex_defval(int val = PROCESS_DEFAULT_VALUE, int factor = some_type(-1)) { return val*factor; } - %} -+ -+// Test for empty docstring, which should be ignored. -+%feature("docstring") "" -+ -+%inline %{ -+struct a_structure{ -+ char my_array[1]; -+}; -+%} -diff --git a/Examples/test-suite/python/autodoc_runme.py b/Examples/test-suite/python/autodoc_runme.py -index 6002d49fec..7bc918644d 100644 ---- a/Examples/test-suite/python/autodoc_runme.py -+++ b/Examples/test-suite/python/autodoc_runme.py -@@ -279,3 +279,5 @@ def check(got, expected, expected_builtin=None, skip=False): - check(inspect.getdoc(process4), "process4(int _from=0, int _in=1, int var=2) -> int") - - check(inspect.getdoc(process_complex_defval), "process_complex_defval(val=PROCESS_DEFAULT_VALUE, factor=some_type(-1)) -> int") -+ -+check(inspect.getdoc(a_structure.__init__), "__init__(a_structure self) -> a_structure", None, skip) -diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx -index 1dbedad26a..f6b47be244 100644 ---- a/Source/Modules/python.cxx -+++ b/Source/Modules/python.cxx -@@ -1484,8 +1484,15 @@ class PYTHON:public Language { - - String *build_combined_docstring(Node *n, autodoc_t ad_type, const String *indent = "", bool low_level = false) { - String *docstr = Getattr(n, "feature:docstring"); -- if (docstr && Len(docstr)) { -- docstr = Copy(docstr); -+ if (docstr) { -+ // Simplify the code below by just ignoring empty docstrings. -+ if (!Len(docstr)) -+ docstr = NULL; -+ else -+ docstr = Copy(docstr); -+ } -+ -+ if (docstr) { - char *t = Char(docstr); - if (*t == '{') { - Delitem(docstr, 0); -@@ -1496,7 +1503,7 @@ class PYTHON:public Language { - if (Getattr(n, "feature:autodoc") && !GetFlag(n, "feature:noautodoc")) { - String *autodoc = make_autodoc(n, ad_type, low_level); - if (autodoc && Len(autodoc) > 0) { -- if (docstr && Len(docstr)) { -+ if (docstr) { - Append(autodoc, "\n"); - Append(autodoc, docstr); - } -@@ -1509,7 +1516,7 @@ class PYTHON:public Language { - Delete(autodoc); - } - -- if (!docstr || !Len(docstr)) { -+ if (!docstr) { - if (doxygen) { - docstr = Getattr(n, "python:docstring"); - if (!docstr && doxygenTranslator->hasDocumentation(n)) { diff --git a/swig-4.0.1-ruby27-minimum.patch b/swig-4.0.1-ruby27-minimum.patch deleted file mode 100644 index 4370b35..0000000 --- a/swig-4.0.1-ruby27-minimum.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- swig-4.0.1/Lib/ruby/rubytracking.swg.orig 2019-08-21 06:34:03.000000000 +0900 -+++ swig-4.0.1/Lib/ruby/rubytracking.swg 2020-01-18 18:32:38.909450596 +0900 -@@ -69,7 +69,7 @@ SWIGRUNTIME void SWIG_RubyInitializeTrac - swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value); - } - -- rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", swig_ruby_trackings_count, NULL); -+ rb_define_virtual_variable("SWIG_TRACKINGS_COUNT", (rb_gvar_getter_t *)swig_ruby_trackings_count, (rb_gvar_setter_t *)NULL); - } - - /* Add a Tracking from a C/C++ struct to a Ruby object */ diff --git a/swig.spec b/swig.spec index d21ec0c..809f7a8 100644 --- a/swig.spec +++ b/swig.spec @@ -52,8 +52,8 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 4.0.1 -Release: 9%{?dist} +Version: 4.0.2 +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,18 +65,8 @@ Source3: ccache-swig.sh Source4: ccache-swig.csh %endif -Patch0: swig308-Do-not-use-isystem.patch -# Fix code generated for Ruby global variables -# https://github.com/swig/swig/issues/1668 -Patch1: swig-4.0.1-Fix-code-generated-for-Ruby-global-variables.patch -# Add support for Ruby 2.7 -# https://github.com/swig/swig/pull/1692 -Patch2: swig-4.0.1-Add-support-for-Ruby-2.7.patch -# Fix crash in Python backend when using empty docstrings -# https://github.com/swig/swig/pull/1710 -Patch3: swig-4.0.1-Fix-crash-in-Python-backend-when-using-empty-docstrings.patch # https://github.com/swig/swig/pull/1702 -Patch4: swig-Upgrade-to-support-newer-NodeJS.patch +Patch0: swig-Upgrade-to-support-newer-NodeJS.patch BuildRequires: perl-interpreter, pcre-devel BuildRequires: python%{python3_pkgversion}-devel @@ -344,6 +334,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon Jun 08 2020 Jitka Plesnikova - 4.0.2-1 +- Update to 4.0.2 + * Fri Mar 06 2020 Jitka Plesnikova - 4.0.1-9 - Remove BR for Python 2 (bug#1807547) diff --git a/swig308-Do-not-use-isystem.patch b/swig308-Do-not-use-isystem.patch deleted file mode 100644 index efd0312..0000000 --- a/swig308-Do-not-use-isystem.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up swig-3.0.8/configure.ac.orig swig-3.0.8/configure.ac ---- swig-3.0.8/configure.ac.orig 2016-02-02 16:01:09.094852303 +0100 -+++ swig-3.0.8/configure.ac 2016-02-02 16:01:42.096702679 +0100 -@@ -118,7 +118,8 @@ AC_SUBST(BOOST_CPPFLAGS) - dnl How to specify include directories that may be system directories. - # -I should not be used on system directories (GCC) - if test "$GCC" = yes; then -- ISYSTEM="-isystem " -+# ISYSTEM="-isystem " -+ ISYSTEM="-I" - else - ISYSTEM="-I" - fi From f8b278b91f0f50dfcca93fe67151b98f5ff075cc Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 29 Jul 2020 10:27:31 +0200 Subject: [PATCH 040/103] Use make macros; Disable Go tests --- swig.spec | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/swig.spec b/swig.spec index 809f7a8..2263b52 100644 --- a/swig.spec +++ b/swig.spec @@ -45,7 +45,8 @@ # Do not run Go tests, they failed with 4.0.0 on ppc64le %ifarch %{ix86} x86_64 %{arm} aarch64 -%{!?golang:%global golang 1} +# Tests do not work with Go 1.15 +%{!?golang:%global golang 0} %else %{!?golang:%global golang 0} %endif @@ -53,7 +54,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -212,7 +213,7 @@ done --disable-ccache \ %endif ; -make %{?_smp_mflags} +%{make_build} %if %{with testsuite} # Test suite @@ -239,7 +240,7 @@ for all in `find -type f`; do done popd -make DESTDIR=%{buildroot} install +%{make_install} ################################################# # Use help output for generating of man page swig @@ -334,6 +335,11 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Jul 29 2020 Tom Stellard - 4.0.2-2 +- Use make macros + https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro +- Disable Go tests + * Mon Jun 08 2020 Jitka Plesnikova - 4.0.2-1 - Update to 4.0.2 From 8f1b0502975792d18744ed41db0eacb9abaeee54 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Fri, 28 Aug 2020 12:20:47 +0200 Subject: [PATCH 041/103] Enable tests for Python 3 --- swig.spec | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/swig.spec b/swig.spec index 2263b52..cece5ed 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: 2%{?dist} +Release: 3%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -177,16 +177,18 @@ 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 \ --without-ocaml \ %if %{python3lang} - --with-python3=%__python3 \ - --with-2to3=%{_bindir}/2to3 \ + --with-python3=python3 \ + --with-2to3=2to3 \ %else --without-python3 \ %endif %if %{phplang} - --with-php=%{__php} \ + --with-php \ %else --without-php \ %endif @@ -217,7 +219,7 @@ done %if %{with testsuite} # Test suite -make check +make check PY3=1 %endif %install @@ -335,6 +337,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Aug 28 2020 Jitka Plesnikova - 4.0.2-3 +- Enable tests for Python 3 + * Wed Jul 29 2020 Tom Stellard - 4.0.2-2 - Use make macros https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro From fd0b982bf59bdbc48885d11b9e3e1f40a7204f3e Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Fri, 8 Jan 2021 22:08:23 +0000 Subject: [PATCH 042/103] Add BuildRequires: make https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot --- swig.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/swig.spec b/swig.spec index cece5ed..9356360 100644 --- a/swig.spec +++ b/swig.spec @@ -69,6 +69,7 @@ Source4: ccache-swig.csh # https://github.com/swig/swig/pull/1702 Patch0: swig-Upgrade-to-support-newer-NodeJS.patch +BuildRequires: make BuildRequires: perl-interpreter, pcre-devel BuildRequires: python%{python3_pkgversion}-devel BuildRequires: autoconf, automake, gawk, dos2unix From 2cd003f12e247e3f6257676a1b288a23fcb54e26 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 27 Jan 2021 21:24:18 +0000 Subject: [PATCH 043/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_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 9356360..cd1092c 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: 3%{?dist} +Release: 4%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -338,6 +338,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Wed Jan 27 2021 Fedora Release Engineering - 4.0.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Fri Aug 28 2020 Jitka Plesnikova - 4.0.2-3 - Enable tests for Python 3 From 62dded8bacb09398b03d1352820636182d2494ab Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 22 Mar 2021 07:32:46 +0100 Subject: [PATCH 044/103] Backport support of PHP8 from upstream --- ...har-typecheck-typemap-to-accept-Null.patch | 82 ++++ ...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 ++++++++++++++++++ swig.spec | 12 +- 5 files changed, 684 insertions(+), 2 deletions(-) create mode 100644 swig-4.0.2-Fix-char-typecheck-typemap-to-accept-Null.patch create mode 100644 swig-4.0.2-Fix-overloaded-directed-methods-with-non-void-re.patch create mode 100644 swig-4.0.2-Improve-PHP-object-creation.patch create mode 100644 swig-4.0.2-Support-PHP8.patch 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 new file mode 100644 index 0000000..b293d2f --- /dev/null +++ b/swig-4.0.2-Fix-char-typecheck-typemap-to-accept-Null.patch @@ -0,0 +1,82 @@ +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-overloaded-directed-methods-with-non-void-re.patch b/swig-4.0.2-Fix-overloaded-directed-methods-with-non-void-re.patch new file mode 100644 index 0000000..1cc5e91 --- /dev/null +++ b/swig-4.0.2-Fix-overloaded-directed-methods-with-non-void-re.patch @@ -0,0 +1,101 @@ +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 new file mode 100644 index 0000000..2239053 --- /dev/null +++ b/swig-4.0.2-Improve-PHP-object-creation.patch @@ -0,0 +1,82 @@ +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 new file mode 100644 index 0000000..56e9831 --- /dev/null +++ b/swig-4.0.2-Support-PHP8.patch @@ -0,0 +1,409 @@ +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.spec b/swig.spec index cd1092c..21aa752 100644 --- a/swig.spec +++ b/swig.spec @@ -20,7 +20,7 @@ %{!?perllang:%global perllang 1} %{!?phplang:%global phplang 1} # Disable Ruby test failed with swig 4.0.0 on s390 -%ifarch s390x +%ifarch s390x %{power64} %{!?rubylang:%global rubylang 0} %else %{!?rubylang:%global rubylang 1} @@ -54,7 +54,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 4%{?dist} +Release: 5%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -68,6 +68,11 @@ Source4: ccache-swig.csh # https://github.com/swig/swig/pull/1702 Patch0: swig-Upgrade-to-support-newer-NodeJS.patch +# Backport PHP 7.x and 88888888 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 BuildRequires: make BuildRequires: perl-interpreter, pcre-devel @@ -338,6 +343,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Mar 05 2021 Jitka Plesnikova - 4.0.2-5 +- Backport support of PHP8 from upstream + * Wed Jan 27 2021 Fedora Release Engineering - 4.0.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From 54b745be0c0eacd1075ce017352245164a48ed25 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Thu, 6 May 2021 21:53:04 -0600 Subject: [PATCH 045/103] Add patch for octave 6 support (bz#1919617) --- swig-octave-6.patch | 346 ++++++++++++++++++++++++++++++++++++++++++++ swig.spec | 7 +- 2 files changed, 352 insertions(+), 1 deletion(-) create mode 100644 swig-octave-6.patch diff --git a/swig-octave-6.patch b/swig-octave-6.patch new file mode 100644 index 0000000..f3cc909 --- /dev/null +++ b/swig-octave-6.patch @@ -0,0 +1,346 @@ +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 21aa752..3a3a024 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: 5%{?dist} +Release: 6%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -73,6 +73,8 @@ 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 BuildRequires: make BuildRequires: perl-interpreter, pcre-devel @@ -343,6 +345,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Mon May 31 2021 Orion Poplawski - 4.0.2-6 +- Add patch for octave 6 support (bz#1919617) + * Fri Mar 05 2021 Jitka Plesnikova - 4.0.2-5 - Backport support of PHP8 from upstream From c9c90115bf57b8f1266b565db8b5c9ddd7263899 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 15 Jul 2021 17:28:29 +0200 Subject: [PATCH 046/103] Disable Python tests, they fail with 3.10.0~b2 --- swig.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/swig.spec b/swig.spec index 3a3a024..8afcb2a 100644 --- a/swig.spec +++ b/swig.spec @@ -25,7 +25,8 @@ %else %{!?rubylang:%global rubylang 1} %endif -%{!?python3lang:%global python3lang 1} +# Disable Python tests - they fail with 3.10.0~b2 +%{!?python3lang:%global python3lang 0} %if 0%{?rhel} %{!?golang:%global golang 0} @@ -54,7 +55,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 6%{?dist} +Release: 7%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -345,6 +346,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Jul 15 2021 Jitka Plesnikova - 4.0.2-7 +- Disable Python tests, they fail with 3.10.0~b2 + * Mon May 31 2021 Orion Poplawski - 4.0.2-6 - Add patch for octave 6 support (bz#1919617) From cb9865cf16ba16bc9e8716d109919fa80787c217 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 23 Jul 2021 18:39:52 +0000 Subject: [PATCH 047/103] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_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 8afcb2a..f30e448 100644 --- a/swig.spec +++ b/swig.spec @@ -55,7 +55,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 7%{?dist} +Release: 8%{?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 +346,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Fri Jul 23 2021 Fedora Release Engineering - 4.0.2-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Thu Jul 15 2021 Jitka Plesnikova - 4.0.2-7 - Disable Python tests, they fail with 3.10.0~b2 From a7dae3fb980a3329d801c5ad8f79b4f0daf13d1c Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Tue, 10 Aug 2021 18:37:00 -0600 Subject: [PATCH 048/103] Rebuild for octave 6.3.0 --- swig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swig.spec b/swig.spec index f30e448..bae5053 100644 --- a/swig.spec +++ b/swig.spec @@ -55,7 +55,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 8%{?dist} +Release: 9%{?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 +346,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Tue Aug 10 2021 Orion Poplawski - 4.0.2-9 +- Rebuild for octave 6.3.0 + * Fri Jul 23 2021 Fedora Release Engineering - 4.0.2-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 7022269bc4abb47ce72d628c1291f73a4a5950e5 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 7 Oct 2021 14:40:10 +0200 Subject: [PATCH 049/103] Enable Python tests --- ...ad_simple_cast-test-with-Python-3.10.patch | 23 +++++++++++++++++++ swig.spec | 15 +++++++----- 2 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 swig-4.0.2-Fix-overload_simple_cast-test-with-Python-3.10.patch 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 new file mode 100644 index 0000000..a3c8cff --- /dev/null +++ b/swig-4.0.2-Fix-overload_simple_cast-test-with-Python-3.10.patch @@ -0,0 +1,23 @@ +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.spec b/swig.spec index bae5053..fbc65b9 100644 --- a/swig.spec +++ b/swig.spec @@ -25,8 +25,7 @@ %else %{!?rubylang:%global rubylang 1} %endif -# Disable Python tests - they fail with 3.10.0~b2 -%{!?python3lang:%global python3lang 0} +%{!?python3lang:%global python3lang 1} %if 0%{?rhel} %{!?golang:%global golang 0} @@ -46,8 +45,7 @@ # Do not run Go tests, they failed with 4.0.0 on ppc64le %ifarch %{ix86} x86_64 %{arm} aarch64 -# Tests do not work with Go 1.15 -%{!?golang:%global golang 0} +%{!?golang:%global golang 1} %else %{!?golang:%global golang 0} %endif @@ -55,7 +53,7 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 4.0.2 -Release: 9%{?dist} +Release: 10%{?dist} License: GPLv3+ and BSD URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz @@ -69,13 +67,15 @@ Source4: ccache-swig.csh # https://github.com/swig/swig/pull/1702 Patch0: swig-Upgrade-to-support-newer-NodeJS.patch -# Backport PHP 7.x and 88888888 updates +# 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 BuildRequires: make BuildRequires: perl-interpreter, pcre-devel @@ -346,6 +346,9 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb %{_datadir}/%{name}/gdb %changelog +* Thu Oct 07 2021 Jitka Plesnikova - 4.0.2-10 +- Enable Python tests + * Tue Aug 10 2021 Orion Poplawski - 4.0.2-9 - Rebuild for octave 6.3.0 From 3b059fb6f110462532be241d51990cfe560a7741 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 24 Nov 2021 17:26:33 +0100 Subject: [PATCH 050/103] 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 051/103] - 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 052/103] 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 053/103] 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 054/103] 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 055/103] 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 056/103] 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 057/103] 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 058/103] 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 059/103] 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 060/103] 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 061/103] 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 062/103] 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 063/103] 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 064/103] 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 065/103] 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 066/103] 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 067/103] 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 068/103] 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 069/103] 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 070/103] 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 071/103] 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 072/103] 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 073/103] 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 074/103] 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 075/103] 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 076/103] 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 077/103] 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 078/103] 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 079/103] 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 080/103] 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 081/103] 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 082/103] 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 083/103] 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 084/103] 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 085/103] 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 086/103] 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 087/103] 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 088/103] 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 089/103] 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 090/103] 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 091/103] 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 092/103] 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 093/103] 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 094/103] 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 095/103] 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 096/103] 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 097/103] 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 098/103] 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 099/103] 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 100/103] 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 101/103] 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 102/103] 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 103/103] 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)