diff --git a/.gitignore b/.gitignore
index a9d0685..759aae2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,7 @@ 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
+/octave-5.1.0.tar.lz
+/octave-5.1.0-docs.tar.lz
diff --git a/macros.octave b/macros.octave
index 5504880..38a6df6 100644
--- a/macros.octave
+++ b/macros.octave
@@ -33,12 +33,6 @@
print(rpm.expand("octave -H -q --no-window-system --no-site-file --eval 'pkg build -verbose -nodeps %{_builddir}/%{buildsubdir}/build "..octpkg_tarfile).."'\\n")
-- Extract the source tarball for debuginfo generation
print(rpm.expand("tar xf "..octpkg_tarfile.." -C %{_builddir}/%{buildsubdir}/build\\n"))
- -- Define %octave_tar_suffix for later use by install/check macros
- if (rpm.expand("%{?buildarch}") ~= "noarch") then
- rpm.define("octave_tar_suffix %{octave_host}-%{octave_api}")
- else
- rpm.define("octave_tar_suffix any-none")
- end
}
# Install a package. We use the octave pkg install command to install the
@@ -49,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("local_list",fullfile("%{buildroot}%{octshareprefix}","octave_packages"));pkg("install","-nodeps","-verbose","%{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}-%{octave_tar_suffix}.tar.gz");unlink(pkg("local_list"));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 \
@@ -57,12 +51,14 @@ fi \
echo "function on_uninstall (desc)" > %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m \
echo " error ('Can not uninstall %s installed by the redhat package manager', desc.name);" >> %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m \
echo "endfunction" >> %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m \
-if [ -e %{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}/octave-%{octpkg}.metainfo.xml ] \
+if [ -e %{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}/*.metainfo.xml ] \
then \
- echo "Found octave-%{octpkg}.metainfo.xml" \
- mkdir -p %{buildroot}/%{_datadir}/appdata \
- cp -p %{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}/octave-%{octpkg}.metainfo.xml %{buildroot}/%{_datadir}/appdata/ \
- appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/octave-%{octpkg}.metainfo.xml \
+ echo "Found .metainfo.xml appdata file" \
+ 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 \
%{nil}
@@ -70,7 +66,7 @@ fi \
# octave can find the package, then remove 'octave_packages' again, and re-strip
# any shared objects.
%octave_pkg_check \
-%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","%{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}-%{octave_tar_suffix}.tar.gz");pkg("load","%{octpkg}");runtests("%{buildroot}%{octpkgdir}");unlink(pkg("local_list"));unlink(pkg("global_list")); \
+%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-shared %{__strip} \
%{nil}
diff --git a/octave-appdata.patch b/octave-appdata.patch
deleted file mode 100644
index a10fa7f..0000000
--- a/octave-appdata.patch
+++ /dev/null
@@ -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 @@
-
- http://www.octave.org
- maintainers@octave.org
-- GNU
-
diff --git a/octave-crash.patch b/octave-crash.patch
new file mode 100644
index 0000000..db3143a
--- /dev/null
+++ b/octave-crash.patch
@@ -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
diff --git a/octave-eof.patch b/octave-eof.patch
new file mode 100644
index 0000000..f2c90bb
--- /dev/null
+++ b/octave-eof.patch
@@ -0,0 +1,28 @@
+
+# HG changeset patch
+# User Mike Miller
+# 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);
+
diff --git a/octave-gnulib.patch b/octave-gnulib.patch
deleted file mode 100644
index e83fb15..0000000
--- a/octave-gnulib.patch
+++ /dev/null
@@ -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
- #include
-
- namespace Faddeeva {
diff --git a/octave-qbuttongroup.patch b/octave-qbuttongroup.patch
deleted file mode 100644
index 7be5b0d..0000000
--- a/octave-qbuttongroup.patch
+++ /dev/null
@@ -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
- #include
- #include
-+#include
-
- #if defined (HAVE_QSCINTILLA)
- # include "octave-qscintilla.h"
diff --git a/octave-sundials3.patch b/octave-sundials3.patch
new file mode 100644
index 0000000..f5110ee
--- /dev/null
+++ b/octave-sundials3.patch
@@ -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
++Copyright (C) 2018 William Greene
+
+ This file is part of Octave.
+
+@@ -44,15 +45,34 @@ along with Octave; see the file COPYING.
+ # include
+ # endif
+
+-# if defined (HAVE_IDA_IDA_DENSE_H)
+-# include
++# if defined (HAVE_SUNDIALS_SUNDIALS_MATRIX_H)
++# include
+ # endif
+
+-# if defined (HAVE_IDA_IDA_KLU_H)
+-# include
++# if defined (HAVE_SUNDIALS_SUNDIALS_LINEARSOLVER_H)
++# include
++# endif
++
++# if defined (HAVE_SUNLINSOL_SUNLINSOL_DENSE_H)
++# include
++# endif
++
++# if defined (HAVE_IDA_IDA_DIRECT_H)
++# include
++# endif
++
++# if defined (HAVE_SUNDIALS_SUNDIALS_SPARSE_H)
+ # include
+ # endif
+
++# if defined (HAVE_SUNLINSOL_SUNLINSOL_KLU_H)
++# include
++# endif
++
++# if defined (HAVE_SUNMATRIX_SUNMATRIX_SPARSE_H)
++# include
++# endif
++
+ # if defined (HAVE_NVECTOR_NVECTOR_SERIAL_H)
+ # include
+ # 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 (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 (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
+- #else
+- #include
+ #endif
+ #include
+ ]], [[
+@@ -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
+- #else
+- #include
++ #if defined (HAVE_IDA_IDA_H)
++ #include
++ #endif
++ #if defined (HAVE_SUNDIALS_SUNDIALS_SPARSE_H)
++ #include
++ #endif
++ #if defined (HAVE_SUNLINSOL_SUNLINSOL_KLU_H)
++ #include
+ #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
+- #else
+- #include
++ #if defined (HAVE_IDA_IDA_H)
++ #include
++ #endif
++ #if defined (HAVE_SUNDIALS_SUNDIALS_MATRIX_H)
++ #include
++ #endif
++ #if defined (HAVE_SUNDIALS_SUNDIALS_LINEARSOLVER_H)
++ #include
+ #endif
++ #if defined (HAVE_IDA_IDA_DIRECT_H)
++ #include
++ #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);
diff --git a/octave.spec b/octave.spec
index ff2512b..9a2c820 100644
--- a/octave.spec
+++ b/octave.spec
@@ -1,12 +1,12 @@
# From src/version.h:#define OCTAVE_API_VERSION
-%global octave_api api-v51
+%global octave_api api-v53
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
%global builddocs 1
# Use Qt5 on F26+
-%if 0%{?fedora} >= 26
+%if 0%{?fedora}
%bcond_without qt5
%else
%bcond_with qt5
@@ -15,32 +15,32 @@
# For rc versions, change release manually
#global rcver 2
%if 0%{?rcver:1}
-%global rctag -rc%{?rcver}
+%global rctag -rc%{?rcver}
+%global relsuf .rc%{?rcver}
%endif
Name: octave
Epoch: 6
-Version: 4.2.2
-Release: 3%{?rcver:.rc%{rcver}}.0.riscv64%{?dist}
+Version: 5.1.0
+Release: 2%{?rcver:.rc%{rcver}}.0.riscv64%{?dist}
Summary: A high-level language for numerical computations
License: GPLv3+
URL: http://www.octave.org
-%if 0%{!?rcver:1}
-Source0: ftp://ftp.gnu.org/gnu/octave/octave-%{version}.tar.lz
-%else
-Source0: ftp://alpha.gnu.org/gnu/octave/octave-%{version}%{rctag}.tar.lz
-%endif
+Source0: https://ftp.gnu.org/gnu/octave/octave-%{version}.tar.lz
+#Source0: https://alpha.gnu.org/gnu/octave/octave-%{version}%{?rctag}.tar.lz
# RPM macros for helping to build Octave packages
Source1: macros.octave
Source2: xorg.conf
-# Remove project_group from appdata.xml file
-# https://bugzilla.redhat.com/show_bug.cgi?id=1293561
-Patch2: octave-appdata.patch
-# Add needed #include to bring in gnulib
-Patch4: octave-gnulib.patch
-# Add #include to fix build with latest Qt
-Patch5: octave-qbuttongroup.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)
@@ -64,6 +64,7 @@ Provides: bundled(slatec-fn)
BuildRequires: lzip
# For autoreconf
+BuildRequires: automake
BuildRequires: libtool
# For validating desktop and appdata files
BuildRequires: desktop-file-utils
@@ -72,12 +73,9 @@ BuildRequires: libappstream-glib
%endif
BuildRequires: arpack-devel
-%if 0%{?fedora} >= 27
BuildRequires: openblas-devel
-%else
-BuildRequires: atlas-devel
-%endif
BuildRequires: bison
+BuildRequires: bzip2-devel
BuildRequires: curl-devel
BuildRequires: fftw-devel
BuildRequires: flex
@@ -93,6 +91,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
@@ -108,11 +109,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
@@ -158,9 +161,6 @@ Requires: tex(epsfig.sty)
Requires: tex(geometry.sty)
Requires: tex(graphicx.sty)
-Requires(post): info
-Requires(preun): info
-
%description
GNU Octave is a high-level language, primarily intended for numerical
@@ -179,15 +179,14 @@ C++, C, Fortran, or other languages.
%package devel
Summary: Development headers and files for Octave
-Group: Development/Libraries
Requires: %{name} = %{epoch}:%{version}-%{release}
-Requires: readline-devel fftw-devel hdf5-devel zlib-devel
-Requires: gcc-c++ gcc-gfortran
-%if 0%{?fedora} >= 27
-Requires: openblas-devel
-%else
-Requires: atlas-devel
-%endif
+Requires: gcc-c++
+Requires: gcc-gfortran
+Requires: fftw-devel%{?_isa}
+Requires: hdf5-devel%{?_isa}
+Requires: openblas-devel%{?_isa}
+Requires: readline-devel%{?_isa}
+Requires: zlib-devel
Requires: libappstream-glib
%description devel
@@ -197,7 +196,6 @@ applications which use GNU Octave.
%package doc
Summary: Documentation for Octave
-Group: Documentation
BuildArch: noarch
%description doc
@@ -205,43 +203,20 @@ This package contains documentation for Octave.
%prep
%setup -q -n %{name}-%{version}%{?rctag}
-%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 /#include <\1.h>/'
-%endif
-#find -name \*.h -o -name \*.cc | xargs sed -i -e 's//"config.h"/' -e 's//"base-list.h"/'
-
-# Check permissions
-find -name *.cc -exec chmod 644 {} \;
-
-# 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
-
+%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
%global enable64 no
export F77=gfortran
# TODO: some items appear to be bundled in libcruft..
# gl2ps.c is bundled. Anything else?
-%if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
-%global atlasblaslib -ltatlas
-%global atlaslapacklib -ltatlas
-%else
-%global atlasblaslib -lf77blas -latlas
-%global atlaslapacklib -llapack
-%endif
%if !%{builddocs}
%global disabledocs --disable-docs
%endif
@@ -250,14 +225,16 @@ 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
+# Disable _GLIBCXX_ASSERTIONS for now
+# https://savannah.gnu.org/bugs/?55547
+export CXXFLAGS="$(echo %optflags | sed s/-Wp,-D_GLIBCXX_ASSERTIONS//)"
%configure --enable-shared --disable-static --enable-64=%enable64 \
--enable-float-truncate \
%{?disabledocs} \
--disable-silent-rules \
-%if 0%{?fedora} < 27
- --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 \
@@ -265,10 +242,10 @@ export JAVA_HOME=%{java_home}
--disable-jit
# Check that octave_api is set correctly (autogenerated file)
-make libinterp/version.h
-if ! grep -q '^#define OCTAVE_API_VERSION "%{octave_api}"' libinterp/version.h
+make liboctave/version.h
+if ! grep -q '^#define OCTAVE_API_VERSION "%{octave_api}"' liboctave/version.h
then
- echo "octave_api variable in spec does not match libinterp/version.h"
+ echo "octave_api variable in spec does not match liboctave/version.h"
exit 1
fi
@@ -286,6 +263,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
@@ -296,9 +276,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
@@ -310,7 +292,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
@@ -379,24 +361,11 @@ fi
$Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xorg.log -config ./xorg.conf :99 &
sleep 2
export DISPLAY=:99
-make check
-
-%post
-%{?ldconfig}
-%if %{builddocs}
-/sbin/install-info --info-dir=%{_infodir} --section="Programming" \
- %{_infodir}/octave.info || :
+%ifnarch riscv64
+make check %{?el7:|| :}
%endif
-%preun
-%if %{builddocs}
-if [ "$1" = "0" ]; then
- /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/octave.info || :
-fi
-%endif
-
-%ldconfig_postun
-
+%ldconfig_scriptlets
%files
%license COPYING
@@ -413,10 +382,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}/
@@ -430,6 +399,8 @@ fi
%{_bindir}/mkoctfile
%{_bindir}/mkoctfile-%{version}%{?rctag}
%{_includedir}/octave-%{version}%{?rctag}/
+%{_libdir}/pkgconfig/octave.pc
+%{_libdir}/pkgconfig/octinterp.pc
%{_mandir}/man1/mkoctfile.1.*
%files doc
@@ -441,8 +412,57 @@ fi
%{_pkgdocdir}/refcard*.pdf
%changelog
-* Wed Jun 20 2018 David Abdurachmanov - 6:4.2.2-3.0.riscv64
-- Add support for RISC-V (riscv64)
+* Tue Aug 20 2019 David Abdurachmanov - 6:5.1.0-2.0.riscv64
+- Disable tests on RISC-V (riscv64)
+
+* Wed Jul 31 2019 Orion Poplawski - 6:5.1.0-2
+- Drop use of %%buildarch in macros.octave (bugz#1733898)
+
+* Thu Jul 25 2019 Fedora Release Engineering - 6:5.1.0-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Sun Jun 16 2019 Orion Poplawski - 6:5.1.0-1
+- Update to 5.1.0
+
+* Mon May 6 2019 Orion Poplawski - 6:4.4.1-8
+- Backport upstream patch for proper EOF handling (bugz#1705129)
+
+* Tue Apr 23 2019 Björn Esser - 6:4.4.1-7
+- rebuilt (sundials)
+
+* Sat Mar 16 2019 Orion Poplawski - 6:4.4.1-6
+- Rebuild for hdf5 1.10.5
+
+* Thu Mar 7 2019 Tim Landscheidt - 6:4.4.1-5
+- Remove obsolete requirements for post/preun scriptlets
+
+* Sun Feb 17 2019 Igor Gnatenko - 6:4.4.1-4
+- Rebuild for readline 8.0
+
+* Sat Feb 16 2019 Björn Esser - 6:4.4.1-3
+- rebuilt (qscintilla)
+
+* Tue Feb 12 2019 Björn Esser - 6:4.4.1-2
+- rebuilt (qscintilla)
+- Fix pre-release tag
+
+* Fri Feb 01 2019 Fedora Release Engineering - 6:4.4.1-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Sun Nov 11 2018 Orion Poplawski - 6:4.4.1-1
+- Update to 4.4.1
+
+* Fri Jul 13 2018 Fedora Release Engineering - 6:4.2.2-6.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Mon Jul 02 2018 Colin B. Macdonald - 6:4.2.2-6
+- macros: support other names for appdata .metainfo.xml files
+
+* Thu Jun 28 2018 Colin B. Macdonald - 6:4.2.2-5
+- macros: support dependencies in octave_pkg_check
+
+* Thu Jun 21 2018 Orion Poplawski - 6:4.2.2-4
+- Add patch to fix crash with Ctrl-D (bug #1589460)
* Sun Jun 17 2018 Orion Poplawski - 6:4.2.2-3
- Add requires hicolor-icon-theme
diff --git a/sources b/sources
index b78b89c..386fb90 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
-SHA512 (octave-4.2.2.tar.lz) = 694453eeda99047a216c047f0d0147ce7ec89497cba766927734bb9e82eb9f9c00a5c2ddc7f9af6796fcec8f85c8102ece20db6f8ba0a7d5e9a486bcff3ab069
+SHA512 (octave-5.1.0.tar.lz) = 34facc20ffceaead05e62e16cc70bd603919c7e52c7489faa17b5c969a160c655f50c4aeb41ecee2e2d0a6245cc3364cf9009ddd3cecb17b9e06bbdacaa0a516
+SHA512 (octave-5.1.0-docs.tar.lz) = 6bf24ed95d5d2957271abb8902a156edc588962b95218b05936858fafe8205f4295f072388f7331ad5700946fbae701bd0c3f2a59c258f390ea92c85eb87fdd2