Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 934039 Details for
Bug 1136487
Octave 3.8 support for swig
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Patch for support Octave 3.8.0
support-octave-3.8.0.patch (text/plain), 10.80 KB, created by
Jitka Plesnikova
on 2014-09-03 10:45:26 UTC
(
hide
)
Description:
Patch for support Octave 3.8.0
Filename:
MIME Type:
Creator:
Jitka Plesnikova
Created:
2014-09-03 10:45:26 UTC
Size:
10.80 KB
patch
obsolete
>From 5b167cc12daf9ea275c17fedaefc975450613ab2 Mon Sep 17 00:00:00 2001 >From: Karl Wette <karl.wette@ligo.org> >Date: Mon, 13 Jan 2014 18:24:17 +1300 >Subject: [PATCH] octave: update support to Octave version 3.8.0 > >--- > CHANGES.current | 26 ++++++++++++ > Doc/Manual/Octave.html | 7 +--- > Lib/octave/octrun.swg | 104 ++++++++++++++++++++++++++++++++++++++-------- > Lib/octave/octruntime.swg | 14 +++---- > 4 files changed, 122 insertions(+), 29 deletions(-) > >SKIP diff --git a/CHANGES.current b/CHANGES.current >SKIP index a4fc5db..c711536 100644 >SKIP --- a/CHANGES.current >SKIP +++ b/CHANGES.current >SKIP @@ -5,6 +5,32 @@ See the RELEASENOTES file for a summary of changes in each release. >SKIP Version 3.0.0 (in progress) >SKIP ============================ >SKIP >SKIP +2014-01-13: kwwette >SKIP + [Octave] update support to Octave version 3.8.0 >SKIP + >SKIP + - Octave 3.8.0 no longer defines OCTAVE_API_VERSION_NUMBER, but 3.8.1 >SKIP + will define OCTAVE_{MAJOR,MINOR,PATCH}_VERSION instead: see >SKIP + http://hg.savannah.gnu.org/hgweb/octave/rev/b6b6e0dc700e >SKIP + So we now use a new macro SWIG_OCTAVE_PREREQ(major,minor,patch) to >SKIP + enable features requiring Octave version major.minor.patch or later. >SKIP + >SKIP + For Octave versions prior to 3.8.1, we reconstruct values for >SKIP + OCTAVE_{MAJOR,MINOR,PATCH}_VERSION based on OCTAVE_API_VERSION_NUMBER, >SKIP + extracted from Octave's ChangeLogs. An additional hack is needed to >SKIP + distinguish between Octave <= 3.2.x and 3.8.0, neither of which define >SKIP + OCTAVE_API_VERSION_NUMBER. >SKIP + >SKIP + - Octave 3.8.0 deprecates symbol_table::varref(), so remove its use >SKIP + for this and future versions of Octave. >SKIP + >SKIP + - Octave 3.8.0 removes octave_value::is_real_nd_array(), used in >SKIP + octave_swig_type::dims(). Its use is not required here, so remove it. >SKIP + >SKIP + - Retested against Octave versions 3.0.5, 3.2.4, 3.4.3, 3.6.4, and 3.8.0. >SKIP + >SKIP + - Updated Octave documentation with tested Octave versions, and added a >SKIP + warning against using versions <= 3.x.x, which are no longer tested. >SKIP + >SKIP 2014-01-11: wsfulton >SKIP Fix and document the naturalvar feature override behaviour - the naturalvar >SKIP feature attached to a variable name has precedence over the naturalvar >diff --git a/Doc/Manual/Octave.html b/Doc/Manual/Octave.html >index 84c0a0f..3e12ce6 100644 >--- a/Doc/Manual/Octave.html >+++ b/Doc/Manual/Octave.html >@@ -59,11 +59,8 @@ > > > <p> >-The SWIG implemention was first based on Octave 2.9.12, so this is the minimum version required. Testing has only been done on Linux. >-</p> >- >-<p> >-As of SWIG 2.0.7, the Octave module has been tested with Octave versions 3.0.5, 3.2.4, 3.4.3, and 3.6.1. >+As of SWIG 3.0.0, the Octave module has been tested with Octave versions 3.0.5, 3.2.4, 3.4.3, 3.6.4, and 3.8.0. >+Use of Octave versions older than 3.x.x is not recommended, as these versions are no longer tested with SWIG. > </p> > > <H2><a name="Octave_nn3"></a>30.2 Running SWIG</H2> >diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg >index 41d1c7a..2174a0f 100644 >--- a/Lib/octave/octrun.swg >+++ b/Lib/octave/octrun.swg >@@ -1,20 +1,88 @@ > > #include <octave/version.h> >-#ifndef OCTAVE_API_VERSION_NUMBER >- >- // Hack to distinguish between Octave 3.2 and earlier versions before OCTAVE_API_VERSION_NUMBER existed >- #define ComplexLU __ignore >- #include <octave/CmplxLU.h> >- #undef ComplexLU >- #ifdef octave_Complex_LU_h >- # define OCTAVE_API_VERSION_NUMBER 36 >- #else >- # define OCTAVE_API_VERSION_NUMBER 37 >- #endif > >-#endif >+// Macro for enabling features which require Octave version >= major.minor.patch >+#define SWIG_OCTAVE_PREREQ(major, minor, patch) \ >+ ( (OCTAVE_MAJOR_VERSION<<16) + (OCTAVE_MINOR_VERSION<<8) + OCTAVE_PATCH_VERSION >= ((major)<<16) + ((minor)<<8) + (patch) ) >+ >+// Reconstruct Octave major, minor, and patch versions for releases prior to 3.8.1 >+#if !defined(OCTAVE_MAJOR_VERSION) >+ >+# if !defined(OCTAVE_API_VERSION_NUMBER) >+ >+// Hack to distinguish between Octave 3.8.0, which removed OCTAVE_API_VERSION_NUMBER but did not yet >+// introduce OCTAVE_MAJOR_VERSION, and Octave <= 3.2, which did not define OCTAVE_API_VERSION_NUMBER >+# include <octave/ov.h> >+# if defined(octave_ov_h) >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 8 >+# define OCTAVE_PATCH_VERSION 0 >+# else >+ >+// Hack to distinguish between Octave 3.2 and earlier versions, before OCTAVE_API_VERSION_NUMBER existed >+# define ComplexLU __ignore >+# include <octave/CmplxLU.h> >+# undef ComplexLU >+# if defined(octave_Complex_LU_h) >+ >+// We know only that this version is prior to Octave 3.2, i.e. OCTAVE_API_VERSION_NUMBER < 37 >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 1 >+# define OCTAVE_PATCH_VERSION 99 >+ >+# else >+ >+// OCTAVE_API_VERSION_NUMBER == 37 >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 2 >+# define OCTAVE_PATCH_VERSION 0 >+ >+# endif // defined(octave_Complex_LU_h) >+ >+# endif // defined(octave_ov_h) > >-#if OCTAVE_API_VERSION_NUMBER < 37 >+// Correlation between Octave API and version numbers extracted from Octave's >+// ChangeLogs; version is the *earliest* released Octave with that API number >+# elif OCTAVE_API_VERSION_NUMBER >= 48 >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 6 >+# define OCTAVE_PATCH_VERSION 0 >+ >+# elif OCTAVE_API_VERSION_NUMBER >= 45 >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 4 >+# define OCTAVE_PATCH_VERSION 1 >+ >+# elif OCTAVE_API_VERSION_NUMBER >= 42 >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 3 >+# define OCTAVE_PATCH_VERSION 54 >+ >+# elif OCTAVE_API_VERSION_NUMBER >= 41 >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 3 >+# define OCTAVE_PATCH_VERSION 53 >+ >+# elif OCTAVE_API_VERSION_NUMBER >= 40 >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 3 >+# define OCTAVE_PATCH_VERSION 52 >+ >+# elif OCTAVE_API_VERSION_NUMBER >= 39 >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 3 >+# define OCTAVE_PATCH_VERSION 51 >+ >+# else // OCTAVE_API_VERSION_NUMBER == 38 >+# define OCTAVE_MAJOR_VERSION 3 >+# define OCTAVE_MINOR_VERSION 3 >+# define OCTAVE_PATCH_VERSION 50 >+ >+# endif // !defined(OCTAVE_API_VERSION_NUMBER) >+ >+#endif // !defined(OCTAVE_MAJOR_VERSION) >+ >+#if !SWIG_OCTAVE_PREREQ(3,2,0) > #define SWIG_DEFUN(cname, wname, doc) DEFUNX_DLD(#cname, wname, FS ## cname, args, nargout, doc) > #else > #define SWIG_DEFUN(cname, wname, doc) DEFUNX_DLD(#cname, wname, G ## cname, args, nargout, doc) >@@ -427,7 +495,7 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); > if (error_state) return dim_vector(1,1); > } > return d; >- } else if (out.is_matrix_type() || out.is_real_nd_array() || out.is_numeric_type() ) { >+ } else if (out.is_matrix_type() || out.is_numeric_type() ) { > if (out.rows()==1 || out.columns()==1) { > Array<int> a = out.int_vector_value(); > if (error_state) return dim_vector(1,1); >@@ -746,7 +814,7 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); > return outarg(0).string_value(); > } > >-#if OCTAVE_API_VERSION_NUMBER >= 40 >+#if SWIG_OCTAVE_PREREQ(3,3,52) > virtual octave_map map_value() const { > return octave_map(); > } >@@ -982,7 +1050,7 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); > virtual std::string string_value(bool force = false) const > { return ptr->string_value(force); } > >-#if OCTAVE_API_VERSION_NUMBER >= 40 >+#if SWIG_OCTAVE_PREREQ(3,3,52) > virtual octave_map map_value() const > { return ptr->map_value(); } > #else >@@ -1293,10 +1361,12 @@ SWIGRUNTIME void SWIG_Octave_SetGlobalValue(std::string name, const octave_value > } > > SWIGRUNTIME void SWIG_Octave_LinkGlobalValue(std::string name) { >-#if OCTAVE_API_VERSION_NUMBER < 37 >+#if !SWIG_OCTAVE_PREREQ(3,2,0) > link_to_global_variable(curr_sym_tab->lookup(name, true)); > #else >+#if !SWIG_OCTAVE_PREREQ(3,8,0) > symbol_table::varref(name); >+#endif > symbol_table::mark_global(name); > #endif > } >diff --git a/Lib/octave/octruntime.swg b/Lib/octave/octruntime.swg >index 43313c3..fbf2007 100644 >--- a/Lib/octave/octruntime.swg >+++ b/Lib/octave/octruntime.swg >@@ -25,7 +25,7 @@ static bool SWIG_init_user(octave_swig_type* module_ns); > SWIGINTERN bool SWIG_Octave_LoadModule(std::string name) { > bool retn; > { >-#if OCTAVE_API_VERSION_NUMBER < 38 >+#if !SWIG_OCTAVE_PREREQ(3,3,50) > unwind_protect::begin_frame("SWIG_Octave_LoadModule"); > unwind_protect_int(error_state); > unwind_protect_int(warning_state); >@@ -44,7 +44,7 @@ SWIGINTERN bool SWIG_Octave_LoadModule(std::string name) { > discard_warning_messages = true; > feval(name, octave_value_list(), 0); > retn = (error_state == 0); >-#if OCTAVE_API_VERSION_NUMBER < 38 >+#if !SWIG_OCTAVE_PREREQ(3,3,50) > unwind_protect::run_frame("SWIG_Octave_LoadModule"); > #endif > } >@@ -57,7 +57,7 @@ SWIGINTERN bool SWIG_Octave_LoadModule(std::string name) { > SWIGINTERN bool SWIG_Octave_InstallFunction(octave_function *octloadfcn, std::string name) { > bool retn; > { >-#if OCTAVE_API_VERSION_NUMBER < 38 >+#if !SWIG_OCTAVE_PREREQ(3,3,50) > unwind_protect::begin_frame("SWIG_Octave_InstallFunction"); > unwind_protect_int(error_state); > unwind_protect_int(warning_state); >@@ -80,7 +80,7 @@ SWIGINTERN bool SWIG_Octave_InstallFunction(octave_function *octloadfcn, std::st > error_state = 0; > feval("autoload", args, 0); > retn = (error_state == 0); >-#if OCTAVE_API_VERSION_NUMBER < 38 >+#if !SWIG_OCTAVE_PREREQ(3,3,50) > unwind_protect::run_frame("SWIG_Octave_InstallFunction"); > #endif > } >@@ -196,7 +196,7 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { > // definitely affects version 3.2.*, not sure about 3.3.*, seems to be fixed in > // version 3.4.* and above. can be turned off with macro definition. > #ifndef SWIG_OCTAVE_NO_SEGFAULT_HACK >-#if 36 < OCTAVE_API_VERSION_NUMBER && OCTAVE_API_VERSION_NUMBER < 45 >+#if SWIG_OCTAVE_PREREQ(3,2,0) && !SWIG_OCTAVE_PREREQ(3,4,1) > octave_exit = ::_Exit; > #endif > #endif >@@ -212,7 +212,7 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { > > // workaround bug in octave where installing global variable of custom type and then > // exiting without explicitly clearing the variable causes octave to segfault. >-#if OCTAVE_API_VERSION_NUMBER > 36 >+#if SWIG_OCTAVE_PREREQ(3,2,0) > octave_value_list eval_args; > eval_args.append("base"); > eval_args.append("function __swig_atexit__; " >@@ -297,7 +297,7 @@ DEFUN_DLD( SWIG_name, args, nargout, SWIG_name_usage ) { > } > } > >-#if OCTAVE_API_VERSION_NUMBER < 37 >+#if !SWIG_OCTAVE_PREREQ(3,2,0) > mlock(me->name()); > #else > mlock();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1136487
: 934039