[swig] Various bugfixes.
Adam Tkac
atkac at fedoraproject.org
Tue Nov 15 10:37:59 UTC 2011
commit 74f8d948bcdab4972983c966bdf28da3607ffe11
Author: Adam Tkac <atkac at redhat.com>
Date: Tue Nov 15 11:37:26 2011 +0100
Various bugfixes.
- backport r12814 from trunk (#753321)
- use scm_to_utf8_string instead of SCM_STRING_CHARS in guile bindings (#752054)
- improve Octave compatibility (#679948)
Signed-off-by: Adam Tkac <atkac at redhat.com>
swig.spec | 17 +++-
swig204-rh679948.patch | 273 ++++++++++++++++++++++++++++++++++++++++++++++++
swig204-rh752054.patch | 23 ++++
swig204-rh753321.patch | 27 +++++
4 files changed, 337 insertions(+), 3 deletions(-)
---
diff --git a/swig.spec b/swig.spec
index 593e80b..7402482 100644
--- a/swig.spec
+++ b/swig.spec
@@ -4,13 +4,16 @@
Summary: Connects C/C++/Objective C to some high-level programming languages
Name: swig
Version: 2.0.4
-Release: 2%{?dist}
+Release: 3%{?dist}
License: GPLv3+ and BSD
Group: Development/Tools
URL: http://swig.sourceforge.net/
Source: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz
Patch1: swig-1.3.23-pylib.patch
Patch4: swig203-rh706140.patch
+Patch5: swig204-rh753321.patch
+Patch6: swig204-rh752054.patch
+Patch7: swig204-rh679948.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: perl, python-devel, pcre-devel
@@ -20,7 +23,7 @@ BuildRequires: tcl-devel
%if %{guile}
BuildRequires: guile-devel
%endif
-BuildRequires: autoconf, automake, gawk, dos2unix
+BuildRequires: autoconf, automake, gawk, dos2unix, octave-devel
%description
Simplified Wrapper and Interface Generator (SWIG) is a software
@@ -44,6 +47,9 @@ This package contains documentation for SWIG and useful examples
%setup -q -n swig-%{version}
%patch1 -p1 -b .pylib
%patch4 -p1 -b .rh706140
+%patch5 -p0 -b .rh753321
+%patch6 -p1 -b .rh752054
+%patch7 -p0 -b .rh679948
# as written on https://fedoraproject.org/wiki/Packaging_talk:Perl, section 2
# (specific req/prov filtering). Before you remove this hack make sure you don't
@@ -72,7 +78,7 @@ done
%build
./autogen.sh
-%configure
+%configure --with-octave=/usr/bin/octave
make %{?_smp_mflags}
# Test suite is currently broken
@@ -115,6 +121,11 @@ rm -rf %{buildroot}
%doc Doc Examples LICENSE LICENSE-GPL LICENSE-UNIVERSITIES COPYRIGHT
%changelog
+* Mon Nov 14 2011 Adam Tkac <atkac redhat com> 2.0.4-3
+- backport r12814 from trunk (#753321)
+- use scm_to_utf8_string instead of SCM_STRING_CHARS in guile bindings (#752054)
+- improve Octave compatibility (#679948)
+
* Mon Aug 1 2011 Nick Bebout <nb at fedoraproject.org> 2.0.4-2
- rebuild to fix 2.0.3 being tagged in over 2.0.4-1
diff --git a/swig204-rh679948.patch b/swig204-rh679948.patch
new file mode 100644
index 0000000..869d7f7
--- /dev/null
+++ b/swig204-rh679948.patch
@@ -0,0 +1,273 @@
+Index: configure.in
+===================================================================
+--- configure.in (revision 12773)
++++ configure.in (revision 12774)
+@@ -923,19 +923,20 @@
+
+ AC_MSG_CHECKING(for Octave header files)
+ if test -n "$OCTAVE"; then
+- OCTAVEDIR="/usr/include"
++ OCTAVECONFIG=[`echo $OCTAVEBIN | sed 's|octave\([^/]*\)$|octave-config\1|'`]
++ if test -r "$OCTAVECONFIG"; then
++ OCTAVEDIR=`$OCTAVECONFIG -p OCTINCLUDEDIR | sed 's|/octave$||'`
++ else
++ OCTAVEDIR="/usr/include"
++ fi
+ if test "$OCTAVEDIR" != ""; then
+- dirs="$OCTAVEDIR"
++ dirs="$OCTAVEDIR/octave $OCTAVEDIR"
+ OCTAVEEXT=""
+ for i in $dirs; do
+ if test -r $i/octave/oct.h; then
+ OCTAVEEXT="$i"
+ break;
+ fi
+- if test -r $i/octave/octave/oct.h; then
+- OCTAVEEXT="$i/octave"
+- break;
+- fi
+ done
+ if test "$OCTAVEEXT" = "" ; then
+ AC_MSG_RESULT(not found)
+Index: Lib/octave/octrun.swg
+===================================================================
+--- Lib/octave/octrun.swg (revision 12773)
++++ Lib/octave/octrun.swg (revision 12774)
+@@ -399,6 +399,10 @@
+ Swig::erase_rtdir(types[j].second.ptr);
+ }
+
++ dim_vector dims(void) const {
++ return dim_vector(1,1);
++ }
++
+ octave_value as_value() {
+ ++count;
+ return Swig::swig_value_ref(this);
+@@ -928,6 +932,9 @@
+ octave_base_value *empty_clone() const
+ { return new octave_swig_ref(0); }
+
++ dim_vector dims(void) const
++ { return ptr->dims(); }
++
+ bool is_defined() const
+ { return ptr->is_defined(); }
+
+Index: Examples/octave/functor/Makefile
+===================================================================
+--- Examples/octave/functor/Makefile (revision 12773)
++++ Examples/octave/functor/Makefile (revision 12774)
+@@ -19,3 +19,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/pointer/Makefile
+===================================================================
+--- Examples/octave/pointer/Makefile (revision 12773)
++++ Examples/octave/pointer/Makefile (revision 12774)
+@@ -17,3 +17,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/funcptr/Makefile
+===================================================================
+--- Examples/octave/funcptr/Makefile (revision 12773)
++++ Examples/octave/funcptr/Makefile (revision 12774)
+@@ -17,3 +17,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/extend/Makefile
+===================================================================
+--- Examples/octave/extend/Makefile (revision 12773)
++++ Examples/octave/extend/Makefile (revision 12774)
+@@ -19,3 +19,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/simple/Makefile
+===================================================================
+--- Examples/octave/simple/Makefile (revision 12773)
++++ Examples/octave/simple/Makefile (revision 12774)
+@@ -17,3 +17,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/operator/runme.m
+===================================================================
+--- Examples/octave/operator/runme.m (revision 12773)
++++ Examples/octave/operator/runme.m (revision 12774)
+@@ -4,21 +4,21 @@
+ a = example.ComplexVal(2,3);
+ b = example.ComplexVal(-5,10);
+
+-printf("a = %s\n",a);
+-printf("b = %s\n",b);
++printf("a = %s\n",disp(a));
++printf("b = %s\n",disp(b));
+
+ c = a + b;
+-printf("c = %s\n",c);
+-printf("a*b = %s\n",a*b);
+-printf("a-c = %s\n",a-c);
++printf("c = %s\n",disp(c));
++printf("a*b = %s\n",disp(a*b));
++printf("a-c = %s\n",disp(a-c));
+
+ e = example.ComplexVal(a-c);
+-printf("e = %s\n",e);
++printf("e = %s\n",disp(e));
+
+ # Big expression
+ f = ((a+b)*(c+b*e)) + (-a);
+-printf("f = %s\n",f);
++printf("f = %s\n",disp(f));
+
+ # paren overloading
+-printf("a(3)= %s\n",a(3));
++printf("a(3)= %s\n",disp(a(3)));
+
+Index: Examples/octave/operator/example.i
+===================================================================
+--- Examples/octave/operator/example.i (revision 12773)
++++ Examples/octave/operator/example.i (revision 12774)
+@@ -10,13 +10,13 @@
+
+ /* An output method that turns a complex into a short string */
+ %extend ComplexVal {
+- char *__str() {
++ char *__str__() {
+ static char temp[512];
+ sprintf(temp,"(%g,%g)", $self->re(), $self->im());
+ return temp;
+ }
+
+- ComplexVal __paren(int j) {
++ ComplexVal __paren__(int j) {
+ return ComplexVal($self->re()*j,$self->im()*j);
+ }
+ };
+Index: Examples/octave/operator/Makefile
+===================================================================
+--- Examples/octave/operator/Makefile (revision 12773)
++++ Examples/octave/operator/Makefile (revision 12774)
+@@ -19,3 +19,4 @@
+ rm -f $(TARGET).m
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/callback/Makefile
+===================================================================
+--- Examples/octave/callback/Makefile (revision 12773)
++++ Examples/octave/callback/Makefile (revision 12774)
+@@ -19,3 +19,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/reference/Makefile
+===================================================================
+--- Examples/octave/reference/Makefile (revision 12773)
++++ Examples/octave/reference/Makefile (revision 12774)
+@@ -19,3 +19,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/funcptr2/Makefile
+===================================================================
+--- Examples/octave/funcptr2/Makefile (revision 12773)
++++ Examples/octave/funcptr2/Makefile (revision 12774)
+@@ -17,3 +17,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/enum/Makefile
+===================================================================
+--- Examples/octave/enum/Makefile (revision 12773)
++++ Examples/octave/enum/Makefile (revision 12774)
+@@ -19,3 +19,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/class/Makefile
+===================================================================
+--- Examples/octave/class/Makefile (revision 12773)
++++ Examples/octave/class/Makefile (revision 12774)
+@@ -19,3 +19,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/variables/Makefile
+===================================================================
+--- Examples/octave/variables/Makefile (revision 12773)
++++ Examples/octave/variables/Makefile (revision 12774)
+@@ -17,3 +17,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/template/Makefile
+===================================================================
+--- Examples/octave/template/Makefile (revision 12773)
++++ Examples/octave/template/Makefile (revision 12774)
+@@ -19,3 +19,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/constants/Makefile
+===================================================================
+--- Examples/octave/constants/Makefile (revision 12773)
++++ Examples/octave/constants/Makefile (revision 12774)
+@@ -19,3 +19,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/octave/contract/Makefile
+===================================================================
+--- Examples/octave/contract/Makefile (revision 12773)
++++ Examples/octave/contract/Makefile (revision 12774)
+@@ -17,3 +17,4 @@
+ rm -f $(TARGET).py
+
+ check: all
++ $(MAKE) -f $(TOP)/Makefile octave_run
+Index: Examples/Makefile.in
+===================================================================
+--- Examples/Makefile.in (revision 12773)
++++ Examples/Makefile.in (revision 12774)
+@@ -333,6 +333,7 @@
+ # Make sure these locate your Octave installation
+ OCTAVE_INCLUDE= $(DEFS) @OCTAVEEXT@
+ OCTAVE_LIB =
++OCTAVE = @OCTAVE@
+
+ # Extra Octave specific dynamic linking options
+ OCTAVE_DLNK = @OCTAVEDYNAMICLINKING@
+@@ -359,6 +360,15 @@
+ $(CXXSHARED) -g $(CFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO)
+
+ # -----------------------------------------------------------------
++# Running an Octave example
++# -----------------------------------------------------------------
++
++OCTSCRIPT = runme.m
++
++octave_run: $(OCTSCRIPT)
++ env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH OCTAVEPATH=$(srcdir):$$OCTAVEPATH $(OCTAVE) $(OCTSCRIPT) >/dev/null
++
++# -----------------------------------------------------------------
+ # Cleaning the octave examples
+ # -----------------------------------------------------------------
+
diff --git a/swig204-rh752054.patch b/swig204-rh752054.patch
new file mode 100644
index 0000000..9b9ff43
--- /dev/null
+++ b/swig204-rh752054.patch
@@ -0,0 +1,23 @@
+diff -up swig-2.0.4/Lib/guile/guile_scm_run.swg.rh752054 swig-2.0.4/Lib/guile/guile_scm_run.swg
+--- swig-2.0.4/Lib/guile/guile_scm_run.swg.rh752054 2011-11-14 14:44:35.688597584 +0100
++++ swig-2.0.4/Lib/guile/guile_scm_run.swg 2011-11-14 14:45:15.879594778 +0100
+@@ -64,7 +64,7 @@ static swig_module_info *SWIG_Guile_GetM
+ SWIGINTERN char *
+ SWIG_Guile_scm2newstr(SCM str, size_t *len) {
+ #define FUNC_NAME "SWIG_Guile_scm2newstr"
+- char *ret;
++ char *ret, *tmp;
+ size_t l;
+
+ SCM_ASSERT (SCM_STRINGP(str), str, 1, FUNC_NAME);
+@@ -73,7 +73,9 @@ SWIG_Guile_scm2newstr(SCM str, size_t *l
+ ret = (char *) SWIG_malloc( (l + 1) * sizeof(char));
+ if (!ret) return NULL;
+
+- memcpy(ret, SCM_STRING_CHARS(str), l);
++ tmp = scm_to_utf8_string(str);
++ memcpy(ret, tmp, l);
++ free(tmp);
+ ret[l] = '\0';
+ if (len) *len = l;
+ return ret;
diff --git a/swig204-rh753321.patch b/swig204-rh753321.patch
new file mode 100644
index 0000000..2eca5c6
--- /dev/null
+++ b/swig204-rh753321.patch
@@ -0,0 +1,27 @@
+Index: Source/Swig/stype.c
+===================================================================
+--- Source/Swig/stype.c (revision 12813)
++++ Source/Swig/stype.c (revision 12814)
+@@ -823,7 +823,8 @@
+ 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 @@
+ cast = NewStringf("(%s)", result);
+ }
+ if (name) {
+- if (!isfunction) {
+- if (isreference) {
+- Append(cast, "*");
+- }
++ if (isreference) {
++ Append(cast, "*");
+ }
+ Append(cast, name);
+ }
More information about the scm-commits
mailing list