orion pushed to octave (epel7). "Add patch for suitesparse 4.3.1 support"

notifications at fedoraproject.org notifications at fedoraproject.org
Fri May 29 17:06:06 UTC 2015


From 89ffeffefdfe3859596296ae70eaedce8a4421aa Mon Sep 17 00:00:00 2001
From: Orion Poplawski <orion at cora.nwra.com>
Date: Mon, 15 Sep 2014 17:43:40 -0600
Subject: Add patch for suitesparse 4.3.1 support


diff --git a/octave-suitesparse.patch b/octave-suitesparse.patch
new file mode 100644
index 0000000..d87876b
--- /dev/null
+++ b/octave-suitesparse.patch
@@ -0,0 +1,268 @@
+diff -up octave-3.8.2/libinterp/dldfcn/amd.cc.suitesparse octave-3.8.2/libinterp/dldfcn/amd.cc
+--- octave-3.8.2/libinterp/dldfcn/amd.cc.suitesparse	2014-08-06 11:57:55.000000000 -0600
++++ octave-3.8.2/libinterp/dldfcn/amd.cc	2014-09-12 15:53:32.819832086 -0600
+@@ -164,11 +164,11 @@ The author of the code itself is Timothy
+ 
+               // FIXME: how can we manage the memory allocation of amd
+               //        in a cleaner manner?
+-              amd_malloc = malloc;
+-              amd_free = free;
+-              amd_calloc = calloc;
+-              amd_realloc = realloc;
+-              amd_printf = printf;
++              suitesparse_assign_function(malloc_func, amd_malloc, malloc);
++              suitesparse_assign_function(free_func, amd_free, free);
++              suitesparse_assign_function(calloc_func, amd_calloc, calloc);
++              suitesparse_assign_function(realloc_func, amd_realloc, realloc);
++              suitesparse_assign_function(printf_func, amd_printf, printf);
+ 
+               octave_idx_type result = AMD_NAME (_order) (n_col, cidx, ridx, P,
+                                                           Control, Info);
+diff -up octave-3.8.2/libinterp/dldfcn/symbfact.cc.suitesparse octave-3.8.2/libinterp/dldfcn/symbfact.cc
+--- octave-3.8.2/libinterp/dldfcn/symbfact.cc.suitesparse	2014-08-06 11:54:15.000000000 -0600
++++ octave-3.8.2/libinterp/dldfcn/symbfact.cc	2014-09-12 15:53:32.821832075 -0600
+@@ -114,17 +114,17 @@ factorization as determined by @var{typ}
+   if (spu == 0.)
+     {
+       cm->print = -1;
+-      cm->print_function = 0;
++      suitesparse_assign_function(printf_func, cm->print_function, 0);
+     }
+   else
+     {
+       cm->print = static_cast<int> (spu) + 2;
+-      cm->print_function =&SparseCholPrint;
++      suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+     }
+ 
+   cm->error_handler = &SparseCholError;
+-  cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-  cm->hypotenuse = CHOLMOD_NAME(hypot);
++  suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++  suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+   double dummy;
+   cholmod_sparse Astore;
+diff -up octave-3.8.2/liboctave/array/CSparse.cc.suitesparse octave-3.8.2/liboctave/array/CSparse.cc
+--- octave-3.8.2/liboctave/array/CSparse.cc.suitesparse	2014-08-06 11:57:55.000000000 -0600
++++ octave-3.8.2/liboctave/array/CSparse.cc	2014-09-12 15:53:33.791827033 -0600
+@@ -5664,17 +5664,17 @@ SparseComplexMatrix::fsolve (MatrixType
+           if (spu == 0.)
+             {
+               cm->print = -1;
+-              cm->print_function = 0;
++              suitesparse_assign_function(printf_func, cm->print_function, 0);
+             }
+           else
+             {
+               cm->print = static_cast<int> (spu) + 2;
+-              cm->print_function =&SparseCholPrint;
++              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+             }
+ 
+           cm->error_handler = &SparseCholError;
+-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-          cm->hypotenuse = CHOLMOD_NAME(hypot);
++          suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++          suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+           cm->final_ll = true;
+ 
+@@ -5907,17 +5907,17 @@ SparseComplexMatrix::fsolve (MatrixType
+           if (spu == 0.)
+             {
+               cm->print = -1;
+-              cm->print_function = 0;
++              suitesparse_assign_function(printf_func, cm->print_function, 0);
+             }
+           else
+             {
+               cm->print = static_cast<int> (spu) + 2;
+-              cm->print_function =&SparseCholPrint;
++              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+             }
+ 
+           cm->error_handler = &SparseCholError;
+-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-          cm->hypotenuse = CHOLMOD_NAME(hypot);
++          suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++          suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+           cm->final_ll = true;
+ 
+@@ -6198,17 +6198,17 @@ SparseComplexMatrix::fsolve (MatrixType
+           if (spu == 0.)
+             {
+               cm->print = -1;
+-              cm->print_function = 0;
++              suitesparse_assign_function(printf_func, cm->print_function, 0);
+             }
+           else
+             {
+               cm->print = static_cast<int> (spu) + 2;
+-              cm->print_function =&SparseCholPrint;
++              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+             }
+ 
+           cm->error_handler = &SparseCholError;
+-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-          cm->hypotenuse = CHOLMOD_NAME(hypot);
++          suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++          suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+           cm->final_ll = true;
+ 
+@@ -6420,17 +6420,17 @@ SparseComplexMatrix::fsolve (MatrixType
+           if (spu == 0.)
+             {
+               cm->print = -1;
+-              cm->print_function = 0;
++              suitesparse_assign_function(printf_func, cm->print_function, 0);
+             }
+           else
+             {
+               cm->print = static_cast<int> (spu) + 2;
+-              cm->print_function =&SparseCholPrint;
++              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+             }
+ 
+           cm->error_handler = &SparseCholError;
+-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-          cm->hypotenuse = CHOLMOD_NAME(hypot);
++          suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++          suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+           cm->final_ll = true;
+ 
+diff -up octave-3.8.2/liboctave/array/dSparse.cc.suitesparse octave-3.8.2/liboctave/array/dSparse.cc
+--- octave-3.8.2/liboctave/array/dSparse.cc.suitesparse	2014-08-06 11:57:55.000000000 -0600
++++ octave-3.8.2/liboctave/array/dSparse.cc	2014-09-12 15:53:33.756827215 -0600
+@@ -5866,17 +5866,17 @@ SparseMatrix::fsolve (MatrixType &mattyp
+           if (spu == 0.)
+             {
+               cm->print = -1;
+-              cm->print_function = 0;
++              suitesparse_assign_function(printf_func, cm->print_function, 0);
+             }
+           else
+             {
+               cm->print = static_cast<int> (spu) + 2;
+-              cm->print_function =&SparseCholPrint;
++              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+             }
+ 
+           cm->error_handler = &SparseCholError;
+-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-          cm->hypotenuse = CHOLMOD_NAME(hypot);
++          suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++          suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+           cm->final_ll = true;
+ 
+@@ -6083,17 +6083,17 @@ SparseMatrix::fsolve (MatrixType &mattyp
+           if (spu == 0.)
+             {
+               cm->print = -1;
+-              cm->print_function = 0;
++              suitesparse_assign_function(printf_func, cm->print_function, 0);
+             }
+           else
+             {
+               cm->print = static_cast<int> (spu) + 2;
+-              cm->print_function =&SparseCholPrint;
++              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+             }
+ 
+           cm->error_handler = &SparseCholError;
+-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-          cm->hypotenuse = CHOLMOD_NAME(hypot);
++          suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++          suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+           cm->final_ll = true;
+ 
+@@ -6345,17 +6345,17 @@ SparseMatrix::fsolve (MatrixType &mattyp
+           if (spu == 0.)
+             {
+               cm->print = -1;
+-              cm->print_function = 0;
++              suitesparse_assign_function(printf_func, cm->print_function, 0);
+             }
+           else
+             {
+               cm->print = static_cast<int> (spu) + 2;
+-              cm->print_function =&SparseCholPrint;
++              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+             }
+ 
+           cm->error_handler = &SparseCholError;
+-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-          cm->hypotenuse = CHOLMOD_NAME(hypot);
++          suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++          suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+           cm->final_ll = true;
+ 
+@@ -6579,17 +6579,17 @@ SparseMatrix::fsolve (MatrixType &mattyp
+           if (spu == 0.)
+             {
+               cm->print = -1;
+-              cm->print_function = 0;
++              suitesparse_assign_function(printf_func, cm->print_function, 0);
+             }
+           else
+             {
+               cm->print = static_cast<int> (spu) + 2;
+-              cm->print_function =&SparseCholPrint;
++              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+             }
+ 
+           cm->error_handler = &SparseCholError;
+-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-          cm->hypotenuse = CHOLMOD_NAME(hypot);
++          suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++          suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+           cm->final_ll = true;
+ 
+diff -up octave-3.8.2/liboctave/numeric/sparse-base-chol.cc.suitesparse octave-3.8.2/liboctave/numeric/sparse-base-chol.cc
+--- octave-3.8.2/liboctave/numeric/sparse-base-chol.cc.suitesparse	2014-08-06 11:54:14.000000000 -0600
++++ octave-3.8.2/liboctave/numeric/sparse-base-chol.cc	2014-09-12 15:53:33.521828437 -0600
+@@ -105,17 +105,17 @@ sparse_base_chol<chol_type, chol_elt, p_
+   if (spu == 0.)
+     {
+       cm->print = -1;
+-      cm->print_function = 0;
++      suitesparse_assign_function(printf_func, cm->print_function, 0);
+     }
+   else
+     {
+       cm->print = static_cast<int> (spu) + 2;
+-      cm->print_function =&SparseCholPrint;
++      suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
+     }
+ 
+   cm->error_handler = &SparseCholError;
+-  cm->complex_divide = CHOLMOD_NAME(divcomplex);
+-  cm->hypotenuse = CHOLMOD_NAME(hypot);
++  suitesparse_assign_function(divcomplex_func, cm->complex_divide, CHOLMOD_NAME(divcomplex));
++  suitesparse_assign_function(hypot_func, cm->hypotenuse, CHOLMOD_NAME(hypot));
+ 
+   cm->final_asis = false;
+   cm->final_super = false;
+diff -up octave-3.8.2/liboctave/util/oct-sparse.h.suitesparse octave-3.8.2/liboctave/util/oct-sparse.h
+--- octave-3.8.2/liboctave/util/oct-sparse.h.suitesparse	2014-08-06 11:54:15.000000000 -0600
++++ octave-3.8.2/liboctave/util/oct-sparse.h	2014-09-15 12:14:12.663644773 -0600
+@@ -94,4 +94,12 @@ along with Octave; see the file COPYING.
+ #endif
+ #endif
+ 
++// Cope with new suitesparse versions
++//
++#if defined( SUITESPARSE_VERSION ) && SUITESPARSE_VERSION >= SUITESPARSE_VER_CODE(4,3)
++#define suitesparse_assign_function(f_name,f_var,f_assign) (SuiteSparse_config.f_name = f_assign)
++#else
++#define suitesparse_assign_function(f_name,f_var,f_assign) (f_var = f_assign)
++#endif
++
+ #endif
diff --git a/octave.spec b/octave.spec
index 12581bf..d75155d 100644
--- a/octave.spec
+++ b/octave.spec
@@ -16,7 +16,7 @@
 Name:           octave
 Epoch:          6
 Version:        3.8.2
-Release:        5%{?dist}
+Release:        6%{?dist}
 Summary:        A high-level language for numerical computations
 Group:          Applications/Engineering
 License:        GPLv3+
@@ -32,6 +32,9 @@ Source1:        macros.octave
 # Fix to allow pkg build to use a directory
 # https://savannah.gnu.org/bugs/?func=detailitem&item_id=32839
 Patch0:         octave-3.8.0-pkgbuilddir.patch
+# Patch to compile with suitesparse 4.3.1
+# https://savannah.gnu.org/bugs/?func=detailitem&item_id=43063
+Patch1:         octave-suitesparse.patch
 
 Provides:       octave(api) = %{octave_api}
 Provides:       bundled(gnulib)
@@ -115,6 +118,7 @@ This package contains documentation for Octave.
 %prep
 %setup -q -n %{name}-%{version}%{?rctag}
 %patch0 -p1 -b .pkgbuilddir
+%patch1 -p1 -b .suitesparse
 find -name \*.h -o -name \*.cc | xargs sed -i -e 's/<config.h>/"config.h"/' -e 's/<base-list.h>/"base-list.h"/'
 
 # Check permissions
@@ -304,6 +308,9 @@ fi
 
 
 %changelog
+* Mon Sep 15 2014 Orion Poplawski <orion at cora.nwra.com> - 6:3.8.2-6
+- Add patch for suitesparse 4.3.1 support
+
 * Fri Sep 12 2014 Orion Poplawski <orion at cora.nwra.com> - 6:3.8.2-5
 - Rebuild for libcholmod soname bump
 
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/octave.git/commit/?h=epel7&id=89ffeffefdfe3859596296ae70eaedce8a4421aa


More information about the scm-commits mailing list