Compare commits

..

No commits in common. "f38" and "master" have entirely different histories.
f38 ... master

8 changed files with 591 additions and 228 deletions

11
.gitignore vendored
View File

@ -32,14 +32,3 @@ octave-3.2.4.tar.bz2
/octave-4.4.1-docs.tar.gz
/octave-5.1.0.tar.lz
/octave-5.1.0-docs.tar.lz
/octave-5.2.0.tar.lz
/octave-5.2.0-docs.tar.lz
/octave-6.1.0.tar.lz
/octave-6.1.0-docs.tar.lz
/octave-6.2.0.tar.lz
/octave-6.3.0.tar.lz
/octave-6.4.0.tar.lz
/octave-7.1.0.tar.lz
/octave-7.2.0.tar.lz
/octave-7.3.0.tar.lz
/octave-7.3.0-docs.tar.xz

View File

@ -43,7 +43,7 @@
%octave_pkg_install \
mkdir -p %{buildroot}%{octprefix} \
mkdir -p %{buildroot}%{octarchprefix} \
%octave_cmd pkg("prefix","%{buildroot}%{octprefix}","%{buildroot}%{octarchprefix}");pkg("global_list",fullfile("%{buildroot}%{octshareprefix}","octave_packages"));pkg("install","-nodeps","-verbose",glob("%{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}-*.tar.gz"){1,1});unlink(pkg("global_list")); \
%octave_cmd pkg("prefix","%{buildroot}%{octprefix}","%{buildroot}%{octarchprefix}");pkg("global_list",fullfile("%{buildroot}%{octshareprefix}","octave_packages"));pkg("local_list",fullfile("%{buildroot}%{octshareprefix}","octave_packages"));pkg("install","-nodeps","-verbose",glob("%{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}-*.tar.gz"){1,1});unlink(pkg("local_list"));unlink(pkg("global_list")); \
if [ -e %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m ] \
then \
mv %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m.orig \
@ -67,7 +67,7 @@ fi \
# any shared objects.
%octave_pkg_check \
%octave_cmd pkg("prefix","%{buildroot}%{octprefix}","%{buildroot}%{octarchprefix}");pkg("local_list",fullfile("%{buildroot}%{octshareprefix}","octave_packages"));pkg("list");pkg("install","-verbose",glob("%{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}-*.tar.gz"){1,1});pkg("load","%{octpkg}");pkg("list");runtests("%{buildroot}%{octpkgdir}");unlink(pkg("local_list")); \
/usr/lib/rpm/brp-strip %{__strip} \
/usr/lib/rpm/brp-strip-shared %{__strip} \
%{nil}
# preun script - we need to remove our uninstall protection and perhaps

12
octave-crash.patch Normal file
View File

@ -0,0 +1,12 @@
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.back () != '\n')
+ if (!retval.empty () && retval.back () != '\n')
octave_diary << "\n";
}
else

28
octave-eof.patch Normal file
View File

@ -0,0 +1,28 @@
# HG changeset patch
# User Mike Miller <mtmiller@octave.org>
# Date 1554238576 25200
# Node ID c3716220d5b93c49e1c7cc8ebe0b76dd961f4ec7
# Parent fc73dafece570f201c18a4eb4a8729a654cfcfbb
fix pause and kbhit with glibc 2.28 end-of-file state behavior (bug #55029)
* sysdep.cc (octave::kbhit): Call "clearerr (stdin)" on end-of-file condition
in addition to "std::cin.clear ()". In glibc 2.28, end-of-file is persistent
and must be cleared by the application.
diff --git a/libinterp/corefcn/sysdep.cc b/libinterp/corefcn/sysdep.cc
--- a/libinterp/corefcn/sysdep.cc
+++ b/libinterp/corefcn/sysdep.cc
@@ -566,7 +566,10 @@
int c = std::cin.get ();
if (std::cin.fail () || std::cin.eof ())
- std::cin.clear ();
+ {
+ std::cin.clear ();
+ clearerr (stdin);
+ }
// Restore it, enabling system call restarts (if possible).
octave::set_interrupt_handler (saved_interrupt_handler, true);

504
octave-sundials3.patch Normal file
View File

@ -0,0 +1,504 @@
diff -up octave-5.0.91/configure.ac.sundials3 octave-5.0.91/configure.ac
--- octave-5.0.91/configure.ac.sundials3 2019-02-04 10:50:20.000000000 -0700
+++ octave-5.0.91/configure.ac 2019-02-05 22:05:44.096260529 -0700
@@ -2220,15 +2220,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-5.0.91/libinterp/dldfcn/__ode15__.cc.sundials3 octave-5.0.91/libinterp/dldfcn/__ode15__.cc
--- octave-5.0.91/libinterp/dldfcn/__ode15__.cc.sundials3 2019-02-04 10:50:20.000000000 -0700
+++ octave-5.0.91/libinterp/dldfcn/__ode15__.cc 2019-02-05 22:06:48.074012827 -0700
@@ -1,6 +1,7 @@
/*
Copyright (C) 2016-2019 Francesco Faccio <francesco.faccio@mail.polimi.it>
+Copyright (C) 2018 William Greene <w.h.greene@gmail.com>
This file is part of Octave.
@@ -44,15 +45,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
@@ -112,7 +132,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)
{ }
@@ -122,11 +143,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)
@@ -184,7 +211,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);
@@ -199,25 +226,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);
@@ -227,7 +253,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);
@@ -291,6 +317,8 @@ namespace octave
DAEJacFuncSparse jacspfun;
DAEJacCellDense jacdcell;
DAEJacCellSparse jacspcell;
+ SUNMatrix sunJacMatrix;
+ SUNLinearSolver sunLinearSolver;
};
int
@@ -323,36 +351,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);
@@ -366,15 +419,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;
@@ -390,17 +443,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;
@@ -567,7 +621,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)
@@ -692,7 +746,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));
@@ -717,7 +771,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);
@@ -1096,7 +1150,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-5.0.91/m4/acinclude.m4.sundials3 octave-5.0.91/m4/acinclude.m4
--- octave-5.0.91/m4/acinclude.m4.sundials3 2019-02-04 10:50:20.000000000 -0700
+++ octave-5.0.91/m4/acinclude.m4 2019-02-05 22:05:44.100260576 -0700
@@ -2210,14 +2210,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>
]], [[
@@ -2233,61 +2230,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-5.0.91/scripts/ode/ode15i.m.sundials3 octave-5.0.91/scripts/ode/ode15i.m
--- octave-5.0.91/scripts/ode/ode15i.m.sundials3 2019-02-04 10:50:20.000000000 -0700
+++ octave-5.0.91/scripts/ode/ode15i.m 2019-02-05 22:05:44.101260588 -0700
@@ -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-5.0.91/scripts/ode/ode15s.m.sundials3 octave-5.0.91/scripts/ode/ode15s.m
--- octave-5.0.91/scripts/ode/ode15s.m.sundials3 2019-02-04 10:50:20.000000000 -0700
+++ octave-5.0.91/scripts/ode/ode15s.m 2019-02-05 22:05:44.102260599 -0700
@@ -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);

View File

@ -1,11 +0,0 @@
diff -up octave-7.1.0/liboctave/numeric/randmtzig.cc.time octave-7.1.0/liboctave/numeric/randmtzig.cc
--- octave-7.1.0/liboctave/numeric/randmtzig.cc.time 2022-04-06 08:05:12.000000000 -0600
+++ octave-7.1.0/liboctave/numeric/randmtzig.cc 2022-07-09 23:03:37.970793323 -0600
@@ -163,6 +163,7 @@
#include <algorithm>
#include <random>
+#include <time.h>
#include "oct-syscalls.h"
#include "oct-time.h"

View File

@ -1,35 +1,17 @@
# From src/version.h:#define OCTAVE_API_VERSION
%global octave_api api-v57
%global octave_api api-v53
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
%if 0%{?fedora} >= 38
# Infinite loop with texinfo 7
# https://savannah.gnu.org/bugs/index.php?63810
%global builddocs 0
%else
%global builddocs 1
%endif
# Use Qt5 on F26+
%if 0%{?fedora}
%bcond_without flexiblas
%endif
%if %{with flexiblas}
%global blaslib flexiblas
%bcond_without qt5
%else
%global blaslib openblas
%bcond_with qt5
%endif
# No more Java on i686
%ifarch %{java_arches}
%bcond_without java
%else
%bcond_with java
%endif
# Compile with ILP64 BLAS - not yet working
%bcond_with blas64
# For rc versions, change release manually
#global rcver 2
%if 0%{?rcver:1}
@ -37,13 +19,10 @@
%global relsuf .rc%{?rcver}
%endif
%global optflags %{optflags}
%global build_ldflags %{build_ldflags} -flto
Name: octave
Epoch: 6
Version: 7.3.0
Release: 3%{?dist}
Version: 5.1.0
Release: 2%{?rcver:.rc%{rcver}}%{?dist}
Summary: A high-level language for numerical computations
License: GPLv3+
URL: http://www.octave.org
@ -53,11 +32,15 @@ Source0: https://ftp.gnu.org/gnu/octave/octave-%{version}.tar.lz
# RPM macros for helping to build Octave packages
Source1: macros.octave
Source2: xorg.conf
%if !%{builddocs}
Source3: octave-%{version}-docs.tar.xz
%endif
# Add needed time.h header
Patch2: octave-time.patch
# Prebuilt docs from Fedora for EPEL
Source3: octave-5.1.0-docs.tar.lz
# SUNDIALS 3 support
# https://savannah.gnu.org/bugs/?52475
Patch1: octave-sundials3.patch
# Proper EOF handling
# https://bugzilla.redhat.com/show_bug.cgi?id=1705129
# https://hg.savannah.gnu.org/hgweb/octave/rev/c3716220d5b9
Patch2: octave-eof.patch
Provides: octave(api) = %{octave_api}
Provides: bundled(gnulib)
@ -78,7 +61,6 @@ Provides: bundled(slatec-err)
Provides: bundled(slatec-fn)
# For Source0
BuildRequires: make
BuildRequires: lzip
# For autoreconf
@ -86,10 +68,12 @@ BuildRequires: automake
BuildRequires: libtool
# For validating desktop and appdata files
BuildRequires: desktop-file-utils
%if 0%{?fedora} || 0%{?rhel} >= 7
BuildRequires: libappstream-glib
%endif
BuildRequires: arpack-devel
BuildRequires: %{blaslib}-devel
BuildRequires: openblas-devel
BuildRequires: bison
BuildRequires: bzip2-devel
BuildRequires: curl-devel
@ -106,12 +90,10 @@ BuildRequires: gnuplot
BuildRequires: gperf
BuildRequires: GraphicsMagick-c++-devel
BuildRequires: hdf5-devel
%if %{with java}
BuildRequires: java-devel
%if 0%{?fedora}
BuildRequires: javapackages-local
%endif
%endif
BuildRequires: less
BuildRequires: libsndfile-devel
BuildRequires: libX11-devel
@ -124,27 +106,22 @@ BuildRequires: pcre-devel
BuildRequires: portaudio-devel
BuildRequires: qhull-devel
BuildRequires: qrupdate-devel
# EPEL9 is missing qscintilla-qt5-devel - https://bugzilla.redhat.com/show_bug.cgi?id=2092182
%if 0%{?fedora} || 0%{?rhel} != 9
%if %{with qt5}
BuildRequires: qscintilla-qt5-devel
%endif
BuildRequires: qt5-linguist
BuildRequires: qt5-qttools-devel
BuildRequires: rapidjson-devel
BuildRequires: readline-devel
%if %{with blas64}
BuildRequires: suitesparse64-devel
%else
BuildRequires: qscintilla-devel
%endif
BuildRequires: readline-devel
BuildRequires: suitesparse-devel
%endif
# EPEL9 is missing sundials - https://bugzilla.redhat.com/show_bug.cgi?id=2063760
%if 0%{?fedora} || 0%{?rhel} != 9
BuildRequires: sundials-devel
%endif
BuildRequires: tex(dvips)
BuildRequires: texinfo
BuildRequires: texinfo-tex
%if 0%{?fedora} || 0%{?rhel} >= 7
BuildRequires: texlive-collection-fontsrecommended
%endif
%if 0%{?rhel} >= 7
BuildRequires: texlive-ec
BuildRequires: texlive-metapost
@ -152,6 +129,7 @@ BuildRequires: texlive-metapost
BuildRequires: zlib-devel
# For check
BuildRequires: mesa-dri-drivers
BuildRequires: xorg-x11-apps
%ifnarch s390 s390x
BuildRequires: xorg-x11-drv-dummy
%endif
@ -162,9 +140,7 @@ Requires: gnuplot
Requires: gnuplot-common
Requires: hdf5 = %{_hdf5_version}
Requires: hicolor-icon-theme
%if %{with java}
Requires: java-headless
%endif
Requires: less
Requires: info
Requires: texinfo
@ -208,7 +184,7 @@ Requires: gcc-c++
Requires: gcc-gfortran
Requires: fftw-devel%{?_isa}
Requires: hdf5-devel%{?_isa}
Requires: %{blaslib}-devel%{?_isa}
Requires: openblas-devel%{?_isa}
Requires: readline-devel%{?_isa}
Requires: zlib-devel
Requires: libappstream-glib
@ -226,26 +202,27 @@ BuildArch: noarch
This package contains documentation for Octave.
%prep
%autosetup -p1 -n %{name}-%{version}%{?rctag}
%if %{with blas64}
sed -i -e 's/OCTAVE_CHECK_LIB(suitesparseconfig,/OCTAVE_CHECK_LIB(suitesparseconfig64,/' configure.ac
%setup -q -n %{name}-%{version}%{?rctag}
%patch2 -p1 -b .eof
# EPEL7's autoconf/automake is too old so don't do
# unneeded patches there
%if 0%{?fedora}
%patch1 -p1 -b .sundials3
autoreconf -i
%endif
%build
export AR=%{_bindir}/gcc-ar
export RANLIB=%{_bindir}/gcc-ranlib
export NM=%{_bindir}/gcc-nm
%global enable64 no
export F77=gfortran
# TODO: some items appear to be bundled in libcruft..
# gl2ps.c is bundled. Anything else?
%if !%{builddocs}
%global disabledocs --disable-docs
%endif
%if %{with java}
# Find libjvm.so for this architecture in generic location
libjvm=$(find /usr/lib/jvm/jre/lib -name libjvm.so -printf %h)
export JAVA_HOME=%{java_home}
%endif
# 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
@ -253,23 +230,12 @@ export CPPFLAGS=-I%{_includedir}/suitesparse
# Disable _GLIBCXX_ASSERTIONS for now
# https://savannah.gnu.org/bugs/?55547
export CXXFLAGS="$(echo %optflags | sed s/-Wp,-D_GLIBCXX_ASSERTIONS//)"
verstr=$(%{__cxx} --version | head -1)
if [[ "$verstr" == *"GCC"* ]]; then
CXXFLAGS="$CXXFLAGS -flto=auto"
else
CXXFLAGS="$CXXFLAGS -flto"
fi
%configure --enable-shared --disable-static \
%configure --enable-shared --disable-static --enable-64=%enable64 \
--enable-float-truncate \
%{?disabledocs} \
--disable-silent-rules \
--with-blas=%{blaslib}%{?with_blas64:64} \
%if %{with java}
--with-java-includedir=/usr/lib/jvm/java/include \
--with-java-libdir=$libjvm \
%endif
--with-qrupdate \
--with-amd --with-umfpack --with-colamd --with-ccolamd --with-cholmod \
--with-cxsparse \
@ -293,15 +259,13 @@ make install-data install-html install-info install-pdf DESTDIR=%{buildroot}
mkdir -p %{buildroot}%{_pkgdocdir}
cp -ar AUTHORS BUGS ChangeLog examples NEWS README %{buildroot}%{_pkgdocdir}/
cp -a doc/refcard/*.pdf %{buildroot}%{_pkgdocdir}/
%if !%{builddocs}
tar xvf %SOURCE3 -C %{buildroot}
%endif
find %{buildroot}%{_libdir} -name \*.la -delete
# 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
@ -315,7 +279,9 @@ touch %{buildroot}%{_datadir}/%{name}/ls-R
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}/metainfo/org.octave.Octave.appdata.xml
%endif
# Create directories for add-on packages
HOST_TYPE=`%{buildroot}%{_bindir}/octave-config -p CANONICAL_HOST_TYPE`
@ -395,19 +361,12 @@ fi
$Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xorg.log -config ./xorg.conf :99 &
sleep 2
export DISPLAY=:99
export FLEXIBLAS=netlib
%ifarch ppc64le
# liboctave/array/dMatrix.cc-tst segfaults
make check || :
%else
make check
%endif
make check %{?el7:|| :}
%ldconfig_scriptlets
%files
%license COPYING
%dir %{_pkgdocdir}
%{_pkgdocdir}/AUTHORS
%{_pkgdocdir}/BUGS
%{_pkgdocdir}/ChangeLog
@ -416,17 +375,7 @@ make check
# FIXME: Create an -emacs package that has the emacs addon
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/octave-*.conf
%{_bindir}/octave*
%dir %{_libdir}/octave/
%dir %{_libdir}/octave/%{version}
%{_libdir}/octave/%{version}/liboctave.so.9*
%{_libdir}/octave/%{version}/liboctgui.so.8*
%{_libdir}/octave/%{version}/liboctinterp.so.10*
%{_libdir}/octave/%{version}/mkoctfile-%{version}
%{_libdir}/octave/%{version}/oct/
%{_libdir}/octave/%{version}/octave-config-%{version}
%{_libdir}/octave/%{version}/site/
%{_libdir}/octave/packages/
%{_libdir}/octave/site/
%{_libdir}/octave/
%{_libexecdir}/octave/
%{_mandir}/man1/octave*.1.*
%{_infodir}/liboctave.info*
@ -448,9 +397,6 @@ make check
%{_bindir}/mkoctfile
%{_bindir}/mkoctfile-%{version}%{?rctag}
%{_includedir}/octave-%{version}%{?rctag}/
%{_libdir}/octave/%{version}/liboctave.so
%{_libdir}/octave/%{version}/liboctgui.so
%{_libdir}/octave/%{version}/liboctinterp.so
%{_libdir}/pkgconfig/octave.pc
%{_libdir}/pkgconfig/octinterp.pc
%{_mandir}/man1/mkoctfile.1.*
@ -464,111 +410,6 @@ make check
%{_pkgdocdir}/refcard*.pdf
%changelog
* Sun Feb 26 2023 Orion Poplawski <orion@nwra.com> - 6:7.3.0-3
- Disable building docs due to texinfo 7 incompatibility
* Wed Jan 11 2023 FeRD (Frank Dana> <ferdnyc@gmail.com> - 6:7.3.0-3
- Build with rapidjson to enable built-in json{decode,encode}
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 6:7.3.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Fri Nov 04 2022 Orion Poplawski <orion@nwra.com> - 6:7.3.0-1
- Update to 7.3.0
* Sun Oct 02 2022 Orion Poplawski <orion@nwra.com> - 6:7.2.0-2
- Disable qscintilla and sundials support on EPEL9 for now (bz#2122390)
* Tue Aug 02 2022 Orion Poplawski <orion@nwra.com> - 6:7.2.0-1
- Update to 7.2.0
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 6:7.1.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sun Jul 10 2022 Orion Poplawski <orion@nwra.com> - 6:7.1.0-2
- Drop java for i686 (bz#2104081)
* Thu Apr 07 2022 Orion Poplawski <orion@nwra.com> - 6:7.1.0-1
- Update to 7.1.0
* Mon Feb 07 2022 Orion Poplawski <orion@nwra.com> - 6:6.4.0-5
- Update gnulib cdefs.h for gcc12 support on ppc64le
* Sat Feb 05 2022 Jiri Vanek <jvanek@redhat.com> - 6:6.4.0-4
- Rebuilt for java-17-openjdk as system jdk
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 6:6.4.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Sun Nov 21 2021 Orion Poplawski <orion@nwra.com> - 6:6.4.0-2
- Rebuild for hdf5 1.12.1
* Wed Nov 03 2021 Orion Poplawski <orion@nwra.com> - 6:6.4.0-1
- Update to 6.4.0
* Wed Oct 20 2021 Antonio Trande <sagitter@fedoraproject.org> - 6:6.3.0-2
- Rebuild for sundials-5.8.0
* Tue Aug 10 2021 Orion Poplawski <orion@nwra.com> - 6:6.3.0-1
- Update to 6.3.0
* Mon Aug 09 2021 Orion Poplawski <orion@nwra.com> - 6:6.2.0-1
- Update to 6.2.0
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 6:5.2.0-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Sun May 30 2021 Orion Poplawski <orion@nwra.com> - 6:5.2.0-13
- Use brp-strip instead of brp-strip-shared (bz#1955380)
* Tue Apr 06 2021 Orion Poplawski <orion@nwra.com> - 6:5.2.0-12
- Backport readline 8.1 support (bz#1946773)
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 6:5.2.0-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jan 06 2021 Orion Poplawski <orion@nwra.com> - 6:5.2.0-10
- Rebuild for sundials 5.6.1
* Sun Nov 22 2020 Orion Poplawski <orion@nwra.com> - 6:5.2.0-9
- Rebuild for sundials 5.5.0
* Mon Oct 05 2020 Orion Poplawski <orion@nwra.com> - 6:5.2.0-8
- Rebuild for sundials 5.4.0
* Thu Aug 13 2020 Iñaki Úcar <iucar@fedoraproject.org> - 5.2.0-7
- https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager
* Tue Jul 28 2020 Adam Jackson <ajax@redhat.com> - 5.2.0-6
- Drop unnecessary (apparently unused) BuildRequires: xorg-x11-apps
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 6:5.2.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sat Jul 11 2020 Jiri Vanek <jvanek@redhat.com> - 6:5.2.0-4
- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
* Thu Jun 25 2020 Orion Poplawski <orion@cora.nwra.com> - 6:5.2.0-3
- Rebuild for hdf5 1.10.6
* Mon Apr 13 2020 Orion Poplawski <orion@nwra.com> - 6:5.2.0-2
- Rebuild for sundials 5.2.0
* Mon Feb 03 2020 Orion Poplawski <orion@nwra.com> - 6:5.2.0-1
- Update to 5.2.0
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 6:5.1.0-4.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Sat Nov 2 2019 Orion Poplawski <orion@nwra.com> - 6:5.1.0-4
- Enable 64-bit array indexes
* Sat Nov 2 2019 Orion Poplawski <orion@nwra.com> - 6:5.1.0-3
- Enable LTO optimisations
* Mon Oct 14 2019 Orion Poplawski <orion@nwra.com> - 6:5.1.0-2.1
- Rebuild for suitesparse 5.4.0
* Wed Jul 31 2019 Orion Poplawski <orion@nwra.com> - 6:5.1.0-2
- Drop use of %%buildarch in macros.octave (bugz#1733898)

View File

@ -1,2 +1,2 @@
SHA512 (octave-7.3.0.tar.lz) = 8448aa01fa2a0650993ff9e4a4a017c243d5bf4af17cc321458e583913f4a71c2a34d60c1f79b8fedd5f00604f0960b94a4e2c0d9b87f07b13e969afe2951aa2
SHA512 (octave-7.3.0-docs.tar.xz) = a902b77117cf1c361b0d7c538ac4ed52140f073c1bddda5f10fe9d61c5a608a6be6b34cbab0e585a2deee04d09ed968a2d74b77d835bdadb445162143dcebc2b
SHA512 (octave-5.1.0.tar.lz) = 34facc20ffceaead05e62e16cc70bd603919c7e52c7489faa17b5c969a160c655f50c4aeb41ecee2e2d0a6245cc3364cf9009ddd3cecb17b9e06bbdacaa0a516
SHA512 (octave-5.1.0-docs.tar.lz) = 6bf24ed95d5d2957271abb8902a156edc588962b95218b05936858fafe8205f4295f072388f7331ad5700946fbae701bd0c3f2a59c258f390ea92c85eb87fdd2