From bf560fda6fbb48a1804be8778f6a59d514f626a0 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Fri, 10 Jul 2015 11:59:05 -0600 Subject: [PATCH] Add patch for octave 4.0.0 support --- swig-octave4.patch | 227 +++++++++++++++++++++++++++++++++++++++++++++ swig.spec | 9 +- 2 files changed, 235 insertions(+), 1 deletion(-) create mode 100644 swig-octave4.patch diff --git a/swig-octave4.patch b/swig-octave4.patch new file mode 100644 index 0000000..d583c5b --- /dev/null +++ b/swig-octave4.patch @@ -0,0 +1,227 @@ +diff --git a/Examples/test-suite/octave/default_constructor_runme.m b/Examples/test-suite/octave/default_constructor_runme.m +index 2f8bb39..ebe553b 100644 +--- a/Examples/test-suite/octave/default_constructor_runme.m ++++ b/Examples/test-suite/octave/default_constructor_runme.m +@@ -14,24 +14,18 @@ try + catch + end_try_catch + +-del_b = dc.delete_B; +- + try + bb = dc.new_BB(); + error("Whoa. new_BB created.") + catch + end_try_catch + +-del_bb = dc.delete_BB; +- + try + c = dc.new_C(); + error("Whoa. new_C created.") + catch + end_try_catch + +-del_c = dc.delete_C; +- + cc = dc.new_CC(); + dc.delete_CC(cc); + +@@ -41,24 +35,18 @@ try + catch + end_try_catch + +-del_d = dc.delete_D; +- + try + dd = dc.new_DD(); + error("Whoa. new_DD created") + catch + end_try_catch + +-dd = dc.delete_DD; +- + try + ad = dc.new_AD(); + error("Whoa. new_AD created") + catch + end_try_catch + +-del_ad = dc.delete_AD; +- + e = dc.new_E(); + dc.delete_E(e); + +@@ -71,12 +59,10 @@ try + catch + end_try_catch + +-del_eb = dc.delete_EB; +- + f = dc.new_F(); + + try +- del_f = dc.delete_F; ++ del_f = dc.delete_F(f); + error("Whoa. delete_F created") + catch + end_try_catch +@@ -86,7 +72,7 @@ dc.F_destroy(f); + g = dc.new_G(); + + try +- del_g = dc.delete_G; ++ del_g = dc.delete_G(g); + error("Whoa. delete_G created") + catch + end_try_catch +diff --git a/Lib/octave/octcontainer.swg b/Lib/octave/octcontainer.swg +index 723256c..0211b33 100644 +--- a/Lib/octave/octcontainer.swg ++++ b/Lib/octave/octcontainer.swg +@@ -12,6 +12,7 @@ + * ----------------------------------------------------------------------------- */ + + %{ ++#include + #include + %} + +diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg +index b5c3e5d..ddfd489 100644 +--- a/Lib/octave/octrun.swg ++++ b/Lib/octave/octrun.swg +@@ -868,6 +868,17 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + } + + #if defined (HAVE_HDF5) ++# if SWIG_OCTAVE_PREREQ(4,0,0) ++ virtual bool ++ save_hdf5 (octave_hdf5_id loc_id, const char *name, bool save_as_floats) { ++ return true; ++ } ++ ++ virtual bool ++ load_hdf5 (octave_hdf5_id loc_id, const char *name, bool have_h5giterate_bug) { ++ return true; ++ } ++# else + virtual bool + save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) { + return true; +@@ -877,6 +888,7 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug) { + return true; + } ++# endif + #endif + + virtual octave_value convert_to_str(bool pad = false, bool force = false, char type = '"') const { +@@ -969,7 +981,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + return octave_value(); + } + ++#if SWIG_OCTAVE_PREREQ(4,0,0) ++ void print(std::ostream &os, bool pr_as_read_syntax = false) { ++#else + void print(std::ostream &os, bool pr_as_read_syntax = false) const { ++#endif + if (is_string()) { + os << string_value(); + return; +@@ -1089,6 +1105,15 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + { return ptr->load_binary(is, swap, fmt); } + + #if defined (HAVE_HDF5) ++# if SWIG_OCTAVE_PREREQ(4,0,0) ++ virtual bool ++ save_hdf5 (octave_hdf5_id loc_id, const char *name, bool save_as_floats) ++ { return ptr->save_hdf5(loc_id, name, save_as_floats); } ++ ++ virtual bool ++ load_hdf5 (octave_hdf5_id loc_id, const char *name, bool have_h5giterate_bug) ++ { return ptr->load_hdf5(loc_id, name, have_h5giterate_bug); } ++# else + virtual bool + save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) + { return ptr->save_hdf5(loc_id, name, save_as_floats); } +@@ -1096,6 +1121,7 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + virtual bool + load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug) + { return ptr->load_hdf5(loc_id, name, have_h5giterate_bug); } ++# endif + #endif + + virtual octave_value convert_to_str(bool pad = false, bool force = false, char type = '"') const +@@ -1104,14 +1130,22 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + virtual octave_value convert_to_str_internal(bool pad, bool force, char type) const + { return ptr->convert_to_str_internal(pad, force, type); } + ++#if SWIG_OCTAVE_PREREQ(4,0,0) ++ void print(std::ostream &os, bool pr_as_read_syntax = false) ++#else + void print(std::ostream &os, bool pr_as_read_syntax = false) const ++#endif + { return ptr->print(os, pr_as_read_syntax); } + + private: ++#if !SWIG_OCTAVE_PREREQ(4,0,0) + DECLARE_OCTAVE_ALLOCATOR; ++#endif + DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA; + }; ++#if !SWIG_OCTAVE_PREREQ(4,0,0) + DEFINE_OCTAVE_ALLOCATOR(octave_swig_ref); ++#endif + DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_swig_ref, "swig_ref", "swig_ref"); + + class octave_swig_packed:public octave_base_value { +@@ -1143,7 +1177,11 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + return true; + } + ++#if SWIG_OCTAVE_PREREQ(4,0,0) ++ void print(std::ostream &os, bool pr_as_read_syntax = false) { ++#else + void print(std::ostream &os, bool pr_as_read_syntax = false) const { ++#endif + indent(os); + os << "swig packed type: name = " << (type ? type->name : std::string()) << ", len = " << buf.size(); newline(os); + } +@@ -1167,6 +1205,17 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + } + + #if defined (HAVE_HDF5) ++# if SWIG_OCTAVE_PREREQ(4,0,0) ++ virtual bool ++ save_hdf5 (octave_hdf5_id loc_id, const char *name, bool save_as_floats) { ++ return true; ++ } ++ ++ virtual bool ++ load_hdf5 (octave_hdf5_id loc_id, const char *name, bool have_h5giterate_bug) { ++ return true; ++ } ++# else + virtual bool + save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) { + return true; +@@ -1176,13 +1225,18 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); + load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug) { + return true; + } ++# endif + #endif + + private: ++#if !SWIG_OCTAVE_PREREQ(4,0,0) + DECLARE_OCTAVE_ALLOCATOR; ++#endif + DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA; + }; ++#if !SWIG_OCTAVE_PREREQ(4,0,0) + DEFINE_OCTAVE_ALLOCATOR(octave_swig_packed); ++#endif + DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_swig_packed, "swig_packed", "swig_packed"); + + SWIGRUNTIME octave_value_list octave_set_immutable(const octave_value_list &args, int nargout) { diff --git a/swig.spec b/swig.spec index 6d9a0d7..d2e1b01 100644 --- a/swig.spec +++ b/swig.spec @@ -39,13 +39,16 @@ Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig Version: 3.0.6 -Release: 1%{?dist} +Release: 2%{?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 Patch1: swig207-setools.patch +# Octave 4.0.0 support +# https://github.com/swig/swig/pull/460 +Patch2: swig-octave4.patch BuildRequires: perl, python2-devel, pcre-devel BuildRequires: autoconf, automake, gawk, dos2unix @@ -100,6 +103,7 @@ This package contains documentation for SWIG and useful examples %setup -q -n swig-%{version} %patch1 -p1 -b .setools +%patch2 -p1 -b .octave4 for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -197,6 +201,9 @@ ln -fs ../../bin/ccache-swig %{buildroot}%{_libdir}/ccache/swig %doc Doc Examples LICENSE LICENSE-GPL LICENSE-UNIVERSITIES COPYRIGHT %changelog +* Fri Jul 10 2015 Orion Poplawski - 3.0.6-2 +- Add patch for octave 4.0.0 support + * Mon Jul 06 2015 Björn Esser - 3.0.6-1 - Update to 3.0.6 (#1240107) - Dropped Patch2 and Patch3, changes applied in upstream tarball