- backport r12814 from trunk (#753321)

- improve Octave compatibility (#679948)

Signed-off-by: Adam Tkac <atkac@redhat.com>
This commit is contained in:
Adam Tkac 2011-11-15 13:59:04 +01:00
parent e3972dc4c4
commit 0332f3072d
3 changed files with 309 additions and 1 deletions

View File

@ -4,12 +4,14 @@
Summary: Connects C/C++/Objective C to some high-level programming languages
Name: swig
Version: 2.0.4
Release: 1%{?dist}
Release: 2%{?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
Patch2: swig204-rh679948.patch
Patch3: swig204-rh753321.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: perl, python-devel, pcre-devel
@ -42,6 +44,8 @@ This package contains documentation for SWIG and useful examples
%prep
%setup -q -n swig-%{version}
%patch1 -p1 -b .pylib
%patch2 -p0 -b .rh679948
%patch3 -p0 -b .rh753321
# 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
@ -113,6 +117,10 @@ rm -rf %{buildroot}
%doc Doc Examples LICENSE LICENSE-GPL LICENSE-UNIVERSITIES COPYRIGHT
%changelog
* Tue Nov 15 2011 Adam Tkac <atkac redhat com> 2.0.4-2
- backport r12814 from trunk (#753321)
- improve Octave compatibility (#679948)
* Mon Jun 20 2011 Adam Tkac <atkac redhat com> 2.0.4-1
- update to 2.0.4
- patches merged

273
swig204-rh679948.patch Normal file
View 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
# -----------------------------------------------------------------

27
swig204-rh753321.patch Normal file
View 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);
}