From 77ce9f19a6370c39493742f74c583b63c26c158f99b9908be4e84b2ace132fa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ismail=20D=C3=B6nmez?= Date: Mon, 30 Apr 2012 12:24:08 +0000 Subject: [PATCH] - Update to 2.0.6 * Various fixes with templates and typedef types. * Some template lookup problems fixed. * Templated type fixes to use correct typemaps. * Autodoc documentation generation improvements. * Python STL container wrappers improvements including addition of stepped slicing. * Approximately 70 fixes and minor enhancements for the following target languages: AllegroCL, C#, D, Go, Java, Lua, Ocaml, Octave, Perl, PHP, Python, R, Ruby, Tcl, Xml. OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/swig?expand=0&rev=35 --- r12814.patch | 59 -------- swig-2.0.4-fix-overflow-error-64bitint.patch | 80 ----------- swig-2.0.4-ptrdiff_t.patch | 143 ------------------- swig-2.0.4-support-python32.patch | 67 --------- swig-2.0.4.tar.bz2 | 3 - swig-2.0.6.tar.gz | 3 + swig.changes | 14 ++ swig.spec | 32 ++--- 8 files changed, 28 insertions(+), 373 deletions(-) delete mode 100644 r12814.patch delete mode 100644 swig-2.0.4-fix-overflow-error-64bitint.patch delete mode 100644 swig-2.0.4-ptrdiff_t.patch delete mode 100644 swig-2.0.4-support-python32.patch delete mode 100644 swig-2.0.4.tar.bz2 create mode 100644 swig-2.0.6.tar.gz diff --git a/r12814.patch b/r12814.patch deleted file mode 100644 index d272177..0000000 --- a/r12814.patch +++ /dev/null @@ -1,59 +0,0 @@ ---- a/CHANGES.current -+++ b/CHANGES.current -@@ -2,6 +2,14 @@ This file contains the changes for the c - See the CHANGES file for changes in older releases. - See the RELEASENOTES file for a summary of changes in each release. - -+2011-09-19: wsfulton -+ Fix regression introduced in swig-2.0.1 reported by Teemu Ikonone leading to uncompilable code -+ when using typedef and function pointer references, for example: -+ -+ typedef int FN(const int &a, int b); -+ void *typedef_call1(FN *& precallback, FN * postcallback); -+ -+ - Version 2.0.4 (in progress) - =========================== - 2011-05-19: wsfulton ---- a/Source/Swig/stype.c -+++ b/Source/Swig/stype.c -@@ -823,7 +823,8 @@ String *SwigType_rcaststr(const SwigType - Insert(result, 0, "("); - Append(result, ")"); - } -- isreference = 1; -+ if (!isfunction) -+ isreference = 1; - } else if (SwigType_isarray(element)) { - DOH *size; - if (firstarray && !isreference) { -@@ -869,10 +870,8 @@ String *SwigType_rcaststr(const SwigType - cast = NewStringf("(%s)", result); - } - if (name) { -- if (!isfunction) { -- if (isreference) { -- Append(cast, "*"); -- } -+ if (isreference) { -+ Append(cast, "*"); - } - Append(cast, name); - } ---- a/Examples/test-suite/funcptr_cpp.i -+++ b/Examples/test-suite/funcptr_cpp.i -@@ -20,3 +20,14 @@ int call3(int & (*d)(const int &, int), - %constant int (*ADD_BY_VALUE)(const int &, int) = addByValue; - %constant int * (*ADD_BY_POINTER)(const int &, int) = addByPointer; - %constant int & (*ADD_BY_REFERENCE)(const int &, int) = addByReference; -+ -+ -+%inline %{ -+typedef int AddByValueTypedef(const int &a, int b); -+typedef int * AddByPointerTypedef(const int &a, int b); -+typedef int & AddByReferenceTypedef(const int &a, int b); -+void *typedef_call1(AddByValueTypedef *& precallback, AddByValueTypedef * postcallback) { return 0; } -+void *typedef_call2(AddByPointerTypedef *& precallback, AddByPointerTypedef * postcallback) { return 0; } -+void *typedef_call3(AddByReferenceTypedef *& precallback, AddByReferenceTypedef * postcallback) { return 0; } -+%} -+ diff --git a/swig-2.0.4-fix-overflow-error-64bitint.patch b/swig-2.0.4-fix-overflow-error-64bitint.patch deleted file mode 100644 index 8ad0b10..0000000 --- a/swig-2.0.4-fix-overflow-error-64bitint.patch +++ /dev/null @@ -1,80 +0,0 @@ -Description: Fix overflow errors with 64-bit IVs - The perl 5.12 packages are compiled with -Duse64bitint, which means that IVs - are 64-bits even on 32-bit architectures. When converting IVs, SWIG assumes - that an IV is the same size as a long, which causes OverflowErrors with - unsigned longs when the value is greater than 2^31. - . - This patch should remove those assumptions by using the "IV" type defined by - the perl headers, and explicitly checking the values are within the correct - range for the type being converted. -Author: Chris Butler -Bug-Debian: http://bugs.debian.org/579540 -Forwarded: no - ---- a/Lib/perl5/perlprimtypes.swg -+++ b/Lib/perl5/perlprimtypes.swg -@@ -56,8 +56,13 @@ - SWIG_AsVal_dec(long)(SV *obj, long* val) - { - if (SvIOK(obj)) { -- if (val) *val = SvIV(obj); -- return SWIG_OK; -+ IV v = SvIV(obj); -+ if (v >= LONG_MIN && v <= LONG_MAX) { -+ if (val) *val = v; -+ return SWIG_OK; -+ } else { -+ return SWIG_OverflowError; -+ } - } else { - int dispatch = 0; - const char *nptr = SvPV_nolen(obj); -@@ -108,11 +113,16 @@ - SWIG_AsVal_dec(unsigned long)(SV *obj, unsigned long *val) - { - if (SvUOK(obj)) { -- if (val) *val = SvUV(obj); -- return SWIG_OK; -+ UV v = SvUV(obj); -+ if (v >= 0 && v <= ULONG_MAX) { -+ if (val) *val = v; -+ return SWIG_OK; -+ } else { -+ return SWIG_OverflowError; -+ } - } else if (SvIOK(obj)) { -- long v = SvIV(obj); -- if (v >= 0) { -+ IV v = SvIV(obj); -+ if (v >= 0 && v <= ULONG_MAX) { - if (val) *val = v; - return SWIG_OK; - } else { -@@ -179,8 +189,13 @@ - SWIG_AsVal_dec(long long)(SV *obj, long long *val) - { - if (SvIOK(obj)) { -- if (val) *val = SvIV(obj); -- return SWIG_OK; -+ IV v = SvIV(obj); -+ if (v >= LLONG_MIN && v <= LLONG_MAX) { -+ if (val) *val = v; -+ return SWIG_OK; -+ } else { -+ return SWIG_OverflowError; -+ } - } else { - int dispatch = 0; - const char *nptr = SvPV_nolen(obj); -@@ -246,8 +261,8 @@ - if (val) *val = SvUV(obj); - return SWIG_OK; - } else if (SvIOK(obj)) { -- long v = SvIV(obj); -- if (v >= 0) { -+ IV v = SvIV(obj); -+ if (v >= 0 && v <= ULLONG_MAX) { - if (val) *val = v; - return SWIG_OK; - } else { - diff --git a/swig-2.0.4-ptrdiff_t.patch b/swig-2.0.4-ptrdiff_t.patch deleted file mode 100644 index a691b8f..0000000 --- a/swig-2.0.4-ptrdiff_t.patch +++ /dev/null @@ -1,143 +0,0 @@ -diff -wruN -x '*~' ../orig-swig-2.0.4/Lib/python/pycontainer.swg ./Lib/python/pycontainer.swg ---- ../orig-swig-2.0.4/Lib/python/pycontainer.swg 2011-09-20 12:14:29.000000000 +0200 -+++ ./Lib/python/pycontainer.swg 2011-09-20 12:13:22.000000000 +0200 -@@ -189,7 +189,7 @@ - - namespace swig { - inline size_t -- check_index(ptrdiff_t i, size_t size, bool insert = false) { -+ check_index(std::ptrdiff_t i, size_t size, bool insert = false) { - if ( i < 0 ) { - if ((size_t) (-i) <= size) - return (size_t) (i + size); -@@ -203,7 +203,7 @@ - } - - inline size_t -- slice_index(ptrdiff_t i, size_t size) { -+ slice_index(std::ptrdiff_t i, size_t size) { - if ( i < 0 ) { - if ((size_t) (-i) <= size) { - return (size_t) (i + size); -diff -wruN -x '*~' ../orig-swig-2.0.4/Lib/python/pyiterators.swg ./Lib/python/pyiterators.swg ---- ../orig-swig-2.0.4/Lib/python/pyiterators.swg 2011-04-29 20:25:16.000000000 +0200 -+++ ./Lib/python/pyiterators.swg 2011-09-20 12:14:10.000000000 +0200 -@@ -41,7 +41,7 @@ - } - - // Random access iterator methods, but not required in Python -- virtual ptrdiff_t distance(const SwigPyIterator &/*x*/) const -+ virtual std::ptrdiff_t distance(const SwigPyIterator &/*x*/) const - { - throw std::invalid_argument("operation not supported"); - } -@@ -78,7 +78,7 @@ - return obj; - } - -- SwigPyIterator *advance(ptrdiff_t n) -+ SwigPyIterator *advance(std::ptrdiff_t n) - { - return (n > 0) ? incr(n) : decr(-n); - } -@@ -93,27 +93,27 @@ - return ! operator==(x); - } - -- SwigPyIterator& operator += (ptrdiff_t n) -+ SwigPyIterator& operator += (std::ptrdiff_t n) - { - return *advance(n); - } - -- SwigPyIterator& operator -= (ptrdiff_t n) -+ SwigPyIterator& operator -= (std::ptrdiff_t n) - { - return *advance(-n); - } - -- SwigPyIterator* operator + (ptrdiff_t n) const -+ SwigPyIterator* operator + (std::ptrdiff_t n) const - { - return copy()->advance(n); - } - -- SwigPyIterator* operator - (ptrdiff_t n) const -+ SwigPyIterator* operator - (std::ptrdiff_t n) const - { - return copy()->advance(-n); - } - -- ptrdiff_t operator - (const SwigPyIterator& x) const -+ std::ptrdiff_t operator - (const SwigPyIterator& x) const - { - return x.distance(*this); - } -@@ -170,7 +170,7 @@ - } - } - -- ptrdiff_t distance(const SwigPyIterator &iter) const -+ std::ptrdiff_t distance(const SwigPyIterator &iter) const - { - const self_type *iters = dynamic_cast(&iter); - if (iters) { -@@ -334,8 +334,8 @@ - Mark methods that return new objects - */ - %newobject SwigPyIterator::copy; -- %newobject SwigPyIterator::operator + (ptrdiff_t n) const; -- %newobject SwigPyIterator::operator - (ptrdiff_t n) const; -+ %newobject SwigPyIterator::operator + (std::ptrdiff_t n) const; -+ %newobject SwigPyIterator::operator - (std::ptrdiff_t n) const; - - %nodirector SwigPyIterator; - -@@ -356,11 +356,11 @@ - %catches(swig::stop_iteration) SwigPyIterator::__next__(); - %catches(swig::stop_iteration) SwigPyIterator::next(); - %catches(swig::stop_iteration) SwigPyIterator::previous(); -- %catches(swig::stop_iteration) SwigPyIterator::advance(ptrdiff_t n); -- %catches(swig::stop_iteration) SwigPyIterator::operator += (ptrdiff_t n); -- %catches(swig::stop_iteration) SwigPyIterator::operator -= (ptrdiff_t n); -- %catches(swig::stop_iteration) SwigPyIterator::operator + (ptrdiff_t n) const; -- %catches(swig::stop_iteration) SwigPyIterator::operator - (ptrdiff_t n) const; -+ %catches(swig::stop_iteration) SwigPyIterator::advance(std::ptrdiff_t n); -+ %catches(swig::stop_iteration) SwigPyIterator::operator += (std::ptrdiff_t n); -+ %catches(swig::stop_iteration) SwigPyIterator::operator -= (std::ptrdiff_t n); -+ %catches(swig::stop_iteration) SwigPyIterator::operator + (std::ptrdiff_t n) const; -+ %catches(swig::stop_iteration) SwigPyIterator::operator - (std::ptrdiff_t n) const; - - struct SwigPyIterator - { -@@ -380,7 +380,7 @@ - virtual SwigPyIterator *decr(size_t n = 1); - - // Random access iterator methods, but not required in Python -- virtual ptrdiff_t distance(const SwigPyIterator &x) const; -+ virtual std::ptrdiff_t distance(const SwigPyIterator &x) const; - - virtual bool equal (const SwigPyIterator &x) const; - -@@ -390,15 +390,15 @@ - PyObject *next(); - PyObject *__next__(); - PyObject *previous(); -- SwigPyIterator *advance(ptrdiff_t n); -+ SwigPyIterator *advance(std::ptrdiff_t n); - - bool operator == (const SwigPyIterator& x) const; - bool operator != (const SwigPyIterator& x) const; -- SwigPyIterator& operator += (ptrdiff_t n); -- SwigPyIterator& operator -= (ptrdiff_t n); -- SwigPyIterator* operator + (ptrdiff_t n) const; -- SwigPyIterator* operator - (ptrdiff_t n) const; -- ptrdiff_t operator - (const SwigPyIterator& x) const; -+ SwigPyIterator& operator += (std::ptrdiff_t n); -+ SwigPyIterator& operator -= (std::ptrdiff_t n); -+ SwigPyIterator* operator + (std::ptrdiff_t n) const; -+ SwigPyIterator* operator - (std::ptrdiff_t n) const; -+ std::ptrdiff_t operator - (const SwigPyIterator& x) const; - }; - } - diff --git a/swig-2.0.4-support-python32.patch b/swig-2.0.4-support-python32.patch deleted file mode 100644 index e60f819..0000000 --- a/swig-2.0.4-support-python32.patch +++ /dev/null @@ -1,67 +0,0 @@ -diff -wruN -x '*~' ../orig-swig-2.0.4/Lib/python/pycontainer.swg ./Lib/python/pycontainer.swg ---- ../orig-swig-2.0.4/Lib/python/pycontainer.swg 2011-04-10 00:07:22.000000000 +0200 -+++ ./Lib/python/pycontainer.swg 2011-09-20 11:27:19.000000000 +0200 -@@ -657,6 +657,7 @@ - return x; - } - -+#if !NO_PYSLICE - /* typemap for slice object support */ - %typemap(in) PySliceObject* { - if (!PySlice_Check($input)) { -@@ -667,6 +668,7 @@ - %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) PySliceObject* { - $1 = PySlice_Check($input); - } -+#endif - - Sequence* __getslice__(difference_type i, difference_type j) throw (std::out_of_range) { - return swig::getslice(self, i, j); -@@ -689,7 +691,11 @@ - /* Overloaded methods for Python 3 compatibility - * (Also useful in Python 2.x) - */ -+#if NO_PYSLICE -+ Sequence* __getitem__(PyObject *slice) throw (std::out_of_range) { -+#else - Sequence* __getitem__(PySliceObject *slice) throw (std::out_of_range) { -+#endif - Py_ssize_t i, j, step; - if( !PySlice_Check(slice) ) { - SWIG_Error(SWIG_TypeError, "Slice object expected."); -@@ -698,8 +704,11 @@ - PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), self->size(), &i, &j, &step); - return swig::getslice(self, i, j); - } -- -+#if NO_PYSLICE -+ void __setitem__(PyObject *slice, const Sequence& v) -+#else - void __setitem__(PySliceObject *slice, const Sequence& v) -+#endif - throw (std::out_of_range, std::invalid_argument) { - Py_ssize_t i, j, step; - if( !PySlice_Check(slice) ) { -@@ -721,7 +730,11 @@ - swig::delslice(self, i,j); - } - -+#if NO_PYSLICE -+ void __delitem__(PyObject *slice) -+#else - void __delitem__(PySliceObject *slice) -+#endif - throw (std::out_of_range) { - Py_ssize_t i, j, step; - if( !PySlice_Check(slice) ) { -diff -wruN -x '*~' ../orig-swig-2.0.4/Source/Modules/python.cxx ./Source/Modules/python.cxx ---- ../orig-swig-2.0.4/Source/Modules/python.cxx 2011-05-20 07:58:05.000000000 +0200 -+++ ./Source/Modules/python.cxx 2011-09-20 11:27:19.000000000 +0200 -@@ -527,6 +527,7 @@ - if (py3) { - /* force disable features that not compatible with Python 3.x */ - classic = 0; -+ Preprocessor_define((DOH *) "NO_PYSLICE 1", 0); - } - - if (cppcast) { diff --git a/swig-2.0.4.tar.bz2 b/swig-2.0.4.tar.bz2 deleted file mode 100644 index 29dd0e5..0000000 --- a/swig-2.0.4.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bc44427d8a89539053a703a9237cf7ca313236b363676df23f07814c01030dda -size 4145216 diff --git a/swig-2.0.6.tar.gz b/swig-2.0.6.tar.gz new file mode 100644 index 0000000..4e82b4e --- /dev/null +++ b/swig-2.0.6.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd376331dd76899736852881f0fc5ba874b0d79e88a5bd9b366bcb20e7fbb17d +size 5277387 diff --git a/swig.changes b/swig.changes index 082adaf..6066e7e 100644 --- a/swig.changes +++ b/swig.changes @@ -1,3 +1,17 @@ +------------------------------------------------------------------- +Mon Apr 30 08:30:32 UTC 2012 - idonmez@suse.com + +- Update to 2.0.6 + * Various fixes with templates and typedef types. + * Some template lookup problems fixed. + * Templated type fixes to use correct typemaps. + * Autodoc documentation generation improvements. + * Python STL container wrappers improvements including addition of + stepped slicing. + * Approximately 70 fixes and minor enhancements for the following + target languages: AllegroCL, C#, D, Go, Java, Lua, Ocaml, Octave, + Perl, PHP, Python, R, Ruby, Tcl, Xml. + ------------------------------------------------------------------- Mon Apr 9 19:29:34 UTC 2012 - asterios.dramis@gmail.com diff --git a/swig.spec b/swig.spec index e528e2d..d5f9db7 100644 --- a/swig.spec +++ b/swig.spec @@ -17,28 +17,20 @@ Name: swig -Version: 2.0.4 +Version: 2.0.6 Release: 0 Summary: Simplified Wrapper and Interface Generator License: GPL-3.0+ and BSD-3-Clause Group: Development/Languages/C and C++ Url: http://www.swig.org/ -Source: %{name}-%{version}.tar.bz2 +Source: http://sourceforge.net/projects/swig/files/swig/%{name}-%{version}/%{name}-%{version}.tar.gz Source1: %{name}.rpmlintrc -# PATCH-FIX-UPSTREAM swig-2.0.4-support-python32.patch idoenmez@suse.de -- Support Python 3.2 -Patch1: swig-2.0.4-support-python32.patch -# swig-2.0.4-ptrdiff_t.patch kkaempf@suse.com -- import_stl fails under Python -Patch2: swig-2.0.4-ptrdiff_t.patch # PATCH-FIX-UPSTREAM swig-2.0.4-disable-broken-tests.patch idoenmez@suse.de -- Disable broken tests -Patch3: swig-2.0.4-disable-broken-tests.patch +Patch1: swig-2.0.4-disable-broken-tests.patch # swig-2.0.4-disable-broken-tests_rhel4.patch kkaempf@suse.com -- disable tests failing on RHEL4 -Patch4: swig-2.0.4-disable-broken-tests_rhel4.patch +Patch2: swig-2.0.4-disable-broken-tests_rhel4.patch # PATCH-FIX-UPSTREAM swig-2.0.4-guile2.patch pgajdos@suse.com -- generate guile 2 friendly code -Patch5: swig-2.0.4-guile2.patch -# PATCH-FIX-OPENSUSE swig-2.0.4-fix-overflow-error-64bitint.patch dvaleev@suse.com -- Fix overflow errors with 64-bit IVs -Patch6: swig-2.0.4-fix-overflow-error-64bitint.patch -# PATCH-FIX-UPSTREAM r12814.patch asterios.dramis@gmail.com -- Fix regression leading to uncompilable code when using typedef and function pointer references (taken from Debian) -Patch7: r12814.patch +Patch3: swig-2.0.4-guile2.patch BuildRequires: boost-devel BuildRequires: gcc-c++ BuildRequires: pcre-devel @@ -124,18 +116,14 @@ understandig SWIG usage. %prep %setup -q -%patch1 -p1 -%patch2 -p1 -%patch3 +%patch1 %if 0%{?rhel_version} >= 400 && 0%{?rhel_version} < 500 -%patch4 -p1 +%patch2 -p1 %endif # guile 2 from 12.1 %if 0%{?suse_version} >= 1210 -%patch5 -p1 +%patch3 -p1 %endif -%patch6 -p1 -%patch7 -p1 %build %configure --disable-ccache @@ -145,13 +133,14 @@ make %{?_smp_mflags} # check fails on SLES9 %if 0%{?sles_version} != 9 # This test is buggy on x86-64 -rm -f Examples/test-suite/python/li_boost_shared_ptr_runme.py %if 0%{?suse_version} == 1010 %ifarch x86_64 # This test fails on SLES 10 SP3+SP4 on 64bit (bnc#750618) rm -f Examples/test-suite/ruby/newobject1_runme.rb %endif %endif +# Segfaults +rm -f Examples/test-suite/python/li_std_containers_int_runme.py make check %endif @@ -163,6 +152,7 @@ cp -a TODO ANNOUNCE CHANGES* LICENSE README Doc/{Devel,Manual} \ %{buildroot}%{docpath} install -d %{buildroot}%{_libdir}/swig cp -a Examples %{buildroot}%{_libdir}/swig/examples +rm -rf %{buildroot}%{_libdir}/swig/examples/test-suite # rm files that are not needed for running or rebuilding the examples find %{buildroot}%{_libdir}/swig \