Date: Monday, October 6, 2014 @ 21:31:21 Author: ronald Revision: 223933
fix building against suitesparse 3.4.1 Added: octave/trunk/octave-suitesparse.patch Modified: octave/trunk/PKGBUILD --------------------------+ PKGBUILD | 20 ++- octave-suitesparse.patch | 299 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 313 insertions(+), 6 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2014-10-06 18:46:37 UTC (rev 223932) +++ PKGBUILD 2014-10-06 19:31:21 UTC (rev 223933) @@ -4,23 +4,29 @@ # Contributor : cyberdune <[email protected]> pkgname=octave -pkgver=3.8.1 +pkgver=3.8.2 pkgrel=1 pkgdesc="A high-level language, primarily intended for numerical computations." arch=('i686' 'x86_64') url="http://www.octave.org" license=('GPL') -depends=('fftw' 'curl' 'graphicsmagick' 'glpk' 'hdf5' 'qhull' 'fltk' 'arpack' 'glu') +depends=('fftw' 'curl' 'graphicsmagick' 'glpk' 'hdf5' 'qhull' 'fltk' 'arpack' 'glu' 'ghostscript' 'suitesparse') makedepends=('gcc-fortran' 'texlive-core' 'suitesparse' 'texinfo' 'gnuplot' 'qscintilla') optdepends=('texinfo: for help-support in octave' 'gnuplot: alternative plotting' 'qscintilla: experimental gui') -source=(ftp://ftp.gnu.org/gnu/octave/octave-$pkgver.tar.bz2{,.sig}) +source=(ftp://ftp.gnu.org/gnu/octave/octave-$pkgver.tar.bz2{,.sig} 'octave-suitesparse.patch') options=('!emptydirs') install=octave.install -sha1sums=('2951aeafe58d562672feb80dd8c3cfe0643a5087' - 'SKIP') +sha1sums=('02c38e0f69bce4e6dd7be7d301898347085d9c2d' + 'SKIP' + 'acbe2b6d77d6d5f7b9f6fc4019c362be36cf9452') +prepare() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/octave-suitesparse.patch" +} + build() { cd "${srcdir}/${pkgname}-${pkgver}" @@ -29,7 +35,9 @@ ./configure --prefix=/usr --libexecdir=/usr/lib \ --enable-shared --disable-static \ --with-quantum-depth=16 \ - --with-umfpack="-lumfpack -lsuitesparseconfig" # https://mailman.cae.wisc.edu/pipermail/help-octave/2012-September/053991.html + --with-umfpack="-lumfpack -lsuitesparseconfig" \ + MOC=moc-qt4 UIC=uic-qt4 +# https://mailman.cae.wisc.edu/pipermail/help-octave/2012-September/053991.html LANG=C make } Added: octave-suitesparse.patch =================================================================== --- octave-suitesparse.patch (rev 0) +++ octave-suitesparse.patch 2014-10-06 19:31:21 UTC (rev 223933) @@ -0,0 +1,299 @@ + +# HG changeset patch +# User John W. Eaton <[email protected]> +# Date 1411328708 14400 +# Node ID afd6179d2616bfc429a5d24f14d50f01c5e56546 +# Parent ebeb3defae373a628ccd11eba69d7bde33855cc7 +allow building with new version of SuiteSparse (bug #43063) + +* oct-sparse.h (SUITESPARSE_ASSIGN_FPTR, SUITESPARSE_ASSIGN_FPTR2): +New macros. +* amd.cc, symbfact.cc, CSparse.cc, dSparse.cc, sparse-base-chol.cc: +Use as needed. + +From Andre da Costa Barros <[email protected]>. + +diff --git a/libinterp/dldfcn/amd.cc b/libinterp/dldfcn/amd.cc +--- a/libinterp/dldfcn/amd.cc ++++ b/libinterp/dldfcn/amd.cc +@@ -164,11 +164,11 @@ + + // 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_FPTR (malloc_func, amd_malloc, malloc); ++ SUITESPARSE_ASSIGN_FPTR (free_func, amd_free, free); ++ SUITESPARSE_ASSIGN_FPTR (calloc_func, amd_calloc, calloc); ++ SUITESPARSE_ASSIGN_FPTR (realloc_func, amd_realloc, realloc); ++ SUITESPARSE_ASSIGN_FPTR (printf_func, amd_printf, printf); + + octave_idx_type result = AMD_NAME (_order) (n_col, cidx, ridx, P, + Control, Info); +diff --git a/libinterp/dldfcn/symbfact.cc b/libinterp/dldfcn/symbfact.cc +--- a/libinterp/dldfcn/symbfact.cc ++++ b/libinterp/dldfcn/symbfact.cc +@@ -114,17 +114,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + double dummy; + cholmod_sparse Astore; +diff --git a/liboctave/array/CSparse.cc b/liboctave/array/CSparse.cc +--- a/liboctave/array/CSparse.cc ++++ b/liboctave/array/CSparse.cc +@@ -5669,17 +5669,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + cm->final_ll = true; + +@@ -5912,17 +5912,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + cm->final_ll = true; + +@@ -6203,17 +6203,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + cm->final_ll = true; + +@@ -6425,17 +6425,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + cm->final_ll = true; + +diff --git a/liboctave/array/dSparse.cc b/liboctave/array/dSparse.cc +--- a/liboctave/array/dSparse.cc ++++ b/liboctave/array/dSparse.cc +@@ -5871,17 +5871,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + cm->final_ll = true; + +@@ -6088,17 +6088,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + cm->final_ll = true; + +@@ -6350,17 +6350,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + cm->final_ll = true; + +@@ -6584,17 +6584,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + cm->final_ll = true; + +diff --git a/liboctave/numeric/sparse-base-chol.cc b/liboctave/numeric/sparse-base-chol.cc +--- a/liboctave/numeric/sparse-base-chol.cc ++++ b/liboctave/numeric/sparse-base-chol.cc +@@ -105,17 +105,17 @@ + if (spu == 0.) + { + cm->print = -1; +- cm->print_function = 0; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, 0); + } + else + { + cm->print = static_cast<int> (spu) + 2; +- cm->print_function =&SparseCholPrint; ++ SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, &SparseCholPrint); + } + + cm->error_handler = &SparseCholError; +- cm->complex_divide = CHOLMOD_NAME(divcomplex); +- cm->hypotenuse = CHOLMOD_NAME(hypot); ++ SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex); ++ SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot); + + cm->final_asis = false; + cm->final_super = false; +diff --git a/liboctave/util/oct-sparse.h b/liboctave/util/oct-sparse.hz +--- a/liboctave/util/oct-sparse.h ++++ b/liboctave/util/oct-sparse.h +@@ -94,4 +94,14 @@ + #endif + #endif + ++// Cope with new suitesparse versions ++// ++#if defined (SUITESPARSE_VERSION) && SUITESPARSE_VERSION >= SUITESPARSE_VER_CODE (4, 3) ++# define SUITESPARSE_ASSIGN_FPTR(f_name, f_var, f_assign) (SuiteSparse_config.f_name = f_assign) ++# define SUITESPARSE_ASSIGN_FPTR2(f_name, f_var, f_assign) (SuiteSparse_config.f_name = SuiteSparse_##f_assign) ++#else ++# define SUITESPARSE_ASSIGN_FPTR(f_name, f_var, f_assign) (f_var = f_assign) ++# define SUITESPARSE_ASSIGN_FPTR2(f_name, f_var, f_assign) (f_var = CHOLMOD_NAME (f_assign)) + #endif ++ ++#endif + +diff --git a/liboctave/util/oct-sparse.h b/liboctave/util/oct-sparse.h + +--- a/liboctave/util/oct-sparse.h ++++ b/liboctave/util/oct-sparse.h +@@ -23,6 +23,8 @@ along with Octave; see the file COPYING. + #if !defined (octave_oct_sparse_h) + #define octave_oct_sparse_h 1 + ++#include <math.h> ++ + #if defined (HAVE_SUITESPARSE_AMD_H) + #include <suitesparse/amd.h> + #elif defined (HAVE_UFSPARSE_AMD_H)
