# HG changeset patch # User John D # Date 1500663997 14400 # Node ID 2a53600c749ca127eff2f994c3732ba272f6e38c # Parent 342cc3ee5e4ba4abb2ff79a6ef07ebd83823284a of-sparsersb: enable buildability in dev octave * src/of-sparsersb-1-fixes.patch: updated patch * src/of-sparsersb.mk: call autogen.sh before build diff -r 342cc3ee5e4b -r 2a53600c749c src/of-sparsersb-1-fixes.patch --- a/src/of-sparsersb-1-fixes.patch Fri Jul 21 12:05:46 2017 -0400 +++ b/src/of-sparsersb-1-fixes.patch Fri Jul 21 15:06:37 2017 -0400 @@ -10,3 +10,216 @@ rsb_nnz_idx_t nnzA = 0; rsb_mtx_get_info(mtxAp,RSB_MIF_MATRIX_NNZ__TO__RSB_NNZ_INDEX_T,&nnzA); // FIXME: make this a member and use nnz() rsboi_ri2oi((rsb_coo_idx_t *)IA,nnzA); +diff -r e6017808f88d src/configure.ac +--- a/src/configure.ac Fri Jul 21 12:04:41 2017 -0400 ++++ b/src/configure.ac Fri Jul 21 13:25:48 2017 -0400 +@@ -107,11 +107,7 @@ + fi + fi + +-if test -x `which $OCTAVE-cli` ; then +- OCTAVE_CLI="$OCTAVE-cli"; +-else +- OCTAVE_CLI="$OCTAVE"; +-fi ++OCTAVE_CLI="$OCTAVE --no-gui --no-window-system"; + + SPARSERSB_USE_64BIT_IDX=`$OCTAVE_CLI --no-line-editing -qf --eval 'printf ("%i", sizemax() > intmax ("int32"))'` + if [test x"$SPARSERSB_USE_64BIT_IDX" = x"1" ]; then +diff -r 105149bc4206 src/Makeconf.in +--- a/src/Makeconf.in Fri Jul 21 13:47:46 2017 -0400 ++++ b/src/Makeconf.in Fri Jul 21 14:52:25 2017 -0400 +@@ -4,3 +4,4 @@ + SPARSERSB_CXXFLAGS = @SPARSERSB_CXXFLAGS@ + SPARSERSB_LDFLAGS = @SPARSERSB_LDFLAGS@ + SPARSERSB_CXX11= @SPARSERSB_CXX11@ ++OCTAVE_FUNC_DEFINES = @HAVE_OCTAVE_VALUE_ISCOMPLEX@ +diff -r 105149bc4206 src/Makefile +--- a/src/Makefile Fri Jul 21 13:47:46 2017 -0400 ++++ b/src/Makefile Fri Jul 21 14:52:25 2017 -0400 +@@ -1,7 +1,7 @@ + sinclude Makeconf + # Makeconf is created by the configure script. + # You can also not use it but set explicitly the following: +-CXXFLAGS=$(SPARSERSB_CXXFLAGS) ++CXXFLAGS=$(SPARSERSB_CXXFLAGS) $(OCTAVE_FUNC_DEFINES) + LFLAGS=$(shell $(MKOCTFILE) -p LFLAGS) $(SPARSERSB_LDFLAGS) + CXXFLAGS_CXX11=$(SPARSERSB_CXX11) + +diff -r 105149bc4206 src/configure.ac +--- a/src/configure.ac Fri Jul 21 13:47:46 2017 -0400 ++++ b/src/configure.ac Fri Jul 21 14:52:25 2017 -0400 +@@ -154,6 +154,40 @@ + AC_MSG_ERROR([$PACKAGE_NAME requires librsb library]) + fi + ++# check for octave functions ++save_CXX="$CXX" ++save_CXXFLAGS="$CXXFLAGS" ++CXX=`${MKOCTFILE} -p CXX` ++CXXFLAGS="$CXXFLAGS -I`$MKOCTFILE -p OCTINCLUDEDIR`" ++ ++# need to use interpreter->get_load_path in dev version of octave, ++# prior to that methods of load_path were static ++AC_CACHE_CHECK( ++ [for octave_value function iscomplex], ++ [octave_value_cv_iscomplex], ++ [AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM([ ++ #include ++ #include ++ ], ++ [ ++ octave_value().iscomplex(); ++ ])], ++ [octave_value_cv_iscomplex=yes], ++ [octave_value_cv_iscomplex=no]) ++ ]) ++if test "$octave_value_cv_iscomplex" = "yes" ; then ++ HAVE_OCTAVE_VALUE_ISCOMPLEX=-DHAVE_OCTAVE_VALUE_ISCOMPLEX ++else ++ HAVE_OCTAVE_VALUE_ISCOMPLEX= ++fi ++AC_SUBST(HAVE_OCTAVE_VALUE_ISCOMPLEX) ++ ++CC=$save_CXX ++CXXFLAGS=$save_CXXFLAGS ++ ++ ++ + AC_SUBST(OCTAVE) + AC_SUBST(TARGETS) + AC_SUBST(SPARSERSB_CXXFLAGS) +@@ -163,6 +197,7 @@ + AC_CONFIG_FILES([Makeconf]) + AC_OUTPUT + ++ + AC_MSG_NOTICE([ + + $PACKAGE_NAME is configured with: +diff -r 105149bc4206 src/sparsersb.cc +--- a/src/sparsersb.cc Fri Jul 21 13:47:46 2017 -0400 ++++ b/src/sparsersb.cc Fri Jul 21 14:52:25 2017 -0400 +@@ -177,7 +177,11 @@ + + #ifdef RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX + #define RSBOI_WANT_DOUBLE_COMPLEX 1 ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++#define ORSB_RSB_TYPE_FLAG(OBJ) (((OBJ).iscomplex())?RSB_NUMERICAL_TYPE_DOUBLE:RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX) ++#else + #define ORSB_RSB_TYPE_FLAG(OBJ) (((OBJ).is_complex_type())?RSB_NUMERICAL_TYPE_DOUBLE:RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX) ++#endif + #else + #define RSBOI_WANT_DOUBLE_COMPLEX 0 + #define ORSB_RSB_TYPE_FLAG(OBJ) RSB_NUMERICAL_TYPE_DOUBLE +@@ -228,7 +232,11 @@ + } + #endif + #if RSBOI_WANT_DOUBLE_COMPLEX ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++#define RSBOI_BINOP_PREVAILING_TYPE(V1,V2) (((V1).iscomplex()||(V2).iscomplex())?RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX:RSB_NUMERICAL_TYPE_DOUBLE) ++#else + #define RSBOI_BINOP_PREVAILING_TYPE(V1,V2) (((V1).is_complex_type()||(V2).is_complex_type())?RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX:RSB_NUMERICAL_TYPE_DOUBLE) ++#endif + #else + #define RSBOI_BINOP_PREVAILING_TYPE(V1,V2) RSBOI_TYPECODE + #endif +@@ -863,7 +871,11 @@ + bool is_diagonal (void) const { RSBOI_0_EMCHECK(this->mtxAp); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG);return RSB_DO_FLAG_HAS(this->rsbflags(),RSB_FLAG_DIAGONAL)?true:false; }/* FIXME: new: not sure whether this is ever called */ + bool is_lower_triangular (void) const { RSBOI_0_EMCHECK(this->mtxAp); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG);return RSB_DO_FLAG_HAS(this->rsbflags(),RSB_FLAG_LOWER_TRIANGULAR)?true:false; }/* FIXME: new: not sure whether this is ever called */ + bool is_upper_triangular (void) const { RSBOI_0_EMCHECK(this->mtxAp); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG);return RSB_DO_FLAG_HAS(this->rsbflags(),RSB_FLAG_UPPER_TRIANGULAR)?true:false; }/* FIXME: new: not sure whether this is ever called */ ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++ bool iscomplex (void) const { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return !is_real_type(); } ++#else + bool is_complex_type (void) const { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return !is_real_type(); } ++#endif + bool is_bool_type (void) const { return false; } + bool is_integer_type (void) const { return false; } + bool is_square (void) const { return this->rows()==this->cols(); } +@@ -1534,7 +1546,11 @@ + rsb_err_t errval = RSB_ERR_NO_ERROR; + RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); + ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++ if(v1.iscomplex()) ++#else + if(v1.is_complex_type()) ++#endif + { + ComplexMatrix retval = v2.complex_matrix_value(); + octave_idx_type b_nc = retval.cols (); +@@ -1640,7 +1656,11 @@ + if(v1.is__triangular()) + return rsboi_spsm(v1,v2,RSB_TRANSPOSITION_N); + ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++ if(v1.iscomplex() || v2.iscomplex()) ++#else + if(v1.is_complex_type() || v2.is_complex_type()) ++#endif + return (v1.sparse_complex_matrix_value()).solve(v2.sparse_complex_matrix_value()); + else + return (v1.sparse_matrix_value()).solve(v2.matrix_value()); +@@ -1655,7 +1675,11 @@ + if(v1.is__triangular()) + return rsboi_spsm(v1,v2,RSB_TRANSPOSITION_T); + ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++ if(v1.iscomplex() || v2.iscomplex()) ++#else + if(v1.is_complex_type() || v2.is_complex_type()) ++#endif + return (v1.sparse_complex_matrix_value().transpose()).solve(v2.sparse_complex_matrix_value()); + else + return (v1.sparse_matrix_value().transpose()).solve(v2.matrix_value()); +@@ -1671,7 +1695,11 @@ + if(v1.is__triangular()) + return rsboi_spsm(v1,v2,RSB_TRANSPOSITION_N); + ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++ if(v1.iscomplex() || v2.iscomplex()) ++#else + if(v1.is_complex_type() || v2.is_complex_type()) ++#endif + return (v1.sparse_complex_matrix_value()).solve(v2.sparse_complex_matrix_value()); + else + return (v1.sparse_matrix_value()).solve(v2.matrix_value()); +@@ -1685,7 +1713,11 @@ + if(v1.is__triangular()) + return rsboi_spsm(v1,v2,RSB_TRANSPOSITION_T); + ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++ if(v1.iscomplex() || v2.iscomplex()) ++#else + if(v1.is_complex_type() || v2.is_complex_type()) ++#endif + return (v1.sparse_complex_matrix_value().transpose()).solve(v2.sparse_complex_matrix_value()); + else + return (v1.sparse_matrix_value().transpose()).solve(v2.matrix_value()); +@@ -2199,8 +2231,13 @@ + int nargin = args.length (); + octave_value_list retval; + octave_sparsersb_mtx*osmp = RSBOI_NULL; ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++ bool ic0 = nargin>0?(args(0).iscomplex()):false; ++ bool ic3 = nargin>2?(args(2).iscomplex()):false; ++#else + bool ic0 = nargin>0?(args(0).is_complex_type()):false; + bool ic3 = nargin>2?(args(2).is_complex_type()):false; ++#endif + bool isr = (nargin>0 && args(0).type_name()==RSB_OI_TYPEINFO_STRING); + + RSBOI_DEBUG_NOTICE("in sparsersb()\n"); +@@ -2522,7 +2559,11 @@ + if(nargout) retval.append(osmp->cols()),--nargout; + if(nargout) retval.append(osmp->nnz()),--nargout; + if(nargout) retval.append(osmp->get_info_string()),--nargout; ++#ifdef HAVE_OCTAVE_VALUE_ISCOMPLEX ++ if(nargout) retval.append((!osmp->iscomplex())?"real":"complex"),--nargout; ++#else + if(nargout) retval.append((!osmp->is_complex_type())?"real":"complex"),--nargout; ++#endif + if(nargout) retval.append(osmp->get_symmetry()),--nargout; + } + } diff -r 342cc3ee5e4b -r 2a53600c749c src/of-sparsersb.mk --- a/src/of-sparsersb.mk Fri Jul 21 12:05:46 2017 -0400 +++ b/src/of-sparsersb.mk Fri Jul 21 15:06:37 2017 -0400 @@ -18,5 +18,6 @@ endef define $(PKG)_BUILD + cd $(1)/src && ./autogen.sh $(OCTAVE_FORGE_PKG_BUILD) endef