# HG changeset patch # User John Donoghue # Date 1548078431 18000 # Node ID 8c1d507a7b77f90e7a7d8cfaaa4566af6d5415e5 # Parent 79edc3a96749965130880f81d4c8225040b547cd of-sparsersb: add patch for dev octave (Bug #55325) * src/of-sparsersb-1-deprecated.patch: new file * dist-files.mk: add ref to patch diff -r 79edc3a96749 -r 8c1d507a7b77 dist-files.mk --- a/dist-files.mk Mon Jan 21 08:47:10 2019 -0500 +++ b/dist-files.mk Mon Jan 21 08:47:11 2019 -0500 @@ -526,6 +526,7 @@ of-signal.mk \ of-sockets-1-cross-fixes.patch \ of-sockets.mk \ + of-sparsersb-1-deprecated.patch \ of-sparsersb.mk \ of-specfun-1-deprecated.patch \ of-specfun.mk \ diff -r 79edc3a96749 -r 8c1d507a7b77 src/of-sparsersb-1-deprecated.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/of-sparsersb-1-deprecated.patch Mon Jan 21 08:47:11 2019 -0500 @@ -0,0 +1,209 @@ +diff -r df6951233012 src/sparsersb.cc +--- a/src/sparsersb.cc Fri Jun 22 23:28:18 2018 +0200 ++++ b/src/sparsersb.cc Sun Jan 20 22:15:20 2019 +0100 +@@ -68,6 +68,7 @@ + + #define RSBOI_WANT_PRINT_PCT_OCTAVE_STYLE 1 + ++#include + #include + #include + #include +@@ -902,7 +903,7 @@ + error("save_binary() " RSBOI_0_NIYERRMSG); + return false; + } +- bool load_binary (std::istream& is, bool swap, oct_mach_info::float_format fmt) ++ bool load_binary (std::istream& is, bool swap, octave::mach_info::float_format fmt) + { + error("load_binary() " RSBOI_0_NIYERRMSG); + return false; +@@ -1985,95 +1986,95 @@ + // deprecated; need a wrapper using octave::typeinfo::register_unary_op + #define RSBOI_INSTALL_UNOP INSTALL_UNOP + +-static void install_sparsersb_ops (void) ++static void install_sparsersb_ops (octave::type_info& ti) + { + RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); + #ifdef RSB_FULLY_IMPLEMENTED + /* boolean pattern-based not */ +- RSBOI_INSTALL_UNOP (op_not, octave_sparsersb_mtx, op_not); ++ INSTALL_UNOP_TI (ti, op_not, octave_sparsersb_mtx, op_not); + /* to-dense operations */ +- RSBOI_INSTALL_ASSIGNOP (op_asn_eq, octave_sparsersb_mtx, octave_scalar, assigns); ++ INSTALL_ASSIGNOP_TI (ti, op_asn_eq, octave_sparsersb_mtx, octave_scalar, assigns); + /* ? */ +- RSBOI_INSTALL_UNOP (op_uplus, octave_sparsersb_mtx, uplus); ++ INSTALL_UNOP_TI (ti, op_uplus, octave_sparsersb_mtx, uplus); + /* elemental comparison, evaluate to sparse or dense boolean matrices */ +- RSBOI_INSTALL_BINOP (op_eq, octave_sparsersb_mtx, , ); +- RSBOI_INSTALL_BINOP (op_le, octave_sparsersb_mtx, , ); +- RSBOI_INSTALL_BINOP (op_lt, octave_sparsersb_mtx, , ); +- RSBOI_INSTALL_BINOP (op_ge, octave_sparsersb_mtx, , ); +- RSBOI_INSTALL_BINOP (op_gt, octave_sparsersb_mtx, , ); +- RSBOI_INSTALL_BINOP (op_ne, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_eq, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_le, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_lt, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_ge, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_gt, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_ne, octave_sparsersb_mtx, , ); + /* pure elemental; scalar and sparse arguments ?! */ + // ? +- RSBOI_INSTALL_BINOP (op_el_ldiv, octave_sparsersb_mtx, , ); +- RSBOI_INSTALL_BINOP (op_el_ldiv_eq, octave_sparsersb_mtx, , ); // errval = rsb_mtx_upd_values(this->mtxAp,RSB_ELOPF_SCALE_ROWS,cm.data()); +- RSBOI_INSTALL_BINOP (op_el_mul_eq, octave_sparsersb_mtx, , ); // diagonal subst ?? +- RSBOI_INSTALL_BINOP (op_el_and, octave_sparsersb_mtx, , ); +- RSBOI_INSTALL_BINOP (op_el_or, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_el_ldiv, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_el_ldiv_eq, octave_sparsersb_mtx, , ); // errval = rsb_mtx_upd_values(this->mtxAp,RSB_ELOPF_SCALE_ROWS,cm.data()); ++ INSTALL_BINOP_TI (ti, op_el_mul_eq, octave_sparsersb_mtx, , ); // diagonal subst ?? ++ INSTALL_BINOP_TI (ti, op_el_and, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_el_or, octave_sparsersb_mtx, , ); + /* shift operations: they may be left out from the implementation */ +- RSBOI_INSTALL_BINOP (op_lshift, octave_sparsersb_mtx, , ); +- RSBOI_INSTALL_BINOP (op_rshift, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_lshift, octave_sparsersb_mtx, , ); ++ INSTALL_BINOP_TI (ti, op_rshift, octave_sparsersb_mtx, , ); + #endif +- // RSBOI_INSTALL_ASSIGNOP (op_el_div_eq, octave_sparsersb_mtx, octave_matrix, rsb_op_el_div_eq_sc); // errval = rsb_mtx_upd_values(this->mtxAp,RSB_ELOPF_SCALE_ROWS,cm.data()); +- // RSBOI_INSTALL_ASSIGNOP (op_el_mul_eq, octave_sparsersb_mtx, octave_matrix, rsb_op_el_mul_eq_sc); ++ // INSTALL_ASSIGNOP_TI (ti, op_el_div_eq, octave_sparsersb_mtx, octave_matrix, rsb_op_el_div_eq_sc); // errval = rsb_mtx_upd_values(this->mtxAp,RSB_ELOPF_SCALE_ROWS,cm.data()); ++ // INSTALL_ASSIGNOP_TI (ti, op_el_mul_eq, octave_sparsersb_mtx, octave_matrix, rsb_op_el_mul_eq_sc); + //INSTALL_WIDENOP (octave_sparsersb_mtx, octave_sparse_matrix,octave_sparse_rsb_to_octave_sparse_conv);/* a DEFCONV .. */ + //INSTALL_ASSIGNCONV (octave_sparsersb_mtx, octave_sparse_matrix,octave_sparse_matrix);/* .. */ + // no need for the following: need a good conversion function, though +- //RSBOI_INSTALL_UNOP (op_incr, octave_sparsersb_mtx, op_incr); +- //RSBOI_INSTALL_UNOP (op_decr, octave_sparsersb_mtx, op_decr); +- RSBOI_INSTALL_BINOP (op_el_mul, octave_sparsersb_mtx, octave_scalar, rsb_el_mul_s); ++ //INSTALL_UNOP_TI (ti, op_incr, octave_sparsersb_mtx, op_incr); ++ //INSTALL_UNOP_TI (ti, op_decr, octave_sparsersb_mtx, op_decr); ++ INSTALL_BINOP_TI (ti, op_el_mul, octave_sparsersb_mtx, octave_scalar, rsb_el_mul_s); + #if RSBOI_WANT_DOUBLE_COMPLEX +- RSBOI_INSTALL_BINOP (op_el_mul, octave_sparsersb_mtx, octave_complex, rsb_el_mul_c); ++ INSTALL_BINOP_TI (ti, op_el_mul, octave_sparsersb_mtx, octave_complex, rsb_el_mul_c); + #endif /* RSBOI_WANT_DOUBLE_COMPLEX */ +-// RSBOI_INSTALL_ASSIGNOP (op_mul_eq, octave_sparsersb_mtx, octave_scalar, rsb_op_mul_eq_s); // 20110313 not effective +-// RSBOI_INSTALL_ASSIGNOP (op_div_eq, octave_sparsersb_mtx, octave_scalar, rsb_op_div_eq_s); // 20110313 not effective +- RSBOI_INSTALL_BINOP (op_el_div, octave_sparsersb_mtx, octave_scalar, rsb_el_div_s); ++// INSTALL_ASSIGNOP_TI (ti, op_mul_eq, octave_sparsersb_mtx, octave_scalar, rsb_op_mul_eq_s); // 20110313 not effective ++// INSTALL_ASSIGNOP_TI (ti, op_div_eq, octave_sparsersb_mtx, octave_scalar, rsb_op_div_eq_s); // 20110313 not effective ++ INSTALL_BINOP_TI (ti, op_el_div, octave_sparsersb_mtx, octave_scalar, rsb_el_div_s); + #if RSBOI_WANT_DOUBLE_COMPLEX +- RSBOI_INSTALL_BINOP (op_el_div, octave_sparsersb_mtx, octave_complex, rsb_el_div_c); ++ INSTALL_BINOP_TI (ti, op_el_div, octave_sparsersb_mtx, octave_complex, rsb_el_div_c); + #endif /* RSBOI_WANT_DOUBLE_COMPLEX */ +- RSBOI_INSTALL_BINOP (op_el_pow, octave_sparsersb_mtx, octave_scalar, el_pow); +- RSBOI_INSTALL_UNOP (op_uminus, octave_sparsersb_mtx, uminus); +- RSBOI_INSTALL_BINOP (op_ldiv, octave_sparsersb_mtx, octave_matrix, ldiv); +- RSBOI_INSTALL_BINOP (op_el_ldiv, octave_sparsersb_mtx, octave_matrix, el_ldiv); +- RSBOI_INSTALL_BINOP (op_div, octave_sparsersb_mtx, octave_matrix, div); +- RSBOI_INSTALL_BINOP (op_div, octave_sparsersb_mtx, octave_scalar, rsb_s_div); ++ INSTALL_BINOP_TI (ti, op_el_pow, octave_sparsersb_mtx, octave_scalar, el_pow); ++ INSTALL_UNOP_TI (ti, op_uminus, octave_sparsersb_mtx, uminus); ++ INSTALL_BINOP_TI (ti, op_ldiv, octave_sparsersb_mtx, octave_matrix, ldiv); ++ INSTALL_BINOP_TI (ti, op_el_ldiv, octave_sparsersb_mtx, octave_matrix, el_ldiv); ++ INSTALL_BINOP_TI (ti, op_div, octave_sparsersb_mtx, octave_matrix, div); ++ INSTALL_BINOP_TI (ti, op_div, octave_sparsersb_mtx, octave_scalar, rsb_s_div); + #if RSBOI_WANT_DOUBLE_COMPLEX +- RSBOI_INSTALL_BINOP (op_div, octave_sparsersb_mtx, octave_complex, rsb_c_div); ++ INSTALL_BINOP_TI (ti, op_div, octave_sparsersb_mtx, octave_complex, rsb_c_div); + #endif /* RSBOI_WANT_DOUBLE_COMPLEX */ +- RSBOI_INSTALL_BINOP (op_mul, octave_sparsersb_mtx, octave_scalar, rsb_s_mul); ++ INSTALL_BINOP_TI (ti, op_mul, octave_sparsersb_mtx, octave_scalar, rsb_s_mul); + #if RSBOI_WANT_DOUBLE_COMPLEX +- RSBOI_INSTALL_BINOP (op_mul, octave_sparsersb_mtx, octave_complex, rsb_c_mul); +- RSBOI_INSTALL_BINOP (op_mul, octave_sparsersb_mtx, octave_complex_matrix, op_c_mul); +- RSBOI_INSTALL_BINOP (op_trans_mul, octave_sparsersb_mtx, octave_complex_matrix, op_c_trans_mul); +- RSBOI_INSTALL_BINOP (op_ldiv, octave_sparsersb_mtx, octave_complex_matrix, c_ldiv); +- RSBOI_INSTALL_BINOP (op_trans_ldiv, octave_sparsersb_mtx, octave_complex_matrix, trans_c_ldiv); ++ INSTALL_BINOP_TI (ti, op_mul, octave_sparsersb_mtx, octave_complex, rsb_c_mul); ++ INSTALL_BINOP_TI (ti, op_mul, octave_sparsersb_mtx, octave_complex_matrix, op_c_mul); ++ INSTALL_BINOP_TI (ti, op_trans_mul, octave_sparsersb_mtx, octave_complex_matrix, op_c_trans_mul); ++ INSTALL_BINOP_TI (ti, op_ldiv, octave_sparsersb_mtx, octave_complex_matrix, c_ldiv); ++ INSTALL_BINOP_TI (ti, op_trans_ldiv, octave_sparsersb_mtx, octave_complex_matrix, trans_c_ldiv); + #endif /* RSBOI_WANT_DOUBLE_COMPLEX */ + #if RSBOI_WANT_POW +- RSBOI_INSTALL_BINOP (op_pow, octave_sparsersb_mtx, octave_scalar, rsb_s_pow); ++ INSTALL_BINOP_TI (ti, op_pow, octave_sparsersb_mtx, octave_scalar, rsb_s_pow); + #endif /* RSBOI_WANT_POW */ +- RSBOI_INSTALL_BINOP (op_el_div, octave_sparsersb_mtx, octave_matrix, el_div); +- RSBOI_INSTALL_UNOP (op_transpose, octave_sparsersb_mtx, transpose); +- RSBOI_INSTALL_UNOP (op_hermitian, octave_sparsersb_mtx, htranspose); +- RSBOI_INSTALL_ASSIGNOP (op_asn_eq, octave_sparsersb_mtx, octave_sparse_matrix, assign); +- RSBOI_INSTALL_ASSIGNOP (op_asn_eq, octave_sparsersb_mtx, octave_matrix, assignm); +- RSBOI_INSTALL_BINOP (op_mul, octave_sparsersb_mtx, octave_matrix, op_mul); +- //RSBOI_INSTALL_BINOP (op_pow, octave_sparsersb_mtx, octave_matrix, op_pow); +- RSBOI_INSTALL_BINOP (op_sub, octave_sparsersb_mtx, octave_sparsersb_mtx, op_sub); +- RSBOI_INSTALL_BINOP (op_add, octave_sparsersb_mtx, octave_sparsersb_mtx, op_add); +- //RSBOI_INSTALL_BINOP (op_trans_add, octave_sparsersb_mtx, octave_sparsersb_mtx, op_trans_add); +- RSBOI_INSTALL_BINOP (op_mul, octave_sparsersb_mtx, octave_sparsersb_mtx, op_spmul); +- RSBOI_INSTALL_BINOP (op_trans_mul, octave_sparsersb_mtx, octave_matrix, op_trans_mul); +- RSBOI_INSTALL_BINOP (op_trans_ldiv, octave_sparsersb_mtx, octave_matrix, trans_ldiv); +- //RSBOI_INSTALL_BINOP (op_mul_trans, octave_sparsersb_mtx, octave_matrix, op_mul_trans); +- //RSBOI_INSTALL_BINOP (op_mul_trans, octave_sparsersb_mtx, octave_matrix, op_mul_trans); +- //RSBOI_INSTALL_BINOP (op_herm_mul, octave_sparsersb_mtx, octave_matrix, op_herm_mul); +- //RSBOI_INSTALL_BINOP (op_mul_herm, octave_sparsersb_mtx, octave_matrix, op_mul_herm); +- //RSBOI_INSTALL_BINOP (op_el_not_and, octave_sparsersb_mtx, octave_matrix, op_el_not_and); +- //RSBOI_INSTALL_BINOP (op_el_not_or , octave_sparsersb_mtx, octave_matrix, op_el_not_or ); +- //RSBOI_INSTALL_BINOP (op_el_and_not, octave_sparsersb_mtx, octave_matrix, op_el_and_not); +- //RSBOI_INSTALL_BINOP (op_el_or _not, octave_sparsersb_mtx, octave_matrix, op_el_or _not); ++ INSTALL_BINOP_TI (ti, op_el_div, octave_sparsersb_mtx, octave_matrix, el_div); ++ INSTALL_UNOP_TI (ti, op_transpose, octave_sparsersb_mtx, transpose); ++ INSTALL_UNOP_TI (ti, op_hermitian, octave_sparsersb_mtx, htranspose); ++ INSTALL_ASSIGNOP_TI (ti, op_asn_eq, octave_sparsersb_mtx, octave_sparse_matrix, assign); ++ INSTALL_ASSIGNOP_TI (ti, op_asn_eq, octave_sparsersb_mtx, octave_matrix, assignm); ++ INSTALL_BINOP_TI (ti, op_mul, octave_sparsersb_mtx, octave_matrix, op_mul); ++ //INSTALL_BINOP_TI (ti, op_pow, octave_sparsersb_mtx, octave_matrix, op_pow); ++ INSTALL_BINOP_TI (ti, op_sub, octave_sparsersb_mtx, octave_sparsersb_mtx, op_sub); ++ INSTALL_BINOP_TI (ti, op_add, octave_sparsersb_mtx, octave_sparsersb_mtx, op_add); ++ //INSTALL_BINOP_TI (ti, op_trans_add, octave_sparsersb_mtx, octave_sparsersb_mtx, op_trans_add); ++ INSTALL_BINOP_TI (ti, op_mul, octave_sparsersb_mtx, octave_sparsersb_mtx, op_spmul); ++ INSTALL_BINOP_TI (ti, op_trans_mul, octave_sparsersb_mtx, octave_matrix, op_trans_mul); ++ INSTALL_BINOP_TI (ti, op_trans_ldiv, octave_sparsersb_mtx, octave_matrix, trans_ldiv); ++ //INSTALL_BINOP_TI (ti, op_mul_trans, octave_sparsersb_mtx, octave_matrix, op_mul_trans); ++ //INSTALL_BINOP_TI (ti, op_mul_trans, octave_sparsersb_mtx, octave_matrix, op_mul_trans); ++ //INSTALL_BINOP_TI (ti, op_herm_mul, octave_sparsersb_mtx, octave_matrix, op_herm_mul); ++ //INSTALL_BINOP_TI (ti, op_mul_herm, octave_sparsersb_mtx, octave_matrix, op_mul_herm); ++ //INSTALL_BINOP_TI (ti, op_el_not_and, octave_sparsersb_mtx, octave_matrix, op_el_not_and); ++ //INSTALL_BINOP_TI (ti, op_el_not_or , octave_sparsersb_mtx, octave_matrix, op_el_not_or ); ++ //INSTALL_BINOP_TI (ti, op_el_and_not, octave_sparsersb_mtx, octave_matrix, op_el_and_not); ++ //INSTALL_BINOP_TI (ti, op_el_or _not, octave_sparsersb_mtx, octave_matrix, op_el_or _not); + } + +-static void install_sparse_rsb (void) ++static void install_sparse_rsb (octave::interpreter& interp) + { + static bool rsboi_initialized = false; + +@@ -2103,16 +2104,17 @@ + if (!rsboi_sparse_rsb_loaded) + { + octave_sparsersb_mtx::register_type (); +- install_sparsersb_ops (); ++ interp.mlock (); ++ octave::type_info& ti = interp.get_type_info (); ++ install_sparsersb_ops (ti); + rsboi_sparse_rsb_loaded = true; +- mlock(); + } + return; + err: + RSBIO_NULL_STATEMENT_FOR_COMPILER_HAPPINESS + } + +-DEFUN_DLD (RSB_SPARSERSB_LABEL, args, nargout, ++DEFMETHOD_DLD (RSB_SPARSERSB_LABEL, interp, args, nargout, + "-*- texinfo -*-\n\ + @deftypefn {Loadable Function} {@var{S} =} " RSBOI_FNS " (@var{a})\n\ + @deftypefnx {Loadable Function} {@var{S} =} " RSBOI_FNS " (@var{i}, @var{j}, @var{sv}, @var{m}, @var{n})\n\ +@@ -2228,7 +2230,7 @@ + #else /* RSBOI_WANT_DOUBLE_COMPLEX */ + RSBOI_0_ERROR(RSBOI_0_NOCOERRMSG); + #endif /* RSBOI_WANT_DOUBLE_COMPLEX */ +- install_sparse_rsb(); ++ install_sparse_rsb (interp); + if( nargin == 3 && args(0).is_string() && args(0).string_value()=="set" && args(1).is_string() && args(2).is_string()) + { + // sparsersb ("set", OPN, OPV)