Accepting request 702574 from devel:tools:building
OBS-URL: https://build.opensuse.org/request/show/702574 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/swig?expand=0&rev=66
This commit is contained in:
commit
b1372020c3
3
rel-4.0.0.tar.gz
Normal file
3
rel-4.0.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ab5cbf226ec50855aeca08193fbaafe92fe99b2454848b82f444ec96aa246b47
|
||||||
|
size 3805661
|
@ -1,58 +0,0 @@
|
|||||||
From 21f532975f59f0c156c76cc739f5a93f57d8f6cb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Dufour <m.dufour@kopano.com>
|
|
||||||
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
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
|||||||
From 9825fcbab5c4ddd867432f9922bebfbec7b78af0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Dufour <m.dufour@kopano.com>
|
|
||||||
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
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
From 13eeebd2fb3005abc876957c68bde6a92510aa44 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Dufour <m.dufour@kopano.com>
|
|
||||||
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
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
From 5803e81d488e97623fe29b8629b977be01a8229e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Dufour <m.dufour@kopano.com>
|
|
||||||
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; rc<replacecount; ++rc) {
|
|
||||||
+ for (size_t rc=0; rc<replacecount && it != self->end(); ++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; rc<replacecount; ++rc) {
|
|
||||||
+ for (size_t rc=0; rc<replacecount && it != self->rend(); ++rc) {
|
|
||||||
*it++ = *isit++;
|
|
||||||
for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c)
|
|
||||||
it++;
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
@ -1,191 +0,0 @@
|
|||||||
From 90ba174fcea1618af57aa594199541d47a89b7f6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William S Fulton <wsf@fultondesigns.co.uk>
|
|
||||||
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
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
|||||||
From 4079fb927b3761ee4e44ff103f37440cb8f3e260 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William S Fulton <wsf@fultondesigns.co.uk>
|
|
||||||
Date: Tue, 12 Jun 2018 21:05:07 +0100
|
|
||||||
Subject: [PATCH] Python 3.7 support - deprecation of classes in the
|
|
||||||
collections module
|
|
||||||
|
|
||||||
Change the base classes in the pyabc.i file to use the
|
|
||||||
collections.abc module instead of collections due to the deprecation
|
|
||||||
of the classes in the collections module in Python 3.7.
|
|
||||||
---
|
|
||||||
.../python/python_abstractbase_runme3.py | 24 +++++++++++++------
|
|
||||||
Lib/python/pyabc.i | 14 +++++------
|
|
||||||
4 files changed, 53 insertions(+), 18 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Examples/test-suite/python/python_abstractbase_runme3.py b/Examples/test-suite/python/python_abstractbase_runme3.py
|
|
||||||
index 4fdc799352..9f99dcb546 100644
|
|
||||||
--- a/Examples/test-suite/python/python_abstractbase_runme3.py
|
|
||||||
+++ b/Examples/test-suite/python/python_abstractbase_runme3.py
|
|
||||||
@@ -1,5 +1,11 @@
|
|
||||||
+import sys
|
|
||||||
+
|
|
||||||
+# collections.abc requires Python 3.3+
|
|
||||||
+if sys.version_info[0:2] < (3, 3):
|
|
||||||
+ exit(0)
|
|
||||||
+
|
|
||||||
from python_abstractbase import *
|
|
||||||
-from collections import *
|
|
||||||
+import collections.abc
|
|
||||||
|
|
||||||
# This is expected to fail with -builtin option
|
|
||||||
# Builtin types can't inherit from pure-python abstract bases
|
|
||||||
@@ -10,12 +16,16 @@
|
|
||||||
if not is_swig_py3:
|
|
||||||
exit(0)
|
|
||||||
|
|
||||||
-assert issubclass(Mapii, MutableMapping)
|
|
||||||
-assert issubclass(Multimapii, MutableMapping)
|
|
||||||
-assert issubclass(IntSet, MutableSet)
|
|
||||||
-assert issubclass(IntMultiset, MutableSet)
|
|
||||||
-assert issubclass(IntVector, MutableSequence)
|
|
||||||
-assert issubclass(IntList, MutableSequence)
|
|
||||||
+def check_issubclass(derived, base):
|
|
||||||
+ if not issubclass(derived, base):
|
|
||||||
+ raise RuntimeError("{} is not a subclass of {}".format(derived, base))
|
|
||||||
+
|
|
||||||
+check_issubclass(Mapii, collections.abc.MutableMapping)
|
|
||||||
+check_issubclass(Multimapii, collections.abc.MutableMapping)
|
|
||||||
+check_issubclass(IntSet, collections.abc.MutableSet)
|
|
||||||
+check_issubclass(IntMultiset, collections.abc.MutableSet)
|
|
||||||
+check_issubclass(IntVector, collections.abc.MutableSequence)
|
|
||||||
+check_issubclass(IntList, collections.abc.MutableSequence)
|
|
||||||
|
|
||||||
mapii = Mapii()
|
|
||||||
multimapii = Multimapii()
|
|
||||||
diff --git a/Lib/python/pyabc.i b/Lib/python/pyabc.i
|
|
||||||
index 12ce65985e..fbd91dce44 100644
|
|
||||||
--- a/Lib/python/pyabc.i
|
|
||||||
+++ b/Lib/python/pyabc.i
|
|
||||||
@@ -1,10 +1,10 @@
|
|
||||||
%define %pythonabc(Type, Abc)
|
|
||||||
%feature("python:abc", #Abc) Type;
|
|
||||||
%enddef
|
|
||||||
-%pythoncode %{import collections%}
|
|
||||||
-%pythonabc(std::vector, collections.MutableSequence);
|
|
||||||
-%pythonabc(std::list, collections.MutableSequence);
|
|
||||||
-%pythonabc(std::map, collections.MutableMapping);
|
|
||||||
-%pythonabc(std::multimap, collections.MutableMapping);
|
|
||||||
-%pythonabc(std::set, collections.MutableSet);
|
|
||||||
-%pythonabc(std::multiset, collections.MutableSet);
|
|
||||||
+%pythoncode %{import collections.abc%}
|
|
||||||
+%pythonabc(std::vector, collections.abc.MutableSequence);
|
|
||||||
+%pythonabc(std::list, collections.abc.MutableSequence);
|
|
||||||
+%pythonabc(std::map, collections.abc.MutableMapping);
|
|
||||||
+%pythonabc(std::multimap, collections.abc.MutableMapping);
|
|
||||||
+%pythonabc(std::set, collections.abc.MutableSet);
|
|
||||||
+%pythonabc(std::multiset, collections.abc.MutableSet);
|
|
@ -1,975 +0,0 @@
|
|||||||
https://github.com/swig/swig/pull/1256
|
|
||||||
From e8e507bf0bae72e7f3bb798e326ec5d81b230205 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Karl Wette <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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<value_type> 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<T,U> *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<T,U> **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 <karl.wette@ligo.org>
|
|
||||||
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<int> 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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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<std::string> 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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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 <karl.wette@ligo.org>
|
|
||||||
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
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d
|
|
||||||
size 8149820
|
|
@ -1,19 +0,0 @@
|
|||||||
ocaml pr#6517
|
|
||||||
---
|
|
||||||
Lib/ocaml/ocamldec.swg | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/Lib/ocaml/ocamldec.swg
|
|
||||||
+++ b/Lib/ocaml/ocamldec.swg
|
|
||||||
@@ -101,9 +101,9 @@ SWIGEXT {
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef ARCH_ALIGN_INT64
|
|
||||||
-#define SWIG_Int64_val(v) (*((int64 *) SWIG_Data_custom_val(v)))
|
|
||||||
+#define SWIG_Int64_val(v) (*((int64_t *) SWIG_Data_custom_val(v)))
|
|
||||||
#else
|
|
||||||
-CAMLextern int64 Int64_val(caml_value_t v);
|
|
||||||
+CAMLextern int64_t Int64_val(caml_value_t v);
|
|
||||||
#define SWIG_Int64_val(v) Int64_val(v)
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
From 8855ef2b482c09da9255079b0fac92d08c8308fb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olly Betts <olly@survex.com>
|
|
||||||
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.
|
|
||||||
---
|
|
||||||
Examples/Makefile.in | 2 +-
|
|
||||||
Examples/test-suite/perl5/run-perl-test.pl | 2 +-
|
|
||||||
3 files changed, 8 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Examples/Makefile.in b/Examples/Makefile.in
|
|
||||||
index 7682b565fc..8a88fb5eaa 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 106bf002bb..5ea4e51157 100644
|
|
||||||
--- a/Examples/test-suite/perl5/run-perl-test.pl
|
|
||||||
+++ b/Examples/test-suite/perl5/run-perl-test.pl
|
|
||||||
@@ -7,7 +7,7 @@
|
|
||||||
|
|
||||||
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 $?;
|
|
45
swig.changes
45
swig.changes
@ -1,3 +1,48 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 8 12:57:04 UTC 2019 - Klaus Kämpf <kkaempf@suse.com>
|
||||||
|
|
||||||
|
- Update to 4.0.0
|
||||||
|
- Support for Doxygen documentation comments which are parsed and
|
||||||
|
converted into JavaDoc or PyDoc comments.
|
||||||
|
- STL wrappers improved for C#, Java and Ruby.
|
||||||
|
- C++11 STL containers added for Java, Python and Ruby.
|
||||||
|
- Improved support for parsing C++11 and C++14 code.
|
||||||
|
- Various fixes for shared_ptr.
|
||||||
|
- Various C preprocessor corner case fixes.
|
||||||
|
- Corner case fixes for member function pointers.
|
||||||
|
- Python module overhaul by simplifying the generated code and turning
|
||||||
|
most optimizations on by default.
|
||||||
|
- %template improvements wrt scoping to align with C++ explicit
|
||||||
|
template instantiations.
|
||||||
|
- Added support for a command-line options file (sometimes
|
||||||
|
called a response file).
|
||||||
|
- Numerous enhancements and fixes for all supported target languages.
|
||||||
|
- SWIG now classifies the status of target languages into either
|
||||||
|
'Experimental' or 'Supported' to indicate the expected maturity
|
||||||
|
level.
|
||||||
|
- Support for CFFI, Allegrocl, Chicken, CLISP, S-EXP, UFFI, Pike,
|
||||||
|
Modula3 has been removed.
|
||||||
|
- Octave 4.4-5.1 support added.
|
||||||
|
- PHP5 support removed, PHP7 is now the supported PHP version.
|
||||||
|
- Minimum Python version required is now 2.7, 3.2-3.7 are the only
|
||||||
|
other versions supported.
|
||||||
|
- Added support for Javascript NodeJS versions 2-10.
|
||||||
|
- OCaml support is much improved and updated, minimum OCaml version
|
||||||
|
required is now 3.12.0.
|
||||||
|
|
||||||
|
See https://raw.githubusercontent.com/swig/swig/master/CHANGES
|
||||||
|
|
||||||
|
- Drop patches (all included)
|
||||||
|
swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch
|
||||||
|
swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch
|
||||||
|
swig-perl526.patch
|
||||||
|
swig-3.0.12-fix-collections.patch
|
||||||
|
swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch
|
||||||
|
swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch
|
||||||
|
swig-3.0.12-support-octave-4.4.patch
|
||||||
|
swig-ocaml-int64.patch
|
||||||
|
swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Nov 30 12:58:08 UTC 2018 - badshah400@gmail.com
|
Fri Nov 30 12:58:08 UTC 2018 - badshah400@gmail.com
|
||||||
|
|
||||||
|
23
swig.spec
23
swig.spec
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package swig
|
# spec file for package swig
|
||||||
#
|
#
|
||||||
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -12,7 +12,7 @@
|
|||||||
# license that conforms to the Open Source Definition (Version 1.9)
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
# published by the Open Source Initiative.
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
@ -28,24 +28,15 @@ BuildRequires: ruby
|
|||||||
BuildRequires: ruby-devel
|
BuildRequires: ruby-devel
|
||||||
%endif
|
%endif
|
||||||
Name: swig
|
Name: swig
|
||||||
Version: 3.0.12
|
Version: 4.0.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Simplified Wrapper and Interface Generator
|
Summary: Simplified Wrapper and Interface Generator
|
||||||
License: GPL-3.0-or-later AND BSD-3-Clause
|
License: GPL-3.0-or-later AND BSD-3-Clause
|
||||||
Group: Development/Languages/C and C++
|
Group: Development/Languages/C and C++
|
||||||
URL: http://www.swig.org/
|
URL: http://www.swig.org/
|
||||||
Source: http://sourceforge.net/projects/swig/files/swig/%{name}-%{version}/%{name}-%{version}.tar.gz
|
Source: https://github.com/%{name}/%{name}/archive/rel-%{version}.tar.gz
|
||||||
Source1: %{name}.rpmlintrc
|
Source1: %{name}.rpmlintrc
|
||||||
Patch2: swig308-isfinite.diff
|
Patch2: swig308-isfinite.diff
|
||||||
Patch3: swig-ocaml-int64.patch
|
|
||||||
Patch4: swig-perl526.patch
|
|
||||||
Patch5: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_ConvertF.patch
|
|
||||||
Patch6: swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch
|
|
||||||
Patch7: swig-3.0.12-Coverity-fix-issue-reported-for-wrapper-argument-che.patch
|
|
||||||
Patch8: swig-3.0.12-Fix-Coverity-issue-reported-for-setslice-pycontainer.patch
|
|
||||||
Patch9: swig-3.0.12-Fix-generated-code-for-constant-expressions-containi.patch
|
|
||||||
Patch10: swig-3.0.12-fix-collections.patch
|
|
||||||
Patch11: swig-3.0.12-support-octave-4.4.patch
|
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: bison
|
BuildRequires: bison
|
||||||
@ -61,11 +52,11 @@ BuildRequires: python3-devel
|
|||||||
BuildRequires: python3-tools
|
BuildRequires: python3-tools
|
||||||
%else
|
%else
|
||||||
BuildRequires: boost-devel
|
BuildRequires: boost-devel
|
||||||
BuildRequires: python-devel
|
BuildRequires: python-devel > 2.6
|
||||||
%endif
|
%endif
|
||||||
%if %{with swig_ocaml}
|
%if %{with swig_ocaml}
|
||||||
BuildRequires: ncurses-devel
|
BuildRequires: ncurses-devel
|
||||||
BuildRequires: ocaml
|
BuildRequires: ocaml >= 3.12.0
|
||||||
BuildRequires: ocaml-camlp4-devel
|
BuildRequires: ocaml-camlp4-devel
|
||||||
BuildRequires: ocaml-findlib
|
BuildRequires: ocaml-findlib
|
||||||
%endif
|
%endif
|
||||||
@ -119,7 +110,7 @@ This package contains SWIG examples, useful both for testing and
|
|||||||
understandig SWIG usage.
|
understandig SWIG usage.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q -n %{name}-rel-%{version}
|
||||||
%autopatch -p1
|
%autopatch -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
@ -1,7 +1,17 @@
|
|||||||
diff -wruN -x '*~' -x '*.o' -x '*.a' -x '*.so' -x '*.so.[0-9]' -x autom4te.cache -x .deps -x .libs ../orig-swig-3.0.9/Lib/typemaps/fragments.swg ./Lib/typemaps/fragments.swg
|
From 7d7454cacbae4355432a7f88455de4981742033f Mon Sep 17 00:00:00 2001
|
||||||
--- ../orig-swig-3.0.9/Lib/typemaps/fragments.swg 2016-05-29 14:35:37.000000000 +0200
|
From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
|
||||||
+++ ./Lib/typemaps/fragments.swg 2016-06-08 11:13:09.475671763 +0200
|
Date: Wed, 8 May 2019 14:50:10 +0200
|
||||||
@@ -178,6 +178,8 @@
|
Subject: [PATCH] swig308-isfinite
|
||||||
|
|
||||||
|
---
|
||||||
|
Lib/typemaps/fragments.swg | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Lib/typemaps/fragments.swg b/Lib/typemaps/fragments.swg
|
||||||
|
index e83f415c4322..cac69ffff745 100644
|
||||||
|
--- a/Lib/typemaps/fragments.swg
|
||||||
|
+++ b/Lib/typemaps/fragments.swg
|
||||||
|
@@ -129,6 +129,8 @@ inline int SWIG_isfinite_func(T x) {
|
||||||
# elif defined(__sun) && defined(__SVR4)
|
# elif defined(__sun) && defined(__SVR4)
|
||||||
# include <ieeefp.h>
|
# include <ieeefp.h>
|
||||||
# define SWIG_isfinite(X) (finite(X))
|
# define SWIG_isfinite(X) (finite(X))
|
||||||
@ -10,3 +20,6 @@ diff -wruN -x '*~' -x '*.o' -x '*.a' -x '*.so' -x '*.so.[0-9]' -x autom4te.cache
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
%}
|
%}
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user