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@redhat.com>
This commit is contained in:
parent
510afc956d
commit
74f8d948bc
17
swig.spec
17
swig.spec
@ -4,13 +4,16 @@
|
|||||||
Summary: Connects C/C++/Objective C to some high-level programming languages
|
Summary: Connects C/C++/Objective C to some high-level programming languages
|
||||||
Name: swig
|
Name: swig
|
||||||
Version: 2.0.4
|
Version: 2.0.4
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
License: GPLv3+ and BSD
|
License: GPLv3+ and BSD
|
||||||
Group: Development/Tools
|
Group: Development/Tools
|
||||||
URL: http://swig.sourceforge.net/
|
URL: http://swig.sourceforge.net/
|
||||||
Source: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz
|
Source: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz
|
||||||
Patch1: swig-1.3.23-pylib.patch
|
Patch1: swig-1.3.23-pylib.patch
|
||||||
Patch4: swig203-rh706140.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)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
BuildRequires: perl, python-devel, pcre-devel
|
BuildRequires: perl, python-devel, pcre-devel
|
||||||
@ -20,7 +23,7 @@ BuildRequires: tcl-devel
|
|||||||
%if %{guile}
|
%if %{guile}
|
||||||
BuildRequires: guile-devel
|
BuildRequires: guile-devel
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: autoconf, automake, gawk, dos2unix
|
BuildRequires: autoconf, automake, gawk, dos2unix, octave-devel
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Simplified Wrapper and Interface Generator (SWIG) is a software
|
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}
|
%setup -q -n swig-%{version}
|
||||||
%patch1 -p1 -b .pylib
|
%patch1 -p1 -b .pylib
|
||||||
%patch4 -p1 -b .rh706140
|
%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
|
# 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
|
# (specific req/prov filtering). Before you remove this hack make sure you don't
|
||||||
@ -72,7 +78,7 @@ done
|
|||||||
|
|
||||||
%build
|
%build
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
%configure
|
%configure --with-octave=/usr/bin/octave
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
# Test suite is currently broken
|
# Test suite is currently broken
|
||||||
@ -115,6 +121,11 @@ rm -rf %{buildroot}
|
|||||||
%doc Doc Examples LICENSE LICENSE-GPL LICENSE-UNIVERSITIES COPYRIGHT
|
%doc Doc Examples LICENSE LICENSE-GPL LICENSE-UNIVERSITIES COPYRIGHT
|
||||||
|
|
||||||
%changelog
|
%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@fedoraproject.org> 2.0.4-2
|
* Mon Aug 1 2011 Nick Bebout <nb@fedoraproject.org> 2.0.4-2
|
||||||
- rebuild to fix 2.0.3 being tagged in over 2.0.4-1
|
- rebuild to fix 2.0.3 being tagged in over 2.0.4-1
|
||||||
|
|
||||||
|
273
swig204-rh679948.patch
Normal file
273
swig204-rh679948.patch
Normal file
@ -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
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
|
23
swig204-rh752054.patch
Normal file
23
swig204-rh752054.patch
Normal file
@ -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;
|
27
swig204-rh753321.patch
Normal file
27
swig204-rh753321.patch
Normal file
@ -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);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user