Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb29022c1b | ||
|
|
f8fc6164c9 | ||
|
|
5e8239a7ce | ||
|
|
6ba77055ea |
18 changed files with 2696 additions and 485 deletions
11
.gitignore
vendored
11
.gitignore
vendored
|
|
@ -22,14 +22,3 @@ 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
|
||||
/swig-4.0.1.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
|
||||
/swig-4.2.1.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
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (swig-4.4.1.tar.gz) = 103ddb4a5914f28e6739a006d35042c701e55ba05066acff3f3609befb5f43f253ea717fc41d06c93d8fb187ded4399c12c94665b93dc06d0fb835069391c7c7
|
||||
SHA512 (swig-3.0.12.tar.gz) = 5eaa2e06d8e4197fd02194051db1e518325dbb074a4c55a91099ad9c55193874f577764afc9029409a41bd520a95154095f26e33ef5add5c102bb2c1d98d33eb
|
||||
|
|
|
|||
|
|
@ -0,0 +1,346 @@
|
|||
From b0e29fbdf31bb94b11cb8a7cc830b4a76467afa3 Mon Sep 17 00:00:00 2001
|
||||
From: William S Fulton <wsf@fultondesigns.co.uk>
|
||||
Date: Mon, 4 Dec 2017 18:41:55 +0000
|
||||
Subject: [PATCH] Add missing checks for failures in calls to
|
||||
PyUnicode_AsUTF8String.
|
||||
|
||||
Previously a seg fault could occur when passing invalid UTF8 strings (low
|
||||
surrogates), eg passing u"\udcff" to the C layer (Python 3).
|
||||
---
|
||||
CHANGES.current | 8 ++++++-
|
||||
Doc/Manual/Python.html | 22 ++++++++++++++++---
|
||||
Doc/Manual/Varargs.html | 5 ++++-
|
||||
Examples/python/multimap/example.i | 12 +++++++++-
|
||||
.../python/unicode_strings_runme.py | 10 +++++++++
|
||||
Examples/test-suite/python_varargs_typemap.i | 5 ++++-
|
||||
Examples/test-suite/unicode_strings.i | 2 ++
|
||||
Lib/python/pyerrors.swg | 11 ++++++----
|
||||
Lib/python/pyhead.swg | 16 ++++++++------
|
||||
Lib/python/pyinit.swg | 4 ++--
|
||||
Lib/python/pyrun.swg | 10 ++++++---
|
||||
Lib/python/pystrings.swg | 12 ++++++++--
|
||||
12 files changed, 92 insertions(+), 25 deletions(-)
|
||||
|
||||
#diff --git a/CHANGES.current b/CHANGES.current
|
||||
#index 5cab80172..06b958f18 100644
|
||||
#--- a/CHANGES.current
|
||||
#+++ b/CHANGES.current
|
||||
#@@ -6,8 +6,14 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
|
||||
#
|
||||
# Version 4.0.0 (in progress)
|
||||
# ===========================
|
||||
#+
|
||||
#+2017-12-04: wsfulton
|
||||
#+ [Python] Add missing checks for failures in calls to PyUnicode_AsUTF8String. Previously a
|
||||
#+ seg fault could occur when passing invalid UTF8 strings (low surrogates), eg passing
|
||||
#+ u"\udcff" to the C layer (Python 3).
|
||||
#+
|
||||
# 2017-11-24: joequant
|
||||
#- Fix github #1124 and return R_NilValue for null pointers
|
||||
#+ Fix #1124 and return R_NilValue for null pointers
|
||||
#
|
||||
# 2017-11-29: wsfulton
|
||||
# [Java] director exception handling improvements.
|
||||
#diff --git a/Doc/Manual/Python.html b/Doc/Manual/Python.html
|
||||
#index 0c0023dea..27ce084bd 100644
|
||||
#--- a/Doc/Manual/Python.html
|
||||
#+++ b/Doc/Manual/Python.html
|
||||
#@@ -6521,14 +6521,16 @@ string that cannot be completely decoded as UTF-8:
|
||||
# <div class="code"><pre>
|
||||
# %module example
|
||||
#
|
||||
#-%include <std_string.i>
|
||||
#-
|
||||
# %inline %{
|
||||
#
|
||||
#-const char* non_utf8_c_str(void) {
|
||||
#+const char * non_utf8_c_str(void) {
|
||||
# return "h\xe9llo w\xc3\xb6rld";
|
||||
# }
|
||||
#
|
||||
#+void instring(const char *s) {
|
||||
#+ ...
|
||||
#+}
|
||||
#+
|
||||
# %}
|
||||
# </pre></div>
|
||||
#
|
||||
#@@ -6590,6 +6592,20 @@ For more details about the <tt>surrogateescape</tt> error handler, please see
|
||||
# <a href="https://www.python.org/dev/peps/pep-0383/">PEP 383</a>.
|
||||
# </p>
|
||||
#
|
||||
#+<p>
|
||||
#+When Python 3 strings are passed to the C/C++ layer, they are expected to be valid UTF8 Unicode strings too.
|
||||
#+For example, when the <tt>instring</tt> method above is wrapped and called, any invalid UTF8 Unicode code strings
|
||||
#+will result in a TypeError because the attempted conversion fails:
|
||||
#+</p>
|
||||
#+
|
||||
#+<div class="targetlang"><pre>
|
||||
#+>>> example.instring('h\xe9llo')
|
||||
#+>>> example.instring('h\udce9llo')
|
||||
#+Traceback (most recent call last):
|
||||
#+ File "<stdin>", line 1, in <module>
|
||||
#+TypeError: in method 'instring', argument 1 of type 'char const *'
|
||||
#+</pre></div>
|
||||
#+
|
||||
# <p>
|
||||
# In some cases, users may wish to instead handle all byte strings as bytes
|
||||
# objects in Python 3. This can be accomplished by adding
|
||||
#diff --git a/Doc/Manual/Varargs.html b/Doc/Manual/Varargs.html
|
||||
#index eba816382..014a38cae 100644
|
||||
#--- a/Doc/Manual/Varargs.html
|
||||
#+++ b/Doc/Manual/Varargs.html
|
||||
#@@ -529,8 +529,11 @@ like this:
|
||||
# SWIG_fail;
|
||||
# }
|
||||
# pystr = PyUnicode_AsUTF8String(pyobj);
|
||||
#+ if (!pystr) {
|
||||
#+ SWIG_fail;
|
||||
#+ }
|
||||
# str = strdup(PyBytes_AsString(pystr));
|
||||
#- Py_XDECREF(pystr);
|
||||
#+ Py_DECREF(pystr);
|
||||
# %#else
|
||||
# if (!PyString_Check(pyobj)) {
|
||||
# PyErr_SetString(PyExc_ValueError, "Expected a string");
|
||||
diff --git a/Examples/python/multimap/example.i b/Examples/python/multimap/example.i
|
||||
index 66c0f74c6..3ff5d52c0 100644
|
||||
--- a/Examples/python/multimap/example.i
|
||||
+++ b/Examples/python/multimap/example.i
|
||||
@@ -39,7 +39,11 @@ extern int gcd(int x, int y);
|
||||
%#if PY_VERSION_HEX >= 0x03000000
|
||||
{
|
||||
PyObject *utf8str = PyUnicode_AsUTF8String(s);
|
||||
- const char *cstr = PyBytes_AsString(utf8str);
|
||||
+ const char *cstr;
|
||||
+ if (!utf8str) {
|
||||
+ SWIG_fail;
|
||||
+ }
|
||||
+ cstr = PyBytes_AsString(utf8str);
|
||||
$2[i] = strdup(cstr);
|
||||
Py_DECREF(utf8str);
|
||||
}
|
||||
@@ -72,6 +76,9 @@ extern int gcdmain(int argc, char *argv[]);
|
||||
SWIG_fail;
|
||||
}
|
||||
utf8str = PyUnicode_AsUTF8String($input);
|
||||
+ if (!utf8str) {
|
||||
+ SWIG_fail;
|
||||
+ }
|
||||
PyBytes_AsStringAndSize(utf8str, &cstr, &len);
|
||||
$1 = strncpy((char *)malloc(len+1), cstr, (size_t)len);
|
||||
$2 = (int)len;
|
||||
@@ -105,6 +112,9 @@ extern int count(char *bytes, int len, char c);
|
||||
char *cstr;
|
||||
Py_ssize_t len;
|
||||
PyObject *utf8str = PyUnicode_AsUTF8String($input);
|
||||
+ if (!utf8str) {
|
||||
+ SWIG_fail;
|
||||
+ }
|
||||
PyBytes_AsStringAndSize(utf8str, &cstr, &len);
|
||||
$1 = strncpy((char *)malloc(len+1), cstr, (size_t)len);
|
||||
$2 = (int)len;
|
||||
diff --git a/Examples/test-suite/python/unicode_strings_runme.py b/Examples/test-suite/python/unicode_strings_runme.py
|
||||
index fa9c51437..39e93b0fc 100644
|
||||
--- a/Examples/test-suite/python/unicode_strings_runme.py
|
||||
+++ b/Examples/test-suite/python/unicode_strings_runme.py
|
||||
@@ -25,3 +25,13 @@ if sys.version_info[0:2] < (3, 0):
|
||||
check(unicode_strings.charstring(unicode("hello4")), "hello4")
|
||||
unicode_strings.charstring(u"hell\xb05")
|
||||
unicode_strings.charstring(u"hell\u00f66")
|
||||
+
|
||||
+low_surrogate_string = u"\udcff"
|
||||
+try:
|
||||
+ unicode_strings.instring(low_surrogate_string)
|
||||
+ # Will succeed with Python 2
|
||||
+except TypeError, e:
|
||||
+ # Python 3 will fail the PyUnicode_AsUTF8String conversion resulting in a TypeError.
|
||||
+ # The real error is actually:
|
||||
+ # UnicodeEncodeError: 'utf-8' codec can't encode character '\udcff' in position 0: surrogates not allowed
|
||||
+ pass
|
||||
diff --git a/Examples/test-suite/python_varargs_typemap.i b/Examples/test-suite/python_varargs_typemap.i
|
||||
index f05fb98eb..d809bf1fa 100644
|
||||
--- a/Examples/test-suite/python_varargs_typemap.i
|
||||
+++ b/Examples/test-suite/python_varargs_typemap.i
|
||||
@@ -23,8 +23,11 @@
|
||||
SWIG_fail;
|
||||
}
|
||||
pystr = PyUnicode_AsUTF8String(pyobj);
|
||||
+ if (!pystr) {
|
||||
+ SWIG_fail;
|
||||
+ }
|
||||
str = strdup(PyBytes_AsString(pystr));
|
||||
- Py_XDECREF(pystr);
|
||||
+ Py_DECREF(pystr);
|
||||
%#else
|
||||
if (!PyString_Check(pyobj)) {
|
||||
PyErr_SetString(PyExc_ValueError, "Expected a string");
|
||||
diff --git a/Examples/test-suite/unicode_strings.i b/Examples/test-suite/unicode_strings.i
|
||||
index 9be3748e6..e7266266e 100644
|
||||
--- a/Examples/test-suite/unicode_strings.i
|
||||
+++ b/Examples/test-suite/unicode_strings.i
|
||||
@@ -20,4 +20,6 @@ char *charstring(char *s) {
|
||||
return s;
|
||||
}
|
||||
|
||||
+void instring(const char *s) {
|
||||
+}
|
||||
%}
|
||||
diff --git a/Lib/python/pyerrors.swg b/Lib/python/pyerrors.swg
|
||||
index fe7313554..463afae15 100644
|
||||
--- a/Lib/python/pyerrors.swg
|
||||
+++ b/Lib/python/pyerrors.swg
|
||||
@@ -53,14 +53,17 @@ SWIG_Python_AddErrorMsg(const char* mesg)
|
||||
PyObject *value = 0;
|
||||
PyObject *traceback = 0;
|
||||
|
||||
- if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback);
|
||||
+ if (PyErr_Occurred())
|
||||
+ PyErr_Fetch(&type, &value, &traceback);
|
||||
if (value) {
|
||||
- char *tmp;
|
||||
PyObject *old_str = PyObject_Str(value);
|
||||
+ const char *tmp = SWIG_Python_str_AsChar(old_str);
|
||||
PyErr_Clear();
|
||||
Py_XINCREF(type);
|
||||
-
|
||||
- PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg);
|
||||
+ if (tmp)
|
||||
+ PyErr_Format(type, "%s %s", tmp, mesg);
|
||||
+ else
|
||||
+ PyErr_Format(type, "%s", mesg);
|
||||
SWIG_Python_str_DelForPy3(tmp);
|
||||
Py_DECREF(old_str);
|
||||
Py_DECREF(value);
|
||||
diff --git a/Lib/python/pyhead.swg b/Lib/python/pyhead.swg
|
||||
index 55eb95a6d..2fa8b5b4c 100644
|
||||
--- a/Lib/python/pyhead.swg
|
||||
+++ b/Lib/python/pyhead.swg
|
||||
@@ -38,14 +38,16 @@ SWIGINTERN char*
|
||||
SWIG_Python_str_AsChar(PyObject *str)
|
||||
{
|
||||
#if PY_VERSION_HEX >= 0x03000000
|
||||
- char *cstr;
|
||||
- char *newstr;
|
||||
- Py_ssize_t len;
|
||||
+ char *newstr = 0;
|
||||
str = PyUnicode_AsUTF8String(str);
|
||||
- PyBytes_AsStringAndSize(str, &cstr, &len);
|
||||
- newstr = (char *) malloc(len+1);
|
||||
- memcpy(newstr, cstr, len+1);
|
||||
- Py_XDECREF(str);
|
||||
+ if (str) {
|
||||
+ char *cstr;
|
||||
+ Py_ssize_t len;
|
||||
+ PyBytes_AsStringAndSize(str, &cstr, &len);
|
||||
+ newstr = (char *) malloc(len+1);
|
||||
+ memcpy(newstr, cstr, len+1);
|
||||
+ Py_XDECREF(str);
|
||||
+ }
|
||||
return newstr;
|
||||
#else
|
||||
return PyString_AsString(str);
|
||||
diff --git a/Lib/python/pyinit.swg b/Lib/python/pyinit.swg
|
||||
index fe45ac941..826f8411b 100644
|
||||
--- a/Lib/python/pyinit.swg
|
||||
+++ b/Lib/python/pyinit.swg
|
||||
@@ -84,10 +84,10 @@ swig_varlink_str(swig_varlinkobject *v) {
|
||||
|
||||
SWIGINTERN int
|
||||
swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) {
|
||||
- char *tmp;
|
||||
PyObject *str = swig_varlink_str(v);
|
||||
+ const char *tmp = SWIG_Python_str_AsChar(str);
|
||||
fprintf(fp,"Swig global variables ");
|
||||
- fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str));
|
||||
+ fprintf(fp,"%s\n", tmp ? tmp : "Invalid global variable");
|
||||
SWIG_Python_str_DelForPy3(tmp);
|
||||
Py_DECREF(str);
|
||||
return 0;
|
||||
diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg
|
||||
index efc476613..430d3af18 100644
|
||||
--- a/Lib/python/pyrun.swg
|
||||
+++ b/Lib/python/pyrun.swg
|
||||
@@ -1672,14 +1672,16 @@ SWIG_Python_AddErrMesg(const char* mesg, int infront)
|
||||
PyObject *traceback = 0;
|
||||
PyErr_Fetch(&type, &value, &traceback);
|
||||
if (value) {
|
||||
- char *tmp;
|
||||
PyObject *old_str = PyObject_Str(value);
|
||||
+ const char *tmp = SWIG_Python_str_AsChar(old_str);
|
||||
+ if (!tmp)
|
||||
+ tmp = "Invalid error message";
|
||||
Py_XINCREF(type);
|
||||
PyErr_Clear();
|
||||
if (infront) {
|
||||
- PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str));
|
||||
+ PyErr_Format(type, "%s %s", mesg, tmp);
|
||||
} else {
|
||||
- PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg);
|
||||
+ PyErr_Format(type, "%s %s", tmp, mesg);
|
||||
}
|
||||
SWIG_Python_str_DelForPy3(tmp);
|
||||
Py_DECREF(old_str);
|
||||
@@ -1805,6 +1807,8 @@ SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) {
|
||||
Py_INCREF(name);
|
||||
} else {
|
||||
encoded_name = PyUnicode_AsUTF8String(name);
|
||||
+ if (!encoded_name)
|
||||
+ return -1;
|
||||
}
|
||||
PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name));
|
||||
Py_DECREF(encoded_name);
|
||||
diff --git a/Lib/python/pystrings.swg b/Lib/python/pystrings.swg
|
||||
index fd37855eb..301e0f3e1 100644
|
||||
--- a/Lib/python/pystrings.swg
|
||||
+++ b/Lib/python/pystrings.swg
|
||||
@@ -16,6 +16,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||
%#endif
|
||||
{
|
||||
char *cstr; Py_ssize_t len;
|
||||
+ int ret = SWIG_OK;
|
||||
%#if PY_VERSION_HEX>=0x03000000
|
||||
%#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
|
||||
if (!alloc && cptr) {
|
||||
@@ -26,7 +27,10 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||
return SWIG_RuntimeError;
|
||||
}
|
||||
obj = PyUnicode_AsUTF8String(obj);
|
||||
- if(alloc) *alloc = SWIG_NEWOBJ;
|
||||
+ if (!obj)
|
||||
+ return SWIG_TypeError;
|
||||
+ if (alloc)
|
||||
+ *alloc = SWIG_NEWOBJ;
|
||||
%#endif
|
||||
PyBytes_AsStringAndSize(obj, &cstr, &len);
|
||||
%#else
|
||||
@@ -64,6 +68,8 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||
%#endif
|
||||
%#else
|
||||
*cptr = SWIG_Python_str_AsChar(obj);
|
||||
+ if (!*cptr)
|
||||
+ ret = SWIG_TypeError;
|
||||
%#endif
|
||||
}
|
||||
}
|
||||
@@ -71,7 +77,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||
%#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
|
||||
Py_XDECREF(obj);
|
||||
%#endif
|
||||
- return SWIG_OK;
|
||||
+ return ret;
|
||||
} else {
|
||||
%#if defined(SWIG_PYTHON_2_UNICODE)
|
||||
%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
|
||||
@@ -84,6 +90,8 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
|
||||
return SWIG_RuntimeError;
|
||||
}
|
||||
obj = PyUnicode_AsUTF8String(obj);
|
||||
+ if (!obj)
|
||||
+ return SWIG_TypeError;
|
||||
if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) {
|
||||
if (cptr) {
|
||||
if (alloc) *alloc = SWIG_NEWOBJ;
|
||||
--
|
||||
2.21.1
|
||||
|
||||
26
swig-3.0.12-Correct-php-testcase.patch
Normal file
26
swig-3.0.12-Correct-php-testcase.patch
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
From 0a9113dcba2930b658cb67f9ba1c63ad8eebd88f Mon Sep 17 00:00:00 2001
|
||||
From: William S Fulton <wsf@fultondesigns.co.uk>
|
||||
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
|
||||
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
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
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
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
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
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
|
||||
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
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
|
||||
|
||||
|
|
@ -0,0 +1,191 @@
|
|||
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
|
||||
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
From 5f6012039abb6ec9e9dfea801effa6b02fd102bc Mon Sep 17 00:00:00 2001
|
||||
From: Vsevolod Kvachev <rasielll@gmail.com>
|
||||
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
|
||||
|
||||
61
swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch
Normal file
61
swig-3.0.12-Fix-testsuite-to-work-without-.-in-INC.patch
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
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.
|
||||
---
|
||||
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
|
||||
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
From 9e2a12416cf6ce7b926829aff353fe2d9019f135 Mon Sep 17 00:00:00 2001
|
||||
From: William S Fulton <wsf@fultondesigns.co.uk>
|
||||
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
|
||||
|
||||
974
swig-3.0.12-Support-Octave-4.4.patch
Normal file
974
swig-3.0.12-Support-Octave-4.4.patch
Normal file
|
|
@ -0,0 +1,974 @@
|
|||
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
|
||||
55
swig-4.0.0-Fix-assert-in-PyTuple_GET_SIZE.patch
Normal file
55
swig-4.0.0-Fix-assert-in-PyTuple_GET_SIZE.patch
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
From 016518073537e2b88c8ac3f33f4caebd6bede3c6 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Gaeer <andreas.gaeer@baslerweb.com>
|
||||
Date: Mon, 3 Sep 2018 19:52:43 +0100
|
||||
Subject: [PATCH] Fix assert in PyTuple_GET_SIZE
|
||||
|
||||
Occurs in debug interpreter builds of python-3.7 when calling tp_new in
|
||||
a few testcases such as Examples/python/extend.
|
||||
|
||||
Closes #1321
|
||||
---
|
||||
CHANGES.current | 4 ++++
|
||||
Lib/python/pyrun.swg | 12 ++++++++----
|
||||
2 files changed, 12 insertions(+), 4 deletions(-)
|
||||
|
||||
#diff --git a/CHANGES.current b/CHANGES.current
|
||||
#index 22bdfb7ff..67afee72c 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-09-02: andreas.gaeer,tkrasnukha
|
||||
#+ [Python] #1321 Fix assert in PyTuple_GET_SIZE in debug interpreter builds of python-3.7
|
||||
#+ when calling tp_new.
|
||||
#+
|
||||
# 2018-09-01: ChristopherHogan
|
||||
# [Guile] #1288 Fix garbage collection for guile >= 2.0.12.
|
||||
#
|
||||
diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg
|
||||
index c3e83dcc9..b1276813d 100644
|
||||
--- a/Lib/python/pyrun.swg
|
||||
+++ b/Lib/python/pyrun.swg
|
||||
@@ -1359,10 +1359,14 @@ SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this)
|
||||
}
|
||||
} else {
|
||||
#if PY_VERSION_HEX >= 0x03000000
|
||||
- inst = ((PyTypeObject*) data->newargs)->tp_new((PyTypeObject*) data->newargs, Py_None, Py_None);
|
||||
- if (inst) {
|
||||
- PyObject_SetAttr(inst, SWIG_This(), swig_this);
|
||||
- Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
|
||||
+ PyObject *empty_args = PyTuple_New(0);
|
||||
+ if (empty_args) {
|
||||
+ inst = ((PyTypeObject *)data->newargs)->tp_new((PyTypeObject *)data->newargs, empty_args, Py_None);
|
||||
+ Py_DECREF(empty_args);
|
||||
+ if (inst) {
|
||||
+ PyObject_SetAttr(inst, SWIG_This(), swig_this);
|
||||
+ Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
|
||||
+ }
|
||||
}
|
||||
#else
|
||||
PyObject *dict = PyDict_New();
|
||||
--
|
||||
2.21.1
|
||||
|
||||
541
swig-node-v7.patch
Normal file
541
swig-node-v7.patch
Normal file
|
|
@ -0,0 +1,541 @@
|
|||
From f08d7a63a92a3ba89d97bdfcc206e1e1c4804c0f Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Schneider <patrick.schneider@meetnow.eu>
|
||||
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<v8::Value> object, v
|
||||
SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(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<v8::Object, SWIGV8_Proxy> &data) {
|
||||
v8::Local<v8::Object> object = data.GetValue();
|
||||
SWIGV8_Proxy *proxy = data.GetParameter();
|
||||
+#else
|
||||
+ static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
|
||||
+ SWIGV8_Proxy *proxy = data.GetParameter();
|
||||
#endif
|
||||
|
||||
if(proxy->swigCMemOwn && proxy->swigCObject) {
|
||||
@@ -147,7 +150,9 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &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<v8::Object, SWIGV8_Proxy> &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<v8::Value> object, v
|
||||
SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(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<v8::Object, SWIGV8_Proxy> &data) {
|
||||
v8::Local<v8::Object> object = data.GetValue();
|
||||
SWIGV8_Proxy *proxy = data.GetParameter();
|
||||
+#else
|
||||
+static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
|
||||
+ SWIGV8_Proxy *proxy = data.GetParameter();
|
||||
#endif
|
||||
|
||||
if(proxy->swigCMemOwn && proxy->swigCObject) {
|
||||
@@ -197,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &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<v8::Object, SWIGV8_Proxy> &dat
|
||||
* ----------------------------------------------------------------------------- */
|
||||
%fragment("js_getter", "templates")
|
||||
%{
|
||||
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
|
||||
static SwigV8ReturnValue $jswrapper(v8::Local<v8::String> property, const SwigV8PropertyCallbackInfo &info) {
|
||||
+#else
|
||||
+static SwigV8ReturnValue $jswrapper(v8::Local<v8::Name> property, const SwigV8PropertyCallbackInfo &info) {
|
||||
+#endif
|
||||
SWIGV8_HANDLESCOPE();
|
||||
|
||||
v8::Handle<v8::Value> jsresult;
|
||||
@@ -233,8 +245,11 @@ fail:
|
||||
* ----------------------------------------------------------------------------- */
|
||||
%fragment("js_setter", "templates")
|
||||
%{
|
||||
-static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value,
|
||||
- const SwigV8PropertyCallbackInfoVoid &info) {
|
||||
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
|
||||
+static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
|
||||
+#else
|
||||
+static void $jswrapper(v8::Local<v8::Name> property, v8::Local<v8::Value> 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<void> SwigV8PropertyCallbackInfoVoid;
|
||||
+#else
|
||||
+typedef v8::FunctionCallback SwigV8FunctionCallback;
|
||||
+typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback;
|
||||
+typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback;
|
||||
+typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid;
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -65,18 +70,36 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle<v8::Object> obj, const char
|
||||
*/
|
||||
SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle<v8::Object> 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<v8::String> property, v8::Local<v8::Value> 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<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
|
||||
+#else
|
||||
+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8::Value> 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<v8::String> 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<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
|
||||
v8::Local<v8::External> 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<v8::Private> 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<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
|
||||
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
|
||||
v8::Local<v8::Value> moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"));
|
||||
+#else
|
||||
+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data"));
|
||||
+ v8::Local<v8::Value> 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<v8::External> moduleinfo_extern = v8::Local<v8::External>::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<v8::Object, SWIGV8_Proxy> &data);
|
||||
+#else
|
||||
+ void (*dtor) (const v8::WeakCallbackInfo<SWIGV8_Proxy> &data);
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -241,9 +243,12 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val
|
||||
SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(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<v8::Object, SWIGV8_Proxy> &data) {
|
||||
SWIGV8_Proxy *proxy = data.GetParameter();
|
||||
+#else
|
||||
+SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
|
||||
+ SWIGV8_Proxy *proxy = data.GetParameter();
|
||||
#endif
|
||||
|
||||
delete proxy;
|
||||
@@ -312,12 +317,18 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle<v8::Object> 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<v8::Value> valRef) {
|
||||
|
||||
v8::Handle<v8::Object> 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<v8::Value> flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"));
|
||||
+#else
|
||||
+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
|
||||
+ v8::Local<v8::Value> 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<SwigV8PackedData *>(parameter);
|
||||
#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
|
||||
SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent<v8::Object> *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<v8::Object, SwigV8PackedData> &data) {
|
||||
v8::Local<v8::Object> object = data.GetValue();
|
||||
SwigV8PackedData *cdata = data.GetParameter();
|
||||
+#else
|
||||
+SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo<SwigV8PackedData> &data) {
|
||||
+ SwigV8PackedData *cdata = data.GetParameter();
|
||||
#endif
|
||||
|
||||
delete cdata;
|
||||
@@ -537,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Ob
|
||||
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
|
||||
}
|
||||
@@ -550,7 +571,12 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
|
||||
// v8::Handle<v8::Object> obj = SWIGV8_OBJECT_NEW();
|
||||
v8::Local<v8::Object> 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<v8::Private> 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<v8::Value> 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 <patrick.schneider@meetnow.eu>
|
||||
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<v8::Value> object, v
|
||||
SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(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<v8::Object, SWIGV8_Proxy> &data) {
|
||||
v8::Local<v8::Object> object = data.GetValue();
|
||||
SWIGV8_Proxy *proxy = data.GetParameter();
|
||||
@@ -150,7 +150,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &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<v8::Object, SWIGV8_Proxy> &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<v8::Value> object, v
|
||||
SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(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<v8::Object, SWIGV8_Proxy> &data) {
|
||||
v8::Local<v8::Object> object = data.GetValue();
|
||||
SWIGV8_Proxy *proxy = data.GetParameter();
|
||||
@@ -205,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &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<SWIGV8_Proxy> &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<v8::String> property, const SwigV8PropertyCallbackInfo &info) {
|
||||
#else
|
||||
static SwigV8ReturnValue $jswrapper(v8::Local<v8::Name> 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<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
|
||||
#else
|
||||
static void $jswrapper(v8::Local<v8::Name> property, v8::Local<v8::Value> 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<v8::Object> obj, const char
|
||||
*/
|
||||
SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle<v8::Object> 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<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
|
||||
#else
|
||||
SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
|
||||
@@ -87,7 +87,7 @@ SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8
|
||||
char msg[512];
|
||||
int res;
|
||||
|
||||
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
|
||||
+#if (V8_MAJOR_VERSION-0) < 5
|
||||
property->WriteUtf8(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<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
|
||||
v8::Local<v8::External> 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<v8::Private> 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<v8::Object> 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<v8::Value> moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"));
|
||||
#else
|
||||
v8::Local<v8::Private> 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<v8::Object, SWIGV8_Proxy> &data);
|
||||
#else
|
||||
void (*dtor) (const v8::WeakCallbackInfo<SWIGV8_Proxy> &data);
|
||||
@@ -243,7 +243,7 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val
|
||||
SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(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<v8::Object, SWIGV8_Proxy> &data) {
|
||||
SWIGV8_Proxy *proxy = data.GetParameter();
|
||||
#else
|
||||
@@ -317,7 +317,7 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle<v8::Object> 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<v8::Value> valRef) {
|
||||
|
||||
v8::Handle<v8::Object> 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<v8::Value> flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"));
|
||||
#else
|
||||
v8::Local<v8::Private> 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<SwigV8PackedData *>(parameter);
|
||||
#elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
|
||||
SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent<v8::Object> *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<v8::Object, SwigV8PackedData> &data) {
|
||||
v8::Local<v8::Object> object = data.GetValue();
|
||||
SwigV8PackedData *cdata = data.GetParameter();
|
||||
@@ -558,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo<SwigV8
|
||||
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
|
||||
}
|
||||
@@ -571,7 +571,7 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
|
||||
// v8::Handle<v8::Object> obj = SWIGV8_OBJECT_NEW();
|
||||
v8::Local<v8::Object> 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<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
|
||||
@@ -599,7 +599,7 @@ v8::Handle<v8::Value> 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
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
From 50e1cc8bc0d090164762ec166439f8b0f3855308 Mon Sep 17 00:00:00 2001
|
||||
From: Julien Schueller <schueller@phimeca.com>
|
||||
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 @@ <H4><a name="Python_package_search_both_package_modules">33.11.6.1 Both modules
|
||||
|
||||
<p>
|
||||
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 <tt>__package__</tt>
|
||||
+located in. The package name is determined from the <tt>__spec__.parent</tt> (or <tt>__package__</tt> before Python 3.4)
|
||||
attribute if available, see <a href="https://www.python.org/dev/peps/pep-0366/">PEP 366</a>. Otherwise it is derived from the <tt>__name__</tt>
|
||||
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 @@ <H4><a name="Python_custom_module_import">33.11.6.4 More on customizing the modu
|
||||
|
||||
<div class="targetlang">
|
||||
<pre>
|
||||
-if __package__ or '.' in __name__:
|
||||
+if getattr(__spec__, "parent", None) or '.' in __name__:
|
||||
from . import _foo
|
||||
else:
|
||||
import _foo
|
||||
@@ -6760,7 +6760,7 @@ <H4><a name="Python_custom_module_import">33.11.6.4 More on customizing the modu
|
||||
|
||||
<div class="targetlang">
|
||||
<pre>
|
||||
-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 <schueller@phimeca.com>
|
||||
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 <schueller@phimeca.com>
|
||||
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))
|
||||
|
||||
397
swig.spec
397
swig.spec
|
|
@ -1,66 +1,33 @@
|
|||
# We can skip tests
|
||||
%bcond_without testsuite
|
||||
|
||||
%if %{without testsuite}
|
||||
%global tcl 0
|
||||
%global guile 0
|
||||
%global lualang 0
|
||||
%global perllang 0
|
||||
%global phplang 0
|
||||
%global rubylang 0
|
||||
%global python3lang 0
|
||||
%global golang 0
|
||||
%global octave 0
|
||||
%global Rlang 0
|
||||
%global javalang 0
|
||||
%global ocamllang 0
|
||||
%endif
|
||||
|
||||
%{!?tcl:%global tcl 1}
|
||||
%{!?guile:%global guile 0}
|
||||
%{!?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 || 0%{?rhel} >= 11
|
||||
%ifarch %{ix86}
|
||||
%global phplang 0
|
||||
%endif
|
||||
%endif
|
||||
%{!?phplang:%global phplang 1}
|
||||
|
||||
# OCaml packages not built on i686 since OCaml 5 / Fedora 39.
|
||||
%ifarch %{ix86}
|
||||
%{!?ocamllang:%global ocamllang 0}
|
||||
%else
|
||||
%{!?ocamllang:%global ocamllang 1}
|
||||
%endif
|
||||
# Disable PHP tests, because they fail with PHP 7.2.0
|
||||
%{!?phplang:%global phplang 0}
|
||||
# Tests on x86_64 fails with Ruby 2.6.4
|
||||
# https://github.com/swig/swig/issues/1646
|
||||
%{!?rubylang:%global rubylang 0}
|
||||
%{!?python2lang:%global python2lang 0}
|
||||
|
||||
%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}
|
||||
# R-core requires tcl < 9.0.0
|
||||
%{!?Rlang:%global Rlang 0}
|
||||
%{!?Rlang:%global Rlang 1}
|
||||
%bcond_without build_ccache_swig
|
||||
%endif
|
||||
|
||||
%ifarch %{ix86}
|
||||
%ifarch aarch64 %{arm} %{mips} ppc64le ppc %{power64} s390 s390x
|
||||
%{!?javalang:%global javalang 0}
|
||||
%else
|
||||
# Temporary disable java tests, because they doesn't pass with java-21-openjdk
|
||||
# https://github.com/swig/swig/issues/2767
|
||||
%{!?javalang:%global javalang 1}
|
||||
%endif
|
||||
|
||||
# Do not run Go tests, they failed with 4.0.0 on ppc64le, s390
|
||||
%ifarch x86_64 %{arm} aarch64
|
||||
%ifarch %{ix86} x86_64 %{arm} aarch64 ppc64le
|
||||
%{!?golang:%global golang 1}
|
||||
%else
|
||||
%{!?golang:%global golang 0}
|
||||
|
|
@ -68,10 +35,10 @@
|
|||
|
||||
Summary: Connects C/C++/Objective C to some high-level programming languages
|
||||
Name: swig
|
||||
Version: 4.4.1
|
||||
Release: 1%{?dist}
|
||||
License: GPL-3.0-or-later AND BSD-3-Clause
|
||||
URL: https://www.swig.org/
|
||||
Version: 3.0.12
|
||||
Release: 27%{?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
|
||||
|
|
@ -81,15 +48,34 @@ Source3: ccache-swig.sh
|
|||
Source4: ccache-swig.csh
|
||||
%endif
|
||||
|
||||
BuildRequires: coreutils
|
||||
BuildRequires: findutils
|
||||
BuildRequires: make
|
||||
BuildRequires: perl-interpreter, pcre2-devel
|
||||
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
|
||||
Patch12: swig-4.0.0-Fix-assert-in-PyTuple_GET_SIZE.patch
|
||||
# Add missing checks for failures in calls to PyUnicode_AsUTF8String
|
||||
Patch13: swig-3.0.12-Add-missing-checks-for-failures-in-calls-to-PyUnicod.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++
|
||||
BuildRequires: help2man
|
||||
BuildRequires: sed
|
||||
BuildRequires: perl-devel
|
||||
BuildRequires: perl(base)
|
||||
BuildRequires: perl(Config)
|
||||
|
|
@ -105,7 +91,7 @@ BuildRequires: boost-devel
|
|||
# Need when Source/CParse/parser.y is patched
|
||||
BuildRequires: bison
|
||||
%if %{tcl}
|
||||
BuildRequires: tcl-devel >= 9.0.0
|
||||
BuildRequires: tcl-devel
|
||||
%endif
|
||||
%if %{guile}
|
||||
BuildRequires: guile-devel
|
||||
|
|
@ -115,10 +101,7 @@ BuildRequires: octave-devel
|
|||
%endif
|
||||
%if %{golang}
|
||||
BuildRequires: golang
|
||||
BuildRequires: golang-bin
|
||||
%ifnarch s390x
|
||||
BuildRequires: golang-shared
|
||||
%endif
|
||||
BuildRequires: golang-src
|
||||
%endif
|
||||
%if %{lualang}
|
||||
|
|
@ -136,28 +119,20 @@ 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
|
||||
development tool for connecting C, C++ and Objective C programs with a
|
||||
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.
|
||||
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
|
||||
|
||||
%if %{with build_ccache_swig}
|
||||
%package -n ccache-swig
|
||||
Summary: Fast compiler cache
|
||||
License: GPL-2.0-or-later
|
||||
License: GPLv2+
|
||||
Requires: swig
|
||||
Conflicts: swig < 3.0.8-2
|
||||
|
||||
|
|
@ -169,7 +144,7 @@ being done again. ccache-swig is ccache plus support for SWIG.
|
|||
|
||||
%package doc
|
||||
Summary: Documentation files for SWIG
|
||||
License: BSD-3-Clause
|
||||
License: BSD
|
||||
BuildArch: noarch
|
||||
|
||||
%description doc
|
||||
|
|
@ -177,7 +152,7 @@ This package contains documentation for SWIG and useful examples
|
|||
|
||||
%package gdb
|
||||
Summary: Commands for easier debugging of SWIG
|
||||
License: BSD-3-Clause
|
||||
License: BSD
|
||||
Requires: swig
|
||||
|
||||
%description gdb
|
||||
|
|
@ -185,7 +160,22 @@ This package contains file with commands for easier debugging of SWIG
|
|||
in gdb.
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
%setup -q
|
||||
|
||||
%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
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
|
||||
for all in CHANGES README; do
|
||||
iconv -f ISO88591 -t UTF8 < $all > $all.new
|
||||
|
|
@ -200,26 +190,15 @@ done
|
|||
# code produces lots of the warnings demanded by strict ISO C and ISO C++.
|
||||
# It causes that log had more then 600M.
|
||||
%configure \
|
||||
%if %{ocamllang}
|
||||
--with-ocaml \
|
||||
%else
|
||||
--without-ocaml \
|
||||
%endif
|
||||
%if %{python3lang}
|
||||
--with-python3=python3 \
|
||||
%if %{python2lang}
|
||||
--with-python=%__python2\
|
||||
%else
|
||||
--without-python3 \
|
||||
--without-python \
|
||||
%endif
|
||||
--with-python3=%__python3 \
|
||||
%if %{phplang}
|
||||
--with-php \
|
||||
%else
|
||||
--without-php \
|
||||
%endif
|
||||
%if ! %{perllang}
|
||||
--without-perl5 \
|
||||
%endif
|
||||
%if ! %{tcl}
|
||||
--without-tcl \
|
||||
--with-php=%{__php} \
|
||||
%endif
|
||||
%if ! %{javalang}
|
||||
--without-java \
|
||||
|
|
@ -230,22 +209,19 @@ done
|
|||
%if ! %{golang}
|
||||
--without-go \
|
||||
%endif
|
||||
%if ! %{guile}
|
||||
--without-guile \
|
||||
%endif
|
||||
%if %{octave}
|
||||
--with-octave=%{_bindir}/octave \
|
||||
--with-octave=/usr/bin/octave \
|
||||
--without-maximum-compile-warnings \
|
||||
%endif
|
||||
%if %{without build_ccache_swig}
|
||||
--disable-ccache \
|
||||
%endif
|
||||
;
|
||||
%{make_build}
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%if %{with testsuite}
|
||||
# Test suite
|
||||
make check PY3=1
|
||||
make check
|
||||
%endif
|
||||
|
||||
%install
|
||||
|
|
@ -268,7 +244,7 @@ for all in `find -type f`; do
|
|||
done
|
||||
popd
|
||||
|
||||
%{make_install}
|
||||
make DESTDIR=%{buildroot} install
|
||||
|
||||
#################################################
|
||||
# Use help output for generating of man page swig
|
||||
|
|
@ -363,234 +339,15 @@ install -pm 644 Tools/swig.gdb %{buildroot}%{_datadir}/%{name}/gdb
|
|||
%{_datadir}/%{name}/gdb
|
||||
|
||||
%changelog
|
||||
* Mon Dec 08 2025 Jitka Plesnikova <jplesnik@redhat.com> - 4.4.1-1
|
||||
- 4.4.1 bump (rhbz#2419819, rhbz#2415440)
|
||||
* Wed Feb 19 2020 Jitka Plesnikova <jplesnik@redhat.com> - 3.0.12-27
|
||||
- Add missing checks for failures in calls to PyUnicode_AsUTF8String
|
||||
|
||||
* Tue Oct 21 2025 Jitka Plesnikova <jplesnik@redhat.com> - 4.4.0-1
|
||||
- 4.4.0 bump (rhbz#2405182)
|
||||
* Mon Feb 03 2020 Jitka Plesnikova <jplesnik@redhat.com> - 3.0.12-26
|
||||
- Fix assert in PyTuple_GET_SIZE for Python 3.7 (bug #1795130)
|
||||
|
||||
* Mon Oct 13 2025 Richard W.M. Jones <rjones@redhat.com> - 4.3.1-6
|
||||
- OCaml 5.4.0 rebuild
|
||||
|
||||
* Thu Aug 07 2025 Orion Poplawski <orion@nwra.com> - 4.3.1-5
|
||||
- Rebuild for Octave 10.2
|
||||
|
||||
* Thu Jul 31 2025 Jitka Plesnikova <jplesnik@redhat.com> - 4.3.1-4
|
||||
- Fix Python DeprecationWarning
|
||||
|
||||
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.3.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Wed Jun 25 2025 Yaakov Selkowitz <yselkowi@redhat.com> - 4.3.1-2
|
||||
- Add Python 3.14 support
|
||||
|
||||
* Wed Apr 16 2025 Jitka Plesnikova <jplesnik@redhat.com> - 4.3.1-1
|
||||
- 4.3.1 bump (rhbz#2360009)
|
||||
|
||||
* Mon Feb 17 2025 Jitka Plesnikova <jplesnik@redhat.com> - 4.3.0-5
|
||||
- Disable R tests, because they need tcl < 9
|
||||
|
||||
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.3.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Thu Nov 14 2024 Orion Poplawski <orion@nwra.com> - 4.3.0-3
|
||||
- Rebuild for octave 9.2
|
||||
|
||||
* Tue Oct 29 2024 Jitka Plesnikova <jplesnik@redhat.com> - 4.3.0-2
|
||||
- Fix precedence of casts
|
||||
|
||||
* Mon Oct 21 2024 Jitka Plesnikova <jplesnik@redhat.com> - 4.3.0-1
|
||||
- 4.3.0 bump (rhbz#2320047)
|
||||
|
||||
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.1-8
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Sun Jun 23 2024 Yaakov Selkowitz <yselkowi@redhat.com> - 4.2.1-7
|
||||
- Rebuild for Python 3.13
|
||||
|
||||
* Wed Jun 19 2024 Richard W.M. Jones <rjones@redhat.com> - 4.2.1-6
|
||||
- OCaml 5.2.0 ppc64le fix
|
||||
|
||||
* Wed May 29 2024 Richard W.M. Jones <rjones@redhat.com> - 4.2.1-5
|
||||
- OCaml 5.2.0 for Fedora 41
|
||||
|
||||
* Mon Apr 29 2024 Jitka Plesnikova <jplesnik@redhat.com> - 4.2.1-4
|
||||
- Fix gcc's -Wformat-security warning in R Raise function (rhbz#2277767)
|
||||
|
||||
* Fri Apr 12 2024 Remi Collet <remi@remirepo.net> - 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 <jvanek@redhat.com> - 4.2.1-2
|
||||
- Rebuilt for java-21-openjdk as system jdk
|
||||
- Temporary disable java tests (rhbz#2266693)
|
||||
|
||||
* Mon Feb 26 2024 Jitka Plesnikova <jplesnik@redhat.com> - 4.2.1-1
|
||||
- 4.2.1 bump (rhbz#2265786)
|
||||
|
||||
* Tue Jan 23 2024 Jitka Plesnikova <jplesnik@redhat.com> - 4.2.0-1
|
||||
- 4.2.0 bump
|
||||
|
||||
* Mon Dec 18 2023 Richard W.M. Jones <rjones@redhat.com> - 4.1.1-15
|
||||
- OCaml 5.1.1 + s390x code gen fix for Fedora 40
|
||||
|
||||
* Tue Dec 12 2023 Richard W.M. Jones <rjones@redhat.com> - 4.1.1-14
|
||||
- OCaml 5.1.1 rebuild for Fedora 40
|
||||
|
||||
* Thu Dec 07 2023 Jitka Plesnikova <jplesnik@redhat.com> - 4.1.1-13
|
||||
- Fix PHP director_classes testcase failures on x86
|
||||
|
||||
* Fri Oct 20 2023 Jitka Plesnikova <jplesnik@redhat.com> - 4.1.1-12
|
||||
- Stop using Python's 2to3
|
||||
|
||||
* Wed Oct 11 2023 Jitka Plesnikova <jplesnik@redhat.com> - 4.1.1-11
|
||||
- Fix PHP test, it fails with PHP 8.3
|
||||
|
||||
* Thu Oct 05 2023 Richard W.M. Jones <rjones@redhat.com> - 4.1.1-10
|
||||
- OCaml 5.1 rebuild for Fedora 40
|
||||
|
||||
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.1-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Wed Jul 12 2023 Jerry James <loganjerry@gmail.com> - 4.1.1-8
|
||||
- Add patch for python 3.12
|
||||
|
||||
* Tue Jul 11 2023 Richard W.M. Jones <rjones@redhat.com> - 4.1.1-8
|
||||
- OCaml 5.0 rebuild for Fedora 39
|
||||
|
||||
* Tue Jun 20 2023 Jerry James <loganjerry@gmail.com> - 4.1.1-7
|
||||
- Enable OCaml support
|
||||
- Add patch for OCaml 5.0.0
|
||||
|
||||
* Sat Apr 08 2023 Orion Poplawski <orion@nwra.com> - 4.1.1-6
|
||||
- Rebuild with octave 8.1.0
|
||||
|
||||
* Thu Mar 16 2023 Orion Poplawski <orion@nwra.com> - 4.1.1-5
|
||||
- Add patch to support octave 8.1
|
||||
|
||||
* Thu Feb 02 2023 Jitka Plesnikova <jplesnik@redhat.com> - 4.1.1-4
|
||||
- Disable PHP test on i686
|
||||
|
||||
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Thu Jan 12 2023 Florian Weimer <fweimer@redhat.com> - 4.1.1-2
|
||||
- Port configure script to C99
|
||||
|
||||
* Thu Dec 01 2022 Jitka Plesnikova <jplesnik@redhat.com> - 4.1.1-1
|
||||
- Update to 4.1.1
|
||||
|
||||
* Tue Oct 25 2022 Jitka Plesnikova <jplesnik@redhat.com> - 4.1.0-1
|
||||
- Update to 4.1.0
|
||||
|
||||
* Thu Jul 21 2022 Maxwell G <gotmax@e.email> - 4.0.2-18
|
||||
- Exclude golang extension from i686
|
||||
|
||||
* Tue Jul 19 2022 Maxwell G <gotmax@e.email> - 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 <zebob.m@gmail.com> - 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 <orion@nwra.com> - 4.0.2-15
|
||||
- Rebuild for octave 7.1
|
||||
|
||||
* Thu Feb 24 2022 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.2-14
|
||||
- Disable Java tests
|
||||
|
||||
* Sat Jan 22 2022 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.2-13
|
||||
- Fix tests against GCC12, enable Guile tests
|
||||
|
||||
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.2-12
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Wed Nov 24 2021 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.2-11
|
||||
- Disable PHP test, it fails with PHP 8.1
|
||||
|
||||
* Thu Oct 07 2021 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.2-10
|
||||
- Enable Python tests
|
||||
|
||||
* Tue Aug 10 2021 Orion Poplawski <orion@nwra.com> - 4.0.2-9
|
||||
- Rebuild for octave 6.3.0
|
||||
|
||||
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.2-8
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Thu Jul 15 2021 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.2-7
|
||||
- Disable Python tests, they fail with 3.10.0~b2
|
||||
|
||||
* Mon May 31 2021 Orion Poplawski <orion@nwra.com> - 4.0.2-6
|
||||
- Add patch for octave 6 support (bz#1919617)
|
||||
|
||||
* Fri Mar 05 2021 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.2-5
|
||||
- Backport support of PHP8 from upstream
|
||||
|
||||
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.2-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Fri Aug 28 2020 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.2-3
|
||||
- Enable tests for Python 3
|
||||
|
||||
* Wed Jul 29 2020 Tom Stellard <tstellar@redhat.com> - 4.0.2-2
|
||||
- Use make macros
|
||||
https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
|
||||
- Disable Go tests
|
||||
|
||||
* Mon Jun 08 2020 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.2-1
|
||||
- Update to 4.0.2
|
||||
|
||||
* Fri Mar 06 2020 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.1-9
|
||||
- Remove BR for Python 2 (bug#1807547)
|
||||
|
||||
* Tue Feb 25 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 4.0.1-8
|
||||
- Add fix for newer NodeJS version
|
||||
|
||||
* Tue Feb 04 2020 Michael Jeanson <mjeanson@efficios.com> - 4.0.1-7
|
||||
- Fix crash in Python backend when using empty docstrings
|
||||
|
||||
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.1-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Thu Jan 23 2020 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.1-5
|
||||
- Add support for Ruby 2.7
|
||||
- Fix code generated for Ruby global variables
|
||||
|
||||
* Sat Jan 18 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 4.0.1-4
|
||||
- Backport upstream fixes for ruby 2.7 (as small as possible for now)
|
||||
|
||||
* Tue Nov 19 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.1-3
|
||||
* Tue Nov 19 2019 Jitka Plesnikova <jplesnik@redhat.com> - 3.0.12-25
|
||||
- Disable Ruby tests on all archs
|
||||
|
||||
* Thu Oct 17 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.1-2
|
||||
- Disable Ruby tests on x86_64
|
||||
|
||||
* Wed Aug 21 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.1-1
|
||||
- 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
|
||||
code
|
||||
|
||||
* Mon Aug 12 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.0-5
|
||||
- Backport upstream fix for Go tests (BZ#1736731)
|
||||
|
||||
* Tue Aug 06 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.0-4
|
||||
- Disable Go tests, they fail with Go 1.13-beta
|
||||
|
||||
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Wed Jun 05 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.0-2
|
||||
- Updated package description
|
||||
|
||||
* Fri May 03 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4.0.0-1
|
||||
- Update to 4.0.0
|
||||
|
||||
* Sat Apr 27 2019 Orion Poplawski <orion@nwra.com> - 3.0.12-25
|
||||
- Add patches for octave 5.1 support
|
||||
|
||||
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.12-24
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
|
|
|
|||
13
swig308-Do-not-use-isystem.patch
Normal file
13
swig308-Do-not-use-isystem.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
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)
|
||||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue