Update to 4.4.1
This commit is contained in:
parent
65d166658d
commit
281df3b846
2
.gitignore
vendored
2
.gitignore
vendored
@ -28,3 +28,5 @@ octave-3.2.4.tar.bz2
|
||||
/octave-4.2.0.tar.lz
|
||||
/octave-4.2.1.tar.lz
|
||||
/octave-4.2.2.tar.lz
|
||||
/octave-4.4.1.tar.lz
|
||||
/octave-4.4.1-docs.tar.gz
|
||||
|
@ -60,9 +60,9 @@ echo "endfunction" >> %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m \
|
||||
if [ -e %{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}/*.metainfo.xml ] \
|
||||
then \
|
||||
echo "Found .metainfo.xml appdata file" \
|
||||
mkdir -p %{buildroot}/%{_datadir}/appdata \
|
||||
cp -p %{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}/*.metainfo.xml %{buildroot}/%{_datadir}/appdata/ \
|
||||
appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/*.metainfo.xml \
|
||||
mkdir -p %{buildroot}/%{_metainfodir} \
|
||||
cp -p %{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}/*.metainfo.xml %{buildroot}/%{_metainfodir}/ \
|
||||
appstream-util validate-relax --nonet %{buildroot}/%{_metainfodir}/*.metainfo.xml \
|
||||
else \
|
||||
echo "Did not find a .metainfo.xml appdata file" \
|
||||
fi \
|
||||
|
@ -1,9 +0,0 @@
|
||||
diff -up octave-4.2.1/etc/icons/octave.appdata.xml.in.appdata octave-4.2.1/etc/icons/octave.appdata.xml.in
|
||||
--- octave-4.2.1/etc/icons/octave.appdata.xml.in.appdata 2017-02-24 20:46:50.581334701 -0700
|
||||
+++ octave-4.2.1/etc/icons/octave.appdata.xml.in 2017-02-24 20:47:29.866515768 -0700
|
||||
@@ -58,5 +58,4 @@
|
||||
|
||||
<url type="homepage">http://www.octave.org</url>
|
||||
<update_contact>maintainers@octave.org</update_contact>
|
||||
- <project_group>GNU</project_group>
|
||||
</component>
|
@ -1,12 +1,12 @@
|
||||
diff -up octave-4.2.2/libinterp/corefcn/input.cc.crash octave-4.2.2/libinterp/corefcn/input.cc
|
||||
--- octave-4.2.2/libinterp/corefcn/input.cc.crash 2018-02-28 11:41:44.000000000 -0700
|
||||
+++ octave-4.2.2/libinterp/corefcn/input.cc 2018-06-21 21:29:18.352517844 -0600
|
||||
@@ -298,7 +298,7 @@ octave_base_reader::octave_gets (bool& e
|
||||
diff -up octave-4.4.1/libinterp/corefcn/input.cc.crash octave-4.4.1/libinterp/corefcn/input.cc
|
||||
--- octave-4.4.1/libinterp/corefcn/input.cc.crash 2018-11-11 17:27:39.588037444 -0700
|
||||
+++ octave-4.4.1/libinterp/corefcn/input.cc 2018-11-11 17:30:42.344208272 -0700
|
||||
@@ -255,7 +255,7 @@ namespace octave
|
||||
|
||||
octave_diary << retval;
|
||||
|
||||
- if (retval[retval.length () - 1] != '\n')
|
||||
- if (retval.back () != '\n')
|
||||
+ if (!retval.empty () && retval.back () != '\n')
|
||||
octave_diary << "\n";
|
||||
|
||||
do_input_echo (retval);
|
||||
}
|
||||
else
|
||||
|
@ -1,11 +0,0 @@
|
||||
diff -up octave-4.0.0/liboctave/cruft/Faddeeva/Faddeeva.hh.gnulib octave-4.0.0/liboctave/cruft/Faddeeva/Faddeeva.hh
|
||||
--- octave-4.0.0/liboctave/cruft/Faddeeva/Faddeeva.hh.gnulib 2015-05-23 08:21:53.000000000 -0600
|
||||
+++ octave-4.0.0/liboctave/cruft/Faddeeva/Faddeeva.hh 2016-02-19 19:50:04.693811663 -0700
|
||||
@@ -27,6 +27,7 @@
|
||||
#ifndef FADDEEVA_HH
|
||||
#define FADDEEVA_HH 1
|
||||
|
||||
+#include <math.h>
|
||||
#include <complex>
|
||||
|
||||
namespace Faddeeva {
|
@ -1,11 +0,0 @@
|
||||
diff -up octave-4.2.2/libgui/src/settings-dialog.cc.orig octave-4.2.2/libgui/src/settings-dialog.cc
|
||||
--- octave-4.2.2/libgui/src/settings-dialog.cc.orig 2018-02-28 11:41:44.000000000 -0700
|
||||
+++ octave-4.2.2/libgui/src/settings-dialog.cc 2018-06-02 14:09:38.138706993 -0600
|
||||
@@ -36,6 +36,7 @@ along with Octave; see the file COPYING.
|
||||
#include <QHash>
|
||||
#include <QMessageBox>
|
||||
#include <QTextCodec>
|
||||
+#include <QButtonGroup>
|
||||
|
||||
#if defined (HAVE_QSCINTILLA)
|
||||
# include "octave-qscintilla.h"
|
504
octave-sundials3.patch
Normal file
504
octave-sundials3.patch
Normal file
@ -0,0 +1,504 @@
|
||||
diff -up octave-4.4.1/configure.ac.sundials3 octave-4.4.1/configure.ac
|
||||
--- octave-4.4.1/configure.ac.sundials3 2018-08-09 12:20:32.000000000 -0600
|
||||
+++ octave-4.4.1/configure.ac 2018-10-28 14:06:56.907293616 -0600
|
||||
@@ -2315,15 +2315,15 @@ OCTAVE_CHECK_LIB(sundials_ida, [SUNDIALS
|
||||
[], [don't use SUNDIALS IDA library, solvers ode15i and ode15s will be disabled],
|
||||
[warn_sundials_ida=
|
||||
OCTAVE_CHECK_SUNDIALS_SIZEOF_REALTYPE
|
||||
- OCTAVE_CHECK_SUNDIALS_IDA_DENSE
|
||||
- OCTAVE_CHECK_SUNDIALS_IDAKLU])
|
||||
+ OCTAVE_CHECK_SUNDIALS_SUNLINSOL_DENSE
|
||||
+ OCTAVE_CHECK_SUNDIALS_SUNLINSOL_KLU])
|
||||
LIBS="$save_LIBS"
|
||||
|
||||
dnl Define this way instead of with an #if in oct-conf-post.h so that
|
||||
dnl the build features script will get the correct value.
|
||||
if test -n "$SUNDIALS_IDA_LIBS" \
|
||||
&& test -n "$SUNDIALS_NVECSERIAL_LIBS" \
|
||||
- && test $octave_cv_sundials_ida_dense = yes \
|
||||
+ && test $octave_cv_sundials_sunlinsol_dense = yes \
|
||||
&& test $octave_cv_sundials_realtype_is_double = yes; then
|
||||
AC_DEFINE(HAVE_SUNDIALS, 1, [Define to 1 if SUNDIALS is available.])
|
||||
fi
|
||||
diff -up octave-4.4.1/libinterp/dldfcn/__ode15__.cc.sundials3 octave-4.4.1/libinterp/dldfcn/__ode15__.cc
|
||||
--- octave-4.4.1/libinterp/dldfcn/__ode15__.cc.sundials3 2018-08-09 12:20:32.000000000 -0600
|
||||
+++ octave-4.4.1/libinterp/dldfcn/__ode15__.cc 2018-10-28 14:26:11.482248630 -0600
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
|
||||
Copyright (C) 2016-2018 Francesco Faccio <francesco.faccio@mail.polimi.it>
|
||||
+Copyright (C) 2018 William Greene <w.h.greene@gmail.com>
|
||||
|
||||
This file is part of Octave.
|
||||
|
||||
@@ -43,15 +44,34 @@ along with Octave; see the file COPYING.
|
||||
# include <ida/ida.h>
|
||||
# endif
|
||||
|
||||
-# if defined (HAVE_IDA_IDA_DENSE_H)
|
||||
-# include <ida/ida_dense.h>
|
||||
+# if defined (HAVE_SUNDIALS_SUNDIALS_MATRIX_H)
|
||||
+# include <sundials/sundials_matrix.h>
|
||||
# endif
|
||||
|
||||
-# if defined (HAVE_IDA_IDA_KLU_H)
|
||||
-# include <ida/ida_klu.h>
|
||||
+# if defined (HAVE_SUNDIALS_SUNDIALS_LINEARSOLVER_H)
|
||||
+# include <sundials/sundials_linearsolver.h>
|
||||
+# endif
|
||||
+
|
||||
+# if defined (HAVE_SUNLINSOL_SUNLINSOL_DENSE_H)
|
||||
+# include <sunlinsol/sunlinsol_dense.h>
|
||||
+# endif
|
||||
+
|
||||
+# if defined (HAVE_IDA_IDA_DIRECT_H)
|
||||
+# include <ida/ida_direct.h>
|
||||
+# endif
|
||||
+
|
||||
+# if defined (HAVE_SUNDIALS_SUNDIALS_SPARSE_H)
|
||||
# include <sundials/sundials_sparse.h>
|
||||
# endif
|
||||
|
||||
+# if defined (HAVE_SUNLINSOL_SUNLINSOL_KLU_H)
|
||||
+# include <sunlinsol/sunlinsol_klu.h>
|
||||
+# endif
|
||||
+
|
||||
+# if defined (HAVE_SUNMATRIX_SUNMATRIX_SPARSE_H)
|
||||
+# include <sunmatrix/sunmatrix_sparse.h>
|
||||
+# endif
|
||||
+
|
||||
# if defined (HAVE_NVECTOR_NVECTOR_SERIAL_H)
|
||||
# include <nvector/nvector_serial.h>
|
||||
# endif
|
||||
@@ -111,7 +131,8 @@ namespace octave
|
||||
havejacsparse (false), mem (nullptr), num (), ida_fun (nullptr),
|
||||
ida_jac (nullptr), dfdy (nullptr), dfdyp (nullptr), spdfdy (nullptr),
|
||||
spdfdyp (nullptr), fun (nullptr), jacfun (nullptr), jacspfun (nullptr),
|
||||
- jacdcell (nullptr), jacspcell (nullptr)
|
||||
+ jacdcell (nullptr), jacspcell (nullptr),
|
||||
+ sunJacMatrix (nullptr), sunLinearSolver (nullptr)
|
||||
{ }
|
||||
|
||||
|
||||
@@ -121,11 +142,17 @@ namespace octave
|
||||
havejacsparse (false), mem (nullptr), num (), ida_fun (ida_fcn),
|
||||
ida_jac (nullptr), dfdy (nullptr), dfdyp (nullptr), spdfdy (nullptr),
|
||||
spdfdyp (nullptr), fun (daefun), jacfun (nullptr), jacspfun (nullptr),
|
||||
- jacdcell (nullptr), jacspcell (nullptr)
|
||||
+ jacdcell (nullptr), jacspcell (nullptr),
|
||||
+ sunJacMatrix (nullptr), sunLinearSolver (nullptr)
|
||||
{ }
|
||||
|
||||
|
||||
- ~IDA (void) { IDAFree (&mem); }
|
||||
+ ~IDA (void)
|
||||
+ {
|
||||
+ IDAFree (&mem);
|
||||
+ SUNLinSolFree(sunLinearSolver);
|
||||
+ SUNMatDestroy(sunJacMatrix);
|
||||
+ }
|
||||
|
||||
IDA&
|
||||
set_jacobian (octave_function *jac, DAEJacFuncDense j)
|
||||
@@ -183,7 +210,7 @@ namespace octave
|
||||
static N_Vector ColToNVec (const ColumnVector& data, long int n);
|
||||
|
||||
void
|
||||
- set_up (void);
|
||||
+ set_up (const ColumnVector& y);
|
||||
|
||||
void
|
||||
set_tolerance (ColumnVector& abstol, realtype reltol);
|
||||
@@ -198,25 +225,24 @@ namespace octave
|
||||
void
|
||||
resfun_impl (realtype t, N_Vector& yy,
|
||||
N_Vector& yyp, N_Vector& rr);
|
||||
-
|
||||
static int
|
||||
- jacdense (long int Neq, realtype t, realtype cj, N_Vector yy,
|
||||
- N_Vector yyp, N_Vector, DlsMat JJ, void *user_data,
|
||||
+ jacdense (realtype t, realtype cj, N_Vector yy,
|
||||
+ N_Vector yyp, N_Vector, SUNMatrix JJ, void *user_data,
|
||||
N_Vector, N_Vector, N_Vector)
|
||||
{
|
||||
IDA *self = static_cast <IDA *> (user_data);
|
||||
- self->jacdense_impl (Neq, t, cj, yy, yyp, JJ);
|
||||
+ self->jacdense_impl (t, cj, yy, yyp, JJ);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
- jacdense_impl (long int Neq, realtype t, realtype cj,
|
||||
- N_Vector& yy, N_Vector& yyp, DlsMat& JJ);
|
||||
+ jacdense_impl (realtype t, realtype cj,
|
||||
+ N_Vector& yy, N_Vector& yyp, SUNMatrix& JJ);
|
||||
|
||||
-# if defined (HAVE_SUNDIALS_IDAKLU)
|
||||
+# if defined (HAVE_SUNDIALS_SUNLINSOL_KLU)
|
||||
static int
|
||||
jacsparse (realtype t, realtype cj, N_Vector yy, N_Vector yyp,
|
||||
- N_Vector, SlsMat Jac, void *user_data, N_Vector,
|
||||
+ N_Vector, SUNMatrix Jac, void *user_data, N_Vector,
|
||||
N_Vector, N_Vector)
|
||||
{
|
||||
IDA *self = static_cast <IDA *> (user_data);
|
||||
@@ -226,7 +252,7 @@ namespace octave
|
||||
|
||||
void
|
||||
jacsparse_impl (realtype t, realtype cj, N_Vector& yy,
|
||||
- N_Vector& yyp, SlsMat& Jac);
|
||||
+ N_Vector& yyp, SUNMatrix& Jac);
|
||||
#endif
|
||||
|
||||
void set_maxstep (realtype maxstep);
|
||||
@@ -290,6 +316,8 @@ namespace octave
|
||||
DAEJacFuncSparse jacspfun;
|
||||
DAEJacCellDense jacdcell;
|
||||
DAEJacCellSparse jacspcell;
|
||||
+ SUNMatrix sunJacMatrix;
|
||||
+ SUNLinearSolver sunLinearSolver;
|
||||
};
|
||||
|
||||
int
|
||||
@@ -322,36 +350,61 @@ namespace octave
|
||||
}
|
||||
|
||||
void
|
||||
- IDA::set_up (void)
|
||||
+ IDA::set_up (const ColumnVector& y)
|
||||
{
|
||||
+ N_Vector yy = ColToNVec(y, num);
|
||||
+
|
||||
if (havejacsparse)
|
||||
{
|
||||
-# if defined (HAVE_SUNDIALS_IDAKLU)
|
||||
- if (IDAKLU (mem, num, num*num, CSC_MAT) != 0)
|
||||
- error ("IDAKLU solver not initialized");
|
||||
+#if defined (HAVE_SUNDIALS_SUNLINSOL_KLU)
|
||||
+
|
||||
+ sunJacMatrix = SUNSparseMatrix (num, num, num*num, CSC_MAT);
|
||||
+ if (! sunJacMatrix)
|
||||
+ error ("Unable to create sparse Jacobian for Sundials");
|
||||
+
|
||||
+ sunLinearSolver = SUNKLU (yy, sunJacMatrix);
|
||||
+ if (! sunLinearSolver)
|
||||
+ error ("Unable to create KLU sparse solver");
|
||||
+
|
||||
+ if (IDADlsSetLinearSolver (mem, sunLinearSolver, sunJacMatrix))
|
||||
+ error ("Unable to set sparse linear solver");
|
||||
+
|
||||
+ IDADlsSetJacFn(mem, IDA::jacsparse);
|
||||
|
||||
- IDASlsSetSparseJacFn (mem, IDA::jacsparse);
|
||||
# else
|
||||
- error ("IDAKLU is not available in this version of Octave");
|
||||
+ error ("SUNDIALS SUNLINSOL KLU is not available in this version of Octave");
|
||||
# endif
|
||||
+
|
||||
}
|
||||
else
|
||||
{
|
||||
- if (IDADense (mem, num) != 0)
|
||||
- error ("IDADense solver not initialized");
|
||||
|
||||
- if (havejac && IDADlsSetDenseJacFn (mem, IDA::jacdense) != 0)
|
||||
- error ("Dense Jacobian not set");
|
||||
+ sunJacMatrix = SUNDenseMatrix (num, num);
|
||||
+ if (! sunJacMatrix)
|
||||
+ error ("Unable to create dense Jacobian for Sundials");
|
||||
+
|
||||
+ sunLinearSolver = SUNDenseLinearSolver(yy, sunJacMatrix);
|
||||
+ if (! sunLinearSolver)
|
||||
+ error ("Unable to create dense linear solver");
|
||||
+
|
||||
+ if (IDADlsSetLinearSolver (mem, sunLinearSolver, sunJacMatrix))
|
||||
+ error ("Unable to set dense linear solver");
|
||||
+
|
||||
+ if (havejac && IDADlsSetJacFn (mem, IDA::jacdense) != 0)
|
||||
+ error("Unable to set dense Jacobian function");
|
||||
+
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
- IDA::jacdense_impl (long int Neq, realtype t, realtype cj,
|
||||
- N_Vector& yy, N_Vector& yyp, DlsMat& JJ)
|
||||
+ IDA::jacdense_impl (realtype t, realtype cj,
|
||||
+ N_Vector& yy, N_Vector& yyp, SUNMatrix& JJ)
|
||||
|
||||
{
|
||||
BEGIN_INTERRUPT_WITH_EXCEPTIONS;
|
||||
|
||||
+ long int Neq = NV_LENGTH_S(yy);
|
||||
+
|
||||
ColumnVector y = NVecToCol (yy, Neq);
|
||||
|
||||
ColumnVector yp = NVecToCol (yyp, Neq);
|
||||
@@ -365,15 +418,15 @@ namespace octave
|
||||
|
||||
std::copy (jac.fortran_vec (),
|
||||
jac.fortran_vec () + jac.numel (),
|
||||
- JJ->data);
|
||||
+ SUNDenseMatrix_Data(JJ));
|
||||
|
||||
END_INTERRUPT_WITH_EXCEPTIONS;
|
||||
}
|
||||
|
||||
-# if defined (HAVE_SUNDIALS_IDAKLU)
|
||||
+# if defined (HAVE_SUNDIALS_SUNLINSOL_KLU)
|
||||
void
|
||||
IDA::jacsparse_impl (realtype t, realtype cj, N_Vector& yy, N_Vector& yyp,
|
||||
- SlsMat& Jac)
|
||||
+ SUNMatrix& Jac)
|
||||
|
||||
{
|
||||
BEGIN_INTERRUPT_WITH_EXCEPTIONS;
|
||||
@@ -389,17 +442,18 @@ namespace octave
|
||||
else
|
||||
jac = (*jacspcell) (spdfdy, spdfdyp, cj);
|
||||
|
||||
- SparseSetMatToZero (Jac);
|
||||
- int *colptrs = *(Jac->colptrs);
|
||||
- int *rowvals = *(Jac->rowvals);
|
||||
+ SUNMatZero_Sparse (Jac);
|
||||
+ sunindextype *colptrs = SUNSparseMatrix_IndexPointers (Jac);
|
||||
+ sunindextype *rowvals = SUNSparseMatrix_IndexValues (Jac);
|
||||
|
||||
for (int i = 0; i < num + 1; i++)
|
||||
colptrs[i] = jac.cidx(i);
|
||||
|
||||
+ double *d = SUNSparseMatrix_Data (Jac);
|
||||
for (int i = 0; i < jac.nnz (); i++)
|
||||
{
|
||||
rowvals[i] = jac.ridx(i);
|
||||
- Jac->data[i] = jac.data(i);
|
||||
+ d[i] = jac.data(i);
|
||||
}
|
||||
|
||||
END_INTERRUPT_WITH_EXCEPTIONS;
|
||||
@@ -566,7 +620,7 @@ namespace octave
|
||||
|
||||
//main loop
|
||||
while (((posdirection == 1 && tsol < tend)
|
||||
- || (posdirection == 0 && tsol > tend))
|
||||
+ || (posdirection == 0 && tsol > tend))
|
||||
&& status == 0)
|
||||
{
|
||||
if (IDASolve (mem, tend, &tsol, yy, yyp, IDA_ONE_STEP) != 0)
|
||||
@@ -691,7 +745,7 @@ namespace octave
|
||||
// Linear interpolation
|
||||
ie(0) = index(0);
|
||||
te(0) = tsol - val (index(0)) * (tsol - told)
|
||||
- / (val (index(0)) - oldval (index(0)));
|
||||
+ / (val (index(0)) - oldval (index(0)));
|
||||
|
||||
ColumnVector ytemp
|
||||
= y - ((tsol - te(0)) * (y - yold) / (tsol - told));
|
||||
@@ -716,7 +770,7 @@ namespace octave
|
||||
// Linear interpolation
|
||||
ie(temp+i) = index(i);
|
||||
te(temp+i) = tsol - val(index(i)) * (tsol - told)
|
||||
- / (val(index(i)) - oldval(index(i)));
|
||||
+ / (val(index(i)) - oldval(index(i)));
|
||||
|
||||
ColumnVector ytemp
|
||||
= y - (tsol - te (temp + i)) * (y - yold) / (tsol - told);
|
||||
@@ -1095,7 +1149,7 @@ namespace octave
|
||||
event_fcn = options.getfield("Events").function_value ();
|
||||
|
||||
// Set up linear solver
|
||||
- dae.set_up ();
|
||||
+ dae.set_up (y0);
|
||||
|
||||
// Integrate
|
||||
retval = dae.integrate (numt, tspan, y0, yp0, refine,
|
||||
diff -up octave-4.4.1/m4/acinclude.m4.sundials3 octave-4.4.1/m4/acinclude.m4
|
||||
--- octave-4.4.1/m4/acinclude.m4.sundials3 2018-08-09 12:20:32.000000000 -0600
|
||||
+++ octave-4.4.1/m4/acinclude.m4 2018-10-28 14:06:56.909293633 -0600
|
||||
@@ -2174,14 +2174,11 @@ dnl Check whether SUNDIALS IDA library i
|
||||
dnl precision realtype.
|
||||
dnl
|
||||
AC_DEFUN([OCTAVE_CHECK_SUNDIALS_SIZEOF_REALTYPE], [
|
||||
- AC_CHECK_HEADERS([ida/ida.h ida.h])
|
||||
AC_CACHE_CHECK([whether SUNDIALS IDA is configured with double precision realtype],
|
||||
[octave_cv_sundials_realtype_is_double],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#if defined (HAVE_IDA_IDA_H)
|
||||
#include <ida/ida.h>
|
||||
- #else
|
||||
- #include <ida.h>
|
||||
#endif
|
||||
#include <assert.h>
|
||||
]], [[
|
||||
@@ -2197,61 +2194,72 @@ AC_DEFUN([OCTAVE_CHECK_SUNDIALS_SIZEOF_R
|
||||
fi
|
||||
])
|
||||
dnl
|
||||
-dnl Check whether SUNDIALS IDA library is configured with IDAKLU
|
||||
+dnl Check whether SUNDIALS IDA library is configured with SUNLINSOL_KLU
|
||||
dnl enabled.
|
||||
dnl
|
||||
-AC_DEFUN([OCTAVE_CHECK_SUNDIALS_IDAKLU], [
|
||||
- AC_CHECK_HEADERS([ida/ida_klu.h ida_klu.h])
|
||||
- AC_CACHE_CHECK([whether SUNDIALS IDA is configured with IDAKLU enabled],
|
||||
- [octave_cv_sundials_idaklu],
|
||||
+AC_DEFUN([OCTAVE_CHECK_SUNDIALS_SUNLINSOL_KLU], [
|
||||
+ AC_CHECK_HEADERS([sundials/sundials_sparse.h sunlinsol/sunlinsol_klu.h sunmatrix/sunmatrix_sparse.h])
|
||||
+ AC_CACHE_CHECK([whether SUNDIALS IDA is configured with SUNLINSOL_KLU enabled],
|
||||
+ [octave_cv_sundials_sunlinsol_klu],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
- #if defined (HAVE_IDA_IDA_KLU_H)
|
||||
- #include <ida/ida_klu.h>
|
||||
- #else
|
||||
- #include <ida_klu.h>
|
||||
+ #if defined (HAVE_IDA_IDA_H)
|
||||
+ #include <ida/ida.h>
|
||||
+ #endif
|
||||
+ #if defined (HAVE_SUNDIALS_SUNDIALS_SPARSE_H)
|
||||
+ #include <sundials/sundials_sparse.h>
|
||||
+ #endif
|
||||
+ #if defined (HAVE_SUNLINSOL_SUNLINSOL_KLU_H)
|
||||
+ #include <sunlinsol/sunlinsol_klu.h>
|
||||
#endif
|
||||
]], [[
|
||||
- IDAKLU (0, 0, 0, 0);
|
||||
+ SUNKLU (0, 0);
|
||||
]])],
|
||||
- octave_cv_sundials_idaklu=yes,
|
||||
- octave_cv_sundials_idaklu=no)
|
||||
+ octave_cv_sundials_sunlinsol_klu=yes,
|
||||
+ octave_cv_sundials_sunlinsol_klu=no)
|
||||
])
|
||||
- if test $octave_cv_sundials_idaklu = yes; then
|
||||
- AC_DEFINE(HAVE_SUNDIALS_IDAKLU, 1,
|
||||
- [Define to 1 if SUNDIALS IDA is configured with IDAKLU enabled.])
|
||||
+ if test $octave_cv_sundials_sunlinsol_klu = yes; then
|
||||
+ AC_DEFINE(HAVE_SUNDIALS_SUNLINSOL_KLU, 1,
|
||||
+ [Define to 1 if SUNDIALS IDA is configured with SUNLINSOL_KLU enabled.])
|
||||
else
|
||||
- warn_sundials_idaklu="SUNDIALS IDA library not configured with IDAKLU, ode15i and ode15s will not support the sparse Jacobian feature"
|
||||
- OCTAVE_CONFIGURE_WARNING([warn_sundials_idaklu])
|
||||
+ warn_sundials_idaklu="SUNDIALS IDA library not configured with SUNLINSOL_KLU, ode15i and ode15s will not support the sparse Jacobian feature"
|
||||
+ OCTAVE_CONFIGURE_WARNING([warn_sundials_sunlinsol_klu])
|
||||
fi
|
||||
])
|
||||
dnl
|
||||
-dnl Check whether SUNDIALS IDA library has the IDADENSE linear solver.
|
||||
+dnl Check whether SUNDIALS IDA library has the SUNLINSOL_DENSE linear solver.
|
||||
dnl The IDADENSE API was removed in SUNDIALS version 3.0.0.
|
||||
dnl
|
||||
-AC_DEFUN([OCTAVE_CHECK_SUNDIALS_IDA_DENSE], [
|
||||
- AC_CHECK_HEADERS([ida/ida_dense.h ida_dense.h])
|
||||
- AC_CACHE_CHECK([whether SUNDIALS IDA includes the IDADENSE linear solver],
|
||||
- [octave_cv_sundials_ida_dense],
|
||||
+AC_DEFUN([OCTAVE_CHECK_SUNDIALS_SUNLINSOL_DENSE], [
|
||||
+ AC_CHECK_HEADERS([sunlinsol/sunlinsol_dense.h sundials/sundials_matrix.h sundials/sundials_linearsolver.h ida/ida_direct.h])
|
||||
+ AC_CACHE_CHECK([whether SUNDIALS IDA includes the SUNLINSOL_DENSE linear solver],
|
||||
+ [octave_cv_sundials_sunlinsol_dense],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
- #if defined (HAVE_IDA_IDA_DENSE_H)
|
||||
- #include <ida/ida_dense.h>
|
||||
- #else
|
||||
- #include <ida_dense.h>
|
||||
+ #if defined (HAVE_IDA_IDA_H)
|
||||
+ #include <ida/ida.h>
|
||||
+ #endif
|
||||
+ #if defined (HAVE_SUNDIALS_SUNDIALS_MATRIX_H)
|
||||
+ #include <sundials/sundials_matrix.h>
|
||||
+ #endif
|
||||
+ #if defined (HAVE_SUNDIALS_SUNDIALS_LINEARSOLVER_H)
|
||||
+ #include <sundials/sundials_linearsolver.h>
|
||||
#endif
|
||||
+ #if defined (HAVE_IDA_IDA_DIRECT_H)
|
||||
+ #include <ida/ida_direct.h>
|
||||
+ #endif
|
||||
]], [[
|
||||
void *mem = 0;
|
||||
long int num = 0;
|
||||
IDADense (mem, num);
|
||||
]])],
|
||||
- octave_cv_sundials_ida_dense=yes,
|
||||
- octave_cv_sundials_ida_dense=no)
|
||||
+ octave_cv_sundials_sunlinsol_dense=yes,
|
||||
+ octave_cv_sundials_sunlinsol_dense=no)
|
||||
])
|
||||
- if test $octave_cv_sundials_ida_dense = yes; then
|
||||
- AC_DEFINE(HAVE_SUNDIALS_IDADENSE, 1,
|
||||
- [Define to 1 if SUNDIALS IDA includes the IDADENSE linear solver.])
|
||||
+ if test $octave_cv_sundials_sunlinsol_dense = yes; then
|
||||
+ AC_DEFINE(HAVE_SUNDIALS_SUNLINSOL_DENSE, 1,
|
||||
+ [Define to 1 if SUNDIALS IDA includes the SUNLINSOL_DENSE linear solver.])
|
||||
else
|
||||
- warn_sundials_ida_dense="SUNDIALS IDA library does not include the IDADENSE linear solver, ode15i and ode15s will be disabled"
|
||||
- OCTAVE_CONFIGURE_WARNING([warn_sundials_ida_dense])
|
||||
+ warn_sundials_ida_dense="SUNDIALS IDA library does not include the SUNLINSOL_DENSE linear solver, ode15i and ode15s will be disabled"
|
||||
+ OCTAVE_CONFIGURE_WARNING([warn_sundials_sunlinsol_dense])
|
||||
fi
|
||||
])
|
||||
dnl
|
||||
diff -up octave-4.4.1/scripts/ode/ode15i.m.sundials3 octave-4.4.1/scripts/ode/ode15i.m
|
||||
--- octave-4.4.1/scripts/ode/ode15i.m.sundials3 2018-08-09 12:20:32.000000000 -0600
|
||||
+++ octave-4.4.1/scripts/ode/ode15i.m 2018-10-28 14:06:56.909293633 -0600
|
||||
@@ -452,7 +452,7 @@ endfunction
|
||||
%! assert ([t(end), y(end,:)], fref, 1e-3);
|
||||
|
||||
## Jacobian fun sparse
|
||||
-%!testif HAVE_SUNDIALS_IDAKLU
|
||||
+%!testif HAVE_SUNDIALS_SUNLINSOL_KLU
|
||||
%! opt = odeset ("Jacobian", @jacfunsparse, "AbsTol", 1e-7, "RelTol", 1e-7);
|
||||
%! [t, y] = ode15i (@rob, [0, 100], [1; 0; 0], [-1e-4; 1e-4; 0], opt);
|
||||
%! assert ([t(end), y(end,:)], fref, 1e-3);
|
||||
@@ -545,7 +545,7 @@ endfunction
|
||||
%! "invalid value assigned to field 'Jacobian'");
|
||||
|
||||
## Jacobian cell sparse wrong dimension
|
||||
-%!testif HAVE_SUNDIALS_IDAKLU
|
||||
+%!testif HAVE_SUNDIALS_SUNLINSOL_KLU
|
||||
%! DFDY = sparse ([-0.04, 1;
|
||||
%! 0.04, 1]);
|
||||
%! DFDYP = sparse ([-1, 0, 0;
|
||||
diff -up octave-4.4.1/scripts/ode/ode15s.m.sundials3 octave-4.4.1/scripts/ode/ode15s.m
|
||||
--- octave-4.4.1/scripts/ode/ode15s.m.sundials3 2018-08-09 12:20:32.000000000 -0600
|
||||
+++ octave-4.4.1/scripts/ode/ode15s.m 2018-10-28 14:06:56.910293641 -0600
|
||||
@@ -545,21 +545,21 @@ endfunction
|
||||
%! [t, y] = ode15s (@rob, [0, 100], [1; 0; 0], opt);
|
||||
%! assert ([t(end), y(end,:)], frefrob, 1e-3);
|
||||
|
||||
-%!testif HAVE_SUNDIALS_IDAKLU
|
||||
+%!testif HAVE_SUNDIALS_SUNLINSOL_KLU
|
||||
%! opt = odeset ("MStateDependence", "none",
|
||||
%! "Mass", [1, 0, 0; 0, 1, 0; 0, 0, 0],
|
||||
%! "Jacobian", @jacfunsparse);
|
||||
%! [t, y] = ode15s (@rob, [0, 100], [1; 0; 0], opt);
|
||||
%! assert ([t(end), y(end,:)], frefrob, 1e-3);
|
||||
|
||||
-%!testif HAVE_SUNDIALS_IDAKLU
|
||||
+%!testif HAVE_SUNDIALS_SUNLINSOL_KLU
|
||||
%! opt = odeset ("MStateDependence", "none",
|
||||
%! "Mass", sparse ([1, 0, 0; 0, 1, 0; 0, 0, 0]),
|
||||
%! "Jacobian", @jacfunsparse);
|
||||
%! [t, y] = ode15s (@rob, [0, 100], [1; 0; 0], opt);
|
||||
%! assert ([t(end), y(end,:)], frefrob, 1e-3);
|
||||
|
||||
-%!testif HAVE_SUNDIALS_IDAKLU
|
||||
+%!testif HAVE_SUNDIALS_SUNLINSOL_KLU
|
||||
%! warning ("off", "ode15s:mass_state_dependent_provided", "local");
|
||||
%! opt = odeset ("MStateDependence", "none",
|
||||
%! "Mass", @massdensefunstate,
|
||||
@@ -575,14 +575,14 @@ endfunction
|
||||
%! [t, y] = ode15s (@rob, [0, 100], [1; 0; 0], opt);
|
||||
%! assert ([t(end), y(end,:)], frefrob, 1e-3);
|
||||
|
||||
-%!testif HAVE_SUNDIALS_IDAKLU
|
||||
+%!testif HAVE_SUNDIALS_SUNLINSOL_KLU
|
||||
%! opt = odeset ("MStateDependence", "none",
|
||||
%! "Mass", @massdensefuntime,
|
||||
%! "Jacobian", @jacfunsparse);
|
||||
%! [t, y] = ode15s (@rob, [0, 100], [1; 0; 0], opt);
|
||||
%! assert ([t(end), y(end,:)], frefrob, 1e-3);
|
||||
|
||||
-%!testif HAVE_SUNDIALS_IDAKLU
|
||||
+%!testif HAVE_SUNDIALS_SUNLINSOL_KLU
|
||||
%! opt = odeset ("MStateDependence", "none",
|
||||
%! "Mass", @masssparsefuntime,
|
||||
%! "Jacobian", @jacfunsparse);
|
75
octave.spec
75
octave.spec
@ -1,5 +1,5 @@
|
||||
# From src/version.h:#define OCTAVE_API_VERSION
|
||||
%global octave_api api-v51
|
||||
%global octave_api api-v52
|
||||
|
||||
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
|
||||
|
||||
@ -20,8 +20,8 @@
|
||||
|
||||
Name: octave
|
||||
Epoch: 6
|
||||
Version: 4.2.2
|
||||
Release: 6%{?rcver:.rc%{rcver}}%{?dist}.1
|
||||
Version: 4.4.1
|
||||
Release: 1%{?rcver:.rc%{rcver}}%{?dist}
|
||||
Summary: A high-level language for numerical computations
|
||||
License: GPLv3+
|
||||
URL: http://www.octave.org
|
||||
@ -34,16 +34,14 @@ Source0: ftp://alpha.gnu.org/gnu/octave/octave-%{version}%{rctag}.tar.lz
|
||||
# RPM macros for helping to build Octave packages
|
||||
Source1: macros.octave
|
||||
Source2: xorg.conf
|
||||
# Prebuilt docs from Fedora for EPEL
|
||||
Source3: octave-4.4.1-docs.tar.gz
|
||||
# Fix crash with Ctrl-D
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1589460
|
||||
Patch0: octave-crash.patch
|
||||
# Remove project_group from appdata.xml file
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1293561
|
||||
Patch2: octave-appdata.patch
|
||||
# Add needed #include <math.h> to bring in gnulib
|
||||
Patch4: octave-gnulib.patch
|
||||
# Add #include <QButtonGroup> to fix build with latest Qt
|
||||
Patch5: octave-qbuttongroup.patch
|
||||
# SUNDIALS 3 support
|
||||
# https://savannah.gnu.org/bugs/?52475
|
||||
Patch1: octave-sundials3.patch
|
||||
|
||||
Provides: octave(api) = %{octave_api}
|
||||
Provides: bundled(gnulib)
|
||||
@ -67,6 +65,7 @@ Provides: bundled(slatec-fn)
|
||||
BuildRequires: lzip
|
||||
|
||||
# For autoreconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: libtool
|
||||
# For validating desktop and appdata files
|
||||
BuildRequires: desktop-file-utils
|
||||
@ -81,6 +80,7 @@ BuildRequires: openblas-devel
|
||||
BuildRequires: atlas-devel
|
||||
%endif
|
||||
BuildRequires: bison
|
||||
BuildRequires: bzip2-devel
|
||||
BuildRequires: curl-devel
|
||||
BuildRequires: fftw-devel
|
||||
BuildRequires: flex
|
||||
@ -96,6 +96,9 @@ BuildRequires: gperf
|
||||
BuildRequires: GraphicsMagick-c++-devel
|
||||
BuildRequires: hdf5-devel
|
||||
BuildRequires: java-devel
|
||||
%if 0%{?fedora}
|
||||
BuildRequires: javapackages-local
|
||||
%endif
|
||||
BuildRequires: less
|
||||
BuildRequires: libsndfile-devel
|
||||
BuildRequires: libX11-devel
|
||||
@ -111,11 +114,13 @@ BuildRequires: qrupdate-devel
|
||||
%if %{with qt5}
|
||||
BuildRequires: qscintilla-qt5-devel
|
||||
BuildRequires: qt5-linguist
|
||||
BuildRequires: qt5-qttools-devel
|
||||
%else
|
||||
BuildRequires: qscintilla-devel
|
||||
%endif
|
||||
BuildRequires: readline-devel
|
||||
BuildRequires: suitesparse-devel
|
||||
BuildRequires: sundials-devel
|
||||
BuildRequires: tex(dvips)
|
||||
BuildRequires: texinfo
|
||||
BuildRequires: texinfo-tex
|
||||
@ -209,30 +214,19 @@ This package contains documentation for Octave.
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}%{?rctag}
|
||||
%patch0 -p1 -b .crash
|
||||
%patch2 -p1 -b .appdata
|
||||
%patch4 -p1 -b .gnulib
|
||||
%patch5 -p1 -b .qbuttongroup
|
||||
# __osmesa_print__ test is triggering a crash in libgcc, disable it
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78409
|
||||
#sed -i -e '/^%!/d' libinterp/dldfcn/__osmesa_print__.cc
|
||||
# Explicitly use gnulib headers
|
||||
%if 0%{?fedora} >= 24
|
||||
#find -name \*.cc -o -name \*.h -o -name \*.yy | xargs sed -i -e 's/#include <c\(math\|stdlib\)>/#include <\1.h>/'
|
||||
%endif
|
||||
#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
|
||||
find -name *.cc -exec chmod 644 {} \;
|
||||
# EPEL7's autoconf/automake is too old so don't do
|
||||
# unneeded patches there
|
||||
%if 0%{?fedora}
|
||||
%patch1 -p1 -b .sundials3
|
||||
|
||||
# Remove unused fftpack
|
||||
sed -i -e '/fftpack/d' liboctave/cruft/module.mk
|
||||
rm -r liboctave/cruft/fftpack
|
||||
|
||||
# libinterp/dldfcn/__osmesa_print__.cc-tst is segfaulting
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78409
|
||||
sed -i -e '/^%/d' libinterp/dldfcn/__osmesa_print__.cc scripts/plot/util/{__opengl_info__,__pltopt__,allchild}.m test/publish/publish.tst
|
||||
sed -i -e '/fftpack/d' liboctave/external/module.mk
|
||||
rm -r liboctave/external/fftpack
|
||||
|
||||
# Touching module.mk appears to trigger the need for this
|
||||
autoreconf -i
|
||||
%endif
|
||||
|
||||
|
||||
%build
|
||||
%global enable64 no
|
||||
@ -254,6 +248,8 @@ libjvm=$(find /usr/lib/jvm/jre/lib -name libjvm.so -printf %h)
|
||||
export JAVA_HOME=%{java_home}
|
||||
# JIT support is still experimental, and causes a segfault on ARM.
|
||||
# --enable-float-truncate - https://savannah.gnu.org/bugs/?40560
|
||||
# sundials headers need to know where to find suitesparse headers
|
||||
export CPPFLAGS=-I%{_includedir}/suitesparse
|
||||
%configure --enable-shared --disable-static --enable-64=%enable64 \
|
||||
--enable-float-truncate \
|
||||
%{?disabledocs} \
|
||||
@ -262,6 +258,7 @@ export JAVA_HOME=%{java_home}
|
||||
--with-blas="-L%{_libdir}/atlas %{atlasblaslib}" \
|
||||
--with-lapack="-L%{_libdir}/atlas %{atlaslapacklib}" \
|
||||
%endif
|
||||
--with-java-includedir=/usr/lib/jvm/java/include \
|
||||
--with-java-libdir=$libjvm \
|
||||
--with-qrupdate \
|
||||
--with-amd --with-umfpack --with-colamd --with-ccolamd --with-cholmod \
|
||||
@ -290,6 +287,9 @@ cp -a doc/refcard/*.pdf %{buildroot}%{_pkgdocdir}/
|
||||
# No info directory
|
||||
rm -f %{buildroot}%{_infodir}/dir
|
||||
|
||||
# EL7's makeinfo doesn't support @sortas, so use prebuilt docs
|
||||
%{?el7:tar xvf %SOURCE3 -C %{buildroot}}
|
||||
|
||||
# Make library links
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
|
||||
echo "%{_libdir}/octave/%{version}%{?rctag}" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/octave-%{_arch}.conf
|
||||
@ -300,9 +300,11 @@ perl -pi -e "s,%{buildroot},," %{buildroot}%{_datadir}/%{name}/ls-R
|
||||
# Make sure ls-R exists
|
||||
touch %{buildroot}%{_datadir}/%{name}/ls-R
|
||||
|
||||
desktop-file-validate %{buildroot}%{_datadir}/applications/www.octave.org-octave.desktop
|
||||
desktop-file-validate %{buildroot}%{_datadir}/applications/org.octave.Octave.desktop
|
||||
# RHEL7 still doesn't like the GNU project_group
|
||||
%{?el7:sed -i -e /project_group/d %{buildroot}/%{_datadir}/metainfo/org.octave.Octave.appdata.xml}
|
||||
%if 0%{?fedora} || 0%{?rhel} >= 7
|
||||
appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/*.appdata.xml
|
||||
appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/metainfo/org.octave.Octave.appdata.xml
|
||||
%endif
|
||||
|
||||
# Create directories for add-on packages
|
||||
@ -314,7 +316,7 @@ mkdir -p %{buildroot}%{_libdir}/%{name}/packages
|
||||
touch %{buildroot}%{_datadir}/%{name}/octave_packages
|
||||
|
||||
# Fix multilib installs
|
||||
for include in config defaults
|
||||
for include in octave-config defaults
|
||||
do
|
||||
mv %{buildroot}%{_includedir}/%{name}-%{version}%{?rctag}/%{name}/${include}.h \
|
||||
%{buildroot}%{_includedir}/%{name}-%{version}%{?rctag}/%{name}/${include}-%{__isa_bits}.h
|
||||
@ -417,10 +419,10 @@ fi
|
||||
%{_mandir}/man1/octave*.1.*
|
||||
%{_infodir}/liboctave.info*
|
||||
%{_infodir}/octave.info*
|
||||
%{_datadir}/appdata/www.octave.org-octave.appdata.xml
|
||||
%{_datadir}/applications/www.octave.org-octave.desktop
|
||||
%{_datadir}/applications/org.octave.Octave.desktop
|
||||
%{_datadir}/icons/hicolor/*/apps/octave.png
|
||||
%{_datadir}/icons/hicolor/scalable/apps/octave.svg
|
||||
%{_datadir}/metainfo/org.octave.Octave.appdata.xml
|
||||
# octave_packages is %ghost, so need to list everything else separately
|
||||
%dir %{_datadir}/octave
|
||||
%{_datadir}/octave/%{version}%{?rctag}/
|
||||
@ -445,6 +447,9 @@ fi
|
||||
%{_pkgdocdir}/refcard*.pdf
|
||||
|
||||
%changelog
|
||||
* Sun Nov 11 2018 Orion Poplawski <orion@nwra.com> - 6:4.4.1-1
|
||||
- Update to 4.4.1
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 6:4.2.2-6.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
|
3
sources
3
sources
@ -1 +1,2 @@
|
||||
SHA512 (octave-4.2.2.tar.lz) = 694453eeda99047a216c047f0d0147ce7ec89497cba766927734bb9e82eb9f9c00a5c2ddc7f9af6796fcec8f85c8102ece20db6f8ba0a7d5e9a486bcff3ab069
|
||||
SHA512 (octave-4.4.1.tar.lz) = 8fbc6d35ae2bcd14b5cd52c30f761c87940c25ad514984fdb4baa6c99d6d371cb76e07cc50b020eb19470348674b3cd7069ed0eb20010dc3826a6e78781c0fa0
|
||||
SHA512 (octave-4.4.1-docs.tar.gz) = e970d512bb036f5954e3b8c9ac246c1624e9964fa2aeadc0f84dac01cc37af7f8fe5e93329d11ccc9ae442bfbaa1625dd2a21bc157c99d0992f5e1feada6f620
|
||||
|
Loading…
Reference in New Issue
Block a user