[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