[arch-commits] Commit in octave/trunk (PKGBUILD octave-suitesparse.patch)
Ronald van Haren
ronald at archlinux.org
Mon Oct 6 19:31:21 UTC 2014
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 <cyberdune at gmail.com>
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 <jwe at octave.org>
+# 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 <andre.cbarros at yahoo.com>.
+
+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)
More information about the arch-commits
mailing list