Compare commits

..

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

7 changed files with 79 additions and 534 deletions

7
.gitignore vendored
View File

@ -32,10 +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

View File

@ -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

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);

View File

@ -1,375 +0,0 @@
diff --git a/libgui/qterminal/libqterminal/unix/Emulation.cpp b/libgui/qterminal/libqterminal/unix/Emulation.cpp
index ee301a7dae..39b0b8d922 100644
--- a/libgui/qterminal/libqterminal/unix/Emulation.cpp
+++ b/libgui/qterminal/libqterminal/unix/Emulation.cpp
@@ -54,7 +54,8 @@ Emulation::Emulation() :
_codec(nullptr),
_decoder(nullptr),
_keyTranslator(nullptr),
- _usesMouse(false)
+ _usesMouse(false),
+ _bracketedPasteMode(false)
{
// create screens with a default size
@@ -68,6 +69,8 @@ Emulation::Emulation() :
// listen for mouse status changes
connect( this , SIGNAL(programUsesMouseChanged(bool)) ,
SLOT(usesMouseChanged(bool)) );
+ connect(this , SIGNAL(programBracketedPasteModeChanged(bool)) ,
+ SLOT(bracketedPasteModeChanged(bool)));
}
bool Emulation::programUsesMouse() const
@@ -80,6 +83,16 @@ void Emulation::usesMouseChanged(bool usesMouse)
_usesMouse = usesMouse;
}
+bool Emulation::programBracketedPasteMode() const
+{
+ return _bracketedPasteMode;
+}
+
+void Emulation::bracketedPasteModeChanged(bool bracketedPasteMode)
+{
+ _bracketedPasteMode = bracketedPasteMode;
+}
+
ScreenWindow* Emulation::createWindow()
{
ScreenWindow* window = new ScreenWindow();
diff --git a/libgui/qterminal/libqterminal/unix/Emulation.h b/libgui/qterminal/libqterminal/unix/Emulation.h
index 549a5916f4..4cc62fd46c 100644
--- a/libgui/qterminal/libqterminal/unix/Emulation.h
+++ b/libgui/qterminal/libqterminal/unix/Emulation.h
@@ -213,6 +213,8 @@ public:
*/
bool programUsesMouse() const;
+ bool programBracketedPasteMode() const;
+
public slots:
/** Change the size of the emulation's image */
@@ -317,6 +319,8 @@ signals:
*/
void programUsesMouseChanged(bool usesMouse);
+ void programBracketedPasteModeChanged(bool bracketedPasteMode);
+
/**
* Emitted when the contents of the screen image change.
* The emulation buffers the updates from successive image changes,
@@ -445,9 +449,12 @@ private slots:
void usesMouseChanged(bool usesMouse);
+ void bracketedPasteModeChanged(bool bracketedPasteMode);
+
private:
bool _usesMouse;
+ bool _bracketedPasteMode;
QTimer _bulkTimer1;
QTimer _bulkTimer2;
diff --git a/libgui/qterminal/libqterminal/unix/TerminalModel.cpp b/libgui/qterminal/libqterminal/unix/TerminalModel.cpp
index d5371d2af2..16be0c5eb8 100644
--- a/libgui/qterminal/libqterminal/unix/TerminalModel.cpp
+++ b/libgui/qterminal/libqterminal/unix/TerminalModel.cpp
@@ -131,6 +131,11 @@ void TerminalModel::addView(TerminalView* widget)
widget->setUsesMouse( _emulation->programUsesMouse() );
+ connect( _emulation , SIGNAL(programBracketedPasteModeChanged(bool)) ,
+ widget , SLOT(setBracketedPasteMode(bool)) );
+
+ widget->setBracketedPasteMode(_emulation->programBracketedPasteMode());
+
widget->setScreenWindow(_emulation->createWindow());
}
diff --git a/libgui/qterminal/libqterminal/unix/TerminalView.cpp b/libgui/qterminal/libqterminal/unix/TerminalView.cpp
index 17338abb7e..ac3183ae29 100644
--- a/libgui/qterminal/libqterminal/unix/TerminalView.cpp
+++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp
@@ -254,6 +254,7 @@ TerminalView::TerminalView(QWidget *parent)
,_resizing(false)
,_terminalSizeHint(false)
,_terminalSizeStartup(true)
+ ,_disabledBracketedPasteMode(false)
,_actSel(0)
,_wordSelectionMode(false)
,_lineSelectionMode(false)
@@ -312,6 +313,7 @@ TerminalView::TerminalView(QWidget *parent)
// QCursor::setAutoHideCursor( this, true );
setUsesMouse(true);
+ setBracketedPasteMode(false);
setColorTable(base_color_table);
setMouseTracking(true);
@@ -2312,6 +2314,16 @@ bool TerminalView::usesMouse() const
return _mouseMarks;
}
+void TerminalView::setBracketedPasteMode(bool on)
+{
+ _bracketedPasteMode = on;
+}
+bool TerminalView::bracketedPasteMode() const
+{
+ return _bracketedPasteMode;
+}
+
+
/* ------------------------------------------------------------------------- */
/* */
/* Clipboard */
@@ -2333,6 +2345,13 @@ void TerminalView::emitSelection(bool useXselection,bool appendReturn)
if ( ! text.isEmpty() )
{
text.replace("\n", "\r");
+ if (bracketedPasteMode() && !_disabledBracketedPasteMode)
+ bracketText(text);
+ else if (text.contains ("\t"))
+ {
+ qWarning ("converting TAB to SPC in pasted text before processing");
+ text.replace ("\t", " ");
+ }
QKeyEvent e(QEvent::KeyPress, 0, Qt::NoModifier, text);
emit keyPressedSignal(&e); // expose as a big fat keypress event
@@ -2340,6 +2359,12 @@ void TerminalView::emitSelection(bool useXselection,bool appendReturn)
}
}
+void TerminalView::bracketText(QString& text)
+{
+ text.prepend("\033[200~");
+ text.append("\033[201~");
+}
+
void TerminalView::setSelection(const QString& t)
{
QApplication::clipboard()->setText(t, QClipboard::Selection);
diff --git a/libgui/qterminal/libqterminal/unix/TerminalView.h b/libgui/qterminal/libqterminal/unix/TerminalView.h
index 84488d6b22..158fd0c641 100644
--- a/libgui/qterminal/libqterminal/unix/TerminalView.h
+++ b/libgui/qterminal/libqterminal/unix/TerminalView.h
@@ -160,6 +160,9 @@ public:
void emitSelection(bool useXselection,bool appendReturn);
+ /** change and wrap text corresponding to paste mode **/
+ void bracketText(QString& text);
+
/**
* This enum describes the available shapes for the keyboard cursor.
* See setKeyboardCursorShape()
@@ -379,6 +382,9 @@ public:
*/
void visibility_changed (bool visible);
+ void disableBracketedPasteMode(bool disable) { _disabledBracketedPasteMode = disable; }
+ bool bracketedPasteModeIsDisabled() const { return _disabledBracketedPasteMode; }
+
public slots:
/**
@@ -455,6 +461,9 @@ public slots:
/** See setUsesMouse() */
bool usesMouse() const;
+ void setBracketedPasteMode(bool bracketedPasteMode);
+ bool bracketedPasteMode() const;
+
signals:
void interrupt_signal (void);
@@ -666,6 +675,8 @@ private:
bool _terminalSizeHint;
bool _terminalSizeStartup;
bool _mouseMarks;
+ bool _bracketedPasteMode;
+ bool _disabledBracketedPasteMode;
QPoint _iPntSel; // initial selection point
QPoint _pntSel; // current selection point
diff --git a/libgui/qterminal/libqterminal/unix/Vt102Emulation.cpp b/libgui/qterminal/libqterminal/unix/Vt102Emulation.cpp
index 9ff26930aa..a9d248e5ef 100644
--- a/libgui/qterminal/libqterminal/unix/Vt102Emulation.cpp
+++ b/libgui/qterminal/libqterminal/unix/Vt102Emulation.cpp
@@ -752,6 +752,11 @@ switch( N )
case TY_CSI_PR('h', 1049) : saveCursor(); _screen[1]->clearEntireScreen(); setMode(MODE_AppScreen); break; //XTERM
case TY_CSI_PR('l', 1049) : resetMode(MODE_AppScreen); restoreCursor(); break; //XTERM
+ case TY_CSI_PR('h', 2004) : setMode (MODE_BracketedPaste); break; //XTERM
+ case TY_CSI_PR('l', 2004) : resetMode (MODE_BracketedPaste); break; //XTERM
+ case TY_CSI_PR('s', 2004) : saveMode (MODE_BracketedPaste); break; //XTERM
+ case TY_CSI_PR('r', 2004) : restoreMode (MODE_BracketedPaste); break; //XTERM
+
//FIXME: weird DEC reset sequence
case TY_CSI_PE('p' ) : /* IGNORED: reset ( ) */ break;
@@ -1137,6 +1142,7 @@ void Vt102Emulation::resetModes()
resetMode(MODE_Mouse1001); saveMode(MODE_Mouse1001);
resetMode(MODE_Mouse1002); saveMode(MODE_Mouse1002);
resetMode(MODE_Mouse1003); saveMode(MODE_Mouse1003);
+ resetMode(MODE_BracketedPaste); saveMode(MODE_BracketedPaste);
resetMode(MODE_AppScreen); saveMode(MODE_AppScreen);
// here come obsolete modes
@@ -1157,6 +1163,10 @@ void Vt102Emulation::setMode(int m)
emit programUsesMouseChanged(false);
break;
+ case MODE_BracketedPaste:
+ emit programBracketedPasteModeChanged(true);
+ break;
+
case MODE_AppScreen : _screen[1]->clearSelection();
setScreen(1);
break;
@@ -1180,6 +1190,10 @@ void Vt102Emulation::resetMode(int m)
emit programUsesMouseChanged(true);
break;
+ case MODE_BracketedPaste:
+ emit programBracketedPasteModeChanged(false);
+ break;
+
case MODE_AppScreen : _screen[0]->clearSelection();
setScreen(0);
break;
diff --git a/libgui/qterminal/libqterminal/unix/Vt102Emulation.h b/libgui/qterminal/libqterminal/unix/Vt102Emulation.h
index a12853279f..c0c44f5146 100644
--- a/libgui/qterminal/libqterminal/unix/Vt102Emulation.h
+++ b/libgui/qterminal/libqterminal/unix/Vt102Emulation.h
@@ -37,15 +37,16 @@
#include "unix/Emulation.h"
#include "unix/Screen.h"
-#define MODE_AppScreen (MODES_SCREEN+0)
-#define MODE_AppCuKeys (MODES_SCREEN+1)
-#define MODE_AppKeyPad (MODES_SCREEN+2)
-#define MODE_Mouse1000 (MODES_SCREEN+3)
-#define MODE_Mouse1001 (MODES_SCREEN+4)
-#define MODE_Mouse1002 (MODES_SCREEN+5)
-#define MODE_Mouse1003 (MODES_SCREEN+6)
-#define MODE_Ansi (MODES_SCREEN+7)
-#define MODE_total (MODES_SCREEN+8)
+#define MODE_AppScreen (MODES_SCREEN+0)
+#define MODE_AppCuKeys (MODES_SCREEN+1)
+#define MODE_AppKeyPad (MODES_SCREEN+2)
+#define MODE_Mouse1000 (MODES_SCREEN+3)
+#define MODE_Mouse1001 (MODES_SCREEN+4)
+#define MODE_Mouse1002 (MODES_SCREEN+5)
+#define MODE_Mouse1003 (MODES_SCREEN+6)
+#define MODE_Ansi (MODES_SCREEN+7)
+#define MODE_BracketedPaste (MODES_SCREEN+8)
+#define MODE_total (MODES_SCREEN+9)
struct DECpar
{
diff --git a/libinterp/corefcn/input.cc b/libinterp/corefcn/input.cc
index 35a6ac65b7..187f41da42 100644
--- a/libinterp/corefcn/input.cc
+++ b/libinterp/corefcn/input.cc
@@ -32,6 +32,7 @@ along with Octave; see the file COPYING. If not, see
#include <cassert>
#include <iostream>
+#include <queue>
#include <sstream>
#include <string>
@@ -1000,7 +1001,7 @@ namespace octave
public:
terminal_reader (base_lexer *lxr = nullptr)
- : base_reader (lxr)
+ : base_reader (lxr), m_eof (false), m_input_queue ()
{ }
std::string get_input (bool& eof);
@@ -1011,6 +1012,9 @@ namespace octave
private:
+ bool m_eof;
+ std::queue<std::string> m_input_queue;
+
static const std::string s_in_src;
};
@@ -1073,6 +1077,13 @@ namespace octave
const std::string terminal_reader::s_in_src ("terminal");
+ // If octave_gets returns multiple lines, we cache the input and
+ // return it one line at a time. Multiple input lines may happen when
+ // using readline and bracketed paste mode is enabled, for example.
+ // Instead of queueing lines here, it might be better to modify the
+ // grammar in the parser to handle multiple lines when working
+ // interactively. See also bug #59938.
+
std::string
terminal_reader::get_input (bool& eof)
{
@@ -1080,7 +1091,54 @@ namespace octave
eof = false;
- return octave_gets (eof);
+ if (m_input_queue.empty ())
+ {
+ std::string input = octave_gets (m_eof);
+
+ size_t len = input.size ();
+
+ if (len == 0)
+ {
+ if (m_eof)
+ {
+ eof = m_eof;
+ return input;
+ }
+ else
+ {
+ // Can this happen, or will the string returned from
+ // octave_gets always end in a newline character?
+
+ input = "\n";
+ len = 1;
+ }
+ }
+
+ size_t beg = 0;
+ while (beg < len)
+ {
+ size_t end = input.find ('\n', beg);
+
+ if (end == std::string::npos)
+ {
+ m_input_queue.push (input.substr (beg));
+ break;
+ }
+ else
+ {
+ m_input_queue.push (input.substr (beg, end-beg+1));
+ beg = end + 1;
+ }
+ }
+ }
+
+ std::string retval = m_input_queue.front ();
+ m_input_queue.pop ();
+
+ if (m_input_queue.empty ())
+ eof = m_eof;
+
+ return retval;
}
const std::string file_reader::s_in_src ("file");

View File

@ -1,6 +1,6 @@
diff -up octave-5.1.90/configure.ac.sundials3 octave-5.1.90/configure.ac
--- octave-5.1.90/configure.ac.sundials3 2020-01-18 11:48:59.000074162 -0700
+++ octave-5.1.90/configure.ac 2020-01-18 11:50:21.861966968 -0700
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=
@ -19,10 +19,10 @@ diff -up octave-5.1.90/configure.ac.sundials3 octave-5.1.90/configure.ac
+ && 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.])
diff -up octave-5.1.90/libinterp/dldfcn/__ode15__.cc.sundials3 octave-5.1.90/libinterp/dldfcn/__ode15__.cc
--- octave-5.1.90/libinterp/dldfcn/__ode15__.cc.sundials3 2019-12-21 17:01:27.000000000 -0700
+++ octave-5.1.90/libinterp/dldfcn/__ode15__.cc 2020-01-18 11:48:59.002074159 -0700
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 @@
/*
@ -312,10 +312,10 @@ diff -up octave-5.1.90/libinterp/dldfcn/__ode15__.cc.sundials3 octave-5.1.90/lib
// Integrate
retval = dae.integrate (numt, tspan, y0, yp0, refine,
diff -up octave-5.1.90/m4/acinclude.m4.sundials3 octave-5.1.90/m4/acinclude.m4
--- octave-5.1.90/m4/acinclude.m4.sundials3 2019-12-21 17:01:27.000000000 -0700
+++ octave-5.1.90/m4/acinclude.m4 2020-01-18 11:48:59.005074156 -0700
@@ -2215,14 +2215,11 @@ dnl Check whether SUNDIALS IDA library i
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], [
@ -330,7 +330,7 @@ diff -up octave-5.1.90/m4/acinclude.m4.sundials3 octave-5.1.90/m4/acinclude.m4
#endif
#include <assert.h>
]], [[
@@ -2238,61 +2235,72 @@ AC_DEFUN([OCTAVE_CHECK_SUNDIALS_SIZEOF_R
@@ -2233,61 +2230,72 @@ AC_DEFUN([OCTAVE_CHECK_SUNDIALS_SIZEOF_R
fi
])
dnl
@ -436,9 +436,9 @@ diff -up octave-5.1.90/m4/acinclude.m4.sundials3 octave-5.1.90/m4/acinclude.m4
fi
])
dnl
diff -up octave-5.1.90/scripts/ode/ode15i.m.sundials3 octave-5.1.90/scripts/ode/ode15i.m
--- octave-5.1.90/scripts/ode/ode15i.m.sundials3 2019-12-21 17:01:27.000000000 -0700
+++ octave-5.1.90/scripts/ode/ode15i.m 2020-01-18 11:48:59.006074155 -0700
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);
@ -457,9 +457,9 @@ diff -up octave-5.1.90/scripts/ode/ode15i.m.sundials3 octave-5.1.90/scripts/ode/
%! DFDY = sparse ([-0.04, 1;
%! 0.04, 1]);
%! DFDYP = sparse ([-1, 0, 0;
diff -up octave-5.1.90/scripts/ode/ode15s.m.sundials3 octave-5.1.90/scripts/ode/ode15s.m
--- octave-5.1.90/scripts/ode/ode15s.m.sundials3 2019-12-21 17:01:27.000000000 -0700
+++ octave-5.1.90/scripts/ode/ode15s.m 2020-01-18 11:48:59.007074154 -0700
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);

View File

@ -1,29 +1,17 @@
# From src/version.h:#define OCTAVE_API_VERSION
%global octave_api api-v56
%global octave_api api-v53
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
%global builddocs 1
# Use Qt5 on Fedora and EL7+
%if 0%{?fedora} || 0%{?rhel} >= 7
# Use Qt5 on F26+
%if 0%{?fedora}
%bcond_without qt5
%else
%bcond_with qt5
%endif
%if 0%{?fedora} >= 33
%bcond_without flexiblas
%endif
%if %{with flexiblas}
%global blaslib flexiblas
%else
%global blaslib openblas
%endif
# Compile with ILP64 BLAS - not yet working
%bcond_with blas64
# For rc versions, change release manually
#global rcver 2
%if 0%{?rcver:1}
@ -31,13 +19,10 @@
%global relsuf .rc%{?rcver}
%endif
%global optflags %{optflags}
%global build_ldflags %{build_ldflags} -flto
Name: octave
Epoch: 6
Version: 6.4.0
Release: 1%{?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
@ -48,6 +33,14 @@ Source0: https://ftp.gnu.org/gnu/octave/octave-%{version}.tar.lz
Source1: macros.octave
Source2: xorg.conf
# 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)
@ -68,7 +61,6 @@ Provides: bundled(slatec-err)
Provides: bundled(slatec-fn)
# For Source0
BuildRequires: make
BuildRequires: lzip
# For autoreconf
@ -81,7 +73,7 @@ BuildRequires: libappstream-glib
%endif
BuildRequires: arpack-devel
BuildRequires: %{blaslib}-devel
BuildRequires: openblas-devel
BuildRequires: bison
BuildRequires: bzip2-devel
BuildRequires: curl-devel
@ -122,11 +114,7 @@ BuildRequires: qt5-qttools-devel
BuildRequires: qscintilla-devel
%endif
BuildRequires: readline-devel
%if %{with blas64}
BuildRequires: suitesparse64-devel
%else
BuildRequires: suitesparse-devel
%endif
BuildRequires: sundials-devel
BuildRequires: tex(dvips)
BuildRequires: texinfo
@ -141,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
@ -195,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
@ -214,14 +203,17 @@ This package contains documentation for Octave.
%prep
%setup -q -n %{name}-%{version}%{?rctag}
%if %{with blas64}
sed -i -e 's/OCTAVE_CHECK_LIB(suitesparseconfig,/OCTAVE_CHECK_LIB(suitesparseconfig64,/' configure.ac
%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?
@ -238,19 +230,10 @@ 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} \
--with-java-includedir=/usr/lib/jvm/java/include \
--with-java-libdir=$libjvm \
--with-qrupdate \
@ -277,11 +260,12 @@ mkdir -p %{buildroot}%{_pkgdocdir}
cp -ar AUTHORS BUGS ChangeLog examples NEWS README %{buildroot}%{_pkgdocdir}/
cp -a doc/refcard/*.pdf %{buildroot}%{_pkgdocdir}/
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
@ -377,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
@ -398,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.8*
%{_libdir}/octave/%{version}/liboctgui.so.6*
%{_libdir}/octave/%{version}/liboctinterp.so.9*
%{_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*
@ -430,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.*
@ -446,72 +410,6 @@ make check
%{_pkgdocdir}/refcard*.pdf
%changelog
* 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 +1,2 @@
SHA512 (octave-6.4.0.tar.lz) = f0e59cf1d038e8f92801c5621800872cb6d030fd7c306eb5746a40310120c91d37096ed364428845190c1bbc08b4c75e6f57f7ecdbc06ee6659885ce634730fd
SHA512 (octave-5.1.0.tar.lz) = 34facc20ffceaead05e62e16cc70bd603919c7e52c7489faa17b5c969a160c655f50c4aeb41ecee2e2d0a6245cc3364cf9009ddd3cecb17b9e06bbdacaa0a516
SHA512 (octave-5.1.0-docs.tar.lz) = 6bf24ed95d5d2957271abb8902a156edc588962b95218b05936858fafe8205f4295f072388f7331ad5700946fbae701bd0c3f2a59c258f390ea92c85eb87fdd2