https://wiki.octave.org/wiki/api.php?action=feedcontributions&user=Mtmiller&feedformat=atomOctave - User contributions [en]2024-03-29T00:59:28ZUser contributionsMediaWiki 1.39.2https://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=13760Octave for GNU/Linux2021-04-25T19:39:57Z<p>Mtmiller: /* Guix */ update URL</p>
<hr />
<div>= Distributions =<br />
<br />
The recommended way for installing Octave on GNU/Linux systems is via each distribution's package installation system. If this is for some reason not possible, or the available Octave version too old, consider using a [[#Distribution_independent|distribution independent]] approach described below or [[Building|build Octave from source]].<br />
<br />
== Arch Linux ==<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
pacman -S octave<br />
<br />
== Debian and Debian-based (such as Ubuntu) ==<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
apt install octave<br />
apt install liboctave-dev # development files<br />
<br />
== Fedora ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
dnf install octave<br />
dnf install octave-devel # development files<br />
<br />
== Gentoo ==<br />
<br />
emerge --ask sci-mathematics/octave<br />
<br />
== openSUSE and SUSE Linux Enterprise ==<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
zypper install octave<br />
zypper install octave-devel # development files<br />
<br />
== Red Hat Enterprise/CentOS ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
yum install epel-release<br />
yum install octave<br />
yum install octave-devel # development files<br />
<br />
If the above does not work, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL.<br />
<br />
== Slackware ==<br />
<br />
: ''Main article: [[Octave for Slackware]]''<br />
<br />
= Distribution independent =<br />
<br />
Using a distribution independent approach is particularly useful if you have an older GNU/Linux distribution or if you do not have root access on your system. A common drawback of this approach is, that these solutions are running in some kind of sandbox. Thus limitations in the communication with the underlying system may exist. For example, executing system binaries outside the sandbox might be impossible.<br />
<br />
== Docker / Podman / Singularity ==<br />
<br />
* More info: https://hub.docker.com/r/gnuoctave/octave<br />
* Development: https://github.com/gnu-octave/docker<br />
<br />
docker pull docker.io/gnuoctave/octave:{{Release}}<br />
podman pull docker.io/gnuoctave/octave:{{Release}}<br />
<br />
singularity pull docker://gnuoctave/octave:{{Release}}<br />
<br />
=== mtmiller's version ===<br />
<br />
* More info: https://hub.docker.com/r/mtmiller/octave<br />
* Development: https://gitlab.com/mtmiller/docker-octave<br />
<br />
docker pull docker.io/mtmiller/octave<br />
<br />
== Flatpak ==<br />
<br />
* More info: https://flathub.org/apps/details/org.octave.Octave<br />
* Development: https://github.com/flathub/org.octave.Octave<br />
<br />
flatpak install flathub org.octave.Octave<br />
<br />
== Guix ==<br />
<br />
* More info: https://guix.gnu.org/en/packages/octave-6.2.0/<br />
<br />
guix install octave<br />
<br />
== Homebrew on Linux ==<br />
<div id="Linuxbrew"></div><br />
<br />
"Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory.<br />
<br />
* More info: https://docs.brew.sh/Homebrew-on-Linux<br />
* Development: https://formulae.brew.sh/formula/octave<br />
<br />
brew install octave<br />
<br />
== MXE ==<br />
<br />
* More info: [[MXE]]<br />
* Development: https://hg.octave.org/mxe-octave<br />
<br />
== Snap ==<br />
<br />
* More info: https://snapcraft.io/octave<br />
* Development: https://github.com/octave-snap/octave-snap<br />
<br />
snap install octave<br />
<br />
If you want to use a nightly snapshot build of the development branch of Octave, install from the ''edge'' channel<br />
<br />
snap install --edge octave<br />
<br />
== Spack ==<br />
<br />
* More info: https://spack.readthedocs.io/<br />
* Development: https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/octave/package.py<br />
<br />
spack install octave<br />
<br />
= Building from source =<br />
<br />
: ''Main article: [[Building]]''<br />
<br />
== See also ==<br />
<br />
* [[Octave for other Unix systems]]<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=13756Octave for GNU/Linux2021-04-24T22:07:22Z<p>Mtmiller: /* Snap */ add instructions for installing nightly build</p>
<hr />
<div>= Distributions =<br />
<br />
The recommended way for installing Octave on GNU/Linux systems is via each distribution's package installation system. If this is for some reason not possible, or the available Octave version too old, consider using a [[#Distribution_independent|distribution independent]] approach described below or [[Building|build Octave from source]].<br />
<br />
== Arch Linux ==<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
pacman -S octave<br />
<br />
== Debian and Debian-based (such as Ubuntu) ==<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
apt install octave<br />
apt install liboctave-dev # development files<br />
<br />
== Fedora ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
dnf install octave<br />
dnf install octave-devel # development files<br />
<br />
== Gentoo ==<br />
<br />
emerge --ask sci-mathematics/octave<br />
<br />
== openSUSE and SUSE Linux Enterprise ==<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
zypper install octave<br />
zypper install octave-devel # development files<br />
<br />
== Red Hat Enterprise/CentOS ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
yum install epel-release<br />
yum install octave<br />
yum install octave-devel # development files<br />
<br />
If the above does not work, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL.<br />
<br />
== Slackware ==<br />
<br />
: ''Main article: [[Octave for Slackware]]''<br />
<br />
= Distribution independent =<br />
<br />
Using a distribution independent approach is particularly useful if you have an older GNU/Linux distribution or if you do not have root access on your system. A common drawback of this approach is, that these solutions are running in some kind of sandbox. Thus limitations in the communication with the underlying system may exist. For example, executing system binaries outside the sandbox might be impossible.<br />
<br />
== Docker ==<br />
<br />
* More info: https://hub.docker.com/r/mtmiller/octave<br />
* Development: https://gitlab.com/mtmiller/docker-octave<br />
<br />
docker pull mtmiller/octave<br />
<br />
== Flatpak ==<br />
<br />
* More info: https://flathub.org/apps/details/org.octave.Octave<br />
* Development: https://github.com/flathub/org.octave.Octave<br />
<br />
flatpak install flathub org.octave.Octave<br />
<br />
== Guix ==<br />
<br />
* More info: https://guix.gnu.org/packages/octave-6.1.0/<br />
<br />
guix install octave<br />
<br />
== Homebrew on Linux ==<br />
<div id="Linuxbrew"></div><br />
<br />
"Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory.<br />
<br />
* More info: https://docs.brew.sh/Homebrew-on-Linux<br />
* Development: https://formulae.brew.sh/formula/octave<br />
<br />
brew install octave<br />
<br />
== MXE ==<br />
<br />
* More info: [[MXE]]<br />
* Development: https://hg.octave.org/mxe-octave<br />
<br />
== Singularity ==<br />
<br />
* More info: https://cloud.sylabs.io/library/siko1056/default/gnu_octave<br />
* Development: https://github.com/siko1056/GNU-Octave-ILP64-Singularity<br />
<br />
singularity pull library://siko1056/default/gnu_octave:latest<br />
<br />
== Snap ==<br />
<br />
* More info: https://snapcraft.io/octave<br />
* Development: https://github.com/octave-snap/octave-snap<br />
<br />
snap install octave<br />
<br />
If you want to use a nightly snapshot build of the development branch of Octave, install from the ''edge'' channel<br />
<br />
snap install --edge octave<br />
<br />
== Spack ==<br />
<br />
* More info: https://spack.readthedocs.io/<br />
* Development: https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/octave/package.py<br />
<br />
spack install octave<br />
<br />
= Building from source =<br />
<br />
: ''Main article: [[Building]]''<br />
<br />
== See also ==<br />
<br />
* [[Octave for other Unix systems]]<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=GNU_Octave_Wiki&diff=13721GNU Octave Wiki2021-04-04T21:39:52Z<p>Mtmiller: /* Installing */ sort installation list by preference</p>
<hr />
<div>[https://www.gnu.org/software/octave/ GNU Octave] is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. The program is named after [https://en.wikipedia.org/wiki/Octave_Levenspiel Octave Levenspiel], a former professor of the principal author. GNU Octave is normally used through its interactive interface ([https://en.wikipedia.org/wiki/Command-line_interface CLI] and [https://en.wikipedia.org/wiki/Graphical_user_interface GUI]), but it can also be used to write non-interactive programs. The project was conceived around 1988 and at first it was intended to be a companion to a chemical reactor design course. The GNU Octave language is largely compatible to [https://en.wikipedia.org/wiki/MATLAB Matlab] so that most programs are easily portable. In addition, functions known from the C standard library and from UNIX system calls and functions are supported. C/C++ and Fortran code can be called from Octave by creating [https://octave.org/doc/interpreter/Getting-Started-with-Oct_002dFiles.html Oct-Files], or using Matlab compatible [https://octave.org/doc/interpreter/Mex_002dFiles.html Mex-Files].<br />
<br />
== [[:Category:Installation|Installing]] ==<br />
<br />
Installation instructions for:<br />
* [[Octave for GNU/Linux|GNU/Linux]], [[Octave for Android|Android]], and [[Octave for other Unix systems|other Unix systems]]<br />
* [[Octave for macOS|macOS]]<br />
* [[Octave for Microsoft Windows|Microsoft Windows]]<br />
<br />
Get installers and sources from https://www.octave.org/download.<br />
<br />
{{Note|'''GNU Octave {{Release}}''' is the current stable release.}}<br />
<br />
Are you using an old version of Octave? Check the [[Release History]] page to see how old it is.<br />
<br />
== Getting help ==<br />
<br />
* [https://octave.discourse.group Octave Discourse] - Forum for Octave users and developers.<br />
* [[FAQ|Frequently asked questions (FAQ)]]<br />
* [https://www.gnu.org/software/octave/doc/interpreter GNU Octave documentation]<br />
* [https://www.gnu.org/software/octave/support.html Other support options]<br />
<br />
== [[:Category:Resources|Getting started]] ==<br />
<br />
* [[Publications using Octave#Books|Books]]<br />
* [[Video tutorials|Videos]]<br />
* [[:Category:Resources|Tutorials and Examples]]<br />
<br />
[[File:Octave-flower.svg|right|frame|[[:Category:Octave Forge|Octave Forge]] is a collection of high quality packages for GNU Octave.]]<br />
<br />
== [[Packages]] / [[:Category:Octave Forge|Octave Forge]] ==<br />
<br />
* [https://octave.org/doc/interpreter/Installing-and-Removing-Packages.html Installing packages]<br />
* [[Creating packages]]<br />
* '''[[:Category:Octave Forge|Octave Forge]]''' &mdash; A collection of high quality packages for GNU Octave.<br />
<br />
== [[:Category:Development|Development]] ==<br />
<br />
We always need more help improving Octave and there are many ways [https://www.gnu.org/software/octave/get-involved.html you can contribute]. You can help by fixing bugs, developing new features, answering questions on the mailing list or IRC channel, helping to improve this wiki or other web pages.<br />
<br />
::* Get an overview about the [[:Category:Development|GNU Octave development]].<br />
::* Take a look at our [[Projects|project ideas]] and [[Summer of Code - Getting Started | Summer of Code project <br />
ideas]]. [[File:GSoC_logo.svg|100px|none|link=Summer of Code - Getting Started]]<br />
<br />
== [[:Category:Academia|Academia]] ==<br />
<br />
* [[Publications using Octave]] &mdash; A compilation of scientific publications making reference to GNU Octave (add yours!).<br />
<br />
== External Links ==<br />
<br />
* [https://www.gnu.org/software/octave/ Octave Homepage]<br />
* [https://octave.sourceforge.io/ Octave Forge]<br />
* [https://savannah.gnu.org/bugs/?group=octave Bug Tracker]<br />
* [https://savannah.gnu.org/task/?group=octave Task Tracker]<br />
* [https://savannah.gnu.org/patch/?group=octave Patch Tracker]<br />
* [https://savannah.gnu.org/hg/?group=octave Development Repositories]<br />
* [https://planet.octave.org/ Planet Octave] - A collection of blog feeds featuring Octave developers and [[Summer of Code]] students.</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=13720Octave for GNU/Linux2021-04-04T16:49:35Z<p>Mtmiller: /* Spack */ simplify doc url</p>
<hr />
<div>= Distributions =<br />
<br />
The recommended way for installing Octave on GNU/Linux systems is via each distribution's package installation system. If this is for some reason not possible, or the available Octave version too old, consider using a [[#Distribution_independent|distribution independent]] approach described below or [[Building|build Octave from source]].<br />
<br />
== Arch Linux ==<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
pacman -S octave<br />
<br />
== Debian and Debian-based (such as Ubuntu) ==<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
apt install octave<br />
apt install liboctave-dev # development files<br />
<br />
== Fedora ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
dnf install octave<br />
dnf install octave-devel # development files<br />
<br />
== Gentoo ==<br />
<br />
emerge --ask sci-mathematics/octave<br />
<br />
== openSUSE and SUSE Linux Enterprise ==<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
zypper install octave<br />
zypper install octave-devel # development files<br />
<br />
== Red Hat Enterprise/CentOS ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
yum install epel-release<br />
yum install octave<br />
yum install octave-devel # development files<br />
<br />
If the above does not work, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL.<br />
<br />
== Slackware ==<br />
<br />
: ''Main article: [[Octave for Slackware]]''<br />
<br />
= Distribution independent =<br />
<br />
Using a distribution independent approach is particularly useful if you have an older GNU/Linux distribution or if you do not have root access on your system. A common drawback of this approach is, that these solutions are running in some kind of sandbox. Thus limitations in the communication with the underlying system may exist. For example, executing system binaries outside the sandbox might be impossible.<br />
<br />
== Docker ==<br />
<br />
* More info: https://hub.docker.com/r/mtmiller/octave<br />
* Development: https://gitlab.com/mtmiller/docker-octave<br />
<br />
docker pull mtmiller/octave<br />
<br />
== Flatpak ==<br />
<br />
* More info: https://flathub.org/apps/details/org.octave.Octave<br />
* Development: https://github.com/flathub/org.octave.Octave<br />
<br />
flatpak install flathub org.octave.Octave<br />
<br />
== Guix ==<br />
<br />
* More info: https://guix.gnu.org/packages/octave-6.1.0/<br />
<br />
guix install octave<br />
<br />
== Homebrew on Linux ==<br />
<div id="Linuxbrew"></div><br />
<br />
"Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory.<br />
<br />
* More info: https://docs.brew.sh/Homebrew-on-Linux<br />
* Development: https://formulae.brew.sh/formula/octave<br />
<br />
brew install octave<br />
<br />
== MXE ==<br />
<br />
* More info: [[MXE]]<br />
* Development: https://hg.octave.org/mxe-octave<br />
<br />
== Singularity ==<br />
<br />
* More info: https://cloud.sylabs.io/library/siko1056/default/gnu_octave<br />
* Development: https://github.com/siko1056/GNU-Octave-ILP64-Singularity<br />
<br />
singularity pull library://siko1056/default/gnu_octave:latest<br />
<br />
== Snap ==<br />
<br />
* More info: https://snapcraft.io/octave<br />
* Development: https://github.com/octave-snap/octave-snap<br />
<br />
snap install octave<br />
<br />
== Spack ==<br />
<br />
* More info: https://spack.readthedocs.io/<br />
* Development: https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/octave/package.py<br />
<br />
spack install octave<br />
<br />
= Building from source =<br />
<br />
: ''Main article: [[Building]]''<br />
<br />
== See also ==<br />
<br />
* [[Octave for other Unix systems]]<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Signal_package&diff=13353Signal package2020-09-24T17:56:14Z<p>Mtmiller: Undo revision 13352 by 170.0.33.10 (talk)</p>
<hr />
<div>The {{Forge|signal}} package is part of the [[Octave Forge]] project and provides signal processing algorithms for use with Octave. The functions provided by the signal package include creation of waveforms, FIR and IIR filter design, spectral analysis, Fourier and other transforms, window functions, and resampling and rate changing. There are also some wavelet functions included, because there is no separate wavelet package, at least for now.<br />
<br />
You may also be interested in the [http://ltfat.sourceforge.net/ LTFAT] package.<br />
<br />
== Contribution ==<br />
<br />
There are many ways to contribute to the development and maintenance of the signal processing package, including but not limited to testing, writing new test cases, reviewing and editing documentation, creating useful demos or examples of how to use the functions in the package, fixing bugs in existing functions, improving compatibility with Matlab, and writing completely new functions.<br />
<br />
=== Missing Tests ===<br />
<br />
Octave functions can be written to include their own built-in self tests that work with the {{manual|test}} function, see [[Tests]].<br />
<br />
Several functions in the signal package do not have exhaustive test suites or do not include any built-in self tests at all. This is a list of functions in the signal package that do not yet have any tests.<br />
<br />
* ar_psd<br />
* arburg<br />
* aryule<br />
* besselap<br />
* bilinear<br />
* buttap<br />
* cceps<br />
* cheb<br />
* cheb1ap<br />
* cheb2ap<br />
* clustersegment<br />
* cmorwavf<br />
* cohere<br />
* cpsd<br />
* csd<br />
* dct<br />
* dct2<br />
* dctmtx<br />
* dftmtx<br />
* diric<br />
* dwt<br />
* ellipap<br />
* firls<br />
* freqs<br />
* freqs_plot<br />
* gmonopuls<br />
* hilbert<br />
* idct<br />
* idct2<br />
* iirlp2mb<br />
* interp<br />
* invfreq<br />
* invfreqs<br />
* invfreqz<br />
* kaiserord<br />
* levinson<br />
* mexihat<br />
* meyeraux<br />
* morlet<br />
* movingrms<br />
* mscohere<br />
* ncauer<br />
* pburg<br />
* polystab<br />
* primitive<br />
* pwelch<br />
* pyulear<br />
* qp_kaiser<br />
* sampled2continuous<br />
* sawtooth<br />
* schtrig<br />
* sftrans<br />
* sgolayfilt<br />
* shanwavf<br />
* sigmoid_train<br />
* square<br />
* ss2tf<br />
* ss2zp<br />
* tf2ss<br />
* tf2zp<br />
* tfe<br />
* tfestimate<br />
* wconv<br />
* wkeep<br />
* wrev<br />
* xcorr<br />
* xcov<br />
* zp2ss<br />
* zp2tf<br />
* zplane<br />
<br />
<br />
=== Missing Functions ===<br />
<br />
This is a list of functions that are not yet implemented in the Octave signal package. Patches for some of these functions are available on the patch tracker and are undergoing review. You could help us by implementing the missing functions and adding them to the patch tracker, or by helping us review the ones that are already there. This list is subject to change and may not be complete in any sense. However, it is a starting point when looking for missing functionality or for possible projects to work on.<br />
<br />
==== Signal Generation ====<br />
<br />
* demod<br />
* modulate (see patch {{patch|9409}})<br />
* seqperiod<br />
* strips<br />
* vco<br />
<br />
==== Correlation and Convolution ====<br />
<br />
* corrmtx<br />
* dtw (please refer to open feature request bug {{bug|51572}}, only pseudocode so far)<br />
<br />
==== Signal Measurement ====<br />
<br />
* bandpower (see patch {{patch|8697}})<br />
* dutycycle<br />
* enbw<br />
* falltime<br />
* midcross<br />
* overshoot<br />
* pulseperiod<br />
* pulsesep<br />
* pulsewidth<br />
* risetime<br />
* settlingtime<br />
* sfdr<br />
* slewrate<br />
* statelevels (see patch {{patch|9199}})<br />
* undershoot<br />
<br />
==== Filter Analysis ====<br />
<br />
* filternorm<br />
* filtord<br />
* firtype<br />
* impzlength<br />
* isallpass<br />
* islinphase<br />
* ismaxphase<br />
* isminphase<br />
* isstable (see patch {{patch|9265}})<br />
* phasedelay<br />
* phasez<br />
* stepz (see patch {{patch|8630}})<br />
* zerophase<br />
<br />
==== Filter Conversion ====<br />
<br />
* cell2sos<br />
* filt2block<br />
* latc2tf<br />
* latcfilt<br />
* realizemdl<br />
* sos2cell<br />
* sos2ss<br />
* ss2sos<br />
* tf2latc<br />
* tf2zpk<br />
<br />
==== FIR Filter Design ====<br />
<br />
* cfirpm<br />
* equiripple<br />
* fircls<br />
* fircls1<br />
* firpm (see patch {{patch|8535}})<br />
* firpmord<br />
* firrcos<br />
* freqsamp<br />
* gaussfir<br />
* intfilt<br />
* kaiserwin<br />
* maxflat<br />
* polyscale<br />
<br />
==== IIR Filter Design ====<br />
<br />
* lp2bp<br />
* lp2bs<br />
* lp2hp<br />
* lp2lp (please refer to open feature request bug {{bug|46440}}, only partial code snippets so far)<br />
* yulewalk<br />
<br />
==== Transforms ====<br />
<br />
* goertzel (see patch {{patch|8495}})<br />
* icceps<br />
<br />
==== Spectral Analysis ====<br />
<br />
* db<br />
* pcov<br />
* peig<br />
* pmcov<br />
* pmtm (please refer to open feature request bug {{bug|55714}})<br />
* pmusic<br />
* rooteig<br />
* rootmusic<br />
* spectrogram (please refer to open feature request bug {{bug|45232}})<br />
<br />
==== Window Functions ====<br />
<br />
* dpss<br />
* dpssclear<br />
* dpssdir<br />
* dpssload<br />
* taylorwin (see patch {{patch|8506}})<br />
<br />
==== System Identification ====<br />
<br />
* ac2poly<br />
* ac2rc<br />
* arcov<br />
* armcov<br />
* is2rc<br />
* lar2rc<br />
* lpc (see patch {{patch|8575}})<br />
* lsf2poly (see patch {{patch|8726}})<br />
* poly2ac<br />
* poly2lsf (see patch {{patch|8726}})<br />
* poly2rc<br />
* prony<br />
* rc2ac<br />
* rc2is<br />
* rc2lar<br />
* rc2poly<br />
* rlevinson<br />
* schurrc<br />
* stmcb<br />
<br />
==== Object Oriented Filter Design ====<br />
<br />
* design<br />
* designmethods<br />
* designopts<br />
* fdesign<br />
* fdesign.arbmag<br />
* fdesign.bandpass<br />
* fdesign.bandstop<br />
* fdesign.differentiator<br />
* fdesign.highpass<br />
* fdesign.hilbert<br />
* fdesign.lowpass<br />
* fdesign.pulseshaping<br />
* setspecs<br />
* validstructures<br />
<br />
==== Interactive Design Tools ====<br />
<br />
* dspfwiz<br />
* fdatool<br />
* filterbuilder<br />
* sptool<br />
* wintool<br />
* wvtool<br />
<br />
<br />
[[Category:Octave Forge]]<br />
[[Category:Missing functions]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Packages&diff=13033Packages2020-05-20T18:03:17Z<p>Mtmiller: /* Pythonic */ add Pythonic package</p>
<hr />
<div>[[File:Octave-flower.svg|left|frame|[[:Category:Octave Forge|Octave Forge]] logo.]]<br />
<br />
This is a list of Packages available for GNU Octave.<br />
<br />
For a collection of high quality packages see [[:Category:Octave Forge|Octave Forge]].<br />
<br />
= External Packages =<br />
<br />
Feel free to add your package.<br />
<br />
== MPI ==<br />
<br />
[https://github.com/carlodefalco/octave-mpi mpi] Octave bindings for basic Message Passing Interface (MPI) functions for parallel computing.<br />
<br />
== GeoPDEs ==<br />
<br />
[http://rafavzqz.github.io/geopdes/ GeoPDEs] is an open source and free package for the research and teaching of Isogeometric Analysis, written in Octave and fully compatible with Matlab.<br />
<br />
The GeoPDEs package provides a common and flexible framework for implementing and testing new isogeometric methods for the solution of partial differential equations. <br />
<br />
== FEATool - Finite Element Analysis Toolbox ==<br />
<br />
[https://www.featool.com/multiphysics/ FEATool Multiphysics] is a commercial and proprietary Octave and Matlab FEM toolbox for modeling and simulation of physics and engineering applications with the finite element method. FEATool features an easy to use GUI and fully integrated CAD, geometry tools, automatic grid generation and solvers.<br />
<br />
* https://www.featool.com/<br />
<br />
== go-redis ==<br />
<br />
GNU Octave Redis client<br />
<br />
* https://github.com/markuman/go-redis<br />
<br />
== LIBSVM, LIBLINEAR ==<br />
<br />
Libraries for support vector machine / machine learning classification, regression, and distribution estimation problems. C++, with an interface to Octave.<br />
<br />
* http://www.csie.ntu.edu.tw/~cjlin/libsvm<br />
* http://www.csie.ntu.edu.tw/~cjlin/liblinear<br />
<br />
== ltfat ==<br />
<br />
The Large Time-Frequency Analysis Toolbox®. Please note, this package is available on Octave Forge too, but it has its own website.<br />
<br />
* http://ltfat.github.io/<br />
<br />
== mex-sqlite3 ==<br />
<br />
An extension for MATLAB® or GNU/octave to access sqlite3 databases <br />
<br />
* https://github.com/rmartinjak/mex-sqlite3<br />
<br />
== octave-network-toolbox ==<br />
<br />
A set of graph/networks analysis functions in Octave<br />
<br />
* http://aeolianine.github.io/octave-networks-toolbox/<br />
<br />
== octsympy ==<br />
<br />
: ''Main article: [[Symbolic package]]''<br />
<br />
This package is now part of Octave Forge as [[Symbolic package]]. Main development site is still at https://github.com/cbm755/octsympy.<br />
<br />
== sci cosim ==<br />
<br />
: ''Main article: [[sci cosim]]''<br />
<br />
Scilab co-simulation package<br />
<br />
* https://github.com/amromanov/sci_cosim<br />
<br />
== shogun ==<br />
<br />
The Shogun Machine Learning Toolbox® <br />
<br />
* https://github.com/shogun-toolbox/shogun<br />
<br />
== vlfeat == <br />
<br />
The VLFeat open source library implements popular computer vision algorithms including HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, and quick shift.<br />
<br />
* http://www.vlfeat.org/index.html<br />
<br />
== epanet-octave == <br />
<br />
The epanet-octave open source library is a wrapper, including some scripts, to call Epanet Toolkit. Functions are adapted to improve its usability in GNU Octave (e.g. allowing vectors as EpaNet Toolkit function inputs). Still under development. <br />
<br />
* https://forja.cica.es/projects/epanet-octave/<br />
<br />
== mexopencv ==<br />
<br />
Collection and a development kit of matlab mex functions for OpenCV library<br />
<br />
* http://kyamagu.github.io/mexopencv<br />
* https://github.com/kyamagu/mexopencv<br />
<br />
== gpml==<br />
Gaussian processes for machine learning<br />
<br />
* [http://www.gaussianprocess.org/gpml/code/matlab/doc/ Webpage of the author]<br />
* [https://gitlab.com/hnickisch/gpml-matlab Repository]<br />
* Downloads or pkg installation: https://gitlab.com/hnickisch/gpml-matlab/-/releases<br />
<br />
== ekfukf ==<br />
Kalman filtering and smoothing<br />
<br />
* [https://github.com/kakila/ekfukf Repository]<br />
<br />
== fda ==<br />
Functional data analysis<br />
<br />
* [http://www.psych.mcgill.ca/misc/fda/ Webpage of the author]<br />
* [https://gitlab.com/kakila/fda Repository]<br />
<br />
== Tablicious ==<br />
Matlab-compatible table, datetime, and categorical data types<br />
(Like "pandas for Octave")<br />
<br />
* [https://github.com/apjanke/octave-tablicious Tablicious on GitHub]<br />
<br />
== Packajoozle ==<br />
An experimental alternative package manager for Octave<br />
<br />
* [https://github.com/apjanke/octave-packajoozle Packajoozle on GitHub]<br />
<br />
== Pythonic ==<br />
<br />
: ''Main article: [[Pythonic]]''<br />
<br />
The Pythonic package provides a Python language binding for Octave, to allow<br />
any Python package to be loaded and used directly, with automatic translation<br />
from Octave to Python data types.<br />
<br />
* https://gitlab.com/mtmiller/octave-pythonic<br />
<br />
== See also ==<br />
* [[Creating packages]]<br />
* [[Reviewing Octave-Forge packages]]<br />
<br />
[[Category:Packages| ]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Commit_message_guidelines&diff=12968Commit message guidelines2020-05-14T21:12:11Z<p>Mtmiller: /* Body of the commit message */ mention avoiding patterns or abbreviations</p>
<hr />
<div>Our commit messages for Mercurial get automatically distilled into GNU Changelog entries. The GNU coding standards have [http://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html some guidelines] for how to write Changelogs, and since Octave is a GNU project, we try to produce Changelogs in this style. However, certain things have to be adapted because the style in there is primarily for C sources, and because we are producing them from Mercurial commit messages.<br />
<br />
You can see how [[Mercurial]] will produce the Changelog-style output with the following command:<br />
<br />
hg log --style changelog<br />
<br />
*Note that this command will print all changelogs to the screen, currently including all changelogs back to 2008 and approaching 200,0000 lines of text. You may use the followig command for a paged output:<br />
<br />
hg log --style changelog | less<br />
<br />
*Alternatively, you may save the changlogs to a text file. This will permit viewing and searching in a text editor for use in preparing your own commit messages:<br />
<br />
hg log --style changelog >> octave_changelogs.log<br />
<br />
<br />
== Guidelines ==<br />
<br />
General structure of a commit message:<br />
<br />
:: '''One-line description'''<br />
:: ''Empty line''<br />
:: '''Body of the commit message'''<br />
<br />
=== One-line description === <br />
<br />
The commit message should start with a brief one-line description of what the<br />
commit does. Keep it short, no longer than 80 characters. If you are working<br />
on a bug or applying a patch, this one-line explanation should mention the bug<br />
or patch number at the end like so: {{codeline|... (bug #12345)}}. Do not end<br />
the first line with a period (full stop).<br />
<br />
If your change only touches one file, then the name of that file can be the<br />
prefix of the one-line description. If it's a C++ or C file, the function or<br />
class that is being modified should be included in the parenthetical remark,<br />
as in the full body of the commit message.<br />
<br />
In addition, there are a few prefixes for certain types of commits:<br />
<br />
* maint: for reorganisation of the sources that do not change the source. Regular merge commits are a prominent example.<br />
* doc: for changes to the documentation.<br />
* build: for changes to the build system, for example autoconf or automake files.<br />
<br />
If your change is small and only touches one file, then the one-line<br />
description may serve as the entire commit message.<br />
<br />
=== Body of the commit message ===<br />
<br />
If there is more than one file touched in different ways and the one-line<br />
description isn't enough to describe all changes, the commit message needs a<br />
full-body description.<br />
<br />
Each individual file changed by a commmit must have its changes enumerated.<br />
For changes affecting specific C++ functions, each function name is listed in<br />
parentheses. For example<br />
<br />
<pre><br />
* file.cc (class1::function1): Add something.<br />
(function2, function3): Delete something else.<br />
</pre><br />
<br />
For changes affecting specific Octave built-ins, each built-in name is listed<br />
in parentheses with an "F" prefix, an implementation detail. For example<br />
<br />
<pre><br />
* data.cc (Fcolumns): Return columns.<br />
</pre><br />
<br />
When the same change is applied to a series of files, or to a set of functions<br />
in a single file, the file or function names may be grouped to shorten the<br />
commit message. For example:<br />
<br />
<pre><br />
* file1.cc, file2.cc, file3.cc, file4.cc: Include <sys/types.h>.<br />
* memory.cc (function1, function2, function3): Throw error if empty.<br />
</pre><br />
<br />
Each line of the commit message body should also be kept under 80 columns. The<br />
GNU standards recommend starting a new line for each parenthesized function,<br />
but if the line is short enough, we often avoid an extra newline. For example<br />
<br />
<pre><br />
* file.cc (function1): Add an option. (function2): Add another option.<br />
</pre><br />
<br />
Only the last file name component is typically needed, since most files have<br />
unique names across the entire repository. One notable exception are the<br />
{{codeline|module.mk}} files in every directory, they should include the<br />
complete directory and file name. For example<br />
<br />
<pre><br />
* doc/interpreter/module.mk (dist_man_MANS): Include foo.1 in the list.<br />
</pre><br />
<br />
Avoid abbreviating or using shell globs or patterns when listing the names of<br />
files affected by a change, even when they have the same name with different<br />
file extensions. For example<br />
<br />
<pre><br />
* oct-fftw.cc, oct-fftw.h (octave_fftw_version): New function.<br />
</pre><br />
<br />
For m-file and Fortran sources, the function name can be omitted if the file<br />
contains only one function. For changes outside of functions or classes, of<br />
course the parenthetical (function) or (class::function) specifiers can also<br />
be omitted.<br />
<br />
=== Wording ===<br />
<br />
Please write "New function" instead of "Added function" or "Return retval"<br />
instead of "Changed to return retval".<br />
<br />
Never write "Fixed bug" or similar. That doesn't add any specific<br />
information about what was changed.<br />
<br />
The commit message should describe what was changed, not why it was changed.<br />
Any explanation for why a change is needed should appear as comments in the<br />
code, particularly if there is something that might not be obvious to someone<br />
reading it later.<br />
<br />
<br />
== Examples ==<br />
<br />
<pre><br />
look for methods before constructors<br />
<br />
* symtab.cc (symbol_table::fcn_info::fcn_info_rep::find):<br />
Look for class methods before constructors, contrary to Matlab<br />
documentation.<br />
* test/ctor-vs-method: New directory of test classes.<br />
* test/test_ctor_vs_method.m: New file.<br />
* test/Makefile.am: Include ctor-vs-method/module.mk.<br />
(FCN_FILES): Include test_ctor_vs_method.m in the list.<br />
</pre><br />
<br />
<pre><br />
allow abbreviations for optimset and optimget (bug #38999)<br />
<br />
* optimset.m, optimget.m: Handle abbreviated keys and warn for<br />
ambiguous abbreviations. New tests.<br />
</pre><br />
<br />
<pre><br />
add format option to ticklabel (bug #34906)<br />
<br />
* graphics.cc: add new functions to support different input arguments to<br />
xyzticklabel. Add tests.<br />
* graphics.in.h: define set_xyzticklabel as external function<br />
</pre><br />
<br />
<pre><br />
tag symbols in indexed assignments as variables (bug #39240)<br />
<br />
* pt-arg-list.cc (tree_argument_list::variable_names): Also return the<br />
symbol names from index expressions.<br />
* parser.tst: New test.<br />
</pre><br />
<br />
<pre><br />
tar, untar, unpack: Add support for BSD tar (bug #53695)<br />
<br />
* tar_is_bsd.m: New function.<br />
* tar.m: Use it to determine how to run tar and parse command output.<br />
* unpack.m: Likewise.<br />
</pre><br />
<br />
=== One line commit examples ===<br />
<br />
This examples are the rare cases where only one file is modified and the<br />
change is simple enough:<br />
<br />
<pre>maint: merge away accidental head.</pre><br />
<pre>maint: Strip trailing whitespace from source files.</pre><br />
<pre>maint: Update gnulib to latest changes.</pre><br />
<pre>maint: Periodic merge of stable to default.</pre><br />
<pre>doc: grammarcheck documentation for 4.2 release.</pre><br />
<pre>pkg.m4: update to lastest version as released with pkg-config 0.29 (bug #48775)</pre><br />
<pre>uigetfile.m: allow path names as input arg (bug #48828)</pre><br />
<br />
<br />
[[Category:Development]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=12926Octave for GNU/Linux2020-05-06T18:19:23Z<p>Mtmiller: /* Distribution independent */ include Spack</p>
<hr />
<div>= Distributions =<br />
<br />
The recommended way for installing Octave on GNU/Linux systems is via each distribution's package installation system. If this is for some reason not possible, or the available Octave version too old, consider using a [[#Distribution_independent|distribution independent]] approach described below or [[Building|build Octave from source]].<br />
<br />
== Arch Linux ==<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
pacman -S octave<br />
<br />
== Debian and Debian-based (such as Ubuntu) ==<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
apt install octave<br />
apt install liboctave-dev # development files<br />
<br />
== Fedora ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
dnf install octave<br />
dnf install octave-devel # development files<br />
<br />
== Gentoo ==<br />
<br />
emerge --ask sci-mathematics/octave<br />
<br />
== openSUSE and SUSE Linux Enterprise ==<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
zypper install octave<br />
zypper install octave-devel # development files<br />
<br />
== Red Hat Enterprise/CentOS ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
yum install epel-release<br />
yum install octave<br />
yum install octave-devel # development files<br />
<br />
If the above does not work, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL.<br />
<br />
== Slackware ==<br />
<br />
: ''Main article: [[Octave for Slackware]]''<br />
<br />
= Distribution independent =<br />
<br />
Using a distribution independent approach is particularly useful if you have an older GNU/Linux distribution or if you do not have root access on your system. A common drawback of this approach is, that these solutions are running in some kind of sandbox. Thus limitations in the communication with the underlying system may exist. For example, executing system binaries outside the sandbox might be impossible.<br />
<br />
== Docker ==<br />
<br />
* More info: https://hub.docker.com/r/mtmiller/octave<br />
* Development: https://gitlab.com/mtmiller/docker-octave<br />
<br />
docker pull mtmiller/octave<br />
<br />
== Flatpak ==<br />
<br />
* More info: https://flathub.org/apps/details/org.octave.Octave<br />
* Development: https://github.com/flathub/org.octave.Octave<br />
<br />
flatpak install flathub org.octave.Octave<br />
<br />
== Guix ==<br />
<br />
* More info: https://guix.gnu.org/packages/octave-5.2.0/<br />
<br />
guix install octave<br />
<br />
== Homebrew on Linux ==<br />
<div id="Linuxbrew"></div><br />
<br />
"Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory.<br />
<br />
* More info: https://docs.brew.sh/Homebrew-on-Linux<br />
* Development: https://formulae.brew.sh/formula/octave<br />
<br />
brew install octave<br />
<br />
== MXE ==<br />
<br />
* More info: [[MXE]]<br />
* Development: https://hg.octave.org/mxe-octave<br />
<br />
== Snap ==<br />
<br />
* More info: https://snapcraft.io/octave<br />
* Development: https://github.com/octave-snap/octave-snap<br />
<br />
snap install octave<br />
<br />
== Spack ==<br />
<br />
* More info: https://spack.readthedocs.io/en/latest/<br />
* Development: https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/octave/package.py<br />
<br />
spack install octave<br />
<br />
= Building from source =<br />
<br />
: ''Main article: [[Building]]''<br />
<br />
== See also ==<br />
<br />
* [[Octave for other Unix systems]]<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=User:Mtmiller&diff=12761User:Mtmiller2020-03-26T17:19:48Z<p>Mtmiller: /* About Me */ add more contact options</p>
<hr />
<div>== About Me ==<br />
<br />
I am a user, developer, and advocate of GNU Octave. I started using Octave around May 2007 while working on my MSEE. I started submitting bugs and patches against Octave in February 2012, mainly to fix some compilation problems I had with the latest release on an older Red Hat Enterprise 5 system I used at work. One thing led to another and I am now a co-maintainer of the Octave project, frequent contributor to both development and discussion, bug triager, tester, etc.<br />
<br />
My main areas of interest within the Octave project are<br />
<br />
* developing Octave's nascent [[Python interface]]<br />
* maintaining the [[Signal package|signal processing]] and [[Communications package|communications]] packages<br />
* maintaining and improving Octave's build system<br />
* aiming for stability and consistency of user experience, portability, particularly to different versions of GNU/Linux and Unix<br />
* encouraging new contributors, mentoring, and helping to build community around Octave<br />
<br />
My primary development environment is Debian GNU/Linux, but I occasionally build and test Octave on other distributions and Unices.<br />
<br />
I am involved in packaging and testing Octave for both the Debian and Ubuntu distributions. I am a member of the [http://wiki.debian.org/Teams/DebianOctaveGroup Debian Octave Group] and the [https://launchpad.net/~octave Ubuntu Octave Team].<br />
<br />
I have been a mentor for two very successful projects under the Google Summer of Code program.<br />
<br />
You can contact me on [https://webchat.freenode.net/?channels=#octave #octave] as mtmiller, on Matrix as [https://matrix.to/#/@mtmiller:matrix.org @mtmiller:matrix.org], or on Telegram as [https://t.me/mtmiller @mtmiller].<br />
<br />
My editor of choice is [[VIM|Vim]].<br />
<br />
== Octave Project Ideas ==<br />
<br />
I always have more ideas for projects I would like to work on than I have<br />
time for. Please feel free to contact me about any of these ideas, borrow<br />
them, work on them, copy them to the [[projects]] page, but let me know as<br />
a courtesy and in case I have any other thoughts or partial work that<br />
might be useful.<br />
<br />
* Create a complete Vim environment with [[User:Rik]]'s syntax highlighting rules, indenting, if-end keyword matching, function block jumping, etc.<br />
* Update pygments syntax highlighting for Octave if needed.<br />
* Apply [[User:Oheim]]'s custom css for the interval package to the communications package manual.<br />
* Make a static m-file format/style analyzer, a la pep8, that can help users teach themselves GNU Octave style conventions.<br />
* Adapt Debian packaging to operate on a clean hg clone, add build-deps (bison, flex, gperf), build package from any hg revision<br />
** Can this be used to run an automatic build of a "nightly" package on Launchpad?<br />
** Should any of this be applied to the official Debian packaging?<br />
* Query the terminal size directly from the terminal instead of readline as a fallback. Also allow COLUMNS and LINES to override terminal size.<br />
* Hi-resolution time using clock_gettime if available instead of gettimeofday.<br />
<br />
== Octave Work ==<br />
<br />
See [[User:Mtmiller/TODO]].<br />
<br />
== External Links ==<br />
<br />
I work under the following profiles on these development sites. These are<br />
all related to work I've done with Octave to some degree.<br />
<br />
* [https://savannah.gnu.org/users/mtmiller mtmiller] on Savannah<br />
* [https://sourceforge.net/u/mtmiller mtmiller] on SourceForge<br />
* [https://bitbucket.org/mtmiller mtmiller] on Bitbucket<br />
* [https://github.com/mtmiller mtmiller] on GitHub<br />
* [https://gitlab.com/mtmiller mtmiller] on GitLab<br />
* [https://salsa.debian.org/mtmiller mtmiller] on Debian Salsa<br />
* [https://launchpad.net/~mtmiller mtmiller] on Launchpad</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Commit_message_guidelines&diff=12754Commit message guidelines2020-03-21T20:23:56Z<p>Mtmiller: /* Examples */ add an m-file example commit message</p>
<hr />
<div>Our commit messages for Mercurial get automatically distilled into GNU Changelog entries. The GNU coding standards have [http://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html some guidelines] for how to write Changelogs, and since Octave is a GNU project, we try to produce Changelogs in this style. However, certain things have to be adapted because the style in there is primarily for C sources, and because we are producing them from Mercurial commit messages.<br />
<br />
You can see how [[Mercurial]] will produce the Changelog-style output with the following command:<br />
<br />
hg log --style changelog<br />
<br />
*Note that this command will print all changelogs to the screen, currently including all changelogs back to 2008 and approaching 200,0000 lines of text. You may use the followig command for a paged output:<br />
<br />
hg log --style changelog | less<br />
<br />
*Alternatively, you may save the changlogs to a text file. This will permit viewing and searching in a text editor for use in preparing your own commit messages:<br />
<br />
hg log --style changelog >> octave_changelogs.log<br />
<br />
<br />
== Guidelines ==<br />
<br />
General structure of a commit message:<br />
<br />
:: '''One-line description'''<br />
:: ''Empty line''<br />
:: '''Body of the commit message'''<br />
<br />
=== One-line description === <br />
<br />
The commit message should start with a brief one-line description of what the<br />
commit does. Keep it short, no longer than 80 characters. If you are working<br />
on a bug or applying a patch, this one-line explanation should mention the bug<br />
or patch number at the end like so: {{codeline|... (bug #12345)}}. Do not end<br />
the first line with a period (full stop).<br />
<br />
If your change only touches one file, then the name of that file can be the<br />
prefix of the one-line description. If it's a C++ or C file, the function or<br />
class that is being modified should be included in the parenthetical remark,<br />
as in the full body of the commit message.<br />
<br />
In addition, there are a few prefixes for certain types of commits:<br />
<br />
* maint: for reorganisation of the sources that do not change the source. Regular merge commits are a prominent example.<br />
* doc: for changes to the documentation.<br />
* build: for changes to the build system, for example autoconf or automake files.<br />
<br />
If your change is small and only touches one file, then the one-line<br />
description may serve as the entire commit message.<br />
<br />
=== Body of the commit message ===<br />
<br />
If there is more than one file touched in different ways and the one-line<br />
description isn't enough to describe all changes, the commit message needs a<br />
full-body description.<br />
<br />
Each individual file changed by a commmit must have its changes enumerated.<br />
For changes affecting specific C++ functions, each function name is listed in<br />
parentheses. For example<br />
<br />
<pre><br />
* file.cc (class1::function1): Add something.<br />
(function2, function3): Delete something else.<br />
</pre><br />
<br />
For changes affecting specific Octave built-ins, each built-in name is listed<br />
in parentheses with an "F" prefix, an implementation detail. For example<br />
<br />
<pre><br />
* data.cc (Fcolumns): Return columns.<br />
</pre><br />
<br />
When the same change is applied to a series of files, or to a set of functions<br />
in a single file, the file or function names may be grouped to shorten the<br />
commit message. For example:<br />
<br />
<pre><br />
* file1.cc, file2.cc, file3.cc, file4.cc: Include <sys/types.h>.<br />
* memory.cc (function1, function2, function3): Throw error if empty.<br />
</pre><br />
<br />
Each line of the commit message body should also be kept under 80 columns. The<br />
GNU standards recommend starting a new line for each parenthesized function,<br />
but if the line is short enough, we often avoid an extra newline. For example<br />
<br />
<pre><br />
* file.cc (function1): Add an option. (function2): Add another option.<br />
</pre><br />
<br />
Only the last file name component is typically needed, since most files have<br />
unique names across the entire repository. One notable exception are the<br />
{{codeline|module.mk}} files in every directory, they should include the<br />
complete directory and file name. For example<br />
<br />
<pre><br />
* doc/interpreter/module.mk (dist_man_MANS): Include foo.1 in the list.<br />
</pre><br />
<br />
For m-file and Fortran sources, the function name can be omitted if the file<br />
contains only one function. For changes outside of functions or classes, of<br />
course the parenthetical (function) or (class::function) specifiers can also<br />
be omitted.<br />
<br />
=== Wording ===<br />
<br />
Please write "New function" instead of "Added function" or "Return retval"<br />
instead of "Changed to return retval".<br />
<br />
Never write "Fixed bug" or similar. That doesn't add any specific<br />
information about what was changed.<br />
<br />
The commit message should describe what was changed, not why it was changed.<br />
Any explanation for why a change is needed should appear as comments in the<br />
code, particularly if there is something that might not be obvious to someone<br />
reading it later.<br />
<br />
<br />
== Examples ==<br />
<br />
<pre><br />
look for methods before constructors<br />
<br />
* symtab.cc (symbol_table::fcn_info::fcn_info_rep::find):<br />
Look for class methods before constructors, contrary to Matlab<br />
documentation.<br />
* test/ctor-vs-method: New directory of test classes.<br />
* test/test_ctor_vs_method.m: New file.<br />
* test/Makefile.am: Include ctor-vs-method/module.mk.<br />
(FCN_FILES): Include test_ctor_vs_method.m in the list.<br />
</pre><br />
<br />
<pre><br />
allow abbreviations for optimset and optimget (bug #38999)<br />
<br />
* optimset.m, optimget.m: Handle abbreviated keys and warn for<br />
ambiguous abbreviations. New tests.<br />
</pre><br />
<br />
<pre><br />
add format option to ticklabel (bug #34906)<br />
<br />
* graphics.cc: add new functions to support different input arguments to<br />
xyzticklabel. Add tests.<br />
* graphics.in.h: define set_xyzticklabel as external function<br />
</pre><br />
<br />
<pre><br />
tag symbols in indexed assignments as variables (bug #39240)<br />
<br />
* pt-arg-list.cc (tree_argument_list::variable_names): Also return the<br />
symbol names from index expressions.<br />
* parser.tst: New test.<br />
</pre><br />
<br />
<pre><br />
tar, untar, unpack: Add support for BSD tar (bug #53695)<br />
<br />
* tar_is_bsd.m: New function.<br />
* tar.m: Use it to determine how to run tar and parse command output.<br />
* unpack.m: Likewise.<br />
</pre><br />
<br />
=== One line commit examples ===<br />
<br />
This examples are the rare cases where only one file is modified and the<br />
change is simple enough:<br />
<br />
<pre>maint: merge away accidental head.</pre><br />
<pre>maint: Strip trailing whitespace from source files.</pre><br />
<pre>maint: Update gnulib to latest changes.</pre><br />
<pre>maint: Periodic merge of stable to default.</pre><br />
<pre>doc: grammarcheck documentation for 4.2 release.</pre><br />
<pre>pkg.m4: update to lastest version as released with pkg-config 0.29 (bug #48775)</pre><br />
<pre>uigetfile.m: allow path names as input arg (bug #48828)</pre><br />
<br />
<br />
[[Category:Development]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Commit_message_guidelines&diff=12741Commit message guidelines2020-03-13T03:26:07Z<p>Mtmiller: /* Body of the commit message */ clarify and expand with more specific exceptions</p>
<hr />
<div>Our commit messages for Mercurial get automatically distilled into GNU Changelog entries. The GNU coding standards have [http://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html some guidelines] for how to write Changelogs, and since Octave is a GNU project, we try to produce Changelogs in this style. However, certain things have to be adapted because the style in there is primarily for C sources, and because we are producing them from Mercurial commit messages.<br />
<br />
You can see how [[Mercurial]] will produce the Changelog-style output with the following command:<br />
<br />
hg log --style changelog<br />
<br />
*Note that this command will print all changelogs to the screen, currently including all changelogs back to 2008 and approaching 200,0000 lines of text. You may use the followig command for a paged output:<br />
<br />
hg log --style changelog | less<br />
<br />
*Alternatively, you may save the changlogs to a text file. This will permit viewing and searching in a text editor for use in preparing your own commit messages:<br />
<br />
hg log --style changelog >> octave_changelogs.log<br />
<br />
<br />
== Guidelines ==<br />
<br />
General structure of a commit message:<br />
<br />
:: '''One-line description'''<br />
:: ''Empty line''<br />
:: '''Body of the commit message'''<br />
<br />
=== One-line description === <br />
<br />
The commit message should start with a brief one-line description of what the<br />
commit does. Keep it short, no longer than 80 characters. If you are working<br />
on a bug or applying a patch, this one-line explanation should mention the bug<br />
or patch number at the end like so: {{codeline|... (bug #12345)}}. Do not end<br />
the first line with a period (full stop).<br />
<br />
If your change only touches one file, then the name of that file can be the<br />
prefix of the one-line description. If it's a C++ or C file, the function or<br />
class that is being modified should be included in the parenthetical remark,<br />
as in the full body of the commit message.<br />
<br />
In addition, there are a few prefixes for certain types of commits:<br />
<br />
* maint: for reorganisation of the sources that do not change the source. Regular merge commits are a prominent example.<br />
* doc: for changes to the documentation.<br />
* build: for changes to the build system, for example autoconf or automake files.<br />
<br />
If your change is small and only touches one file, then the one-line<br />
description may serve as the entire commit message.<br />
<br />
=== Body of the commit message ===<br />
<br />
If there is more than one file touched in different ways and the one-line<br />
description isn't enough to describe all changes, the commit message needs a<br />
full-body description.<br />
<br />
Each individual file changed by a commmit must have its changes enumerated.<br />
For changes affecting specific C++ functions, each function name is listed in<br />
parentheses. For example<br />
<br />
<pre><br />
* file.cc (class1::function1): Add something.<br />
(function2, function3): Delete something else.<br />
</pre><br />
<br />
For changes affecting specific Octave built-ins, each built-in name is listed<br />
in parentheses with an "F" prefix, an implementation detail. For example<br />
<br />
<pre><br />
* data.cc (Fcolumns): Return columns.<br />
</pre><br />
<br />
When the same change is applied to a series of files, or to a set of functions<br />
in a single file, the file or function names may be grouped to shorten the<br />
commit message. For example:<br />
<br />
<pre><br />
* file1.cc, file2.cc, file3.cc, file4.cc: Include <sys/types.h>.<br />
* memory.cc (function1, function2, function3): Throw error if empty.<br />
</pre><br />
<br />
Each line of the commit message body should also be kept under 80 columns. The<br />
GNU standards recommend starting a new line for each parenthesized function,<br />
but if the line is short enough, we often avoid an extra newline. For example<br />
<br />
<pre><br />
* file.cc (function1): Add an option. (function2): Add another option.<br />
</pre><br />
<br />
Only the last file name component is typically needed, since most files have<br />
unique names across the entire repository. One notable exception are the<br />
{{codeline|module.mk}} files in every directory, they should include the<br />
complete directory and file name. For example<br />
<br />
<pre><br />
* doc/interpreter/module.mk (dist_man_MANS): Include foo.1 in the list.<br />
</pre><br />
<br />
For m-file and Fortran sources, the function name can be omitted if the file<br />
contains only one function. For changes outside of functions or classes, of<br />
course the parenthetical (function) or (class::function) specifiers can also<br />
be omitted.<br />
<br />
=== Wording ===<br />
<br />
Please write "New function" instead of "Added function" or "Return retval"<br />
instead of "Changed to return retval".<br />
<br />
Never write "Fixed bug" or similar. That doesn't add any specific<br />
information about what was changed.<br />
<br />
The commit message should describe what was changed, not why it was changed.<br />
Any explanation for why a change is needed should appear as comments in the<br />
code, particularly if there is something that might not be obvious to someone<br />
reading it later.<br />
<br />
<br />
== Examples ==<br />
<br />
<pre><br />
look for methods before constructors<br />
<br />
* symtab.cc (symbol_table::fcn_info::fcn_info_rep::find):<br />
Look for class methods before constructors, contrary to Matlab<br />
documentation.<br />
* test/ctor-vs-method: New directory of test classes.<br />
* test/test_ctor_vs_method.m: New file.<br />
* test/Makefile.am: Include ctor-vs-method/module.mk.<br />
(FCN_FILES): Include test_ctor_vs_method.m in the list.<br />
</pre><br />
<br />
<pre><br />
allow abbreviations for optimset and optimget (bug #38999)<br />
<br />
* optimset.m, optimget.m: Handle abbreviated keys and warn for<br />
ambiguous abbreviations. New tests.<br />
</pre><br />
<br />
<pre><br />
add format option to ticklabel (bug #34906)<br />
<br />
* graphics.cc: add new functions to support different input arguments to<br />
xyzticklabel. Add tests.<br />
* graphics.in.h: define set_xyzticklabel as external function<br />
</pre><br />
<br />
<pre><br />
tag symbols in indexed assignments as variables (bug #39240)<br />
<br />
* pt-arg-list.cc (tree_argument_list::variable_names): Also return the<br />
symbol names from index expressions.<br />
* parser.tst: New test.<br />
</pre><br />
<br />
=== One line commit examples ===<br />
<br />
This examples are the rare cases where only one file is modified and the<br />
change is simple enough:<br />
<br />
<pre>maint: merge away accidental head.</pre><br />
<pre>maint: Strip trailing whitespace from source files.</pre><br />
<pre>maint: Update gnulib to latest changes.</pre><br />
<pre>maint: Periodic merge of stable to default.</pre><br />
<pre>doc: grammarcheck documentation for 4.2 release.</pre><br />
<pre>pkg.m4: update to lastest version as released with pkg-config 0.29 (bug #48775)</pre><br />
<pre>uigetfile.m: allow path names as input arg (bug #48828)</pre><br />
<br />
<br />
[[Category:Development]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Commit_message_guidelines&diff=12740Commit message guidelines2020-03-13T02:32:53Z<p>Mtmiller: /* One-line description */ reword for clarity, add build prefix</p>
<hr />
<div>Our commit messages for Mercurial get automatically distilled into GNU Changelog entries. The GNU coding standards have [http://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html some guidelines] for how to write Changelogs, and since Octave is a GNU project, we try to produce Changelogs in this style. However, certain things have to be adapted because the style in there is primarily for C sources, and because we are producing them from Mercurial commit messages.<br />
<br />
You can see how [[Mercurial]] will produce the Changelog-style output with the following command:<br />
<br />
hg log --style changelog<br />
<br />
*Note that this command will print all changelogs to the screen, currently including all changelogs back to 2008 and approaching 200,0000 lines of text. You may use the followig command for a paged output:<br />
<br />
hg log --style changelog | less<br />
<br />
*Alternatively, you may save the changlogs to a text file. This will permit viewing and searching in a text editor for use in preparing your own commit messages:<br />
<br />
hg log --style changelog >> octave_changelogs.log<br />
<br />
<br />
== Guidelines ==<br />
<br />
General structure of a commit message:<br />
<br />
:: '''One-line description'''<br />
:: ''Empty line''<br />
:: '''Body of the commit message'''<br />
<br />
=== One-line description === <br />
<br />
The commit message should start with a brief one-line description of what the<br />
commit does. Keep it short, no longer than 80 characters. If you are working<br />
on a bug or applying a patch, this one-line explanation should mention the bug<br />
or patch number at the end like so: {{codeline|... (bug #12345)}}. Do not end<br />
the first line with a period (full stop).<br />
<br />
If your change only touches one file, then the name of that file can be the<br />
prefix of the one-line description. If it's a C++ or C file, the function or<br />
class that is being modified should be included in the parenthetical remark,<br />
as in the full body of the commit message.<br />
<br />
In addition, there are a few prefixes for certain types of commits:<br />
<br />
* maint: for reorganisation of the sources that do not change the source. Regular merge commits are a prominent example.<br />
* doc: for changes to the documentation.<br />
* build: for changes to the build system, for example autoconf or automake files.<br />
<br />
If your change is small and only touches one file, then the one-line<br />
description may serve as the entire commit message.<br />
<br />
=== Body of the commit message ===<br />
<br />
If there is more than one file touched in different ways and the one-line<br />
description isn't enough to describe all changes, the commit message needs<br />
a full-body description.<br />
<br />
Individual files you touched get their changes separately enumerated. If<br />
there a particular C or C++ function you changed, the general format is<br />
<br />
<pre><br />
* file.cc (class1::function1): Make change foo. <br />
(class2::function2): Make change bar.<br />
</pre><br />
<br />
Note the newline for describing the change to a different function. General<br />
GNU style guidelines can be followed here, so that similar changes to<br />
different files can be grouped.<br />
<br />
For m-script and Fortran sources, the function name can be omitted if<br />
the m-script only contains one file. For changes outside of functions<br />
or classes, of course the parenthetical (function) or (class::function)<br />
specifiers can also be omitted.<br />
<br />
=== Wording ===<br />
<br />
Please write "New function" instead of "Added function" or "Return retval"<br />
instead of "Changed to return retval".<br />
<br />
Never write "Fixed bug" or similar. That doesn't add any specific<br />
information about what was changed.<br />
<br />
The commit message should describe what was changed, not why it was changed.<br />
Any explanation for why a change is needed should appear as comments in the<br />
code, particularly if there is something that might not be obvious to someone<br />
reading it later.<br />
<br />
<br />
== Examples ==<br />
<br />
<pre><br />
look for methods before constructors<br />
<br />
* symtab.cc (symbol_table::fcn_info::fcn_info_rep::find):<br />
Look for class methods before constructors, contrary to Matlab<br />
documentation.<br />
* test/ctor-vs-method: New directory of test classes.<br />
* test/test_ctor_vs_method.m: New file.<br />
* test/Makefile.am: Include ctor-vs-method/module.mk.<br />
(FCN_FILES): Include test_ctor_vs_method.m in the list.<br />
</pre><br />
<br />
<pre><br />
allow abbreviations for optimset and optimget (bug #38999)<br />
<br />
* optimset.m, optimget.m: Handle abbreviated keys and warn for<br />
ambiguous abbreviations. New tests.<br />
</pre><br />
<br />
<pre><br />
add format option to ticklabel (bug #34906)<br />
<br />
* graphics.cc: add new functions to support different input arguments to<br />
xyzticklabel. Add tests.<br />
* graphics.in.h: define set_xyzticklabel as external function<br />
</pre><br />
<br />
<pre><br />
tag symbols in indexed assignments as variables (bug #39240)<br />
<br />
* pt-arg-list.cc (tree_argument_list::variable_names): Also return the<br />
symbol names from index expressions.<br />
* parser.tst: New test.<br />
</pre><br />
<br />
=== One line commit examples ===<br />
<br />
This examples are the rare cases where only one file is modified and the<br />
change is simple enough:<br />
<br />
<pre>maint: merge away accidental head.</pre><br />
<pre>maint: Strip trailing whitespace from source files.</pre><br />
<pre>maint: Update gnulib to latest changes.</pre><br />
<pre>maint: Periodic merge of stable to default.</pre><br />
<pre>doc: grammarcheck documentation for 4.2 release.</pre><br />
<pre>pkg.m4: update to lastest version as released with pkg-config 0.29 (bug #48775)</pre><br />
<pre>uigetfile.m: allow path names as input arg (bug #48828)</pre><br />
<br />
<br />
[[Category:Development]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=12732Octave for GNU/Linux2020-03-11T05:28:20Z<p>Mtmiller: /* Guix */ add install command</p>
<hr />
<div>= Distributions =<br />
<br />
The recommended way for installing Octave on GNU/Linux systems is via each distribution's package installation system. If this is for some reason not possible, or the available Octave version too old, consider using a [[#Distribution_independent|distribution independent]] approach described below or [[Building]] Octave from source.<br />
<br />
== Arch Linux ==<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
pacman -S octave<br />
<br />
== Debian and Debian-based (such as Ubuntu) ==<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
apt install octave<br />
apt install liboctave-dev # development files<br />
<br />
== Fedora ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
dnf install octave<br />
dnf install octave-devel # development files<br />
<br />
== Gentoo ==<br />
<br />
emerge --ask sci-mathematics/octave<br />
<br />
== openSUSE and SUSE Linux Enterprise ==<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
zypper install octave<br />
zypper install octave-devel # development files<br />
<br />
== Red Hat Enterprise/CentOS ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
yum install epel-release<br />
yum install octave<br />
yum install octave-devel # development files<br />
<br />
If the above does not work, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL.<br />
<br />
== Slackware ==<br />
<br />
: ''Main article: [[Octave for Slackware]]''<br />
<br />
= Distribution independent =<br />
<br />
Using a distribution independent approach is particularly useful if you have an older GNU/Linux distribution or if you do not have root access on your system. A common drawback of this approach is, that these solutions are running in some kind of sandbox. Thus limitations in the communication with the underlying system may exist. For example, executing system binaries outside the sandbox might be impossible.<br />
<br />
== Docker ==<br />
<br />
* More info: https://hub.docker.com/r/mtmiller/octave<br />
* Development: https://gitlab.com/mtmiller/docker-octave<br />
<br />
docker pull mtmiller/octave<br />
<br />
== Flatpak ==<br />
<br />
* More info: https://flathub.org/apps/details/org.octave.Octave<br />
* Development: https://github.com/flathub/org.octave.Octave<br />
<br />
flatpak install flathub org.octave.Octave<br />
<br />
== Guix ==<br />
<br />
* More info: https://guix.gnu.org/packages/octave-5.2.0/<br />
<br />
guix install octave<br />
<br />
== Homebrew on Linux ==<br />
<div id="Linuxbrew"></div><br />
<br />
"Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory.<br />
<br />
* More info: https://docs.brew.sh/Homebrew-on-Linux<br />
* Development: https://formulae.brew.sh/formula/octave<br />
<br />
brew install octave<br />
<br />
== MXE ==<br />
<br />
* More info: [[MXE]]<br />
* Development: https://hg.octave.org/mxe-octave<br />
<br />
== Snap ==<br />
<br />
* More info: https://snapcraft.io/octave<br />
* Development: https://github.com/octave-snap/octave-snap<br />
<br />
snap install octave<br />
<br />
= Building from source =<br />
<br />
: ''Main article: [[Building]]''<br />
<br />
== See also ==<br />
<br />
* [[Octave for other Unix systems]]<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=12731Octave for GNU/Linux2020-03-11T05:19:54Z<p>Mtmiller: /* Debian and Debian-based (such as Ubuntu) */ drop sudo, use stable apt command</p>
<hr />
<div>= Distributions =<br />
<br />
The recommended way for installing Octave on GNU/Linux systems is via each distribution's package installation system. If this is for some reason not possible, or the available Octave version too old, consider using a [[#Distribution_independent|distribution independent]] approach described below or [[Building]] Octave from source.<br />
<br />
== Arch Linux ==<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
pacman -S octave<br />
<br />
== Debian and Debian-based (such as Ubuntu) ==<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
apt install octave<br />
apt install liboctave-dev # development files<br />
<br />
== Fedora ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
dnf install octave<br />
dnf install octave-devel # development files<br />
<br />
== Gentoo ==<br />
<br />
emerge --ask sci-mathematics/octave<br />
<br />
== openSUSE and SUSE Linux Enterprise ==<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
zypper install octave<br />
zypper install octave-devel # development files<br />
<br />
== Red Hat Enterprise/CentOS ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
yum install epel-release<br />
yum install octave<br />
yum install octave-devel # development files<br />
<br />
If the above does not work, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL.<br />
<br />
== Slackware ==<br />
<br />
: ''Main article: [[Octave for Slackware]]''<br />
<br />
= Distribution independent =<br />
<br />
Using a distribution independent approach is particularly useful if you have an older GNU/Linux distribution or if you do not have root access on your system. A common drawback of this approach is, that these solutions are running in some kind of sandbox. Thus limitations in the communication with the underlying system may exist. For example, executing system binaries outside the sandbox might be impossible.<br />
<br />
== Docker ==<br />
<br />
* More info: https://hub.docker.com/r/mtmiller/octave<br />
* Development: https://gitlab.com/mtmiller/docker-octave<br />
<br />
docker pull mtmiller/octave<br />
<br />
== Flatpak ==<br />
<br />
* More info: https://flathub.org/apps/details/org.octave.Octave<br />
* Development: https://github.com/flathub/org.octave.Octave<br />
<br />
flatpak install flathub org.octave.Octave<br />
<br />
== Guix ==<br />
<br />
* More info: https://guix.gnu.org/packages/octave-5.2.0/<br />
<br />
== Homebrew on Linux ==<br />
<div id="Linuxbrew"></div><br />
<br />
"Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory.<br />
<br />
* More info: https://docs.brew.sh/Homebrew-on-Linux<br />
* Development: https://formulae.brew.sh/formula/octave<br />
<br />
brew install octave<br />
<br />
== MXE ==<br />
<br />
* More info: [[MXE]]<br />
* Development: https://hg.octave.org/mxe-octave<br />
<br />
== Snap ==<br />
<br />
* More info: https://snapcraft.io/octave<br />
* Development: https://github.com/octave-snap/octave-snap<br />
<br />
snap install octave<br />
<br />
= Building from source =<br />
<br />
: ''Main article: [[Building]]''<br />
<br />
== See also ==<br />
<br />
* [[Octave for other Unix systems]]<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=12730Octave for GNU/Linux2020-03-11T05:12:27Z<p>Mtmiller: /* Snap */ drop --beta channel option</p>
<hr />
<div>= Distributions =<br />
<br />
The recommended way for installing Octave on GNU/Linux systems is via each distribution's package installation system. If this is for some reason not possible, or the available Octave version too old, consider using a [[#Distribution_independent|distribution independent]] approach described below or [[Building]] Octave from source.<br />
<br />
== Arch Linux ==<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
pacman -S octave<br />
<br />
== Debian and Debian-based (such as Ubuntu) ==<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
sudo apt-get install octave<br />
sudo apt-get install liboctave-dev # development files<br />
<br />
== Fedora ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
dnf install octave<br />
dnf install octave-devel # development files<br />
<br />
== Gentoo ==<br />
<br />
emerge --ask sci-mathematics/octave<br />
<br />
== openSUSE and SUSE Linux Enterprise ==<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
zypper install octave<br />
zypper install octave-devel # development files<br />
<br />
== Red Hat Enterprise/CentOS ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
yum install epel-release<br />
yum install octave<br />
yum install octave-devel # development files<br />
<br />
If the above does not work, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL.<br />
<br />
== Slackware ==<br />
<br />
: ''Main article: [[Octave for Slackware]]''<br />
<br />
= Distribution independent =<br />
<br />
Using a distribution independent approach is particularly useful if you have an older GNU/Linux distribution or if you do not have root access on your system. A common drawback of this approach is, that these solutions are running in some kind of sandbox. Thus limitations in the communication with the underlying system may exist. For example, executing system binaries outside the sandbox might be impossible.<br />
<br />
== Docker ==<br />
<br />
* More info: https://hub.docker.com/r/mtmiller/octave<br />
* Development: https://gitlab.com/mtmiller/docker-octave<br />
<br />
docker pull mtmiller/octave<br />
<br />
== Flatpak ==<br />
<br />
* More info: https://flathub.org/apps/details/org.octave.Octave<br />
* Development: https://github.com/flathub/org.octave.Octave<br />
<br />
flatpak install flathub org.octave.Octave<br />
<br />
== Guix ==<br />
<br />
* More info: https://guix.gnu.org/packages/octave-5.2.0/<br />
<br />
== Homebrew on Linux ==<br />
<div id="Linuxbrew"></div><br />
<br />
"Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory.<br />
<br />
* More info: https://docs.brew.sh/Homebrew-on-Linux<br />
* Development: https://formulae.brew.sh/formula/octave<br />
<br />
brew install octave<br />
<br />
== MXE ==<br />
<br />
* More info: [[MXE]]<br />
* Development: https://hg.octave.org/mxe-octave<br />
<br />
== Snap ==<br />
<br />
* More info: https://snapcraft.io/octave<br />
* Development: https://github.com/octave-snap/octave-snap<br />
<br />
snap install octave<br />
<br />
= Building from source =<br />
<br />
: ''Main article: [[Building]]''<br />
<br />
== See also ==<br />
<br />
* [[Octave for other Unix systems]]<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=12729Octave for GNU/Linux2020-03-11T05:11:39Z<p>Mtmiller: /* Guix */ update to version 5.2.0</p>
<hr />
<div>= Distributions =<br />
<br />
The recommended way for installing Octave on GNU/Linux systems is via each distribution's package installation system. If this is for some reason not possible, or the available Octave version too old, consider using a [[#Distribution_independent|distribution independent]] approach described below or [[Building]] Octave from source.<br />
<br />
== Arch Linux ==<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
pacman -S octave<br />
<br />
== Debian and Debian-based (such as Ubuntu) ==<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
sudo apt-get install octave<br />
sudo apt-get install liboctave-dev # development files<br />
<br />
== Fedora ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
dnf install octave<br />
dnf install octave-devel # development files<br />
<br />
== Gentoo ==<br />
<br />
emerge --ask sci-mathematics/octave<br />
<br />
== openSUSE and SUSE Linux Enterprise ==<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
zypper install octave<br />
zypper install octave-devel # development files<br />
<br />
== Red Hat Enterprise/CentOS ==<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
yum install epel-release<br />
yum install octave<br />
yum install octave-devel # development files<br />
<br />
If the above does not work, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL.<br />
<br />
== Slackware ==<br />
<br />
: ''Main article: [[Octave for Slackware]]''<br />
<br />
= Distribution independent =<br />
<br />
Using a distribution independent approach is particularly useful if you have an older GNU/Linux distribution or if you do not have root access on your system. A common drawback of this approach is, that these solutions are running in some kind of sandbox. Thus limitations in the communication with the underlying system may exist. For example, executing system binaries outside the sandbox might be impossible.<br />
<br />
== Docker ==<br />
<br />
* More info: https://hub.docker.com/r/mtmiller/octave<br />
* Development: https://gitlab.com/mtmiller/docker-octave<br />
<br />
docker pull mtmiller/octave<br />
<br />
== Flatpak ==<br />
<br />
* More info: https://flathub.org/apps/details/org.octave.Octave<br />
* Development: https://github.com/flathub/org.octave.Octave<br />
<br />
flatpak install flathub org.octave.Octave<br />
<br />
== Guix ==<br />
<br />
* More info: https://guix.gnu.org/packages/octave-5.2.0/<br />
<br />
== Homebrew on Linux ==<br />
<div id="Linuxbrew"></div><br />
<br />
"Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory.<br />
<br />
* More info: https://docs.brew.sh/Homebrew-on-Linux<br />
* Development: https://formulae.brew.sh/formula/octave<br />
<br />
brew install octave<br />
<br />
== MXE ==<br />
<br />
* More info: [[MXE]]<br />
* Development: https://hg.octave.org/mxe-octave<br />
<br />
== Snap ==<br />
<br />
* More info: https://snapcraft.io/octave<br />
* Development: https://github.com/octave-snap/octave-snap<br />
<br />
snap install octave --beta<br />
<br />
= Building from source =<br />
<br />
: ''Main article: [[Building]]''<br />
<br />
== See also ==<br />
<br />
* [[Octave for other Unix systems]]<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Summer_of_Code_-_Getting_Started&diff=12690Summer of Code - Getting Started2020-02-27T19:12:21Z<p>Mtmiller: update Pythonic naming and URLs</p>
<hr />
<div>The following is distilled from the [[Projects]] page for the benefit of potential [https://summerofcode.withgoogle.com Google] and [https://socis.esa.int/ ESA] Summer of Code (SoC) students. Although students are welcome to attempt any of the projects in that page or any of their own choosing, here we offer some suggestions on what good student projects might be.<br />
<br />
You can also take a look at last years [[Summer of Code]] projects for inspiration.<br />
<br />
= Steps Toward a Successful Application =<br />
<br />
== Help Us Get To Know You == <br />
* If you aren't communicating with us before the application is due, your application will not be accepted.<br />
*:* '''Join the [https://lists.gnu.org/mailman/listinfo/octave-maintainers maintainers mailing list]''' or read the archives and see what topics we discuss and how the developers interact with each other.<br />
*:* '''Hang out in our [https://webchat.freenode.net/?channels=#octave IRC channel]'''. Ask questions, answer questions from users, show us that you are motivated, and well-prepared. There will be more applicants than we can effectively mentor, so do ask for feedback on your public application to increase the strength of your proposal!<br />
* '''Do not wait for us to tell you what to do'''<br />
*: You should be doing something that interests you, and should not need us to tell you what to do. Similarly, you shouldn't ask us what to do either.<br />
*:* When you email the list and mentors, do not write it to say in what project you're interested. Be specific about your questions and clear on the email subject. For example, do not write an email with the subject "GSoC student interested in the ND images projects". Such email is likely be ignored. Instead, show you are already working on the topic, and email "Problem implementing morphological operators with bitpacked ND images".<br />
*:* It is good to ask advice on how to solve something you can't but you must show some work done. Remember, we are mentors and not your boss. Read [http://www.catb.org/esr/faqs/smart-questions.html How to ask questions the smart way]: <blockquote>''Prepare your question. Think it through. Hasty-sounding questions get hasty answers, or none at all. The more you do to demonstrate that having put thought and effort into solving your problem before seeking help, the more likely you are to actually get help.''</blockquote><br />
*:* It can be difficult at the beginning to think on something to do. This is nature of free and open source software development. You will need to break the mental barrier that prevents you from thinking on what can be done. Once you do that, you will have no lack of ideas for what to do next.<br />
*:* Use Octave. Eventually you will come across something that does not work the way you like. Fix that. Or you will come across a missing function. Implement it. It may be a hard problem (they usually are). While solving that problem, you may find other missing capabilities or smaller bug fixes. Implement and contribute those to Octave.<br />
*:* Take a look at the [[Short projects]] for something that may be simple to start with.<br />
<br />
== Find Something That Interests You == <br />
*: It's '''critical''' that you '''find a project that excites you'''. You'll be spending most of the summer working on it (we expect you to treat the SoC as a full-time job).<br />
*: Don't just tell us how interested you are, show us that you're willing and able to '''contribute''' to Octave. You can do that by [https://savannah.gnu.org/bugs/?group=octave fixing a few bugs] or [https://savannah.gnu.org/patch/?group=octave submitting patches] well before the deadline, in addition to regularly interacting with Octave maintainers and users on the mailing list and IRC. Our experience shows us that successful SoC students demonstrate their interest early and often.<br />
== Prepare Your Proposal With Us ==<br />
*: By working with us to prepare your proposal, you'll be getting to know us and showing us how you approach problems. The best place for this is your Wiki user page and the [https://webchat.freenode.net/?channels=#octave IRC channel].<br />
== Complete Your Application ==<br />
*: Fill out our '''''public''''' application template.<br />
*:* This is best done by '''[[Special:CreateAccount|creating an account at this wiki]]''', and copying the '''[[Template:Student_application_template_public|template]]''' from its page.<br />
*:* You really only need to copy and answer the '''''public''''' part there, there is no need to showcase everything else to everybody reading your user page!<br />
*: Fill out our '''''private''''' application template.<br />
*:* This is best done by copying the '''[[Template:Student_application_template_private|template]]''' from its page and '''adding the required information to your application at Google (melange)''' or at '''ESA'''.<br><br />
*:* Only the organization admin and the possible mentors will see this data. You can still edit it after submitting until the deadline!<br />
<br />
== Things You'll be Expected to Know or Quickly Learn On Your Own ==<br />
<br />
Octave is mostly written in C++ and its own scripting language that is mostly compatible with Matlab. There are bits and pieces of Fortran, Perl, C, awk, and Unix shell scripts here and there. In addition to being familiar with C++ and Octave's scripting language, successful applicants will be familiar with or able to quickly learn about Octave's infrastructure. You can't spend the whole summer learning how to build Octave or prepare a changeset and still successfully complete your project.<br />
<br />
* '''The Build System'''<br />
*: [http://en.wikipedia.org/wiki/GNU_build_system The GNU build system] is used to build Octave.<br />
*: While you generally don't need to understand too much unless you actually want to change how Octave is built, you should be able to understand enough to get a general idea of how to build Octave.<br />
*: If you've ever done a {{Codeline|./configure && make && make install}} series of commands, you have already used the GNU build system.<br />
*: '''You must demonstrate that you are able to build the development version of Octave from sources before the application deadline.''' Linux is arguably the easiest system to work on. Instructions:<br />
*:* [[Building]]<br />
*:* [https://octave.org/doc/interpreter/Installation.html Octave Manual on Installing Octave]<br />
* '''The Version Control System'''<br />
*: We use [https://www.mercurial-scm.org/ Mercurial] (abbreviated hg).<br />
*: Mercurial is the [http://en.wikipedia.org/wiki/Distributed_Version_Control_System distributed version control system] (DVCS) we use for managing our source code. You should have some basic understanding of how a DVCS works, but hg is pretty easy to pick up, especially if you already know a VCS like git or svn.<br />
* '''The Procedure for Contributing Changesets'''<br />
*: You will be expected to follow the same procedures as other contributors and core developers.<br />
*: You will be helping current and future Octave developers by using our standard style for changes, commit messages, and so on. You should also read the same [[Contribution guidelines | contribution]] [https://hg.savannah.gnu.org/hgweb/octave/file/tip/etc/HACKING.md guidelines] we have for everyone.<br />
*: [[Hg_instructions_for_mentors#Mercurial_Tips_for_SoC_students | This page]] describes the procedures students are expected to use to publicly display their progress in a public mercurial repo during their work.<br />
* '''The Maintainers Mailing List'''<br />
*: We primarily use [https://lists.gnu.org/mailman/listinfo/octave-maintainers mailing lists] for communication among developers.<br />
*: The mailing list is used most often for discussions about non-trivial changes to Octave, or for setting the direction of development.<br />
*: You should follow basic mailing list etiquette. For us, this mostly means "do not [https://en.wikipedia.org/wiki/Posting_style#Top-posting top post]".<br />
* '''The IRC Channel'''<br />
*: We also have [http://webchat.freenode.net?channels=octave the #octave IRC channel in Freenode].<br />
*: You should be familiar with the IRC channel. It's very helpful for new contributors (you) to get immediate feedback on ideas and code.<br />
*: Unless your primary mentor has a strong preference for some other method of communication, the IRC channel will likely be your primary means of communicating with your mentor and Octave developers.<br />
* '''The Octave Forge Project'''<br />
*: [https://octave.sourceforge.io/ Octave Forge] is a collection of contributed packages that enhance the capabilities of core Octave. They are somewhat analogous to Matlab's toolboxes.<br />
* '''Related Skills'''<br />
*: In addition, you probably should know '''some''' mathematics, engineering, experimental science, or something of the sort.<br />
*: If so, you probably have already been exposed to the kinds of problems that Octave is used for.<br />
<br />
== Criteria by which applications are judged ==<br />
<br />
These might vary somewhat depending on the mentors and coordinators for a particular Summer of Code, but typically the main factors considered would be:<br />
<br />
* '''Applicant has demonstrated an ability to make substantial modifications to Octave'''<br />
*: The most important thing is that you've contributed some interesting code samples to judge you by. It's OK during the application period to ask for help on how to format these code samples, which normally are Mercurial patches.<br />
<br />
* '''Applicant shows understanding of topic'''<br />
*: Your application should make it clear that you're reasonably well versed in the subject area and won't need all summer just to read up on it.<br />
<br />
* '''Applicant shows understanding of and interest in Octave development'''<br />
*: The best evidence for this is previous contributions and interactions.<br />
<br />
* '''Well thought out, adequately detailed, realistic project plan'''<br />
*: "I'm good at this, so trust me" isn't enough. You should describe which algorithms you'll use and how you'll integrate with existing Octave code. You should also prepare a full timeline and goals for the midterm and final evaluations.<br />
<br />
= Suggested projects =<br />
<br />
The following projects are broadly grouped by category and probable skills required to tackle each. Remember to check [[Projects]] for more ideas if none of these suit you, and your own ideas are always welcome. You can also look at our [[Summer of Code|completed past projects]] for more inspiration.<br />
<br />
{{Note|These are suggested projects but you are welcome to propose your own projects provided you find an Octave mentor}}<br />
<br />
== Summary table ==<br />
<br />
{| class="wikitable sortable" style="text-align: center; width:99%"<br />
|-<br />
!Title<br />
!Mentor<br />
!co-Mentors<br />
!Class<br />
!New?<br />
!Difficulty<br />
!Last active<br />
|-<br />
! <br />!! !! !! !! !! !!<br />
|-<br />
| [[Summer of Code - Getting Started#ode15.7Bi.2Cs.7D_:_Matlab_Compatible_DAE_solvers | ode15{i,s} : Matlab Compatible DAE solvers]] || Carlo de Falco || Francesco Faccio, Marco Caliari, Jacopo Corno, Sebastian Schöps || Numerical || No || Medium || GSoC 2016<br />
|-<br />
| [[Summer of Code - Getting Started#Improve_logm.2C_sqrtm.2C_funm | Improve logm, sqrtm, funm]] || ? || Marco Caliari, Mudit Sharma || Numerical || [https://github.com/RickOne16/matrix No] || Hard || Independent devs 2016<br />
|-<br />
| [[Summer of Code - Getting Started#Improve_iterative_methods_for_sparse_linear_systems | Improve iterative methods for sparse linear systems]] || Marco Caliari || Carlo de Falco || Numerical || No || Hard || SOCIS 2016<br />
|-<br />
| [[Summer of Code - Getting Started#EPA_hydrology_software_suite | EPA hydrology software suite]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer of Code - Getting Started#FullSWOF overland flow simulator | FullSWOF overland flow simulator]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer of Code - Getting Started#TISEAN_package | TISEAN: Nonlinear Time Series Analysis]] || [[User:KaKiLa|KaKiLa]] || ? || Octave Forge || [[TISEAN_package | No]] || Medium || GSoC 2015<br />
|-<br />
| [[Summer of Code - Getting Started#Octave_Package_management | Octave Package management]] || Sebastian Schöps || [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer of Code - Getting Started#Symbolic_package | Symbolic package]] || Colin B. Macdonald || Mike Miller, Abhinav Tripathi || Octave Forge || [https://github.com/cbm755/octsympy Octsympy] || Medium || GSoC 2016<br />
|-<br />
| [[Summer of Code - Getting Started#OCS | OCS package]] || Sebastian Schöps || Sebastian Schöps || Octave Forge, Numerical || Yes || Easy || Never<br />
|-<br />
| [[Summer of Code - Getting Started#Using_Python_within_Octave | Pythonic package]] || Mike Miller || Colin B. Macdonald, Abhinav Tripathi || Infrastructure || No || Medium || some in GSoC 2016<br />
|-<br />
| [[Summer of Code - Getting Started#JSON_encoding.2Fdecoding | JSON encoding/decoding]] || [[User:Siko1056|Kai T. Ohlhus]] || ? || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer of Code - Getting Started#Jupyter_Notebook_Integration | Jupyter Notebook Integration]] || Mike Miller || Colin B. Macdonald, [[User:Siko1056|Kai T. Ohlhus]] || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer of Code - Getting Started#Chebfun_in_Octave | Chebfun in Octave]] || Colin B. Macdonald || [[User:KaKiLa|KaKiLa]] || Infrastructure, Numerical || Yes || Hard || Never<br />
|-<br />
| [[Summer of Code - Getting Started#PolarAxes and Plotting Improvements | PolarAxes and Plotting Improvements ]] || ? || Rik || Graphics || Yes || Medium || Never<br />
|}<br />
<br />
== Numerical ==<br />
<br />
These projects involve implementing certain mathematical functions, primarily in core Octave.<br />
<br />
=== ode15{i,s} : Matlab Compatible DAE solvers ===<br />
<br />
An initial implementation of a Matlab compatible ode15{i,s} solver,<br />
based on [http://computation.llnl.gov/projects/sundials SUNDIALS], <br />
was done by Francesco Faccio during<br />
GSOC 2016.<br />
The blog describing the work is [http://gsoc2016ode15s.blogspot.it/ here].<br />
The resulting code has been pushed into the main Octave repository in the development branch and<br />
consists mainly of the following three files<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/libinterp/dldfcn/__ode15__.cc __ode15__.cc],<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15i.m ode15i.m] and<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15s.m ode15s.m].<br />
The list of outstanding tracker tickets concerning this implementation can be found <br />
[https://savannah.gnu.org/search/?Search=Search&words=ode15&type_of_search=bugs&only_group_id=1925&exact=1&max_rows=25#options here]<br />
<br />
Possible useful improvements that could be done in a new project include:<br />
<br />
* Implement a better function for selecting consistent initial conditions compatible with Matlab's decic.m. The algorithm to use is described [http://faculty.smu.edu/shampine/cic.pdf here]<br />
<br />
* make ode15{i,s} with datatypes other than double<br />
<br />
* improve interpolation at intermediate time steps.<br />
<br />
* general code profiling and optimization <br />
<br />
Other tasks, not strictly connected to ode15{i,s} but closely related that could be added <br />
to a possible project plan would be improving documentation and tests in odepkg and removing <br />
overlaps with the documentation in core Octave.<br />
<br />
* '''Required skills'''<br />
: C++; C; familiarity with numerical methods for DAEs; Basic knowledge of makefiles and/or autotools.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentors'''<br />
: Francesco Faccio, Carlo de Falco, Marco Caliari, Jacopo Corno, Sebastian Schöps<br />
<br />
=== Improve logm, sqrtm, funm ===<br />
<br />
The goal here is to implement some missing Matlab functions related to matrix functions like the [http://en.wikipedia.org/wiki/Matrix_exponential matrix exponential]. There is [http://octave.1599824.n4.nabble.com/matrix-functions-td3137935.html a general discussion] of the problem. A good starting point for available algorithms and open-source implementations is Higham and Deadman's [http://eprints.ma.man.ac.uk/2102/01/covered/MIMS_ep2014_8.pdf "A Catalogue of Software for Matrix Functions"].<br />
<br />
* '''Required skills'''<br />
: Read and Write both C++ and Octave code, find and read research papers, research experience in numerical analysis, familiarity with analysis of algorithms.<br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentors'''<br />
: Marco Caliari, Mudit Sharma<br />
<br />
=== Improve iterative methods for sparse linear systems ===<br />
<br />
GNU Octave currently has the following Krylov subspace methods for sparse linear systems: pcg (spd matrices) and pcr (Hermitian matrices), bicg,<br />
bicgstab, cgs, gmres, and qmr (general matrices). The description of some of them (pcr, qmr) and their error messages are not aligned. Moreover, they have similar blocks of code (input check for instance) which can be written once and for all in common functions. The first step in this project could be a revision and a synchronization of the codes, starting from the project [https://socis16octave-improveiterativemethods.blogspot.com/ SOCIS2016] which is already merged into Octave (cset {{cset|6266e321ef22}}).<br />
<br />
In Matlab, some additional methods are available: minres and symmlq (symmetric matrices), bicgstabl (general matrices), lsqr (least<br />
squares). The second step in this project could be the implementation of some of these missing functions.<br />
<br />
The [https://www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf reference book by Yousef Saad] is available online.<br />
<br />
* '''Required skills'''<br />
: numerical linear algebra, m-file programming.<br />
* '''Difficulty'''<br />
: Maybe hard the mathematical part, medium the programming part.<br />
* '''Mentor'''<br />
: Marco Caliari, Carlo de Falco<br />
<br />
=== Chebfun in Octave ===<br />
<br />
[https://www.chebfun.org/ Chebfun] is a mathematics and software project for "numerical computing with functions". Basically it approximates functions to machine precision accuracy (10<sup>-15</sup>) using piecewise Chebyshev polynomial interpolants. Operations on those functions (arithmetic, derivatives, root-finding, etc) are then overloaded and return new interpolating polynomials, which are themselves proxies for the actual solution.<br />
<br />
Chebfun makes extensive use of classdef classes, and is one of the largest Free Software projects to do so. Unfortunately it currently only works in Matlab. This project seeks to (1) improve Octave's classdef support and (2) tweak Chebfun to work under Octave, for example, removing undocumented classdef features. The final goal is to have at least basic Chebfun features working on Octave. An additional goal would be making <code>pkg install chebfun.zip</code> work in Octave.<br />
<br />
The impact of this project is improving Octave and allowing Chebfun to be used without proprietary software.<br />
<br />
How to get started:<br />
<br />
* Learn about [https://www.chebfun.org/ Chebfun]<br />
* Browse [https://savannah.gnu.org/bugs/?group=octave Octave's bug list] for "classdef"-related bugs.<br />
<br />
* Clone this Chebfun [https://github.com/cbm755/chebfun/tree/octave_dev octave_dev branch].<br />
** On that, <code>f = chebfun(@(x) sin(x), [-2 6])</code> should work with Octave 4.3.0+ and maybe even with 4.2.1. Check that <code>f(pi)</code> and <code>g = f + 1</code> work.<br />
** A good first task would be to study [https://github.com/cbm755/chebfun/commit/e20b0ad2dc89cfe8e50ba461b864eff7d5bbef17 this commit], a workaround for <code>f.funs{1}</code> using <code>temp = f.funs; temp{1}</code>. <code>2*f</code> is failing, can you fix it, perhaps with this workaround? Or can you make <code>f.funs{1}</code> work by changing something in <code>@chebfun/subsref.m</code>?<br />
<br />
<br />
* '''Required skills'''<br />
: Octave m-file programming, classdef programming, probably C++, some familiarity with Approximation Theory (a branch of mathematics).<br />
* '''Difficulty'''<br />
: Medium (fixing Octave classdef bugs likely harder and requires a deep dive into how Octave supports OOP).<br />
* '''Potential mentors'''<br />
: Colin B. Macdonald, [[User:KaKiLa|KaKiLa]], Mike Miller (?), Carnë Draug (?), someone from Chebfun team (?).<br />
<br />
== Adding functionality to Forge packages ==<br />
<br />
<br />
=== EPA hydrology software suite ===<br />
Create native interfaces to the EPA software suites.<br />
<br />
Starting points<br />
* [https://forja.cica.es/projects/epanet-octave/ epanet-octave].<br />
* [https://github.com/OpenWaterAnalytics/ Open Water Analytics]<br />
<br />
* '''SWMM'''<br />
** [https://www.epa.gov/water-research/storm-water-management-model-swmm Official page]<br />
** Check work done in [https://github.com/water-systems/MatSWMM MatSWMM] [http://digital.csic.es/bitstream/10261/132982/1/MatSWMM.pdf article]<br />
<br />
* '''EPANET'''<br />
** [https://www.epa.gov/water-research/epanet Official page]<br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, API knowledge, file I/O, classdef (optional). <br />
<br />
* '''Difficulty'''<br />
: easy/medium<br />
<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== FullSWOF overland flow simulator ===<br />
Create scripting tools for (optional: native interfaces).<br />
<br />
Starting points<br />
* [https://www.idpoisson.fr/fullswof/ The FullSWOF Project].<br />
* [https://arxiv.org/abs/1204.3210 FullSWOF: A software for overland flow simulation]<br />
* [https://bitbucket.org/binello7/fswof2d Initial work on Bitbucket]<br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, API knowledge, file I/O, classdef (optional). <br />
<br />
* '''Difficulty'''<br />
: easy/medium<br />
<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== TISEAN package ===<br />
<br />
[http://www.mpipks-dresden.mpg.de/~tisean/Tisean_3.0.1/index.html TISEAN] is a suite of code for nonlinear time series analysis. It has been [[TISEAN package | partially re-implemented]] as libre software. The objective is to integrate TISEAN as an Octave Forge package, as was done for the Control package.<br />
[[TISEAN_package | A lot has been completed]] but [[TISEAN_package:Procedure | there is still work left to do]].<br />
<br />
There are missing functions to do computations on spike trains, to simulate autoregresive models, to create specialized plots, etc. Do check [[TISEAN_package:Procedure#Table_of_functions|the progress of the project]] to see if you are interested.<br />
<br />
* [http://octave.sourceforge.net/tisean/overview.html Package help at source forge.] <br />
* [https://sourceforge.net/p/octave/tisean/ci/default/tree/ Package repository at source forge.] <br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, and FORTRAN API knowledge. <br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== Symbolic package ===<br />
<br />
Octave's [https://github.com/cbm755/octsympy Symbolic package] handles symbolic computing and other CAS tools. The main component of Symbolic is a pure m-file class "@sym" which uses the Python package [https://www.sympy.org SymPy] to do (most of) the actual computations. The package aims to expose the full functionality of SymPy while also providing a high-level of compatibility with the Matlab Symbolic Math Toolbox. The Symbolic package requires communication between Octave and Python. Recently, a GSoC2016 project successfully re-implemented this communication using the new [[Pythonic|Pythonic package]].<br />
<br />
This project proposes to go further: instead of using Pythonic only for the communication layer, we'll use it throughout the Symbolic project. For example, we might make "@sym" a subclass of "@pyobject". We also could stop using the "python_cmd" interface and use Pythonic directly from methods. The main goal was already mentioned: to expose the *full functionality* of SymPy. For example, we would allow OO-style method calls such as "f.diff(x)" instead of "diff(f, x)".<br />
<br />
* '''Required skills'''<br />
: OO-programming with m-files, Python, and possibly C/C++ for improving Pythonic (if needed).<br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentors and/or other team members'''<br />
: Colin B. Macdonald, Mike Miller, Abhinav Tripathi<br />
<br />
=== OCS ===<br />
<br />
[[Ocs package | OCS]] is a circuit simulator for Octave. The objective of this project is to update the code to use modern features of Octave (e.g. classdef), fix open bugs, increase compatibility with SPICE and improve compatibility with other Octave packages (odepkg, control etc).<br />
<br />
* [http://octave.sourceforge.net/ocs/overview.html Package help at source forge.] <br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, and FORTRAN API knowledge. <br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentor'''<br />
: Sebastian Schöps, Carlo de Falco<br />
<br />
== Infrastructure ==<br />
<br />
=== JSON encoding/decoding ===<br />
<br />
[https://en.wikipedia.org/wiki/JSON JavaScript Object Notation], in short JSON, is a very common human readable and structured data format. Unfortunately, GNU Octave still lacks of builtin support of that data format. Having JSON support, Octave can improve for example it's web service functions, which often exchange JSON data these days. Another interesting applicatoin is described in another Octave GSoC project, see [[Summer of Code - Getting Started#Jupyter_Integration | Jupyter integration]].<br />
<br />
In bug {{bug|53100}} a vivid discussion about proper JSON support took place. As JSON is a highly demanded feature for Octave, there are already several attempts to fill the gap:<br />
<br />
* [https://github.com/fangq/jsonlab jsonlab] (M-file implementation, probably slow for large JSON files)<br />
* [https://www.artefact.tk/software/matlab/jsonio/ JSONio] (C MEX wrapper around [https://github.com/zserge/jsmn jsmn])<br />
* [https://github.com/Andy1978/octave-rapidjson octave-rapidjson] (C++ Octave wrapper around [https://rapidjson.org/ rapidjson])<br />
* [https://github.com/apjanke/octave-jsonstuff octave-jsonstuff] (C++ Octave wrapper around [https://github.com/open-source-parsers/jsoncpp jsoncpp])<br />
<br />
For different reasons, none of them can be directly merged into Octave core yet. Thus there is still lots of work to do. The goal of this project is to evaluate (and to cherry pick from) the implementations above, to create Matlab compatible [https://www.mathworks.com/help/matlab/ref/jsonencode.html jsonencode] and [https://www.mathworks.com/help/matlab/ref/jsondecode.html jsondecode] functions. This involves proper documentation of the work and unit tests to ensure the correctness of the implementation.<br />
<br />
* '''Minimum requirements'''<br />
: Good Octave and C/C++ programming knowledge. Ability to make use of C/C++ libraries.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor'''<br />
: [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
<br />
=== Jupyter Notebook Integration ===<br />
<br />
[http://jupyter.org Jupyter Notebook] is a web-based worksheet interface for computing. There is a [https://github.com/Calysto/octave_kernel Octave kernel for Jupyter]. This project seeks in first place to improve that kernel to make Octave a first-class experience within the Jupyter Notebook.<br />
<br />
In general the [https://nbformat.readthedocs.io/en/latest/ Jupyter Notebook Format] is a plain JSON document. In combination with another Octave GSoC project (see [[Summer of Code - Getting Started#JSON_encoding.2Fdecoding | JSON encoding/decoding]]), a second valuable outcome was that Octave can run (and fill) those Jupyter Notebooks on it's own. This would enable Jupyter Notebook users to evaluate long running Octave Notebooks on a computing server without permanent browser connection, which is [https://github.com/jupyter/notebook/issues/1647 still a pending issue].<br />
<br />
* '''Minimum requirements'''<br />
: Good Octave and Python programming knowledge.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentors'''<br />
: Colin B. Macdonald, Mike Miller, [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
=== Using Python within Octave ===<br />
<br />
[[Pythonic]] allows one to call Python functions and interact with Python objects from within Octave .m file code and from the Octave command line interface. Pythonic may eventually not be a separate package, but rather a core feature of Octave. This project aims to improve Pythonic with the goal of making the package more stable, maintainable, and full-featured.<br />
<br />
Based on a previous summer project related to Pythonic, this work will consist of fast-paced collaborative software development based on tackling the [https://gitlab.com/mtmiller/octave-pythonic/issues Pythonic issue list]. You would also be expected to participate in software design decisions and discussion, as well as improve documentation, doctests, and unit tests. As an example of the sorts of decisions being made, note that Octave indexes from 1 whereas Python typically indexes from 0; in which cases is it appropriate to make this transparent to the user?<br />
<br />
* '''Mentors'''<br />
: Mike Miller, Colin B. Macdonald, Abhinav Tripathi, others?<br />
<br />
<br />
=== Octave Package management ===<br />
<br />
[[Packages]] are extensions for Octave, that are mainly maintained by the [[Octave Forge]] community.<br />
To get those extension to work with Octave, there is a single function, {{manual|pkg}}, which does pretty much everything.<br />
This function has a few limitations which are hard to implement with the current codebase, and will most likely require a full rewrite.<br />
A major step forward for a rewritten package manager is the [https://github.com/apjanke/octave-packajoozle/ "packajoozle" project] by Andrew Janke.<br />
<br />
The planned improvements (see also {{bug|39479}}) are:<br />
<br />
* install and update from repositories (hg and git)<br />
* automatic handling of dependencies<br />
* easily load, update or check specific package versions<br />
* management of tests and demos in C++ sources of packages<br />
* more flexibility on dependencies, e.g., dependent on specific Octave build options or being dependent in one of multiple packages<br />
* support for multiple version packages<br />
* support for multiple Octave installs<br />
* support for system-wide and user installed packages<br />
* testing packages (<code>pkg test <package-name></code>)<br />
* improved metadata acquisition (<code>pkg list -forge</code>) from https://octave.sourceforge.io/<br />
<br />
The main objective of this project is to make {{manual|pkg}} more user friendly and to make it a tool to foster third party participation in Octave.<br />
However, the current {{manual|pkg}} also performs some maintenance functions which it probably should not.<br />
Instead a package for developers should be created with such tools.<br />
To do this enhancement effectively, a refactoring of the current {{codeline|pkg}} code will be needed (see [https://github.com/apjanke/octave-packajoozle/ "packajoozle" project]).<br />
<br />
Many of these problems have been solved in other languages.<br />
Familiarity with how other languages handle this problem will be useful to come up with elegant solutions.<br />
In some cases, there are standards to follow.<br />
For example, there are specifications published by freedesktop.org about where files should go ([http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html base directory spec]) and Windows seems to have its own standards.<br />
See bugs {{bug|36477}} and {{bug|40444}} for more details.<br />
<br />
In addition, package names may start to collide very easily.<br />
One horrible way to workaround this by is choosing increasingly complex package names that give no hint on the package purpose.<br />
A much better is option is providing an Authority category like Perl 6 does.<br />
Nested packages is also an easy way to provide packages for specialized subjects (think {{codeline|image::morphology}}).<br />
A new {{manual|pkg}} would think all this things now, or allow their implementation at a later time.<br />
Read the [[OEP:pkg|unfinished plan]] for more details.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write Octave code, experience with Octave packages, and understanding of the basics of autotools. The most important skill is software design.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco, Sebastian Schöps<br />
<br />
== Image Analysis ==<br />
<br />
=== Improvements to N-dimensional image processing ===<br />
<br />
The image package has partial functionality for N-dimensional images. These images exist for example in medical imaging where slices from scans are assembled to form anatomical 3D images. If taken over time and at different laser wavelengths or light filters, they can also result in 5D images. Albeit less common, images with even more dimensions also exist. However, their existence is irrelevant since most of the image processing operations are mathematical operations which are independent of the number of dimensions.<br />
<br />
As part of GSoC 2013, the core functions for image IO, {{codeline|imwrite}} and {{codeline|imread}}, were extended to better support this type of images. Likewise, many functions in the image package, mostly morphology operators, were expanded to deal with this type of image. Since then, many other functions have been improved, sometimes completely rewritten, to abstract from the number of dimensions. In a certain way, supporting ND images is also related to choosing good algorithms since such large images tend to be quite large.<br />
<br />
This project will continue on the previous work, and be mentored by the previous GSoC student and current image package maintainer. Planning the project requires selection of functions lacking ND support and identifying their dependencies. For example, supporting {{codeline|imclose}} and {{codeline|imopen}} was better implemented by supporting {{codeline|imerode}} and {{codeline|imdilate}} which then propagated ND support to all of its dependencies. These dependencies need to be discovered first since often they are not being used yet, and may even be missing function. This project can also be about implementing functions that have [[Image package#Missing functions | not yet been implemented]]. Also note that while some functions in the image package will accept ND images as input, they are actually not correctly implemented and will give incorrect results.<br />
<br />
* '''Required skills'''<br />
: m-file scripting, and a fair amount of C++ since a lot of image analysis cannot be vectorized. Familiarity with common CS algorithms and willingness to read literature describing new algorithms will be useful. <br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
=== Improve Octave's image IO ===<br />
<br />
There are a lot of image formats. To handle this, Octave uses [http://www.graphicsmagick.org/ GraphicsMagic] (GM), a library capable of handling [http://www.graphicsmagick.org/formats.html a lot of them] in a single C++ interface. However, GraphicsMagick still has its limitations. The most important are:<br />
<br />
* GM has build option {{codeline|quantum}} which defines the bitdepth to use when reading an image. Building GM with high quantum means that images of smaller bitdepth will take a lot more memory when reading, but building it too low will make it impossible to read images of higher bitdepth. It also means that the image needs to always be rescaled to the correct range.<br />
* GM supports unsigned integers only thus incorrectly reading files such as TIFF with floating point data<br />
* GM hides away details of the image such as whether the image file is indexed. This makes it hard to access the real data stored on file.<br />
<br />
This project would implement better image IO for scientific file formats while leaving GM handle the others. Since TIFF is the de facto standard for scientific images, this should be done first. Among the targets for the project are:<br />
<br />
* implement the Tiff class which is a wrap around libtiff, using classdef. To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions.<br />
* improve imread, imwrite, and imfinfo for tiff files using the newly created Tiff class<br />
* port the bioformats into Octave and prepare a package for it<br />
* investigate other image IO libraries<br />
* clean up and finish the dicom package to include into Octave core<br />
* prepare a matlab compatible implementation of the FITS package for inclusion in Octave core<br />
<br />
* '''Required skills'''<br />
: Knowledge of C++ and C since most libraries are written in those languages.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
== Graphics ==<br />
<br />
=== PolarAxes and Plotting Improvements ===<br />
<br />
Octave currently provides supports for polar axes by using a Cartesian 2-D axes and adding a significant number of properties and callback listerners to get things to work. What is needed is a first class implementation of a "polaraxes" object in C++. This will require creating a new fundamental graphics object type, and programming in C++/OpenGL to render the object. When "polaraxes" exist as an object type then m-files will be written to access them including polaraxes.m, polarplot.m, rticks.m, rticklabels.m, thetaticks, thetaticklabels.m, rlim.m, thetalim.m. relates to {{bug|35565}}, {{bug|49804}}, {{bug|52643}}.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write C++ code. Ability to read and write Octave code. Experience with OpenGL programming is optional.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor'''<br />
: Rik <br />
<br />
<noinclude><br />
[[Category:Summer of Code]]<br />
[[Category:Project Ideas]]<br />
</noinclude></div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Short_projects&diff=12597Short projects2020-01-30T22:27:12Z<p>Mtmiller: /* Missing functions / feature requests */ add bug #57699</p>
<hr />
<div>This is a list of small projects to start helping with Octave development. The following items could be done<br />
* in a reasonable amount of time (a few hours) and<br />
* without Octave development knowledge.<br />
<br />
{{warning|Please do not submit patches/fixes to the Octave mailing lists. Upload your work at the respective Savannah bug tracker pages. Of course you may always ask questions related to your work on the mailing list.}}<br />
<br />
Use the [https://savannah.gnu.org/patch/?func=additem&group=octave Savannah patch tracker] for submissions unrelated to an existing bug.<br />
<br />
The list is meant to be dynamic -- please add, remove, and comment on it. And since the things are likely to be of short duration, don't ask if is there is anyone already working on it. Projects of long duration should be added to the [[Projects]] page instead.<br />
<br />
Another way to catch a small project is to [https://lists.gnu.org/mailman/listinfo/octave-bug-tracker subscribe to the bug tracker] (note that the bug tracker has a lot of activity). You may find it useful to review the [http://wiki.octave.org/wiki/index.php?title=Short_projects&action=history history] of this short projects page, to give you an idea of past successful short projects.<br />
<br />
<br />
== Bugs==<br />
<br />
Please help with the triage of [https://savannah.gnu.org/bugs/?group=octave existing bugs] to populate the list of easy bugs below.<br />
<br />
* {{bug|41674}} - image package: temporary arrays in imresize are doubles<br />
* {{patch|8368}} - imremap - Change to imremap to reduce memory footprint<br />
* {{patch|8369}} - imresize - Change to imresize to reduce memory footprint<br />
<br />
== Missing functions / feature requests ==<br />
<br />
Implement missing Octave functions or implement desired features and general improvements.<br />
<br />
* {{bug|32088}} - <code>-ALL</code> option for {{manual|which}}<br />
* {{bug|40211}} - More compact output for structs and cell arrays<br />
* {{bug|41530}} - Editor debug mode could show a dbup/dbdown GUI component<br />
* {{bug|41796}} - extend sub2ind and ind2sub <br />
* {{bug|41844}} - GUI Debug Menu could offer "Stop If..."<br />
* {{bug|47239}} - calling system without shell<br />
* {{bug|56639}} - rescale: new function to scale an array to match a given interval<br />
* {{bug|39439}}, {{bug|39434}} - Use non-empty identifiers in all warnings and errors issued by Octave<br />
* {{bug|57041}} - Missing matlab function: startsWith<br />
* {{bug|57699}} - 'clipboard' function to interact with clipboard contents<br />
** You may tackle as many or as few IDs as you have time for. As it is a widespread issue, finding occurrences in the source code should give you valuable knowledge about the way Octave files are organized. When raising errors and warnings try to use the ids that are documented in the functions {{manual|warning_005fids|warning_ids}} and {{manual|error_005fids|error_ids}}. If you really need a new id (please, first read the ones already there!), please add it to those functions as well. If you see other ids used in core that are not given by the functions mentioned above, please, report or submit patch for them, in addition to the patch to the calling functions as well. <br />
* Lists of missing functions for [[:Category:Missing functions|several packages]].<br />
** It would help to group the missing functions in the [[image package]], as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
== Function Compatibility ==<br />
<br />
A number of functions are implemented, but may have known incompatibilities to Matlab or only partially handled option sets, etc.<br />
<br />
* Sorry none yet.<br />
<br />
== Review or create changesets ==<br />
<br />
Sometimes a standalone file or a diff file is submitted; Octave maintainers prefer a changeset though; preparing a changeset will expedite bug fixing. See the [[Mercurial]] and [[Commit message guidelines]] page how to do it.<br />
<br />
* Sorry none yet.<br />
<br />
== Write Built-In Self Tests (BISTs) ==<br />
<br />
Writing BISTs improves Octave's regression testing and ensures that we don't break anything when we add new features.<br />
<br />
* [[Add_BIST_tests_for_octave_functions_written_in_C%2B%2B| BIST for C++ functions]]<br />
* [[BIST for m-files]]. See also [[Projects#Tests]].<br />
<br />
== Miscellaneous ==<br />
<br />
* C++ cleanup of packages after the switch to exceptions (late 2015). See [[Invert if/else/error]].<br />
<br />
* Use "units.h" from [http://www.gnu.org/software/units/ GNU units] in [http://octave.sourceforge.net/miscellaneous/function/units.html function units] (from the Octave-Forge [http://octave.sourceforge.net/miscellaneous/ miscellaneous package]) rather than making a system call and parsing its output (and having to handle multiple versions of it). This change will make it much more robust. It likely will alleviate the requirement of having [http://www.gnu.org/software/units/ GNU units] installed in the system separately by the user. This requires knowledge of C (units is written on C) and C++ to write its Octave interface. It can be very easy if the units.h truly allows to be used as library or maybe impossible if it does not. This has not been investigated yet.<br />
<br />
[[Category:Development]]<br />
[[Category:Project Ideas]]<br />
[[Category:Missing functions]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Python&diff=12377Python2019-10-25T21:02:52Z<p>Mtmiller: create another redirection to the Pythonic package page</p>
<hr />
<div>#REDIRECT [[Pythonic]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Pytave&diff=12376Pytave2019-10-25T20:47:59Z<p>Mtmiller: update redirect to the current package name</p>
<hr />
<div>#REDIRECT [[Pythonic]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Python_interface&diff=12375Python interface2019-10-25T20:46:58Z<p>Mtmiller: Mtmiller moved page Python interface to Pythonic: rename to the current package name</p>
<hr />
<div>#REDIRECT [[Pythonic]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Pythonic&diff=12374Pythonic2019-10-25T20:46:56Z<p>Mtmiller: Mtmiller moved page Python interface to Pythonic: rename to the current package name</p>
<hr />
<div>There is a small project in development to bring a Python calling interface to Octave. The broad goal of this project is to add functions and types to Octave to allow calling Python functions directly from Octave.<br />
<br />
== Features ==<br />
<br />
At a high level, the features and capabilities of Octave's Python interface allow a user to:<br />
<br />
* Import and call any Python module or function from the Octave interpreter<br />
* Automatically convert basic Octave and Python types seamlessly between the two operating environments<br />
* Assign any Python object to an Octave variable, view its properties, and invoke methods on it<br />
* Assign any Python function or callable object to an Octave variable, and call it as if it were a function handle<br />
* Perform element indexing on lists and other sequence objects using curly bracket indexing syntax<br />
* Perform key indexing on dicts and other mapping objects using curly bracket indexing syntax<br />
<br />
Some features that have not yet been implemented, but have been planned for, include:<br />
<br />
* Perform slice indexing on lists and other sequence objects using parentheses indexing syntax<br />
* Operate on Python objects using standard Octave arithmetic and logical operators<br />
* Load and save Python objects to Octave data files using the standard load/save commands<br />
<br />
== Development ==<br />
<br />
Project development is ongoing among a small group of developers. Communication takes place on the Octave maintainers mailing list. The official project repository is at [https://gitlab.com/mtmiller/octave-pythonic https://gitlab.com/mtmiller/octave-pythonic].<br />
<br />
== Documentation ==<br />
<br />
The current development needs to be documented. We are using doxygen for the documentation.<br />
<br />
== Roadmap / Ideas ==<br />
<br />
=== Python from Octave ===<br />
<br />
The conversion of Python's dict is not unique. For that we have decided to load a Python's dict as a structure. This works only when all the keys fo the dict are strings. When the keys are something else there is the option to use `repr` to create the fields of the Octave's struct, e.g.<br />
<br />
<!-- {{SyntaxHighlight| --><br />
{{Code|Conversion of Python's dict to structure|<syntaxhighlight lang="octave" style="font-size:13px"><br />
> x = pyeval ("{1:'one',2:'two'}");<br />
> x.("1")<br />
ans = one<br />
<br />
> x.("2")<br />
ans = two<br />
<br />
> x = pyeval ("{(1,1):'one',2.5:'two'}");<br />
> x.("(1,1)")<br />
ans = one<br />
<br />
> x.("2.5")<br />
ans = two<br />
<br />
</syntaxhighlight>}}<br />
<br />
This would be the default behavior. We will extend pyeval to receive an optional argument specifying the Octave type that should be used as the output of the conversion, e.g. when the dict uses continuos numbers as keys one could do<br />
<br />
{{Code|pyeval optional argument|<syntaxhighlight lang="octave" style="font-size:13px"><br />
> x = pyeval ("{1:'one',2:'two'}",@cell);<br />
> x{1}<br />
ans = one<br />
> x{2}<br />
ans = two<br />
<br />
> x = pyeval ("{1:'one',2:'two'}",@char);<br />
> x<br />
<br />
x = <br />
<br />
one<br />
two<br />
<br />
> whos x<br />
Variables in the current scope:<br />
<br />
Attr Name Size Bytes Class<br />
==== ==== ==== ===== ===== <br />
x 2x3 6 char<br />
<br />
Total is 6 elements using 6 bytes<br />
<br />
> x = pyeval ("[i for i in xrange(3)]",@double)<br />
x =<br />
0 1 2<br />
</syntaxhighlight>}}<br />
<br />
The optional argument could be the constructor of an Octave class.<br />
<br />
==== Octave view of Python ====<br />
<br />
Currently we can do things like<br />
<br />
{{Code|Objects in python exists across calls to pyexec and pyeval|<syntaxhighlight lang="octave" style="font-size:13px"><br />
pyexec ("import networkx as nx")<br />
pyexec ("G=nx.complete_graph(10)")<br />
x = pyeval ("G.nodes()")<br />
</syntaxhighlight>}}<br />
<br />
But we cannot get a representation of ''G'' within Octave.<br />
<br />
The idea is to have an object that maintains a pointer to an Python object and that has all the methods to convert that object to Octave.<br />
<br />
The python object can be manipulated by python calls like {{Codeline|pycall}} and {{Codeline|pyexec}} without needing to do an explicit conversion. For example<br />
<br />
{{Code|Octave object that points to a python object|<syntaxhighlight lang="octave" style="font-size:13px" line highlight="4"><br />
pyexec ("import networkx as nx")<br />
pyexec ("G=nx.complete_graph(10)")<br />
G = pyobj ("G") ## G is an object without Octave representation but with methods to do the conversion if required<br />
nodes = pycall ("nx.nodes",G) # Python nx.nodes(G)<br />
nodes2 = pyeval ("G.nodes()") # Equivalent<br />
</syntaxhighlight>}}<br />
<br />
'''Comment:''' It seems that {{Codeline|pyexec}} and {{Codeline|pycall}} do not share workspace, so the code above wont work because ''nx'' doesn't exist when we call {{Codeline|pycall}} at line 4.<br />
<br />
The conversion methods should provide different output objects to Octave. The idea is to be able to call something like<br />
<br />
{{Code|Octave view of Python object with conversion methods|<syntaxhighlight lang="octave" style="font-size:13px"><br />
G_cell = cell(G); # G converted to a cell<br />
G_struct = struct(G); # G converted to a struct<br />
</syntaxhighlight>}}<br />
<br />
<br />
==== Python Objects in Octave ====<br />
<br />
The {{Codeline|@pyobject}} class wraps arbitrary Python objects so they can be accessed and manipulated from within Octave. In most cases, these are created automatically.<br />
<br />
== Known Problems ==<br />
<br />
This section documents some known problems or limitations of the Python calling interface, usually due to a limitation of the Octave language itself or a bug in Octave that needs some attention.<br />
<br />
Python objects are implemented as Octave classdef objects. More specifically, any Python object is represented by an object of type <tt>pyobject</tt>. which contains a persistent reference to the corresponding Python object. The pyobject class overrides functions such as <tt>class</tt> and <tt>isa</tt> so it appears as if each Python type is represented by a corresponding distinct class in Octave, but in reality they are all of the same type. This is similar to Octave's Java interface.<br />
<br />
Because classdef is used, some of the following known issues are specifically related to Octave's classdef implementation, which is still a relatively new work in progress.<br />
<br />
<ul><br />
<br />
<li>Assignment to <tt>dict</tt> or other mapping object using string keys fails. The following syntax produces an error:<br />
{{Code||<syntaxhighlight lang="octave"><br />
d = py.dict ();<br />
d{"one"} = 1;<br />
</syntaxhighlight>}}<br />
Use the {{Codeline|__setitem__}} method instead as a workaround:<br />
{{Code||<syntaxhighlight lang="octave"><br />
d.__setitem__ ("one", 1);<br />
</syntaxhighlight>}}<br />
The reason is because Octave strings are interpreted as arrays in many contexts, and this syntax is parsed by Octave as an attempt to assign to 3 elements of an object.</li><br />
<br />
<li>Element indexing on a <tt>list</tt> or other sequence object with a range or set of indices doesn't return the right number of output arguments. Element indexing should return as many values as were indexed, each assigned to the <tt>ans</tt> variable in turn, or be able to wrap the return list in a cell array, as shown here:<br />
{{Code||<syntaxhighlight lang="octave"><br />
x = py.list ({1, 2, 3, 4, 5, 6});<br />
x{1:3}<br />
y = {x{1:3}};<br />
</syntaxhighlight>}}<br />
Instead of the expected behavior, a cell array of elements is returned in both cases. This is Octave bug {{Bug|48693}}. The following patterns for assigning the results do work instead:<br />
{{Code||<syntaxhighlight lang="octave"><br />
[a, b, c] = x{1:3}<br />
[y{1:3}] = x{1:3};<br />
</syntaxhighlight>}}</li><br />
<br />
<li>Function handles to Python functions, bound methods, or other callable objects is not yet supported. As a workaround, the {{Codeline|pyeval}} function can be used to return a reference to a function which can be assigned and called like any Octave function handle, but cannot be passed in to functions that expect a function handle.</li><br />
<br />
<li>Objects are not deleted because object destructors are not called by Octave when objects are cleared or go out of scope. For the Python interface, this means that the internal store of objects will continue to grow and objects will persist indefinitely even when all Octave references to a given Python object are gone. This is Octave bug {{Bug|46497}}.</li><br />
<br />
<li>Python objects can't be loaded or saved using the Octave {{Codeline|load}} and {{Codeline|save}} commands. This missing feature applies to any classdef object, this is Octave bug {{Bug|45833}}. As a workaround, any Python pickling or serialization functions can be used to load and save objects separately from the usual Octave workspace techniques.</li><br />
<br />
<li>Names cannot be imported into the current workspace using the {{Codeline|import}} command. {{Codeline|import}} is not yet implemented in Octave at all.</li><br />
<br />
</ul><br />
<br />
In addition, the following workaround may be considered a known issue. I don't know enough about Matlab's Python implementation to know how important this is, but it's worth documenting.<br />
<br />
<ul><br />
<li><br />
<tt>py.foo</tt> is supposed to act like a kind of dynamic namespace, automatically loading any matching Python function or module that is in the search path. This most closely maps to the concept of a "package" in Matlab or Octave, which would normally be implemented with a <tt>+py</tt> directory. Since we didn't know of an easy way to create a package scope that does some kind of dynamic dispatch, we implemented <tt>py</tt> as an old-style <tt>@py</tt> class. This takes advantage of the fact that the syntax <tt>py.foo</tt> instantiates a <tt>py</tt> object and calls <tt>subsref</tt> on it. This only works because it is an old-style class, with classdef this would be treated like a static class method call rather than a property lookup on an object instance. This lets us interpret the property lookup as a dynamic search of the Python module path.<br />
</li><br />
</ul><br />
<br />
== Pytave ==<br />
<br />
This project is currently derived from an earlier project called Pytave, which was developed to work in the opposite direction, to allow Python to call Octave functions on an embedded Octave interpreter. The bulk of the project is in the code to convert between Octave and Python data types, so most of that is reusable and serves both purposes. As a side goal, we may continue to maintain the Python wrapper around Octave and incorporate that into Octave as well, so that Octave can provide its own native Python module.</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=User:Mtmiller&diff=12267User:Mtmiller2019-09-28T20:18:03Z<p>Mtmiller: /* External Links */ fix URL copy and paste error</p>
<hr />
<div>== About Me ==<br />
<br />
I am a user, developer, and advocate of GNU Octave. I started using Octave around May 2007 while working on my MSEE. I started submitting bugs and patches against Octave in February 2012, mainly to fix some compilation problems I had with the latest release on an older Red Hat Enterprise 5 system I used at work. One thing led to another and I am now a co-maintainer of the Octave project, frequent contributor to both development and discussion, bug triager, tester, etc.<br />
<br />
My main areas of interest within the Octave project are<br />
<br />
* developing Octave's nascent [[Python interface]]<br />
* maintaining the [[Signal package|signal processing]] and [[Communications package|communications]] packages<br />
* maintaining and improving Octave's build system<br />
* aiming for stability and consistency of user experience, portability, particularly to different versions of GNU/Linux and Unix<br />
* encouraging new contributors, mentoring, and helping to build community around Octave<br />
<br />
My primary development environment is Debian GNU/Linux, but I occasionally build and test Octave on other distributions and Unices.<br />
<br />
I am involved in packaging and testing Octave for both the Debian and Ubuntu distributions. I am a member of the [http://wiki.debian.org/Teams/DebianOctaveGroup Debian Octave Group] and the [https://launchpad.net/~octave Ubuntu Octave Team].<br />
<br />
I have been a mentor for two very successful projects under the Google Summer of Code program.<br />
<br />
I can be found on [https://webchat.freenode.net/?channels=#octave #octave] as mtmiller.<br />
<br />
My editor of choice is [[VIM|Vim]].<br />
<br />
== Octave Project Ideas ==<br />
<br />
I always have more ideas for projects I would like to work on than I have<br />
time for. Please feel free to contact me about any of these ideas, borrow<br />
them, work on them, copy them to the [[projects]] page, but let me know as<br />
a courtesy and in case I have any other thoughts or partial work that<br />
might be useful.<br />
<br />
* Create a complete Vim environment with [[User:Rik]]'s syntax highlighting rules, indenting, if-end keyword matching, function block jumping, etc.<br />
* Update pygments syntax highlighting for Octave if needed.<br />
* Apply [[User:Oheim]]'s custom css for the interval package to the communications package manual.<br />
* Make a static m-file format/style analyzer, a la pep8, that can help users teach themselves GNU Octave style conventions.<br />
* Adapt Debian packaging to operate on a clean hg clone, add build-deps (bison, flex, gperf), build package from any hg revision<br />
** Can this be used to run an automatic build of a "nightly" package on Launchpad?<br />
** Should any of this be applied to the official Debian packaging?<br />
* Query the terminal size directly from the terminal instead of readline as a fallback. Also allow COLUMNS and LINES to override terminal size.<br />
* Hi-resolution time using clock_gettime if available instead of gettimeofday.<br />
<br />
== Octave Work ==<br />
<br />
See [[User:Mtmiller/TODO]].<br />
<br />
== External Links ==<br />
<br />
I work under the following profiles on these development sites. These are<br />
all related to work I've done with Octave to some degree.<br />
<br />
* [https://savannah.gnu.org/users/mtmiller mtmiller] on Savannah<br />
* [https://sourceforge.net/u/mtmiller mtmiller] on SourceForge<br />
* [https://bitbucket.org/mtmiller mtmiller] on Bitbucket<br />
* [https://github.com/mtmiller mtmiller] on GitHub<br />
* [https://gitlab.com/mtmiller mtmiller] on GitLab<br />
* [https://salsa.debian.org/mtmiller mtmiller] on Debian Salsa<br />
* [https://launchpad.net/~mtmiller mtmiller] on Launchpad</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=User:Mtmiller&diff=12266User:Mtmiller2019-09-28T20:17:17Z<p>Mtmiller: /* External Links */ delete Alioth, add GitLab and Salsa</p>
<hr />
<div>== About Me ==<br />
<br />
I am a user, developer, and advocate of GNU Octave. I started using Octave around May 2007 while working on my MSEE. I started submitting bugs and patches against Octave in February 2012, mainly to fix some compilation problems I had with the latest release on an older Red Hat Enterprise 5 system I used at work. One thing led to another and I am now a co-maintainer of the Octave project, frequent contributor to both development and discussion, bug triager, tester, etc.<br />
<br />
My main areas of interest within the Octave project are<br />
<br />
* developing Octave's nascent [[Python interface]]<br />
* maintaining the [[Signal package|signal processing]] and [[Communications package|communications]] packages<br />
* maintaining and improving Octave's build system<br />
* aiming for stability and consistency of user experience, portability, particularly to different versions of GNU/Linux and Unix<br />
* encouraging new contributors, mentoring, and helping to build community around Octave<br />
<br />
My primary development environment is Debian GNU/Linux, but I occasionally build and test Octave on other distributions and Unices.<br />
<br />
I am involved in packaging and testing Octave for both the Debian and Ubuntu distributions. I am a member of the [http://wiki.debian.org/Teams/DebianOctaveGroup Debian Octave Group] and the [https://launchpad.net/~octave Ubuntu Octave Team].<br />
<br />
I have been a mentor for two very successful projects under the Google Summer of Code program.<br />
<br />
I can be found on [https://webchat.freenode.net/?channels=#octave #octave] as mtmiller.<br />
<br />
My editor of choice is [[VIM|Vim]].<br />
<br />
== Octave Project Ideas ==<br />
<br />
I always have more ideas for projects I would like to work on than I have<br />
time for. Please feel free to contact me about any of these ideas, borrow<br />
them, work on them, copy them to the [[projects]] page, but let me know as<br />
a courtesy and in case I have any other thoughts or partial work that<br />
might be useful.<br />
<br />
* Create a complete Vim environment with [[User:Rik]]'s syntax highlighting rules, indenting, if-end keyword matching, function block jumping, etc.<br />
* Update pygments syntax highlighting for Octave if needed.<br />
* Apply [[User:Oheim]]'s custom css for the interval package to the communications package manual.<br />
* Make a static m-file format/style analyzer, a la pep8, that can help users teach themselves GNU Octave style conventions.<br />
* Adapt Debian packaging to operate on a clean hg clone, add build-deps (bison, flex, gperf), build package from any hg revision<br />
** Can this be used to run an automatic build of a "nightly" package on Launchpad?<br />
** Should any of this be applied to the official Debian packaging?<br />
* Query the terminal size directly from the terminal instead of readline as a fallback. Also allow COLUMNS and LINES to override terminal size.<br />
* Hi-resolution time using clock_gettime if available instead of gettimeofday.<br />
<br />
== Octave Work ==<br />
<br />
See [[User:Mtmiller/TODO]].<br />
<br />
== External Links ==<br />
<br />
I work under the following profiles on these development sites. These are<br />
all related to work I've done with Octave to some degree.<br />
<br />
* [https://savannah.gnu.org/users/mtmiller mtmiller] on Savannah<br />
* [https://sourceforge.net/u/mtmiller mtmiller] on SourceForge<br />
* [https://bitbucket.org/mtmiller mtmiller] on Bitbucket<br />
* [https://github.com/mtmiller mtmiller] on GitHub<br />
* [https://github.com/mtmiller mtmiller] on GitLab<br />
* [https://salsa.debian.org/mtmiller mtmiller] on Debian Salsa<br />
* [https://launchpad.net/~mtmiller mtmiller] on Launchpad</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=User:Mtmiller&diff=12265User:Mtmiller2019-09-28T19:55:39Z<p>Mtmiller: update IRC nick</p>
<hr />
<div>== About Me ==<br />
<br />
I am a user, developer, and advocate of GNU Octave. I started using Octave around May 2007 while working on my MSEE. I started submitting bugs and patches against Octave in February 2012, mainly to fix some compilation problems I had with the latest release on an older Red Hat Enterprise 5 system I used at work. One thing led to another and I am now a co-maintainer of the Octave project, frequent contributor to both development and discussion, bug triager, tester, etc.<br />
<br />
My main areas of interest within the Octave project are<br />
<br />
* developing Octave's nascent [[Python interface]]<br />
* maintaining the [[Signal package|signal processing]] and [[Communications package|communications]] packages<br />
* maintaining and improving Octave's build system<br />
* aiming for stability and consistency of user experience, portability, particularly to different versions of GNU/Linux and Unix<br />
* encouraging new contributors, mentoring, and helping to build community around Octave<br />
<br />
My primary development environment is Debian GNU/Linux, but I occasionally build and test Octave on other distributions and Unices.<br />
<br />
I am involved in packaging and testing Octave for both the Debian and Ubuntu distributions. I am a member of the [http://wiki.debian.org/Teams/DebianOctaveGroup Debian Octave Group] and the [https://launchpad.net/~octave Ubuntu Octave Team].<br />
<br />
I have been a mentor for two very successful projects under the Google Summer of Code program.<br />
<br />
I can be found on [https://webchat.freenode.net/?channels=#octave #octave] as mtmiller.<br />
<br />
My editor of choice is [[VIM|Vim]].<br />
<br />
== Octave Project Ideas ==<br />
<br />
I always have more ideas for projects I would like to work on than I have<br />
time for. Please feel free to contact me about any of these ideas, borrow<br />
them, work on them, copy them to the [[projects]] page, but let me know as<br />
a courtesy and in case I have any other thoughts or partial work that<br />
might be useful.<br />
<br />
* Create a complete Vim environment with [[User:Rik]]'s syntax highlighting rules, indenting, if-end keyword matching, function block jumping, etc.<br />
* Update pygments syntax highlighting for Octave if needed.<br />
* Apply [[User:Oheim]]'s custom css for the interval package to the communications package manual.<br />
* Make a static m-file format/style analyzer, a la pep8, that can help users teach themselves GNU Octave style conventions.<br />
* Adapt Debian packaging to operate on a clean hg clone, add build-deps (bison, flex, gperf), build package from any hg revision<br />
** Can this be used to run an automatic build of a "nightly" package on Launchpad?<br />
** Should any of this be applied to the official Debian packaging?<br />
* Query the terminal size directly from the terminal instead of readline as a fallback. Also allow COLUMNS and LINES to override terminal size.<br />
* Hi-resolution time using clock_gettime if available instead of gettimeofday.<br />
<br />
== Octave Work ==<br />
<br />
See [[User:Mtmiller/TODO]].<br />
<br />
== External Links ==<br />
<br />
I work under the following profiles on these development sites. These are<br />
all related to work I've done with Octave to some degree.<br />
<br />
* [https://savannah.gnu.org/users/mtmiller mtmiller] on Savannah<br />
* [https://sourceforge.net/u/mtmiller mtmiller] on SourceForge<br />
* [https://bitbucket.org/mtmiller mtmiller] on Bitbucket<br />
* [https://github.com/mtmiller mtmiller] on GitHub<br />
* [https://alioth.debian.org/users/mtmiller mtmiller] on Alioth<br />
* [https://launchpad.net/~mtmiller mtmiller] on Launchpad</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Pythonic&diff=11891Pythonic2019-04-09T02:01:50Z<p>Mtmiller: /* Development */ development has been moved to GitLab</p>
<hr />
<div>There is a small project in development to bring a Python calling interface to Octave. The broad goal of this project is to add functions and types to Octave to allow calling Python functions directly from Octave.<br />
<br />
== Features ==<br />
<br />
At a high level, the features and capabilities of Octave's Python interface allow a user to:<br />
<br />
* Import and call any Python module or function from the Octave interpreter<br />
* Automatically convert basic Octave and Python types seamlessly between the two operating environments<br />
* Assign any Python object to an Octave variable, view its properties, and invoke methods on it<br />
* Assign any Python function or callable object to an Octave variable, and call it as if it were a function handle<br />
* Perform element indexing on lists and other sequence objects using curly bracket indexing syntax<br />
* Perform key indexing on dicts and other mapping objects using curly bracket indexing syntax<br />
<br />
Some features that have not yet been implemented, but have been planned for, include:<br />
<br />
* Perform slice indexing on lists and other sequence objects using parentheses indexing syntax<br />
* Operate on Python objects using standard Octave arithmetic and logical operators<br />
* Load and save Python objects to Octave data files using the standard load/save commands<br />
<br />
== Development ==<br />
<br />
Project development is ongoing among a small group of developers. Communication takes place on the Octave maintainers mailing list. The official project repository is at [https://gitlab.com/mtmiller/octave-pythonic https://gitlab.com/mtmiller/octave-pythonic].<br />
<br />
== Documentation ==<br />
<br />
The current development needs to be documented. We are using doxygen for the documentation.<br />
<br />
== Roadmap / Ideas ==<br />
<br />
=== Python from Octave ===<br />
<br />
The conversion of Python's dict is not unique. For that we have decided to load a Python's dict as a structure. This works only when all the keys fo the dict are strings. When the keys are something else there is the option to use `repr` to create the fields of the Octave's struct, e.g.<br />
<br />
<!-- {{SyntaxHighlight| --><br />
{{Code|Conversion of Python's dict to structure|<syntaxhighlight lang="octave" style="font-size:13px"><br />
> x = pyeval ("{1:'one',2:'two'}");<br />
> x.("1")<br />
ans = one<br />
<br />
> x.("2")<br />
ans = two<br />
<br />
> x = pyeval ("{(1,1):'one',2.5:'two'}");<br />
> x.("(1,1)")<br />
ans = one<br />
<br />
> x.("2.5")<br />
ans = two<br />
<br />
</syntaxhighlight>}}<br />
<br />
This would be the default behavior. We will extend pyeval to receive an optional argument specifying the Octave type that should be used as the output of the conversion, e.g. when the dict uses continuos numbers as keys one could do<br />
<br />
{{Code|pyeval optional argument|<syntaxhighlight lang="octave" style="font-size:13px"><br />
> x = pyeval ("{1:'one',2:'two'}",@cell);<br />
> x{1}<br />
ans = one<br />
> x{2}<br />
ans = two<br />
<br />
> x = pyeval ("{1:'one',2:'two'}",@char);<br />
> x<br />
<br />
x = <br />
<br />
one<br />
two<br />
<br />
> whos x<br />
Variables in the current scope:<br />
<br />
Attr Name Size Bytes Class<br />
==== ==== ==== ===== ===== <br />
x 2x3 6 char<br />
<br />
Total is 6 elements using 6 bytes<br />
<br />
> x = pyeval ("[i for i in xrange(3)]",@double)<br />
x =<br />
0 1 2<br />
</syntaxhighlight>}}<br />
<br />
The optional argument could be the constructor of an Octave class.<br />
<br />
==== Octave view of Python ====<br />
<br />
Currently we can do things like<br />
<br />
{{Code|Objects in python exists across calls to pyexec and pyeval|<syntaxhighlight lang="octave" style="font-size:13px"><br />
pyexec ("import networkx as nx")<br />
pyexec ("G=nx.complete_graph(10)")<br />
x = pyeval ("G.nodes()")<br />
</syntaxhighlight>}}<br />
<br />
But we cannot get a representation of ''G'' within Octave.<br />
<br />
The idea is to have an object that maintains a pointer to an Python object and that has all the methods to convert that object to Octave.<br />
<br />
The python object can be manipulated by python calls like {{Codeline|pycall}} and {{Codeline|pyexec}} without needing to do an explicit conversion. For example<br />
<br />
{{Code|Octave object that points to a python object|<syntaxhighlight lang="octave" style="font-size:13px" line highlight="4"><br />
pyexec ("import networkx as nx")<br />
pyexec ("G=nx.complete_graph(10)")<br />
G = pyobj ("G") ## G is an object without Octave representation but with methods to do the conversion if required<br />
nodes = pycall ("nx.nodes",G) # Python nx.nodes(G)<br />
nodes2 = pyeval ("G.nodes()") # Equivalent<br />
</syntaxhighlight>}}<br />
<br />
'''Comment:''' It seems that {{Codeline|pyexec}} and {{Codeline|pycall}} do not share workspace, so the code above wont work because ''nx'' doesn't exist when we call {{Codeline|pycall}} at line 4.<br />
<br />
The conversion methods should provide different output objects to Octave. The idea is to be able to call something like<br />
<br />
{{Code|Octave view of Python object with conversion methods|<syntaxhighlight lang="octave" style="font-size:13px"><br />
G_cell = cell(G); # G converted to a cell<br />
G_struct = struct(G); # G converted to a struct<br />
</syntaxhighlight>}}<br />
<br />
<br />
==== Python Objects in Octave ====<br />
<br />
The {{Codeline|@pyobject}} class wraps arbitrary Python objects so they can be accessed and manipulated from within Octave. In most cases, these are created automatically.<br />
<br />
== Known Problems ==<br />
<br />
This section documents some known problems or limitations of the Python calling interface, usually due to a limitation of the Octave language itself or a bug in Octave that needs some attention.<br />
<br />
Python objects are implemented as Octave classdef objects. More specifically, any Python object is represented by an object of type <tt>pyobject</tt>. which contains a persistent reference to the corresponding Python object. The pyobject class overrides functions such as <tt>class</tt> and <tt>isa</tt> so it appears as if each Python type is represented by a corresponding distinct class in Octave, but in reality they are all of the same type. This is similar to Octave's Java interface.<br />
<br />
Because classdef is used, some of the following known issues are specifically related to Octave's classdef implementation, which is still a relatively new work in progress.<br />
<br />
<ul><br />
<br />
<li>Assignment to <tt>dict</tt> or other mapping object using string keys fails. The following syntax produces an error:<br />
{{Code||<syntaxhighlight lang="octave"><br />
d = py.dict ();<br />
d{"one"} = 1;<br />
</syntaxhighlight>}}<br />
Use the {{Codeline|__setitem__}} method instead as a workaround:<br />
{{Code||<syntaxhighlight lang="octave"><br />
d.__setitem__ ("one", 1);<br />
</syntaxhighlight>}}<br />
The reason is because Octave strings are interpreted as arrays in many contexts, and this syntax is parsed by Octave as an attempt to assign to 3 elements of an object.</li><br />
<br />
<li>Element indexing on a <tt>list</tt> or other sequence object with a range or set of indices doesn't return the right number of output arguments. Element indexing should return as many values as were indexed, each assigned to the <tt>ans</tt> variable in turn, or be able to wrap the return list in a cell array, as shown here:<br />
{{Code||<syntaxhighlight lang="octave"><br />
x = py.list ({1, 2, 3, 4, 5, 6});<br />
x{1:3}<br />
y = {x{1:3}};<br />
</syntaxhighlight>}}<br />
Instead of the expected behavior, a cell array of elements is returned in both cases. This is Octave bug {{Bug|48693}}. The following patterns for assigning the results do work instead:<br />
{{Code||<syntaxhighlight lang="octave"><br />
[a, b, c] = x{1:3}<br />
[y{1:3}] = x{1:3};<br />
</syntaxhighlight>}}</li><br />
<br />
<li>Function handles to Python functions, bound methods, or other callable objects is not yet supported. As a workaround, the {{Codeline|pyeval}} function can be used to return a reference to a function which can be assigned and called like any Octave function handle, but cannot be passed in to functions that expect a function handle.</li><br />
<br />
<li>Objects are not deleted because object destructors are not called by Octave when objects are cleared or go out of scope. For the Python interface, this means that the internal store of objects will continue to grow and objects will persist indefinitely even when all Octave references to a given Python object are gone. This is Octave bug {{Bug|46497}}.</li><br />
<br />
<li>Python objects can't be loaded or saved using the Octave {{Codeline|load}} and {{Codeline|save}} commands. This missing feature applies to any classdef object, this is Octave bug {{Bug|45833}}. As a workaround, any Python pickling or serialization functions can be used to load and save objects separately from the usual Octave workspace techniques.</li><br />
<br />
<li>Names cannot be imported into the current workspace using the {{Codeline|import}} command. {{Codeline|import}} is not yet implemented in Octave at all.</li><br />
<br />
</ul><br />
<br />
In addition, the following workaround may be considered a known issue. I don't know enough about Matlab's Python implementation to know how important this is, but it's worth documenting.<br />
<br />
<ul><br />
<li><br />
<tt>py.foo</tt> is supposed to act like a kind of dynamic namespace, automatically loading any matching Python function or module that is in the search path. This most closely maps to the concept of a "package" in Matlab or Octave, which would normally be implemented with a <tt>+py</tt> directory. Since we didn't know of an easy way to create a package scope that does some kind of dynamic dispatch, we implemented <tt>py</tt> as an old-style <tt>@py</tt> class. This takes advantage of the fact that the syntax <tt>py.foo</tt> instantiates a <tt>py</tt> object and calls <tt>subsref</tt> on it. This only works because it is an old-style class, with classdef this would be treated like a static class method call rather than a property lookup on an object instance. This lets us interpret the property lookup as a dynamic search of the Python module path.<br />
</li><br />
</ul><br />
<br />
== Pytave ==<br />
<br />
This project is currently derived from an earlier project called Pytave, which was developed to work in the opposite direction, to allow Python to call Octave functions on an embedded Octave interpreter. The bulk of the project is in the code to convert between Octave and Python data types, so most of that is reusable and serves both purposes. As a side goal, we may continue to maintain the Python wrapper around Octave and incorporate that into Octave as well, so that Octave can provide its own native Python module.</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=11830Octave for GNU/Linux2019-03-20T07:02:05Z<p>Mtmiller: /* Docker */ add section</p>
<hr />
<div>The recommended way for installing Octave and Octave-Forge packages on GNU/Linux systems <br />
is via each distribution package installation system.<br />
<br />
More detailed instructions follow.<br />
<br />
=Debian and Debian-based (such as Ubuntu)=<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
Simply install Octave from your distribution repository<br />
<br />
apt install octave<br />
<br />
For old versions of Ubuntu that only supply old versions of Octave, consider using Octave's PPA. For more details, see the [[Debian]] specific instructions page.<br />
<br />
There are also Debian packages for each of the Octave Forge packages, named {{codeline|octave-<pkg>}}, for example {{codeline|octave-image}} and {{codeline|octave-statistics}} for the image processing and statistics package respectively. A complete list of them can be found with the command<br />
<br />
apt search octave-forge<br />
<br />
=Fedora=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
The packages can be installed using the dnf command, they are:<br />
<br />
*octave<br />
*octave-devel<br />
<br />
{{Codeline|octave-devel}} contains the octave headers and {{Path|mkoctfile}} script and is really only needed by users who are developing code that is to be dynamically linked to octave. {{Codeline|octave}} can be installed with the command:<br />
<br />
# dnf install octave<br />
<br />
=Gentoo=<br />
<br />
Octave is available through Gentoo's package management system, Portage:<br />
<br />
# emerge --sync<br />
Add USE flag 'curl' into your <code>/etc/portage/package.use</code> file to enable remote Octave-Forge packages fetching<br />
sci-mathematics/octave curl<br />
and emerge Octave<br />
# emerge octave<br />
Since Octave ver. > 3.4.0 is able to fetch Octave-Forge packages from remote repository, packages ''octave-forge'' or ''g-octave'' are no more needed.<br />
<br />
Before installing any Octave-Forge package, in Octave command prompt you must type<br />
pkg -forge list<br />
and then install your favourite packages. Typically, you have to start with <br />
pkg install -forge general<br />
<br />
=Red Hat Enterprise/CentOS=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
Octave is available for Red Hat Enterprise Linux distributions through the [https://fedoraproject.org/wiki/EPEL EPEL] repository. This section applies to CentOS, Scientific Linux, and other Red Hat Enterprise rebuild distributions as well.<br />
<br />
'''Method 1 - the quick way:'''<br />
<br />
yum install epel-release<br />
yum install octave<br />
<br />
'''Method 2 - if the above does not work:'''<br />
<br />
First, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL. For example,<br />
<br />
# wget <nowiki>http://url/to/latest/epel-release-6-7.noarch.rpm</nowiki><br />
# yum localinstall epel-release-6-7.noarch.rpm<br />
<br />
Once the EPEL repository has been enabled, you can follow the rest of the [[#Fedora|instructions for Fedora]] to install Octave using yum.<br />
<br />
Note that EPEL intentionally does not follow new releases as closely as other distributions. Consequently, the version of Octave provided by EPEL may be several months or years out of date. There are plans for the Octave maintainers to provide support and binary RPMs for enterprise GNU/Linux distributions; contact the [mailto:maintainers@octave.org maintainers mailing list] for more information.<br />
<br />
=SUSE Linux and openSUSE=<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
Binary packages for Octave are provided by all versions of openSUSE. It can be installed by command:<br />
<br />
zypper in octave<br />
<br />
Latest stable version of Octave and Octave-Forge are available on Science repository. For details see [[openSUSE]] specific wiki page.<br />
<br />
=Arch Linux=<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
Updated Octave's version is in the extra repository. It can be installed by typing:<br />
<br />
# pacman -S octave<br />
<br />
=Homebrew on Linux=<br />
<div id="Linuxbrew" /><br />
<br />
Octave is provided by the [https://brew.sh/ Homebrew] package manager, which is a cross-distribution packaging system. "Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory. This is particularly useful if you have an older GNU/Linux distribution or if you do not have root access.<br />
<br />
Homebrew can be installed with the command:<br />
<br />
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"<br />
<br />
It can be added to your shell environment and future login environments with:<br />
<br />
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)<br />
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)<br />
test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile<br />
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile<br />
<br />
Once set up, Octave can be installed with the command:<br />
<br />
brew install octave<br />
<br />
=Docker=<br />
<br />
Octave is available as a Docker container. This can be used to easily run Octave in a well-defined, minimal GNU/Linux container. It can be used as a standard interactive Octave shell or to run scripts, but it may be mostly of interest to developers for use in automated build, test, or CI environments.<br />
<br />
docker pull mtmiller/octave<br />
docker run mtmiller/octave octave --version<br />
<br />
The image is hosted at [https://hub.docker.com/r/mtmiller/octave mtmiller/octave on Docker Hub].<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=GNU_Octave_Wiki&diff=11821GNU Octave Wiki2019-03-15T21:34:01Z<p>Mtmiller: /* Advanced topics */ update search links, add DuckDuckGo</p>
<hr />
<div>[https://www.gnu.org/software/octave/ GNU Octave] is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. GNU Octave is normally used through its interactive interface ([https://en.wikipedia.org/wiki/Command-line_interface CLI] and [https://en.wikipedia.org/wiki/Graphical_user_interface GUI]), but it can also be used to write non-interactive programs. The GNU Octave language is quite similar to Matlab so that most programs are easily portable.<br />
<br />
== [[:Category:Installation|Installing]] ==<br />
<br />
* Get installers and sources from https://www.octave.org/download<br />
** [[Octave for macOS|macOS installation instructions]]<br />
** [[Octave for GNU/Linux|GNU/Linux installation instructions]] and for [[Octave for other Unix systems|other Unix systems]]<br />
** [[Octave_for_Microsoft_Windows|Microsoft Windows installation instructions]]<br />
** [[Octave_and_separate_toolchain|Build Octave using a separate toolchain]] (custom built gcc version)<br />
<br />
{{Note|GNU Octave {{Release}} is the current stable release}}<br />
<br />
Are you using an old version of Octave? Check the [[Release History]] page to see how old it is.<br />
<br />
== [https://www.gnu.org/software/octave/news.html News] ==<br />
<br />
* GNU Octave is a mentor organization for [https://summerofcode.withgoogle.com/organizations/5389784319524864/ Google Summer of Code 2019]. Student applications are due April 9.<br />
<br />
* {{Release Date}} '''GNU Octave {{Release}}''' has been released (see above)!<br />
<br />
== Getting help ==<br />
<br />
* Read the [https://www.gnu.org/software/octave/doc/interpreter GNU Octave documentation]<br />
* The [[FAQ|frequently asked questions (FAQ)]] list is good place to start with answers to questions regarding [[FAQ#General|what is Octave]], [[FAQ#Licensing_issues|licensing]], [[FAQ#What.27s_new_in_Octave|new features]], [[FAQ#What_documentation_exists_for_Octave.3F|documentation]], [[FAQ#Installation_issues_and_problems|installation]], [[FAQ#Coding|coding]], [[FAQ#How_can_I_get_involved_in_Octave_development.3F|contributing to Octave]], and more, are found there.<br />
* Continue reading this wiki and feel free to add further content (please check that it is not already part of, or belongs in, the documentation and read the [[Contribution guidelines]]).<br />
* [https://www.gnu.org/software/octave/support.html Other support options]<br />
<br />
== [[Using Octave|Getting started]] ==<br />
<br />
* [[Publications using Octave#Books|Books]]<br />
* [[Video tutorials|Videos]]<br />
* [https://bagustris.github.io/octave-tutorial Short course]<br />
<br />
== Advanced topics ==<br />
<br />
Below is a temporary attempt to organize the "most wanted" pages of the Wiki. A list of all pages on the wiki can be seen [[Special:AllPages|here]]. To locate something specific, try the wiki's [[Special:Search|search]] box, or prepend {{Codeline|<nowiki>site:wiki.octave.org</nowiki>}} to a [https://duckduckgo.com/?q=site%3Awiki.octave.org DuckDuckGo] or [https://www.google.com/search?q=site%3Awiki.octave.org Google] search. Please read the [[Contribution guidelines]] first, if you want to contribute to this Wiki.<br />
<br />
=== [[:Category:Packages|Packages]] ===<br />
<br />
* [[OEP:pkg|Installing packages]]<br />
* [[Creating packages]]<br />
<br />
==== [[Octave Forge]] ====<br />
<br />
See also the list of Forge Wiki pages: [[:Category:Octave Forge]]<br />
* [[Arduino_package|arduino package]] Control arduino devices from Octave<br />
* [[bim_package|bim package]] Solve Partial Differential Equations with a Finite Element method<br />
* [[Control_package|Control package]]<br />
* [http://modb.oce.ulg.ac.be/mediawiki/index.php/CGI_programming_with_Octave CGI] Common Gateway Interface for Octave<br />
* [[Dataframe_package|Dataframe package]] cell arrays on steroids<br />
* [[Dicom_package|Dicom package]]<br />
* [[Fem-fenics|fem-fenics]] Interface to [http://fenicsproject.org/ FEnics] FEM library<br />
* [[Geometry_package|Geometry package]]<br />
* [[Image package]]<br />
* [[Image_acquisition_package|Image acquisition package]] Capture images, for example from v4l2 hardware like webcams<br />
* [[Instrument_control__package|Instrument control package]]<br />
* [[Interval_package|Interval package]] Real-valued interval arithmetic<br />
* [[IO_package|I/O package]]<br />
* [[Java_package|Java package]]<br />
* [[Mechanics_package|Mechanics package]]<br />
* [http://modb.oce.ulg.ac.be/mediawiki/index.php/NcArray ncArray] High-level interface of accessing a single or a collection of NetCDF files as a multi-dimensional array<br />
* [http://modb.oce.ulg.ac.be/mediawiki/index.php/Octave-netcdf netcdf] matlab-compatible NetCDF package<br />
* [http://modb.oce.ulg.ac.be/mediawiki/index.php/NetCDF_toolbox_for_Octave octcdf] NetCDF package (old)<br />
* [[ocs_package|OCS package]] Octave Circuit Simulator<br />
* [http://modb.oce.ulg.ac.be/mediawiki/index.php/Optimal_interpolation_Fortran_module_with_Octave_interface optiminterp] Optimal interpolation<br />
* [[Parallel_package|Parallel package]]<br />
* [[Sockets_package|Sockets package]]<br />
* [[Symbolic package|Symbolic package]]<br />
* [[TISEAN_package|TISEAN package]]<br />
* [[Video_package|Video package]]<br />
* [[sci_cosim|Scilab co-simulation package]]<br />
* [[Zeromq_package|Zeromq package]] Zeromq bindings for Octave.<br />
<br />
=== [[:Category:Resources|Tutorials/Examples]] ===<br />
<br />
* [[Octave Basics]] - A short reference card to get started.<br />
* [[:Category:Plotting tutorials|Plotting tutorials]]<br />
* [[Tips and tricks]] - Guidelines to improve your coding skills.<br />
* [[Cookbook]] - Several simple and useful examples.<br />
* [[Octave load]] - Use liboctave functions to load variables from a file in Octave's binary format. <br />
* [[Fortran]] - Accessing liboctave from a Fortran 2003 program.<br />
* [[Octave fun]] - Coding can be fun -- miscellaneous more or less funny scripts<br />
* [http://www.amiq.com/consulting/2014/11/21/how-to-connect-systemverilog-with-octave/ How to Connect SystemVerilog with Octave]<br />
<br />
<br />
=== [[:Category:Development|Development]] ===<br />
<br />
* [[5.0.0 Release Checklist]]<br />
** [[Bug Fix List - 5.0 Release]]<br />
* [[Contribution guidelines]]<br />
* [[Doxygen]] - Internal C++ code documentation.<br />
* [[International Characters Support]] - Using Octave in your own language.<br />
* [[:Category:Editors|Editors]] - A list of editors supporting Octave syntax highlighting.<br />
* [[:Category:Building|Building]] - All pages related to build Octave.<br />
** [[Building]] - General information.<br />
** [[Continuous Build]]<br />
** [[Enable large arrays: Build octave such that it can use arrays larger than 2Gb.|Large array support]]<br />
* [[Tests|Testing source code]]<br />
* [[:Category:Packaging|Packaging]] - Building binary distributions.<br />
** [[Create a MacOS X App Bundle Using MacPorts|Create a macOS app using MacPorts]]<br />
** [[Windows_Installer|Create a Windows Installer using MXE]]<br />
<br />
=== [[:Category:Academia|Academia]] ===<br />
<br />
* [[Publications using Octave]] - A compilation of scientific publications making reference to GNU Octave (add yours!).<br />
<br />
=== [[:Category:Project Ideas|Project Ideas]] ===<br />
<br />
* [[Projects]]<br />
* [[Summer of Code Project Ideas]]<br />
<br />
== External Links ==<br />
<br />
* [https://www.gnu.org/software/octave/ Octave Homepage]<br />
* [https://octave.sourceforge.io/ Octave Forge]<br />
* [https://savannah.gnu.org/bugs/?group=octave GNU Octave - Bug Tracker]<br />
* [https://savannah.gnu.org/task/?group=octave GNU Octave - Task Tracker]<br />
* [https://savannah.gnu.org/patch/?group=octave GNU Octave - Patch Tracker]<br />
* [https://savannah.gnu.org/hg/?group=octave GNU Octave - Mercurial Repositories]<br />
* [https://planet.octave.org/ Planet Octave] (collection of blog feeds featuring Octave developers and Summer of Code students)</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Summer_of_Code&diff=11820Summer of Code2019-03-15T21:29:26Z<p>Mtmiller: update URLs and SOCIS acronym</p>
<hr />
<div>Octave has participated in the [https://summerofcode.withgoogle.com/ Google Summer of Code] (GSoC) since 2011 (as part of GNU in 2011-2013 and 2015) and the [https://socis.esa.int/ ESA Summer of Code in Space] (SOCIS) since 2012. Both programs continue to bring potential new contributors to Octave and have them work on interesting projects that could be merged into Octave or otherwise benefit the Octave community.<br />
<br />
This page lists all current and past summer of code projects done for Octave under both programs.<br />
<br />
== Current and Past Projects ==<br />
<br />
=== [https://summerofcode.withgoogle.com/organizations/4797252556554240/ GSoC 2018] ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|[[User:Batterylow|Sahil Yadav]]<br />
|[https://summerofcode.withgoogle.com/projects/#4667852435488768 Octave Code Sharing]<br />
|-<br />
|[[User:Sudeepam|P Sudeepam]]<br />
|[https://summerofcode.withgoogle.com/projects/#5362630907133952 A fast and accurate command line suggestion feature]<br />
|-<br />
|[[User:Erigualter|Erivelton Gualter]]<br />
|[https://summerofcode.withgoogle.com/projects/#5842927301951488 Interactive tool for SISO Linear Control System Design]<br />
|}<br />
<br />
=== [https://summerofcode.withgoogle.com/archive/2017/organizations/6187477526118400/ GSoC 2017] ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|PiyushJain<br />
|[https://piyush-jain1.github.io/GeometryPackage/ Boolean operations on polygons]<br />
|-<br />
|Michele Ginesi<br />
|[https://gsocspecfun.blogspot.de/ Make Specfuns special again]<br />
|-<br />
|[[User:Urathai|urathai]]<br />
|[https://gsocinterval.blogspot.de/ Interval arithmetic on N-dimensional arrays]<br />
|-<br />
|Enrico Bertino<br />
|[https://gsocnnet.blogspot.de/ Convolutional neural networks]<br />
|}<br />
<br />
=== GSoC 2016 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|[[User:Bumi|Bumi]]<br />
|Generalized eigenvalue problem<br />
|-<br />
|Chiara Segala<br />
|Exponential integrators<br />
|-<br />
|[[User:Francesco Faccio|Francesco Faccio]]<br />
|ode15s<br />
|-<br />
|[[User:AMR_KELEG|Amr Mohamed]]<br />
|Boolean operations on polygons<br />
|-<br />
|Abhinav Tripathi<br />
|Symbolic package<br />
|}<br />
<br />
=== SOCIS 2016 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|[[User:CristianoDorigo|Cristiano Dorigo]]<br />
|Iterative solvers for sparse linear systems<br />
|}<br />
<br />
=== GSoC 2015 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|[[User:Asma|Asma Afzal]]<br />
|Optimization package: Add Matlab-compatible lsqcurvefit, lsqlin, lsqnonlin, etc.<br />
|-<br />
|[[User:Josiah425|Piotr Held]]<br />
|Interface to the TISEAN library<br />
|-<br />
|[[User:Antonio_Pino|Antonio Pino Robles]]<br />
|Improved performance of funm and related matrix functions<br />
|}<br />
<br />
=== SOCIS 2015 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|[[User:carandraug|Carnë Draug]]<br />
|Bioformats for Octave, implement watershed, and improve regionprops and hist3<br />
|}<br />
<br />
=== GSoC 2014 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|Eduardo Fernández<br />
|Incomplete matrix factorizations<br />
|-<br />
|Eugenio Gianniti<br />
|Finite element modeling using an interface to FEniCS<br />
|-<br />
|David Spies<br />
|Improvements to handling of sparse matrices<br />
|}<br />
<br />
=== SOCIS 2014 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|[[User:Jacopo|Jacopo Corno]]<br />
|Matlab-compatible ODE solvers<br />
|}<br />
<br />
=== GSoC 2013 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|Ahsan Said<br />
|Agora Octave web site<br />
|-<br />
|Vytautas Jančauskas<br />
|Audio processing and file I/O functions<br />
|-<br />
|Gedeone<br />
|General purpose finite element method library<br />
|-<br />
|Andrej Lojdl<br />
|TeX rendering engine for plotting figures<br />
|-<br />
|Carnë Draug<br />
|Improve N-dimensional image support in the image package<br />
|-<br />
|Matheus Vieira Portela<br />
|GUI for manipulating closed-loop systems for the control package<br />
|-<br />
|Riupeng Li<br />
|Incomplete sparse LU and Cholesky factorizations<br />
|-<br />
|[[User:Siko1056|Kai Torben Ohlhus]]<br />
|[https://siko1056-gsoc.blogspot.com Other improvements to sparse LU and Cholesky factorizations] and [https://www.google-melange.com/archive/gsoc/2013/orgs/gnu/projects/siko1056.html]<br />
|-<br />
|LYH<br />
|JIT compilation improvements<br />
|}<br />
<br />
=== SOCIS 2013 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|[[User:Robbbs88|Roberto Porcù]]<br />
|Geometric integrators for Hamiltonian systems and ODE solvers<br />
|}<br />
<br />
=== GSoC 2012 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|Max Brister<br />
|JIT compilation using LLVM<br />
|-<br />
|Jacob Dawid<br />
|Native Octave GUI<br />
|-<br />
|Benjamin Lewis<br />
|Least squares spectral analysis toolbox<br />
|}<br />
<br />
=== SOCIS 2012 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|Wendy Liu<br />
|Agora Octave web site<br />
|-<br />
|Andrius Sutas<br />
|Low-level I/O functions<br />
|}<br />
<br />
=== GSoC 2011 ===<br />
<br />
{| class="wikitable"<br />
!Student<br />
!Project Summary<br />
|-<br />
|Daniel Kraft<br />
|Profiler for the Octave interpreter<br />
|}<br />
<br />
[[Category:Summer of Code]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=11819Octave for GNU/Linux2019-03-15T19:33:01Z<p>Mtmiller: /* Homebrew on Linux */ rename section, reformat instructions</p>
<hr />
<div>The recommended way for installing Octave and Octave-Forge packages on GNU/Linux systems <br />
is via each distribution package installation system.<br />
<br />
More detailed instructions follow.<br />
<br />
=Debian and Debian-based (such as Ubuntu)=<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
Simply install Octave from your distribution repository<br />
<br />
apt install octave<br />
<br />
For old versions of Ubuntu that only supply old versions of Octave, consider using Octave's PPA. For more details, see the [[Debian]] specific instructions page.<br />
<br />
There are also Debian packages for each of the Octave Forge packages, named {{codeline|octave-<pkg>}}, for example {{codeline|octave-image}} and {{codeline|octave-statistics}} for the image processing and statistics package respectively. A complete list of them can be found with the command<br />
<br />
apt search octave-forge<br />
<br />
=Fedora=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
The packages can be installed using the dnf command, they are:<br />
<br />
*octave<br />
*octave-devel<br />
<br />
{{Codeline|octave-devel}} contains the octave headers and {{Path|mkoctfile}} script and is really only needed by users who are developing code that is to be dynamically linked to octave. {{Codeline|octave}} can be installed with the command:<br />
<br />
# dnf install octave<br />
<br />
=Gentoo=<br />
<br />
Octave is available through Gentoo's package management system, Portage:<br />
<br />
# emerge --sync<br />
Add USE flag 'curl' into your <code>/etc/portage/package.use</code> file to enable remote Octave-Forge packages fetching<br />
sci-mathematics/octave curl<br />
and emerge Octave<br />
# emerge octave<br />
Since Octave ver. > 3.4.0 is able to fetch Octave-Forge packages from remote repository, packages ''octave-forge'' or ''g-octave'' are no more needed.<br />
<br />
Before installing any Octave-Forge package, in Octave command prompt you must type<br />
pkg -forge list<br />
and then install your favourite packages. Typically, you have to start with <br />
pkg install -forge general<br />
<br />
=Red Hat Enterprise/CentOS=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
Octave is available for Red Hat Enterprise Linux distributions through the [https://fedoraproject.org/wiki/EPEL EPEL] repository. This section applies to CentOS, Scientific Linux, and other Red Hat Enterprise rebuild distributions as well.<br />
<br />
'''Method 1 - the quick way:'''<br />
<br />
yum install epel-release<br />
yum install octave<br />
<br />
'''Method 2 - if the above does not work:'''<br />
<br />
First, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL. For example,<br />
<br />
# wget <nowiki>http://url/to/latest/epel-release-6-7.noarch.rpm</nowiki><br />
# yum localinstall epel-release-6-7.noarch.rpm<br />
<br />
Once the EPEL repository has been enabled, you can follow the rest of the [[#Fedora|instructions for Fedora]] to install Octave using yum.<br />
<br />
Note that EPEL intentionally does not follow new releases as closely as other distributions. Consequently, the version of Octave provided by EPEL may be several months or years out of date. There are plans for the Octave maintainers to provide support and binary RPMs for enterprise GNU/Linux distributions; contact the [mailto:maintainers@octave.org maintainers mailing list] for more information.<br />
<br />
=SUSE Linux and openSUSE=<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
Binary packages for Octave are provided by all versions of openSUSE. It can be installed by command:<br />
<br />
zypper in octave<br />
<br />
Latest stable version of Octave and Octave-Forge are available on Science repository. For details see [[openSUSE]] specific wiki page.<br />
<br />
=Arch Linux=<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
Updated Octave's version is in the extra repository. It can be installed by typing:<br />
<br />
# pacman -S octave<br />
<br />
=Homebrew on Linux=<br />
<div id="Linuxbrew" /><br />
<br />
Octave is provided by the [https://brew.sh/ Homebrew] package manager, which is a cross-distribution packaging system. "Homebrew on Linux" was formerly a fork known as Linuxbrew. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory. This is particularly useful if you have an older GNU/Linux distribution or if you do not have root access.<br />
<br />
Homebrew can be installed with the command:<br />
<br />
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"<br />
<br />
It can be added to your shell environment and future login environments with:<br />
<br />
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)<br />
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)<br />
test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile<br />
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile<br />
<br />
Once set up, Octave can be installed with the command:<br />
<br />
brew install octave<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Template:Release_Date&diff=11742Template:Release Date2019-03-01T06:16:32Z<p>Mtmiller: fix release date</p>
<hr />
<div><includeonly>February 23, 2019</includeonly><noinclude>{{TemplateDoc}}[[Category:Templates]]</noinclude></div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_Microsoft_Windows&diff=11741Octave for Microsoft Windows2019-03-01T03:23:23Z<p>Mtmiller: /* Installers for Microsoft Windows */ fix name of post-install.bat</p>
<hr />
<div>:''This article is about using pre-built installers of Octave for Windows; for instructions about building it, see [[Windows Installer]].''<br />
<br />
Windows installers are available for the latest version of Octave ({{Release}}, released on {{Release Date}}) from https://ftp.gnu.org/gnu/octave/windows/. Users are encouraged to use the latest version unless a specific feature or requirement warrants using an older version of the software. Version specific instructions and installation notes are provided below.<br />
<br />
=Installers for Microsoft Windows=<br />
<br />
The easiest way to install GNU Octave on Microsoft Windows is by using [http://hg.octave.org/mxe-octave/ MXE] builds. For the current release, both 32-bit and 64-bit installers and zip archived packages (.zip and .7z formats) can be found at https://ftp.gnu.org/gnu/octave/windows/. <br />
<br />
* For executable installers: the user can simply run the downloaded file and follow the on-screen installation prompts. It is recommended that the installation path does not include spaces or non-ASCII characters. Shortcuts to the program will be created automatically.<br />
<br />
* For the 7z/zip archives: <br />
# Extract the file content to a directory on the harddrive (such as {{Path|C:\Octave}}). Spaces or non-ASCII characters in the path are discouraged and may cause program errors.<br />
# Manually create a shortcut to the {{Path|octave.vbs}} file in the main installation directory. (Right-click on the file, select 'Create Shortcut', and move the new shortcut to your desired location.) <br />
# If a command-line only instance of Octave is desired, the user can create a shortcut as stated above, right-click on the shortcut, select Properties, and add ''--no-gui'' to the end of the Target field.<br />
# Run the {{Path|post-install.bat}} file before running Octave the first time to reduce plot delays due to the Windows font cache and make the pre-installed packages visible to the system.<br />
<br />
==Packages==<br />
<br />
A selection of pre-built, [[Octave Forge]] packages are included with for all versions of the official Windows release. If you following the installation directions above you can confirm the package list by typing the command below at the Octave command prompt:<br />
<br />
>> pkg list<br />
<br />
A typical output (for version {{Release}}) is:<br />
<br />
Package Name | Version | Installation directory<br />
--------------------+---------+-----------------------<br />
communications | 1.2.1 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\communications-1.2.1<br />
control | 3.1.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\control-3.1.0<br />
data-smoothing | 1.3.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\data-smoothing-1.3.0<br />
database | 2.4.3 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\database-2.4.3<br />
dataframe | 1.2.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\dataframe-1.2.0<br />
dicom | 0.2.1 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\dicom-0.2.1<br />
financial | 0.5.3 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\financial-0.5.3<br />
fits | 1.0.7 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\fits-1.0.7<br />
fuzzy-logic-toolkit | 0.4.5 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\fuzzy-logic-toolkit-0.4.5<br />
ga | 0.10.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\ga-0.10.0<br />
general | 2.1.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\general-2.1.0<br />
generate_html | 0.3.1 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\generate_html-0.3.1<br />
geometry | 3.0.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\geometry-3.0.0<br />
gsl | 2.1.1 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\gsl-2.1.1<br />
image | 2.10.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\image-2.10.0<br />
instrument-control | 0.3.1 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\instrument-control-0.3.1<br />
interval | 3.2.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\interval-3.2.0<br />
io | 2.4.12 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\io-2.4.12<br />
linear-algebra | 2.2.2 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\linear-algebra-2.2.2<br />
lssa | 0.1.3 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\lssa-0.1.3<br />
ltfat | 2.3.1 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\ltfat-2.3.1<br />
mapping | 1.2.1 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\mapping-1.2.1<br />
miscellaneous | 1.2.1 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\miscellaneous-1.2.1<br />
nan | 3.1.4 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\nan-3.1.4<br />
netcdf | 1.0.12 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\netcdf-1.0.12<br />
nurbs | 1.3.13 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\nurbs-1.3.13<br />
ocs | 0.1.5 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\ocs-0.1.5<br />
odepkg | 0.8.5 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\odepkg-0.8.5<br />
optim | 1.5.3 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\optim-1.5.3<br />
optiminterp | 0.3.5 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\optiminterp-0.3.5<br />
quaternion | 2.4.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\quaternion-2.4.0<br />
queueing | 1.2.6 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\queueing-1.2.6<br />
signal | 1.4.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\signal-1.4.0<br />
sockets | 1.2.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\sockets-1.2.0<br />
sparsersb | 1.0.6 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\sparsersb-1.0.6<br />
specfun | 1.1.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\specfun-1.1.0<br />
splines | 1.3.2 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\splines-1.3.2<br />
statistics | 1.4.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\statistics-1.4.0<br />
stk | 2.5.1 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\stk-2.5.1<br />
strings | 1.2.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\strings-1.2.0<br />
struct | 1.0.15 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\struct-1.0.15<br />
tisean | 0.2.3 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\tisean-0.2.3<br />
tsa | 4.4.5 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\tsa-4.4.5<br />
video | 1.2.4 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\video-1.2.4<br />
windows | 1.3.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\windows-1.3.0<br />
zeromq | 1.3.0 | C:\Octave\OCTAVE~1.0-W\mingw64\share\octave\packages\zeromq-1.3.0<br />
<br />
All packages can be updated to the latest version by running:<br />
<br />
>> pkg update<br />
<br />
Other packages can be installed by running:<br />
<br />
>> pkg install -forge <package name><br />
<br />
To install a new or updated package version manually, the package file can be downloaded from the [https://octave.sourceforge.io/packages.php Octave Forge website] to the working directory and can be installed using:<br />
<br />
>> pkg install package_file_name.tar.gz<br />
<br />
Detailed instructions for installing individual Octave Forge packages are given at https://octave.sourceforge.io/packages.php.<br />
<br />
<br />
'''Note that a security related issue in Windows XP currently prevents Octave from retrieving packages from the website automatically. When running under that Operating System manual package installation is necessary.'''<br />
<br />
=GNU Octave 4.4.1 on [https://cygwin.com/ cygwin]=<br />
<br />
*'''Maintainer:''' Marco Atzeri <br />
*'''Latest release:''' 2018-08-17<br />
<br />
*Latest packages:<br />
<br />
:octave-4.4.1-1<br />
:Its announce on cygwin mailing list [https://www.cygwin.com/ml/cygwin-announce/2018-08/msg00021.html]<br />
<br />
:Octave Forge packages have each a cygwin package.<br />
:Its announce on cygwin mailing list [https://cygwin.com/ml/cygwin-announce/2017-01/msg00078.html]<br />
: Full cygwin package list is available here [https://cygwin.com/packages/]<br />
: At 2017-04-06, 64 forge packages were available. <br />
<br />
*To install : <br />
: run cygwin setup-x86.exe (for cygwin 32 bit) or setup-x86_64.exe (for cygwin 64 bit) and select them in the Math category. <br />
: All the package dependencies will be also installed.<br />
<br />
:Graphics is based on X and to plot you will need to start octave within xterm (or similar).<br />
: I recommend to install "xinit", "xlaunch" and "gnuplot". These packages will pull all the functional Xserver. <br />
: Otherwise the only graphics will be ASCII art ;-)<br />
<br />
==Notes for cygwin==<br />
<br />
*When building from development source (default branch) <br />
: "make check" <br />
:passes almost all the tests. Only, and not substantial, failures are:<br />
:<syntaxhighlight lang="bash"><br />
/pub/hg/octave/src/data.cc : 8 failures due to different handling of complex Inf on sort<br />
/pub/hg/octave/src/syscalls.cc: 1 failure on fork. This disappears when octave is installed<br />
/pub/hg/octave/scripts/sparse/svds.m: 1 failure due to test sensitivity on starting point. See <br />
https://mailman.cae.wisc.edu/pipermail/octave-maintainers/2011-September/024715.html<br />
</syntaxhighlight><br />
<br />
* To build GNU Octave from cygwin source package, you need to install "cygport" and the relevant development libraries<br />
:<syntaxhighlight lang="bash"><br />
tar -xf octave-4.4.1-1-src.tar.xz <br />
cygport octave.cygport almostall<br />
</syntaxhighlight><br />
:see [https://cygwinports.github.io/cygport/ cygport documentation] for further info.<br />
<br />
=General info=<br />
<br />
Be advised that GNU Octave is primarily developed on GNU/Linux and other [https://en.wikipedia.org/wiki/POSIX POSIX] conform systems. The ports of GNU Octave to Microsoft Windows use different approaches to get most of the original Octave and adapt it to Microsoft Windows idiosyncrasies (e.g. dynamic libraries, file paths, permissions, environment variables, GUI system, etc). Bear this in mind and don't panic if you get unexpected results. There are a lot of suggestions on the mailing lists for tuning your Octave installation. GNU Octave standalone ports for Windows are independently compiled using either the [http://mingw.org MinGW] or Microsoft Visual Studio development environments (3.6 or before).<br />
<br />
=See also=<br />
<br />
* [[Octave for Microsoft Windows (outdated)]] for older instructions.<br />
<br />
[[Category:Installation]]<br />
[[Category:Building]]<br />
[[Category:Microsoft Windows]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Template:Release_Date&diff=11731Template:Release Date2019-02-25T19:00:27Z<p>Mtmiller: update release date</p>
<hr />
<div><includeonly>February 25, 2019</includeonly><noinclude>{{TemplateDoc}}[[Category:Templates]]</noinclude></div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Template:Release&diff=11730Template:Release2019-02-25T19:00:03Z<p>Mtmiller: update release version number</p>
<hr />
<div><includeonly>5.1.0</includeonly><noinclude>{{TemplateDoc}}[[Category:Templates]]</noinclude></div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_Ubuntu_systems&diff=11726Octave for Ubuntu systems2019-02-15T22:28:43Z<p>Mtmiller: create page alias</p>
<hr />
<div>#REDIRECT [[Octave for Debian systems]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Building_on_Cygwin_platform&diff=11725Building on Cygwin platform2019-02-15T22:27:15Z<p>Mtmiller: add to categories</p>
<hr />
<div>Octave can be built on cygwin too !<br />
<br />
==Pre-requisites==<br />
Setup your system the same way as described on the page [[Octave for Debian systems]]. The next step, required to generate the documentation, is to tweak a bit the texlive configuration file: (remember cygwin has no sudo command)<br />
<br />
vi /usr/share/texmf-dist/web2c<br />
<br />
Change <br />
<br />
TEXMFLOCAL = $TEXMFROOT/texmf-site<br />
<br />
into<br />
<br />
TEXMFLOCAL = $TEXMFROOT/texmf-site:$TEXMFROOT/texmf<br />
<br />
Then run<br />
<br />
mktexlsr<br />
<br />
<br />
==Configure==<br />
Proceed the same way as on a Unix platform. In this case, the procedure requires a kind of bootstrapping, so it is better to put Octave outside the main directory tree; like f.i.<br />
<br />
./bootstrap<br />
mkdir compile; cd compile<br />
../configure --prefix=${HOME}/usr<br />
<br />
This configuration supposes ${HOME}/usr/bin exists and is in your $PATH.<br />
<br />
==Build==<br />
The procedure is a bit more tricky. Start the build as usual:<br />
<br />
make -j 2 <br />
<br />
It will fail after a looong time, while trying to launch ./run-octave. This is a well-known problem, partly caused by issues with the fork() call under Windows platforms. At this time, change run-octave to something simpler:<br />
<br />
#! /bin/sh<br />
octave_executable="${PREFIX}/usr/bin/octave"<br />
"$octave_executable" "$@"<br />
<br />
Where ${PREFIX} matches the form previously used during the configure stage. In fact, we will use the new Octave, which is not yet operationnal. But never mind. Restart the process as follows:<br />
<br />
make install<br />
<br />
This way:<br />
# The Octave libs and binaries have been generated, they will be copied into their final destination directory.<br />
# the doc has still to be built. With the modified "run-octave", the executable which will be called is the version just installed during the previous step. Now the doc generation will succeed, and so will its installation.<br />
<br />
Enjoy!<br />
<br />
[[Category:Installation]]<br />
[[Category:Building]]<br />
[[Category:Microsoft Windows]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_WSL&diff=11724Octave for WSL2019-02-15T22:23:10Z<p>Mtmiller: create page alias</p>
<hr />
<div>#REDIRECT [[Octave for Windows Subsystem for Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_on_WSL&diff=11723Octave on WSL2019-02-15T22:20:25Z<p>Mtmiller: Mtmiller moved page Octave on WSL to Octave for Windows Subsystem for Linux: use consistent naming with other platform pages</p>
<hr />
<div>#REDIRECT [[Octave for Windows Subsystem for Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_Windows_Subsystem_for_Linux&diff=11722Octave for Windows Subsystem for Linux2019-02-15T22:20:25Z<p>Mtmiller: Mtmiller moved page Octave on WSL to Octave for Windows Subsystem for Linux: use consistent naming with other platform pages</p>
<hr />
<div>:''This article is about tips to use octave on linux platform using WSL(Windows Subsystem for linux)''<br />
<br />
On 64 bit Windows 10, we can now use linux applications using WSL(Windows Subsystem for linux). We now use and build linux version Octave. <br />
The original page editor only uses Ubuntu 18.04 so that description is limited to Ubuntu. Edit from people who use other distribution are welcome <br />
<br />
= Preparation =<br />
<br />
* The first thing you carry out to install WSL. See Microsft Page [https://docs.microsoft.com/ja-jp/windows/wsl/install-win10]. <br />
<br />
<br />
* For executable installers: the user can simply run the downloaded file and follow the on-screen installation prompts. It is recommended that the installation path does not include spaces or non-ASCII characters. Shortcuts to the program will be created automatically.<br />
<br />
* For the 7z/zip archives: <br />
# Extract the file content to a directory on the harddrive (such as {{Path|C:\Octave}}). Spaces or non-ASCII characters in the path are discouraged and may cause program errors.<br />
# Manually create a shortcut to the {{Path|octave.vbs}} file in the main installation directory. (Right-click on the file, select 'Create Shortcut', and move the new shortcut to your desired location.) <br />
# Run the {{Path|fc_update.bat}} file before running Octave to reduce plot delays due to the Windows font cache. <br />
<br />
==Packages==<br />
<br />
A selection of pre-built, [[Octave Forge]] packages are included with for all versions of the official Windows release. If you installed Octave using the executable installer, you can confirm the package list by typing the command below at the Octave command prompt:<br />
<br />
>> pkg list<br />
<br />
If instead you installed Octave from the .zip archive, you need first to rebuild the package list on your local machine. (The command above will produce a blank output and packages will be inaccessible before rebuilding.) Do this by typing the following command:<br />
<br />
>> pkg rebuild<br />
<br />
The package list should now be populated with the pre-installed packages. All packages can be updated to the latest version by running:<br />
<br />
>> pkg update<br />
<br />
Other packages can be installed by running:<br />
<br />
>> pkg install -forge <package name><br />
<br />
To install a new or updated package version manually, the package file can be downloaded from the [https://octave.sourceforge.io/packages.php Octave Forge website] to the working directory and can be installed using:<br />
<br />
>> pkg install package_file_name.tar.gz<br />
<br />
Detailed instructions for installing individual Octave Forge packages are given at https://octave.sourceforge.io/packages.php.<br />
<br />
<br />
'''Note that a security related issue in Windows XP currently prevents Octave from retrieving packages from the website automatically. When running under that Operating System manual package installation is necessary.'''<br />
<br />
=GNU Octave 4.4.1 on [https://cygwin.com/ cygwin]=<br />
<br />
*'''Maintainer:''' Marco Atzeri <br />
*'''Latest release:''' 2018-08-17<br />
<br />
*Latest packages:<br />
<br />
:octave-4.4.1-1<br />
:Its announce on cygwin mailing list [https://www.cygwin.com/ml/cygwin-announce/2018-08/msg00021.html]<br />
<br />
:Octave Forge packages have each a cygwin package.<br />
:Its announce on cygwin mailing list [https://cygwin.com/ml/cygwin-announce/2017-01/msg00078.html]<br />
: Full cygwin package list is available here [https://cygwin.com/packages/]<br />
: At 2017-04-06, 64 forge packages were available. <br />
<br />
*To install : <br />
: run cygwin setup-x86.exe (for cygwin 32 bit) or setup-x86_64.exe (for cygwin 64 bit) and select them in the Math category. <br />
: All the package dependencies will be also installed.<br />
<br />
:Graphics is based on X and to plot you will need to start octave within xterm (or similar).<br />
: I recommend to install "xinit", "xlaunch" and "gnuplot". These packages will pull all the functional Xserver. <br />
: Otherwise the only graphics will be ASCII art ;-)<br />
<br />
==Notes for cygwin==<br />
<br />
*When building from development source (default branch) <br />
: "make check" <br />
:passes almost all the tests. Only, and not substantial, failures are:<br />
:<syntaxhighlight lang="bash"><br />
/pub/hg/octave/src/data.cc : 8 failures due to different handling of complex Inf on sort<br />
/pub/hg/octave/src/syscalls.cc: 1 failure on fork. This disappears when octave is installed<br />
/pub/hg/octave/scripts/sparse/svds.m: 1 failure due to test sensitivity on starting point. See <br />
https://mailman.cae.wisc.edu/pipermail/octave-maintainers/2011-September/024715.html<br />
</syntaxhighlight><br />
<br />
* To build GNU Octave from cygwin source package, you need to install "cygport" and the relevant development libraries<br />
:<syntaxhighlight lang="bash"><br />
tar -xf octave-4.4.1-1-src.tar.xz <br />
cygport octave.cygport almostall<br />
</syntaxhighlight><br />
:see [https://cygwinports.github.io/cygport/ cygport documentation] for further info.<br />
<br />
=General info=<br />
<br />
Be advised that GNU Octave is primarily developed on GNU/Linux and other [https://en.wikipedia.org/wiki/POSIX POSIX] conform systems. The ports of GNU Octave to Microsoft Windows use different approaches to get most of the original Octave and adapt it to Microsoft Windows idiosyncrasies (e.g. dynamic libraries, file paths, permissions, environment variables, GUI system, etc). Bear this in mind and don't panic if you get unexpected results. There are a lot of suggestions on the mailing lists for tuning your Octave installation. GNU Octave standalone ports for Windows are independently compiled using either the [http://mingw.org MinGW] or Microsoft Visual Studio development environments (3.6 or before).<br />
<br />
=See also=<br />
<br />
* [[Octave for Microsoft Windows (outdated)]] for older instructions.<br />
<br />
[[Category:Installation]]<br />
[[Category:Building]]<br />
[[Category:Microsoft Windows]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_Debian_systems&diff=11721Octave for Debian systems2019-02-15T20:36:37Z<p>Mtmiller: /* Linuxbrew */ moved to Octave for GNU/Linux</p>
<hr />
<div>For Debian, and Debian-based distributions such as Ubuntu, specific solutions.<br />
<br />
== Pre-compiled binaries ==<br />
<br />
Binary packages for Octave and many Octave-Forge packages are provided by all versions of Debian and Ubuntu. These are the most well-tested binaries available and should work best for most users.<br />
<br />
sudo apt-get install octave<br />
<br />
Aside the {{codeline|octave}} package that installs GNU Octave, other pieces of it are split over multiple packages. These are {{codeline|octave-doc}}, {{codeline|octave-info}}, and {{codeline|octave-htmldoc}} for the documentation; {{codeline|liboctave-dev}} for the octave development header files and mkoctfile (required to install Octave Forge packages); and {{codeline|octave-dbg}} for the debugging symbols.<br />
<br />
For Debian stable users, there may also be newer packages available in backports, so don't forget to check there.<br />
<br />
=== Octave packages ===<br />
<br />
Many Octave packages are also distributed by your Linux distribution. These are tested to work the best with your Octave version. For example:<br />
<br />
sudo apt-get install octave-control octave-image octave-io octave-optim octave-signal octave-statistics<br />
<br />
=== Octave's Personal Package Archive (PPA) for Ubuntu ===<br />
<br />
For some Ubuntu releases the Octave packages are too old (Ubuntu 12.04 only has Octave version 3.2). The [https://launchpad.net/~octave GNU Octave Team] on Launchpad maintains a PPA providing more up to date packages of Octave for all versions of Ubuntu. These are backported from Debian unstable (the Ubuntu Octave Team needs help testing and preparing the packages so if you can help with this, contact [[User:Mtmiller|Mike Miller]]). To set up your system to install these packages:<br />
<br />
sudo apt-add-repository ppa:octave/stable<br />
sudo apt-get update<br />
sudo apt-get install octave<br />
<br />
=== Linuxbrew ===<br />
<br />
: ''See [[Octave for GNU/Linux#Linuxbrew]]''<br />
<br />
== Compiling from source ==<br />
<br />
The ''only'' tricky part is to install the dependencies. Once that is solved, installing from source should be as easy as {{Codeline|./configure && make && make install}}. See the manual for [http://www.gnu.org/software/octave/doc/interpreter/Running-Configure-and-Make.html configure options] and [[Octave_for_Debian_systems#Configuration|below]] for some common examples.<br />
<br />
=== Install dependencies ===<br />
<br />
Note that different Debian and Ubuntu versions may have slightly different package names but their differences should be pretty small, mostly limited to version numbers.<br />
<br />
==== The easy way (but likely incorrect) ====<br />
<br />
This approach is ''only'' suitable if you are building from source the ''same'' version that your Linux distribution already has packaged.<br />
<br />
The easy way to install ''most'' of the necessary dependencies is to {{Codeline|sudo apt-get build-dep octave}}. This will install all packages necessary to build and prepare a Debian package for the octave version available on your system repositories. However:<br />
* will install unnecessary packages related to the building of a Debian package;<br />
* may miss some new dependencies;<br />
* may install packages that are no longer octave dependencies.<br />
<br />
==== The even easier way (but experimental) ====<br />
<br />
The [[MXE|MXE-octave]] package provides a way to compile Octave for different platforms. Dependencies and certain flags are handled automatically.<br />
<br />
==== The right way ====<br />
<br />
The right way is to select and install all the dependencies as listed in the {{Path|INSTALL.OCTAVE}} file (if it is not in your source tree build it doing <code>make INSTALL.OCTAVE</code>). The following are their package names in Debian repositories (they will have their own dependencies which your package manager will solve automatically). If you are building development versions, you'll require some more packages as listed on {{Path|etc/HACKING.md}} and {{Path|INSTALL}}. Many of them will already be installed on your system. Install the dependencies by typing<br />
<br />
sudo apt-get install<br />
<br />
followed by the package names of the table below.<br />
<br />
:{| class="wikitable"<br />
|-<br />
! Dependency !! Debian 8 Jessie (stable) !! Ubuntu 16.04 Xenial Xerus (LTS)<br />
|-<br />
!colspan="3" style="text-align:center;" | Required build tools<br />
|-<br />
| C compiler<br />
|| [https://packages.debian.org/jessie/gcc gcc]<br />
|| [http://packages.ubuntu.com/xenial/gcc gcc]<br />
|-<br />
| C++ compiler<br />
|| [https://packages.debian.org/jessie/g++ g++]<br />
|| [http://packages.ubuntu.com/xenial/g++ g++]<br />
|-<br />
| Fortran compiler<br />
|| [https://packages.debian.org/jessie/gfortran gfortran]<br />
|| [http://packages.ubuntu.com/xenial/gfortran gfortran]<br />
|-<br />
| GNU make<br />
|| [https://packages.debian.org/jessie/make make]<br />
|| [http://packages.ubuntu.com/xenial/make make]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required external packages<br />
|-<br />
| BLAS<br />
|| [https://packages.debian.org/jessie/libblas-dev libblas-dev]<br />
|| [http://packages.ubuntu.com/xenial/libblas-dev libblas-dev]<br />
|-<br />
| LAPACK<br />
|| [https://packages.debian.org/jessie/liblapack-dev liblapack-dev]<br />
|| [http://packages.ubuntu.com/xenial/liblapack-dev liblapack-dev]<br />
|-<br />
| PCRE<br />
|| [https://packages.debian.org/jessie/libpcre3-dev libpcre3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libpcre3-dev libpcre3-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| ''Strongly'' recommended. Check the [http://www.gnu.org/software/octave/doc/interpreter/External-Packages.html Octave manual] for more information.<br />
|-<br />
| ARPACK<br />
|| [https://packages.debian.org/jessie/libarpack2-dev libarpack2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libarpack2-dev libarpack2-dev]<br />
|-<br />
| cURL<br />
|| [https://packages.debian.org/jessie/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|| [http://packages.ubuntu.com/xenial/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|-<br />
| epstool<br />
|| [https://packages.debian.org/jessie/epstool epstool]<br />
|| [http://packages.ubuntu.com/xenial/epstool epstool]<br />
|-<br />
| FFTW3<br />
|| [https://packages.debian.org/jessie/libfftw3-dev libfftw3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfftw3-dev libfftw3-dev]<br />
|-<br />
| fig2dev<br />
|| [https://packages.debian.org/jessie/transfig transfig]<br />
|| [http://packages.ubuntu.com/xenial/transfig transfig]<br />
|-<br />
| FLTK<br />
|| [https://packages.debian.org/jessie/libfltk1.3-dev libfltk1.3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfltk1.3-dev libfltk1.3-dev]<br />
|-<br />
| fontconfig<br />
|| [https://packages.debian.org/jessie/libfontconfig1-dev libfontconfig1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfontconfig1-dev libfontconfig1-dev]<br />
|-<br />
| FreeType<br />
|| [https://packages.debian.org/jessie/libfreetype6-dev libfreetype6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfreetype6-dev libfreetype6-dev]<br />
|-<br />
| gl2ps<br />
|| [https://packages.debian.org/jessie/libgl2ps-dev libgl2ps-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl2ps-dev libgl2ps-dev]<br />
|-<br />
| GLPK<br />
|| [https://packages.debian.org/jessie/libglpk-dev libglpk-dev]<br />
|| [http://packages.ubuntu.com/xenial/libglpk-dev libglpk-dev]<br />
|-<br />
| GNU Readline<br />
|| [https://packages.debian.org/jessie/libreadline-dev libreadline-dev]<br />
|| [http://packages.ubuntu.com/xenial/libreadline-dev libreadline-dev]<br />
|-<br />
| gnuplot<br />
|| [https://packages.debian.org/jessie/gnuplot gnuplot]<br />
|| [http://packages.ubuntu.com/xenial/gnuplot gnuplot-x11]<br />
|-<br />
| GraphicsMagick++<br />
|| [https://packages.debian.org/jessie/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|-<br />
| HDF5<br />
|| [https://packages.debian.org/jessie/libhdf5-serial-dev libhdf5-serial-dev]<br />
|| [http://packages.ubuntu.com/xenial/libhdf5-serial-dev libhdf5-serial-dev]<br />
|-<br />
| Java JDK<br />
|| [https://packages.debian.org/jessie/openjdk-7-jdk openjdk-7-jdk]<br />
|| [http://packages.ubuntu.com/xenial/openjdk-8-jdk openjdk-8-jdk]<br />
|-<br />
| libsndfile<br />
|| [https://packages.debian.org/jessie/libsndfile1-dev libsndfile1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsndfile1-dev libsndfile1-dev]<br />
|-<br />
| LLVM<br />
|| [https://packages.debian.org/jessie/llvm-dev llvm-dev]<br />
|| [http://packages.ubuntu.com/xenial/llvm-dev llvm-dev]<br />
|-<br />
| lpr<br />
|| [https://packages.debian.org/jessie/lpr lpr]<br />
|| [http://packages.ubuntu.com/xenial/lpr lpr]<br />
|-<br />
| makeinfo<br />
|| [https://packages.debian.org/jessie/texinfo texinfo]<br />
|| [http://packages.ubuntu.com/xenial/texinfo texinfo]<br />
|-<br />
| OpenGL<br />
|| [https://packages.debian.org/jessie/libgl1-mesa-dev libgl1-mesa-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl1-mesa-dev libgl1-mesa-dev]<br />
|-<br />
| OSMesa<br />
|| [https://packages.debian.org/jessie/libosmesa6-dev libosmesa6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libosmesa6-dev libosmesa6-dev]<br />
|-<br />
| pstoedit<br />
|| [https://packages.debian.org/jessie/pstoedit pstoedit]<br />
|| [http://packages.ubuntu.com/xenial/pstoedit pstoedit]<br />
|-<br />
| PortAudio<br />
|| [https://packages.debian.org/jessie/portaudio19-dev portaudio19-dev]<br />
|| [http://packages.ubuntu.com/xenial/portaudio19-dev portaudio19-dev]<br />
|-<br />
| Qhull<br />
|| [https://packages.debian.org/jessie/libqhull-dev libqhull-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqhull-dev libqhull-dev]<br />
|-<br />
| QRUPDATE<br />
|| [https://packages.debian.org/jessie/libqrupdate-dev libqrupdate-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqrupdate-dev libqrupdate-dev]<br />
|-<br />
| QScintilla<br />
|| [https://packages.debian.org/jessie/libqscintilla2-dev libqscintilla2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqscintilla2-dev libqscintilla2-dev]<br />
|-<br />
| Qt<br />
||<br />
[https://packages.debian.org/jessie/libqt4-dev libqt4-dev]<br />
[https://packages.debian.org/jessie/libqtcore4 libqtcore4]<br />
[https://packages.debian.org/jessie/libqtwebkit4 libqtwebkit4]<br />
[https://packages.debian.org/jessie/libqt4-network libqt4-network]<br />
[https://packages.debian.org/jessie/libqtgui4 libqtgui4]<br />
[https://packages.debian.org/jessie/libqt4-opengl-dev libqt4-opengl-dev]<br />
||<br />
[http://packages.ubuntu.com/xenial/libqt4-dev libqt4-dev]<br />
[http://packages.ubuntu.com/xenial/libqtcore4 libqtcore4]<br />
[http://packages.ubuntu.com/xenial/libqtwebkit4 libqtwebkit4]<br />
[http://packages.ubuntu.com/xenial/libqt4-network libqt4-network]<br />
[http://packages.ubuntu.com/xenial/libqtgui4 libqtgui4]<br />
[http://packages.ubuntu.com/xenial/libqt4-opengl-dev libqt4-opengl-dev]<br />
|-<br />
| SuiteSparse<br />
|| [https://packages.debian.org/jessie/libsuitesparse-dev libsuitesparse-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsuitesparse-dev libsuitesparse-dev]<br />
|-<br />
| Texlive<br />
|| texlive<br />
|| texlive<br />
|-<br />
| Xft<br />
|| [https://packages.debian.org/jessie/libxft-dev libxft-dev]<br />
|| [http://packages.ubuntu.com/xenial3/libxft-dev libxft-dev]<br />
|-<br />
| zlib<br />
|| [https://packages.debian.org/jessie/zlib1g-dev zlib1g-dev]<br />
|| [http://packages.ubuntu.com/xenial/zlib1g-dev zlib1g-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required to build from development sources<br />
|-<br />
| Autoconf<br />
|| [https://packages.debian.org/jessie/autoconf autoconf]<br />
|| [http://packages.ubuntu.com/xenial/autoconf autoconf]<br />
|-<br />
| Automake<br />
|| [https://packages.debian.org/jessie/automake automake]<br />
|| [http://packages.ubuntu.com/xenial/automake automake]<br />
|-<br />
| Bison<br />
|| [https://packages.debian.org/jessie/bison bison]<br />
|| [http://packages.ubuntu.com/xenial/bison bison]<br />
|-<br />
| Flex<br />
|| [https://packages.debian.org/jessie/flex flex]<br />
|| [http://packages.ubuntu.com/xenial/flex flex]<br />
|-<br />
| gperf<br />
|| [https://packages.debian.org/jessie/gperf gperf]<br />
|| [http://packages.ubuntu.com/xenial/gperf gperf]<br />
|-<br />
| gzip<br />
|| [https://packages.debian.org/jessie/gzip gzip]<br />
|| [http://packages.ubuntu.com/xenial/gzip gzip]<br />
|-<br />
| icoutils<br />
|| [https://packages.debian.org/jessie/icoutils icoutils]<br />
|| [http://packages.ubuntu.com/xenial/icoutils icoutils]<br />
|-<br />
| rsvg-convert<br />
|| [https://packages.debian.org/jessie/librsvg2-bin librsvg2-bin]<br />
|| [http://packages.ubuntu.com/xenial/librsvg2-bin librsvg2-bin]<br />
|-<br />
| libtool<br />
|| [https://packages.debian.org/jessie/libtool libtool]<br />
|| [http://packages.ubuntu.com/xenial/libtool libtool]<br />
|-<br />
| perl<br />
|| [https://packages.debian.org/jessie/perl perl]<br />
|| [http://packages.ubuntu.com/xenial/perl perl]<br />
|-<br />
| rsync<br />
|| [https://packages.debian.org/jessie/rsync rsync]<br />
|| [http://packages.ubuntu.com/xenial/rsync rsync]<br />
|-<br />
| tar<br />
|| [https://packages.debian.org/jessie/tar tar]<br />
|| [http://packages.ubuntu.com/xenial/tar tar]<br />
|}<br />
<br />
To install all of these on Ubuntu 16.04, type<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
<br />
<br />
To install all of these on Ubuntu 18.10, type (Needs more testing)<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev<br />
<br />
or, for Debian 8 stable,<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-7-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
or, for Debian 9 stable,<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libjack-jackd2-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
<br />
{{Warning|<ul><li>The Debian repositoriy has several libraries for dealing with HDF data files. The recommended is {{Codeline|libhdf5-serial-dev}}. However, the {{Forge|msh|msh package}} requires [http://www.geuz.org/gmsh/ gmsh] which is incompatible with it.</li><br />
<li>The GraphicsMagick++ library (libgraphicsmagick++1-dev) on the Debian repositories was compiled with quantum 8 which limits reading images to 8 bit. The solution is to recompile [[GraphicsMagick]] with quantum 16 or 32 before building Octave.</li><br />
<li>For debian9 using openjdk-9-jdk (even providing {{Codeline|JAVA_HOME}}) could *not* be used for the java interface! Use openjdk-8-jdk instead.</li><br />
<li>When configure decides to use QT5 instead of QT4, make might fail because lrelease is missing (see [https://savannah.gnu.org/bugs/?50580 bug 50580]). It can be fixed by installing {{Codeline|qttools5-dev-tools}}</li><br />
</ul>}}<br />
<br />
=== Obtaining the Source ===<br />
<br />
The source code for Octave releases can be obtained as a tarball from [https://ftp.gnu.org/gnu/octave/ https://ftp.gnu.org/gnu/octave/]. The source code for development versions is available by cloning the [[Mercurial|mercurial repository]].<br />
<br />
=== Bootstrap ===<br />
<br />
If you are building development versions instead of an actual Octave release, you will need to run the {{Codeline|./bootstrap}} script.<br />
<br />
=== Configuration ===<br />
<br />
As mentioned above, Octave can be compiled with the default settings using {{Codeline|./configure && make && make install}}. You can also tweak the setup using configure options. Some examples are given below for a Linux system.<br />
<br />
==== 64 bit ====<br />
<br />
To get [https://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html 64-bit] indexing requires all linked libraries to support 64-bit variables. You can omit most of these except BLAS which gives a fatal error. This is remedied by compiling [http://www.openblas.net/ OpenBLAS] with edits to its Makefile.rule so that BINARY=64 INTERFACE64=1.<br />
<br />
<code>./configure LD_LIBRARY_PATH=/opt/OpenBLAS/lib CPPFLAGS=-I/opt/OpenBLAS/include LDFLAGS=-L/opt/OpenBLAS/lib --enable-64</code><br />
<br />
==== Java ====<br />
<br />
Autodetection for java should work well on Debian-based systems. A specific Java version can be specified by passing {{codeline|JAVA_HOME}} to configure, for example<br />
<br />
./configure JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
==== HDF5 ====<br />
<br />
On current versions of Debian and Ubuntu, you may get the following warning when building an older version of Octave from source:<br />
<br />
HDF5 library not found. Octave will not be able to save or load HDF5 data files.<br />
<br />
The problem is that there are multiple versions of the hdf5 package. Octave was written with the serial version in mind but it is likely to work with the others (OpenMPI and Mpich). Due to the naming scheme done in Debian, it may be required to specify the location of the libraries. See bug {{bug|38928}} for details (starting with comment #19) but basically, use the following when running configure:<br />
<br />
./configure --with-hdf5-includedir=/usr/include/hdf5/serial --with-hdf5-libdir=/usr/lib/x86_64-linux-gnu/hdf5/serial<br />
<br />
On older versions of Debian and Ubuntu, where only one flavor of the HDF5 library could be installed at a time, you may need to build Octave against one of the MPI-enabled flavors. On these older systems, configuring Octave like this may work:<br />
<br />
./configure CPPFLAGS="-I/usr/include/mpi -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX"<br />
<br />
[[Category:Building]]<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=11720Octave for GNU/Linux2019-02-15T20:32:20Z<p>Mtmiller: /* Linuxbrew */ copy from Octave for Debian systems</p>
<hr />
<div>The recommended way for installing Octave and Octave-Forge packages on GNU/Linux systems <br />
is via each distribution package installation system.<br />
<br />
More detailed instructions follow.<br />
<br />
=Debian and Debian-based (such as Ubuntu)=<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
Simply install Octave from your distribution repository<br />
<br />
apt install octave<br />
<br />
For old versions of Ubuntu that only supply old versions of Octave, consider using Octave's PPA. For more details, see the [[Debian]] specific instructions page.<br />
<br />
There are also Debian packages for each of the Octave Forge packages, named {{codeline|octave-<pkg>}}, for example {{codeline|octave-image}} and {{codeline|octave-statistics}} for the image processing and statistics package respectively. A complete list of them can be found with the command<br />
<br />
apt search octave-forge<br />
<br />
=Fedora=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
The packages can be installed using the dnf command, they are:<br />
<br />
*octave<br />
*octave-devel<br />
<br />
{{Codeline|octave-devel}} contains the octave headers and {{Path|mkoctfile}} script and is really only needed by users who are developing code that is to be dynamically linked to octave. {{Codeline|octave}} can be installed with the command:<br />
<br />
# dnf install octave<br />
<br />
=Gentoo=<br />
<br />
Octave is available through Gentoo's package management system, Portage:<br />
<br />
# emerge --sync<br />
Add USE flag 'curl' into your <code>/etc/portage/package.use</code> file to enable remote Octave-Forge packages fetching<br />
sci-mathematics/octave curl<br />
and emerge Octave<br />
# emerge octave<br />
Since Octave ver. > 3.4.0 is able to fetch Octave-Forge packages from remote repository, packages ''octave-forge'' or ''g-octave'' are no more needed.<br />
<br />
Before installing any Octave-Forge package, in Octave command prompt you must type<br />
pkg -forge list<br />
and then install your favourite packages. Typically, you have to start with <br />
pkg install -forge general<br />
<br />
=Red Hat Enterprise/CentOS=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
Octave is available for Red Hat Enterprise Linux distributions through the [https://fedoraproject.org/wiki/EPEL EPEL] repository. This section applies to CentOS, Scientific Linux, and other Red Hat Enterprise rebuild distributions as well.<br />
<br />
'''Method 1 - the quick way:'''<br />
<br />
yum install epel-release<br />
yum install octave<br />
<br />
'''Method 2 - if the above does not work:'''<br />
<br />
First, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL. For example,<br />
<br />
# wget <nowiki>http://url/to/latest/epel-release-6-7.noarch.rpm</nowiki><br />
# yum localinstall epel-release-6-7.noarch.rpm<br />
<br />
Once the EPEL repository has been enabled, you can follow the rest of the [[#Fedora|instructions for Fedora]] to install Octave using yum.<br />
<br />
Note that EPEL intentionally does not follow new releases as closely as other distributions. Consequently, the version of Octave provided by EPEL may be several months or years out of date. There are plans for the Octave maintainers to provide support and binary RPMs for enterprise GNU/Linux distributions; contact the [mailto:maintainers@octave.org maintainers mailing list] for more information.<br />
<br />
=SUSE Linux and openSUSE=<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
Binary packages for Octave are provided by all versions of openSUSE. It can be installed by command:<br />
<br />
zypper in octave<br />
<br />
Latest stable version of Octave and Octave-Forge are available on Science repository. For details see [[openSUSE]] specific wiki page.<br />
<br />
=Arch Linux=<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
Updated Octave's version is in the extra repository. It can be installed by typing:<br />
<br />
# pacman -S octave<br />
<br />
=Linuxbrew=<br />
<br />
Octave is provided by the [https://linuxbrew.sh/ Linuxbrew] package manager, which is a cross-distribution packaging system. It is possible to install the current release of Octave or the development version and any needed dependencies within your home directory. This is particularly useful if you have an older Linux distribution or if you do not have root access. Octave can be installed with the commands:<br />
<br />
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"<br />
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)<br />
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)<br />
test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile<br />
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile<br />
brew install octave<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Signal_package&diff=11716Signal package2019-02-15T18:24:33Z<p>Mtmiller: /* Spectral Analysis */ link to pmtm bug report</p>
<hr />
<div>The {{Forge|signal}} package is part of the [[Octave Forge]] project and provides signal processing algorithms for use with Octave. The functions provided by the signal package include creation of waveforms, FIR and IIR filter design, spectral analysis, Fourier and other transforms, window functions, and resampling and rate changing. There are also some wavelet functions included, because there is no separate wavelet package, at least for now.<br />
<br />
You may also be interested in the [http://ltfat.sourceforge.net/ LTFAT] package.<br />
<br />
== Contribution ==<br />
<br />
There are many ways to contribute to the development and maintenance of the signal processing package, including but not limited to testing, writing new test cases, reviewing and editing documentation, creating useful demos or examples of how to use the functions in the package, fixing bugs in existing functions, improving compatibility with Matlab, and writing completely new functions.<br />
<br />
=== Missing Tests ===<br />
<br />
Octave functions can be written to include their own built-in self tests that work with the {{manual|test}} function, see [[Tests]].<br />
<br />
Several functions in the signal package do not have exhaustive test suites or do not include any built-in self tests at all. This is a list of functions in the signal package that do not yet have any tests.<br />
<br />
* ar_psd<br />
* arburg<br />
* aryule<br />
* besselap<br />
* bilinear<br />
* buttap<br />
* cceps<br />
* cheb<br />
* cheb1ap<br />
* cheb2ap<br />
* clustersegment<br />
* cmorwavf<br />
* cohere<br />
* cpsd<br />
* csd<br />
* dct<br />
* dct2<br />
* dctmtx<br />
* dftmtx<br />
* diric<br />
* dwt<br />
* ellipap<br />
* firls<br />
* freqs<br />
* freqs_plot<br />
* gmonopuls<br />
* hilbert<br />
* idct<br />
* idct2<br />
* iirlp2mb<br />
* interp<br />
* invfreq<br />
* invfreqs<br />
* invfreqz<br />
* kaiserord<br />
* levinson<br />
* mexihat<br />
* meyeraux<br />
* morlet<br />
* movingrms<br />
* mscohere<br />
* ncauer<br />
* pburg<br />
* polystab<br />
* primitive<br />
* pwelch<br />
* pyulear<br />
* qp_kaiser<br />
* sampled2continuous<br />
* sawtooth<br />
* schtrig<br />
* sftrans<br />
* sgolayfilt<br />
* shanwavf<br />
* sigmoid_train<br />
* square<br />
* ss2tf<br />
* ss2zp<br />
* tf2ss<br />
* tf2zp<br />
* tfe<br />
* tfestimate<br />
* wconv<br />
* wkeep<br />
* wrev<br />
* xcorr<br />
* xcov<br />
* zp2ss<br />
* zp2tf<br />
* zplane<br />
<br />
<br />
=== Missing Functions ===<br />
<br />
This is a list of functions that are not yet implemented in the Octave signal package. Patches for some of these functions are available on the patch tracker and are undergoing review. You could help us by implementing the missing functions and adding them to the patch tracker, or by helping us review the ones that are already there. This list is subject to change and may not be complete in any sense. However, it is a starting point when looking for missing functionality or for possible projects to work on.<br />
<br />
==== Signal Generation ====<br />
<br />
* demod<br />
* modulate (see patch {{patch|9409}})<br />
* seqperiod<br />
* strips<br />
* vco<br />
<br />
==== Correlation and Convolution ====<br />
<br />
* corrmtx<br />
* dtw (please refer to open feature request bug {{bug|51572}}, only pseudocode so far)<br />
<br />
==== Signal Measurement ====<br />
<br />
* bandpower (see patch {{patch|8697}})<br />
* dutycycle<br />
* enbw<br />
* falltime<br />
* midcross<br />
* overshoot<br />
* pulseperiod<br />
* pulsesep<br />
* pulsewidth<br />
* risetime<br />
* settlingtime<br />
* sfdr<br />
* slewrate<br />
* statelevels (see patch {{patch|9199}})<br />
* undershoot<br />
<br />
==== Filter Analysis ====<br />
<br />
* filternorm<br />
* filtord<br />
* firtype<br />
* impzlength<br />
* isallpass<br />
* islinphase<br />
* ismaxphase<br />
* isminphase<br />
* isstable (see patch {{patch|9265}})<br />
* phasedelay<br />
* phasez<br />
* stepz (see patch {{patch|8630}})<br />
* zerophase<br />
<br />
==== Filter Conversion ====<br />
<br />
* cell2sos<br />
* filt2block<br />
* latc2tf<br />
* latcfilt<br />
* realizemdl<br />
* sos2cell<br />
* sos2ss<br />
* ss2sos<br />
* tf2latc<br />
* tf2zpk<br />
<br />
==== FIR Filter Design ====<br />
<br />
* cfirpm<br />
* equiripple<br />
* fircls<br />
* fircls1<br />
* firpm (see patch {{patch|8535}})<br />
* firpmord<br />
* firrcos<br />
* freqsamp<br />
* gaussfir<br />
* intfilt<br />
* kaiserwin<br />
* maxflat<br />
* polyscale<br />
<br />
==== IIR Filter Design ====<br />
<br />
* lp2bp<br />
* lp2bs<br />
* lp2hp<br />
* lp2lp (please refer to open feature request bug {{bug|46440}}, only partial code snippets so far)<br />
* yulewalk<br />
<br />
==== Transforms ====<br />
<br />
* goertzel (see patch {{patch|8495}})<br />
* icceps<br />
<br />
==== Spectral Analysis ====<br />
<br />
* db<br />
* pcov<br />
* peig<br />
* pmcov<br />
* pmtm (please refer to open feature request bug {{bug|55714}})<br />
* pmusic<br />
* rooteig<br />
* rootmusic<br />
* spectrogram (please refer to open feature request bug {{bug|45232}})<br />
<br />
==== Window Functions ====<br />
<br />
* dpss<br />
* dpssclear<br />
* dpssdir<br />
* dpssload<br />
* taylorwin (see patch {{patch|8506}})<br />
<br />
==== System Identification ====<br />
<br />
* ac2poly<br />
* ac2rc<br />
* arcov<br />
* armcov<br />
* is2rc<br />
* lar2rc<br />
* lpc (see patch {{patch|8575}})<br />
* lsf2poly (see patch {{patch|8726}})<br />
* poly2ac<br />
* poly2lsf (see patch {{patch|8726}})<br />
* poly2rc<br />
* prony<br />
* rc2ac<br />
* rc2is<br />
* rc2lar<br />
* rc2poly<br />
* rlevinson<br />
* schurrc<br />
* stmcb<br />
<br />
==== Object Oriented Filter Design ====<br />
<br />
* design<br />
* designmethods<br />
* designopts<br />
* fdesign<br />
* fdesign.arbmag<br />
* fdesign.bandpass<br />
* fdesign.bandstop<br />
* fdesign.differentiator<br />
* fdesign.highpass<br />
* fdesign.hilbert<br />
* fdesign.lowpass<br />
* fdesign.pulseshaping<br />
* setspecs<br />
* validstructures<br />
<br />
==== Interactive Design Tools ====<br />
<br />
* dspfwiz<br />
* fdatool<br />
* filterbuilder<br />
* sptool<br />
* wintool<br />
* wvtool<br />
<br />
<br />
[[Category:Octave Forge]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=11711Octave for GNU/Linux2019-02-10T19:07:00Z<p>Mtmiller: /* Debian and Debian-based (such as Ubuntu) */ fix package example</p>
<hr />
<div>The recommended way for installing Octave and Octave-Forge packages on GNU/Linux systems <br />
is via each distribution package installation system.<br />
<br />
More detailed instructions follow.<br />
<br />
=Debian and Debian-based (such as Ubuntu)=<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
Simply install Octave from your distribution repository<br />
<br />
apt install octave<br />
<br />
For old versions of Ubuntu that only supply old versions of Octave, consider using Octave's PPA. For more details, see the [[Debian]] specific instructions page.<br />
<br />
There are also Debian packages for each of the Octave Forge packages, named {{codeline|octave-<pkg>}}, for example {{codeline|octave-image}} and {{codeline|octave-statistics}} for the image processing and statistics package respectively. A complete list of them can be found with the command<br />
<br />
apt search octave-forge<br />
<br />
=Fedora=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
The packages can be installed using the dnf command, they are:<br />
<br />
*octave<br />
*octave-devel<br />
<br />
{{Codeline|octave-devel}} contains the octave headers and {{Path|mkoctfile}} script and is really only needed by users who are developing code that is to be dynamically linked to octave. {{Codeline|octave}} can be installed with the command:<br />
<br />
# dnf install octave<br />
<br />
=Gentoo=<br />
<br />
Octave is available through Gentoo's package management system, Portage:<br />
<br />
# emerge --sync<br />
Add USE flag 'curl' into your <code>/etc/portage/package.use</code> file to enable remote Octave-Forge packages fetching<br />
sci-mathematics/octave curl<br />
and emerge Octave<br />
# emerge octave<br />
Since Octave ver. > 3.4.0 is able to fetch Octave-Forge packages from remote repository, packages ''octave-forge'' or ''g-octave'' are no more needed.<br />
<br />
Before installing any Octave-Forge package, in Octave command prompt you must type<br />
pkg -forge list<br />
and then install your favourite packages. Typically, you have to start with <br />
pkg install -forge general<br />
<br />
=Red Hat Enterprise/CentOS=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
Octave is available for Red Hat Enterprise Linux distributions through the [https://fedoraproject.org/wiki/EPEL EPEL] repository. This section applies to CentOS, Scientific Linux, and other Red Hat Enterprise rebuild distributions as well.<br />
<br />
'''Method 1 - the quick way:'''<br />
<br />
yum install epel-release<br />
yum install octave<br />
<br />
'''Method 2 - if the above does not work:'''<br />
<br />
First, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL. For example,<br />
<br />
# wget <nowiki>http://url/to/latest/epel-release-6-7.noarch.rpm</nowiki><br />
# yum localinstall epel-release-6-7.noarch.rpm<br />
<br />
Once the EPEL repository has been enabled, you can follow the rest of the [[#Fedora|instructions for Fedora]] to install Octave using yum.<br />
<br />
Note that EPEL intentionally does not follow new releases as closely as other distributions. Consequently, the version of Octave provided by EPEL may be several months or years out of date. There are plans for the Octave maintainers to provide support and binary RPMs for enterprise GNU/Linux distributions; contact the [mailto:maintainers@octave.org maintainers mailing list] for more information.<br />
<br />
=SUSE Linux and openSUSE=<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
Binary packages for Octave are provided by all versions of openSUSE. It can be installed by command:<br />
<br />
zypper in octave<br />
<br />
Latest stable version of Octave and Octave-Forge are available on Science repository. For details see [[openSUSE]] specific wiki page.<br />
<br />
=Arch Linux=<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
Updated Octave's version is in the extra repository. It can be installed by typing:<br />
<br />
# pacman -S octave<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_GNU/Linux&diff=11710Octave for GNU/Linux2019-02-10T19:05:57Z<p>Mtmiller: /* Debian and Debian-based (such as Ubuntu) */ update for modern apt command, small readability fixes</p>
<hr />
<div>The recommended way for installing Octave and Octave-Forge packages on GNU/Linux systems <br />
is via each distribution package installation system.<br />
<br />
More detailed instructions follow.<br />
<br />
=Debian and Debian-based (such as Ubuntu)=<br />
<br />
: ''Main article: [[Octave for Debian systems]]''<br />
<br />
Simply install Octave from your distribution repository<br />
<br />
apt install octave<br />
<br />
For old versions of Ubuntu that only supply old versions of Octave, consider using Octave's PPA. For more details, see the [[Debian]] specific instructions page.<br />
<br />
There are also Debian packages for each of the Octave Forge packages, named {{codeline|octave<pkgname>}}, for example {{codeline|octave-image}} and {{codeline|octave-statistics}} for the image processing and statistics package respectively. A complete list of them can be found with the command<br />
<br />
apt search octave-forge<br />
<br />
=Fedora=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
The packages can be installed using the dnf command, they are:<br />
<br />
*octave<br />
*octave-devel<br />
<br />
{{Codeline|octave-devel}} contains the octave headers and {{Path|mkoctfile}} script and is really only needed by users who are developing code that is to be dynamically linked to octave. {{Codeline|octave}} can be installed with the command:<br />
<br />
# dnf install octave<br />
<br />
=Gentoo=<br />
<br />
Octave is available through Gentoo's package management system, Portage:<br />
<br />
# emerge --sync<br />
Add USE flag 'curl' into your <code>/etc/portage/package.use</code> file to enable remote Octave-Forge packages fetching<br />
sci-mathematics/octave curl<br />
and emerge Octave<br />
# emerge octave<br />
Since Octave ver. > 3.4.0 is able to fetch Octave-Forge packages from remote repository, packages ''octave-forge'' or ''g-octave'' are no more needed.<br />
<br />
Before installing any Octave-Forge package, in Octave command prompt you must type<br />
pkg -forge list<br />
and then install your favourite packages. Typically, you have to start with <br />
pkg install -forge general<br />
<br />
=Red Hat Enterprise/CentOS=<br />
<br />
: ''Main article: [[Octave for Red Hat Linux systems]]''<br />
<br />
Octave is available for Red Hat Enterprise Linux distributions through the [https://fedoraproject.org/wiki/EPEL EPEL] repository. This section applies to CentOS, Scientific Linux, and other Red Hat Enterprise rebuild distributions as well.<br />
<br />
'''Method 1 - the quick way:'''<br />
<br />
yum install epel-release<br />
yum install octave<br />
<br />
'''Method 2 - if the above does not work:'''<br />
<br />
First, follow [https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F these instructions] to set up your system to install packages from EPEL. For example,<br />
<br />
# wget <nowiki>http://url/to/latest/epel-release-6-7.noarch.rpm</nowiki><br />
# yum localinstall epel-release-6-7.noarch.rpm<br />
<br />
Once the EPEL repository has been enabled, you can follow the rest of the [[#Fedora|instructions for Fedora]] to install Octave using yum.<br />
<br />
Note that EPEL intentionally does not follow new releases as closely as other distributions. Consequently, the version of Octave provided by EPEL may be several months or years out of date. There are plans for the Octave maintainers to provide support and binary RPMs for enterprise GNU/Linux distributions; contact the [mailto:maintainers@octave.org maintainers mailing list] for more information.<br />
<br />
=SUSE Linux and openSUSE=<br />
<br />
: ''Main article: [[Octave for openSUSE]]''<br />
<br />
Binary packages for Octave are provided by all versions of openSUSE. It can be installed by command:<br />
<br />
zypper in octave<br />
<br />
Latest stable version of Octave and Octave-Forge are available on Science repository. For details see [[openSUSE]] specific wiki page.<br />
<br />
=Arch Linux=<br />
<br />
: ''Main article: [[Octave for Arch Linux]]''<br />
<br />
Updated Octave's version is in the extra repository. It can be installed by typing:<br />
<br />
# pacman -S octave<br />
<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Octave_for_Debian_systems&diff=11709Octave for Debian systems2019-02-07T19:58:21Z<p>Mtmiller: /* Linuxbrew */ import latest installation instructions from linuxbrew.sh</p>
<hr />
<div>For Debian, and Debian-based distributions such as Ubuntu, specific solutions.<br />
<br />
== Pre-compiled binaries ==<br />
<br />
Binary packages for Octave and many Octave-Forge packages are provided by all versions of Debian and Ubuntu. These are the most well-tested binaries available and should work best for most users.<br />
<br />
sudo apt-get install octave<br />
<br />
Aside the {{codeline|octave}} package that installs GNU Octave, other pieces of it are split over multiple packages. These are {{codeline|octave-doc}}, {{codeline|octave-info}}, and {{codeline|octave-htmldoc}} for the documentation; {{codeline|liboctave-dev}} for the octave development header files and mkoctfile (required to install Octave Forge packages); and {{codeline|octave-dbg}} for the debugging symbols.<br />
<br />
For Debian stable users, there may also be newer packages available in backports, so don't forget to check there.<br />
<br />
=== Octave packages ===<br />
<br />
Many Octave packages are also distributed by your Linux distribution. These are tested to work the best with your Octave version. For example:<br />
<br />
sudo apt-get install octave-control octave-image octave-io octave-optim octave-signal octave-statistics<br />
<br />
=== Octave's Personal Package Archive (PPA) for Ubuntu ===<br />
<br />
For some Ubuntu releases the Octave packages are too old (Ubuntu 12.04 only has Octave version 3.2). The [https://launchpad.net/~octave GNU Octave Team] on Launchpad maintains a PPA providing more up to date packages of Octave for all versions of Ubuntu. These are backported from Debian unstable (the Ubuntu Octave Team needs help testing and preparing the packages so if you can help with this, contact [[User:Mtmiller|Mike Miller]]). To set up your system to install these packages:<br />
<br />
sudo apt-add-repository ppa:octave/stable<br />
sudo apt-get update<br />
sudo apt-get install octave<br />
<br />
=== Linuxbrew ===<br />
<br />
It is possible to install the current stable version of Octave and any needed dependencies within your home directory, particularly useful if you have an old Linux distribution or do not have root access, using [https://linuxbrew.sh Linuxbrew]:<br />
<br />
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"<br />
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)<br />
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)<br />
test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile<br />
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile<br />
brew install octave<br />
<br />
== Compiling from source ==<br />
<br />
The ''only'' tricky part is to install the dependencies. Once that is solved, installing from source should be as easy as {{Codeline|./configure && make && make install}}. See the manual for [http://www.gnu.org/software/octave/doc/interpreter/Running-Configure-and-Make.html configure options] and [[Octave_for_Debian_systems#Configuration|below]] for some common examples.<br />
<br />
=== Install dependencies ===<br />
<br />
Note that different Debian and Ubuntu versions may have slightly different package names but their differences should be pretty small, mostly limited to version numbers.<br />
<br />
==== The easy way (but likely incorrect) ====<br />
<br />
This approach is ''only'' suitable if you are building from source the ''same'' version that your Linux distribution already has packaged.<br />
<br />
The easy way to install ''most'' of the necessary dependencies is to {{Codeline|sudo apt-get build-dep octave}}. This will install all packages necessary to build and prepare a Debian package for the octave version available on your system repositories. However:<br />
* will install unnecessary packages related to the building of a Debian package;<br />
* may miss some new dependencies;<br />
* may install packages that are no longer octave dependencies.<br />
<br />
==== The even easier way (but experimental) ====<br />
<br />
The [[MXE|MXE-octave]] package provides a way to compile Octave for different platforms. Dependencies and certain flags are handled automatically.<br />
<br />
==== The right way ====<br />
<br />
The right way is to select and install all the dependencies as listed in the {{Path|INSTALL.OCTAVE}} file (if it is not in your source tree build it doing <code>make INSTALL.OCTAVE</code>). The following are their package names in Debian repositories (they will have their own dependencies which your package manager will solve automatically). If you are building development versions, you'll require some more packages as listed on {{Path|etc/HACKING.md}} and {{Path|INSTALL}}. Many of them will already be installed on your system. Install the dependencies by typing<br />
<br />
sudo apt-get install<br />
<br />
followed by the package names of the table below.<br />
<br />
:{| class="wikitable"<br />
|-<br />
! Dependency !! Debian 8 Jessie (stable) !! Ubuntu 16.04 Xenial Xerus (LTS)<br />
|-<br />
!colspan="3" style="text-align:center;" | Required build tools<br />
|-<br />
| C compiler<br />
|| [https://packages.debian.org/jessie/gcc gcc]<br />
|| [http://packages.ubuntu.com/xenial/gcc gcc]<br />
|-<br />
| C++ compiler<br />
|| [https://packages.debian.org/jessie/g++ g++]<br />
|| [http://packages.ubuntu.com/xenial/g++ g++]<br />
|-<br />
| Fortran compiler<br />
|| [https://packages.debian.org/jessie/gfortran gfortran]<br />
|| [http://packages.ubuntu.com/xenial/gfortran gfortran]<br />
|-<br />
| GNU make<br />
|| [https://packages.debian.org/jessie/make make]<br />
|| [http://packages.ubuntu.com/xenial/make make]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required external packages<br />
|-<br />
| BLAS<br />
|| [https://packages.debian.org/jessie/libblas-dev libblas-dev]<br />
|| [http://packages.ubuntu.com/xenial/libblas-dev libblas-dev]<br />
|-<br />
| LAPACK<br />
|| [https://packages.debian.org/jessie/liblapack-dev liblapack-dev]<br />
|| [http://packages.ubuntu.com/xenial/liblapack-dev liblapack-dev]<br />
|-<br />
| PCRE<br />
|| [https://packages.debian.org/jessie/libpcre3-dev libpcre3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libpcre3-dev libpcre3-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| ''Strongly'' recommended. Check the [http://www.gnu.org/software/octave/doc/interpreter/External-Packages.html Octave manual] for more information.<br />
|-<br />
| ARPACK<br />
|| [https://packages.debian.org/jessie/libarpack2-dev libarpack2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libarpack2-dev libarpack2-dev]<br />
|-<br />
| cURL<br />
|| [https://packages.debian.org/jessie/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|| [http://packages.ubuntu.com/xenial/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|-<br />
| epstool<br />
|| [https://packages.debian.org/jessie/epstool epstool]<br />
|| [http://packages.ubuntu.com/xenial/epstool epstool]<br />
|-<br />
| FFTW3<br />
|| [https://packages.debian.org/jessie/libfftw3-dev libfftw3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfftw3-dev libfftw3-dev]<br />
|-<br />
| fig2dev<br />
|| [https://packages.debian.org/jessie/transfig transfig]<br />
|| [http://packages.ubuntu.com/xenial/transfig transfig]<br />
|-<br />
| FLTK<br />
|| [https://packages.debian.org/jessie/libfltk1.3-dev libfltk1.3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfltk1.3-dev libfltk1.3-dev]<br />
|-<br />
| fontconfig<br />
|| [https://packages.debian.org/jessie/libfontconfig1-dev libfontconfig1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfontconfig1-dev libfontconfig1-dev]<br />
|-<br />
| FreeType<br />
|| [https://packages.debian.org/jessie/libfreetype6-dev libfreetype6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfreetype6-dev libfreetype6-dev]<br />
|-<br />
| gl2ps<br />
|| [https://packages.debian.org/jessie/libgl2ps-dev libgl2ps-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl2ps-dev libgl2ps-dev]<br />
|-<br />
| GLPK<br />
|| [https://packages.debian.org/jessie/libglpk-dev libglpk-dev]<br />
|| [http://packages.ubuntu.com/xenial/libglpk-dev libglpk-dev]<br />
|-<br />
| GNU Readline<br />
|| [https://packages.debian.org/jessie/libreadline-dev libreadline-dev]<br />
|| [http://packages.ubuntu.com/xenial/libreadline-dev libreadline-dev]<br />
|-<br />
| gnuplot<br />
|| [https://packages.debian.org/jessie/gnuplot gnuplot]<br />
|| [http://packages.ubuntu.com/xenial/gnuplot gnuplot-x11]<br />
|-<br />
| GraphicsMagick++<br />
|| [https://packages.debian.org/jessie/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|-<br />
| HDF5<br />
|| [https://packages.debian.org/jessie/libhdf5-serial-dev libhdf5-serial-dev]<br />
|| [http://packages.ubuntu.com/xenial/libhdf5-serial-dev libhdf5-serial-dev]<br />
|-<br />
| Java JDK<br />
|| [https://packages.debian.org/jessie/openjdk-7-jdk openjdk-7-jdk]<br />
|| [http://packages.ubuntu.com/xenial/openjdk-8-jdk openjdk-8-jdk]<br />
|-<br />
| libsndfile<br />
|| [https://packages.debian.org/jessie/libsndfile1-dev libsndfile1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsndfile1-dev libsndfile1-dev]<br />
|-<br />
| LLVM<br />
|| [https://packages.debian.org/jessie/llvm-dev llvm-dev]<br />
|| [http://packages.ubuntu.com/xenial/llvm-dev llvm-dev]<br />
|-<br />
| lpr<br />
|| [https://packages.debian.org/jessie/lpr lpr]<br />
|| [http://packages.ubuntu.com/xenial/lpr lpr]<br />
|-<br />
| makeinfo<br />
|| [https://packages.debian.org/jessie/texinfo texinfo]<br />
|| [http://packages.ubuntu.com/xenial/texinfo texinfo]<br />
|-<br />
| OpenGL<br />
|| [https://packages.debian.org/jessie/libgl1-mesa-dev libgl1-mesa-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl1-mesa-dev libgl1-mesa-dev]<br />
|-<br />
| OSMesa<br />
|| [https://packages.debian.org/jessie/libosmesa6-dev libosmesa6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libosmesa6-dev libosmesa6-dev]<br />
|-<br />
| pstoedit<br />
|| [https://packages.debian.org/jessie/pstoedit pstoedit]<br />
|| [http://packages.ubuntu.com/xenial/pstoedit pstoedit]<br />
|-<br />
| PortAudio<br />
|| [https://packages.debian.org/jessie/portaudio19-dev portaudio19-dev]<br />
|| [http://packages.ubuntu.com/xenial/portaudio19-dev portaudio19-dev]<br />
|-<br />
| Qhull<br />
|| [https://packages.debian.org/jessie/libqhull-dev libqhull-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqhull-dev libqhull-dev]<br />
|-<br />
| QRUPDATE<br />
|| [https://packages.debian.org/jessie/libqrupdate-dev libqrupdate-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqrupdate-dev libqrupdate-dev]<br />
|-<br />
| QScintilla<br />
|| [https://packages.debian.org/jessie/libqscintilla2-dev libqscintilla2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqscintilla2-dev libqscintilla2-dev]<br />
|-<br />
| Qt<br />
||<br />
[https://packages.debian.org/jessie/libqt4-dev libqt4-dev]<br />
[https://packages.debian.org/jessie/libqtcore4 libqtcore4]<br />
[https://packages.debian.org/jessie/libqtwebkit4 libqtwebkit4]<br />
[https://packages.debian.org/jessie/libqt4-network libqt4-network]<br />
[https://packages.debian.org/jessie/libqtgui4 libqtgui4]<br />
[https://packages.debian.org/jessie/libqt4-opengl-dev libqt4-opengl-dev]<br />
||<br />
[http://packages.ubuntu.com/xenial/libqt4-dev libqt4-dev]<br />
[http://packages.ubuntu.com/xenial/libqtcore4 libqtcore4]<br />
[http://packages.ubuntu.com/xenial/libqtwebkit4 libqtwebkit4]<br />
[http://packages.ubuntu.com/xenial/libqt4-network libqt4-network]<br />
[http://packages.ubuntu.com/xenial/libqtgui4 libqtgui4]<br />
[http://packages.ubuntu.com/xenial/libqt4-opengl-dev libqt4-opengl-dev]<br />
|-<br />
| SuiteSparse<br />
|| [https://packages.debian.org/jessie/libsuitesparse-dev libsuitesparse-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsuitesparse-dev libsuitesparse-dev]<br />
|-<br />
| Texlive<br />
|| texlive<br />
|| texlive<br />
|-<br />
| Xft<br />
|| [https://packages.debian.org/jessie/libxft-dev libxft-dev]<br />
|| [http://packages.ubuntu.com/xenial3/libxft-dev libxft-dev]<br />
|-<br />
| zlib<br />
|| [https://packages.debian.org/jessie/zlib1g-dev zlib1g-dev]<br />
|| [http://packages.ubuntu.com/xenial/zlib1g-dev zlib1g-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required to build from development sources<br />
|-<br />
| Autoconf<br />
|| [https://packages.debian.org/jessie/autoconf autoconf]<br />
|| [http://packages.ubuntu.com/xenial/autoconf autoconf]<br />
|-<br />
| Automake<br />
|| [https://packages.debian.org/jessie/automake automake]<br />
|| [http://packages.ubuntu.com/xenial/automake automake]<br />
|-<br />
| Bison<br />
|| [https://packages.debian.org/jessie/bison bison]<br />
|| [http://packages.ubuntu.com/xenial/bison bison]<br />
|-<br />
| Flex<br />
|| [https://packages.debian.org/jessie/flex flex]<br />
|| [http://packages.ubuntu.com/xenial/flex flex]<br />
|-<br />
| gperf<br />
|| [https://packages.debian.org/jessie/gperf gperf]<br />
|| [http://packages.ubuntu.com/xenial/gperf gperf]<br />
|-<br />
| gzip<br />
|| [https://packages.debian.org/jessie/gzip gzip]<br />
|| [http://packages.ubuntu.com/xenial/gzip gzip]<br />
|-<br />
| icoutils<br />
|| [https://packages.debian.org/jessie/icoutils icoutils]<br />
|| [http://packages.ubuntu.com/xenial/icoutils icoutils]<br />
|-<br />
| rsvg-convert<br />
|| [https://packages.debian.org/jessie/librsvg2-bin librsvg2-bin]<br />
|| [http://packages.ubuntu.com/xenial/librsvg2-bin librsvg2-bin]<br />
|-<br />
| libtool<br />
|| [https://packages.debian.org/jessie/libtool libtool]<br />
|| [http://packages.ubuntu.com/xenial/libtool libtool]<br />
|-<br />
| perl<br />
|| [https://packages.debian.org/jessie/perl perl]<br />
|| [http://packages.ubuntu.com/xenial/perl perl]<br />
|-<br />
| rsync<br />
|| [https://packages.debian.org/jessie/rsync rsync]<br />
|| [http://packages.ubuntu.com/xenial/rsync rsync]<br />
|-<br />
| tar<br />
|| [https://packages.debian.org/jessie/tar tar]<br />
|| [http://packages.ubuntu.com/xenial/tar tar]<br />
|}<br />
<br />
To install all of these on Ubuntu 16.04, type<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
<br />
<br />
To install all of these on Ubuntu 18.10, type (Needs more testing)<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev<br />
<br />
or, for Debian 8 stable,<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-7-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
or, for Debian 9 stable,<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libjack-jackd2-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
<br />
{{Warning|<ul><li>The Debian repositoriy has several libraries for dealing with HDF data files. The recommended is {{Codeline|libhdf5-serial-dev}}. However, the {{Forge|msh|msh package}} requires [http://www.geuz.org/gmsh/ gmsh] which is incompatible with it.</li><br />
<li>The GraphicsMagick++ library (libgraphicsmagick++1-dev) on the Debian repositories was compiled with quantum 8 which limits reading images to 8 bit. The solution is to recompile [[GraphicsMagick]] with quantum 16 or 32 before building Octave.</li><br />
<li>For debian9 using openjdk-9-jdk (even providing {{Codeline|JAVA_HOME}}) could *not* be used for the java interface! Use openjdk-8-jdk instead.</li><br />
<li>When configure decides to use QT5 instead of QT4, make might fail because lrelease is missing (see [https://savannah.gnu.org/bugs/?50580 bug 50580]). It can be fixed by installing {{Codeline|qttools5-dev-tools}}</li><br />
</ul>}}<br />
<br />
=== Obtaining the Source ===<br />
<br />
The source code for Octave releases can be obtained as a tarball from [https://ftp.gnu.org/gnu/octave/ https://ftp.gnu.org/gnu/octave/]. The source code for development versions is available by cloning the [[Mercurial|mercurial repository]].<br />
<br />
=== Bootstrap ===<br />
<br />
If you are building development versions instead of an actual Octave release, you will need to run the {{Codeline|./bootstrap}} script.<br />
<br />
=== Configuration ===<br />
<br />
As mentioned above, Octave can be compiled with the default settings using {{Codeline|./configure && make && make install}}. You can also tweak the setup using configure options. Some examples are given below for a Linux system.<br />
<br />
==== 64 bit ====<br />
<br />
To get [https://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html 64-bit] indexing requires all linked libraries to support 64-bit variables. You can omit most of these except BLAS which gives a fatal error. This is remedied by compiling [http://www.openblas.net/ OpenBLAS] with edits to its Makefile.rule so that BINARY=64 INTERFACE64=1.<br />
<br />
<code>./configure LD_LIBRARY_PATH=/opt/OpenBLAS/lib CPPFLAGS=-I/opt/OpenBLAS/include LDFLAGS=-L/opt/OpenBLAS/lib --enable-64</code><br />
<br />
==== Java ====<br />
<br />
Autodetection for java should work well on Debian-based systems. A specific Java version can be specified by passing {{codeline|JAVA_HOME}} to configure, for example<br />
<br />
./configure JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
==== HDF5 ====<br />
<br />
On current versions of Debian and Ubuntu, you may get the following warning when building an older version of Octave from source:<br />
<br />
HDF5 library not found. Octave will not be able to save or load HDF5 data files.<br />
<br />
The problem is that there are multiple versions of the hdf5 package. Octave was written with the serial version in mind but it is likely to work with the others (OpenMPI and Mpich). Due to the naming scheme done in Debian, it may be required to specify the location of the libraries. See bug {{bug|38928}} for details (starting with comment #19) but basically, use the following when running configure:<br />
<br />
./configure --with-hdf5-includedir=/usr/include/hdf5/serial --with-hdf5-libdir=/usr/lib/x86_64-linux-gnu/hdf5/serial<br />
<br />
On older versions of Debian and Ubuntu, where only one flavor of the HDF5 library could be installed at a time, you may need to build Octave against one of the MPI-enabled flavors. On these older systems, configuring Octave like this may work:<br />
<br />
./configure CPPFLAGS="-I/usr/include/mpi -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX"<br />
<br />
[[Category:Building]]<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=5.0.0_Release_Checklist&diff=116775.0.0 Release Checklist2019-01-23T22:56:51Z<p>Mtmiller: updated API and shared library versions</p>
<hr />
<div>==5.0.0 Release Tasks==<br />
<br />
<!-----------------------------------------------------------------------------><br />
# <strike>Update gnulib to latest version<br />
#: Must occur first as it could resolve existing, or create new, bug reports<br />
#: Done. You should run bootstrap in the source tree after updating to the new gnulib version.</strike><br />
#: Completion Date: 12/13/2018<br />
<!-----------------------------------------------------------------------------><br />
# <strike> File bug reports for all outstanding bugs known, but not reported<br />
#* Put out a general call for reports on Octave-Maintainers and Octave-Help list </strike><br />
#: Completion Date: 12/20/2018<br />
<!-----------------------------------------------------------------------------><br />
# <strike> Review patch tracker/bug list for any patches submitted that may be included before release </strike><br />
#: Completion Date: 12/20/2018<br />
<!-----------------------------------------------------------------------------><br />
# <strike> Identify Bugs which *must* be fixed prior to release<br />
#* Review bugs on tracker for possible inclusion in list<br />
#* Review bugs and update to correct category, such as Patch submitted </strike><br />
#: Completion Date: 12/31/18<br />
<!-----------------------------------------------------------------------------><br />
# Clear all bugs identified as must-fix<br />
#* See [[Bug Fix List - 5.0 Release]]<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# GPL License activities<br />
#* <strike> Update Copyright statements for all source controlled files </strike><br />
#* Update dates in any other locations (launch message, citation, MXE files, etc.)<br />
#* Add any new contributors to contributors.in<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# WON'T DO <strike> Style-check code base<br />
#* This will produce lots of whitespace changes, but no behavior changes<br />
#* Must occur after patches have been added since whitespace changes can prevent patches from applying<br />
#* m-file style check. Completion Date:<br />
#* C++ style check. Completion Date: </strike><br />
<!-----------------------------------------------------------------------------><br />
# <strike> Run lint checker on code base </strike><br />
#* <strike> Possibilities include compiling with -fsanitize=undefined and running 'make check', cppcheck, etc. </strike><br />
#* <strike> PVS static analyzer results [[PVS static analyzer - 5.0 Release]] </strike><br />
#* <strike> clang static analyzer results {{bug #55400|55400}} </strike><br />
#* <strike> Compile with -fsanitize=undefined and run 'make check' </strike><br />
#: Completion Date: 1/17/19<br />
<!-----------------------------------------------------------------------------><br />
# Verify 'make check' is passing on all buildbot combinations of OS and compilers<br />
#* Start discussion on octave-maintainers list about which failing tests must be fixed<br />
#* Identify and fix any tests determined critical in step above<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# <strike> Compile and run Octave test suite with --enable-address-sanitizer-flags to check for memory leaks<br />
#* Results posted to bug report: {{bug #55415|55415}}<br />
#* Memory leak in graphics subsystem {{bug #55287|55287}} </strike><br />
#: Completion Date: 1/18/19<br />
<!-----------------------------------------------------------------------------><br />
# Review documentation<br />
#* <strike> Grammar check documentation so that it conforms to Octave standards <br />
#* Spell check documentation<br />
#* Verify no functions missing from manual<br />
#* Verify deprecated functions removed from "see also" links<br />
#* Verify all formats (Info, HTML, pdf) build correctly<br />
#* Review NEWS for any features which should be announced<br />
#* Update major version number in "@subtitle Edition XXX" in octave.texi </strike><br />
#: Completion Date: 12/23/18<br />
<!-----------------------------------------------------------------------------><br />
# <strike> Localization and Internationalization<br />
#* Update language translation files (*.ts)<br />
#* Create issue report on Savannah as a centralized location for uploading files<br />
#* Submit call for translations for GUI strings<br />
#* Push translations provided by translators </strike><br />
#: Completion Date: 1/16/19<br />
<!-----------------------------------------------------------------------------><br />
# <strike> Update shared library and oct file API version numbers<br />
#* Increment oct file API version number (configure.ac:OCTAVE_API_VERSION, increment number and drop "+" suffix)<br />
#* Increment libtool versioning (liboctave/module.mk:%canon_reldir%_%canon_reldir%_current, libinterp/module.mk:%canon_reldir%_liboctinterp_current, libgui/module.mk:%canon_reldir%_liboctgui_current) </strike><br />
#: Completion Date: 1/23/19<br />
<!-----------------------------------------------------------------------------><br />
# Verify build process and create release candidates<br />
#* Update configure.ac with new version information<br />
#** Update AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION, OCTAVE_RELEASE_DATE<br />
#* <strike> Verify 'make distcheck' passes </strike><br />
#* Create release candidate<br />
#** 'make dist'<br />
#** hg tag repository with release candidate ID<br />
#** For Windows, create installer [[Windows Installer]]<br />
#** Upload release candidate<br />
#** Add release candidate version to Savannah bug tracker<br />
#** Announce release candidate to Octave-Maintainers, Octave-Help, on web page<br />
#** Repeat release candidate cycle until clean<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# Final Release<br />
#* Update version information<br />
#** Update configure.ac (AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION, OCTAVE_RELEASE_DATE)<br />
#** Update NEWS (final release date)<br />
#** <strike>Update CITATION (version, year, URL)</strike><br />
#** Update org.octave.Octave.appdata.xml (version number and release date)<br />
#* hg tag repository with release version number<br />
#* <strike> merge default onto stable to become the current stable release </strike><br />
#* Savannah bug tracker version info<br />
#** add new release version to bug tracker<br />
#** remove release candidate versions from bug tracker<br />
#* Announce final release on Octave mailing lists and web site<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# Post-Release<br />
#* <strike> Update configure.ac (AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION) to next release cycle </strike><br />
#* Update oct file API version number (configure.ac:OCTAVE_API_VERSION, add "+" suffix)<br />
#* <strike> Remove all deprecated functions (either OCTAVE_DEPRECATED in C++ or scripts/deprecated for m-files) scheduled for deletion in default branch<br />
#* Move NEWS file to backup in etc/NEWS.X<br />
#* Create new NEWS file </strike><br />
#: Completion Date:<br />
<br />
[[Category:Releases]]<br />
[[Category:Development]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=5.0.0_Release_Checklist&diff=116635.0.0 Release Checklist2019-01-21T18:39:42Z<p>Mtmiller: bump library and oct file versions earlier in the release process</p>
<hr />
<div>==5.0.0 Release Tasks==<br />
<br />
<!-----------------------------------------------------------------------------><br />
# <strike>Update gnulib to latest version<br />
#: Must occur first as it could resolve existing, or create new, bug reports<br />
#: Done. You should run bootstrap in the source tree after updating to the new gnulib version.</strike><br />
#: Completion Date: 12/13/2018<br />
<!-----------------------------------------------------------------------------><br />
# <strike> File bug reports for all outstanding bugs known, but not reported<br />
#* Put out a general call for reports on Octave-Maintainers and Octave-Help list </strike><br />
#: Completion Date: 12/20/2018<br />
<!-----------------------------------------------------------------------------><br />
# <strike> Review patch tracker/bug list for any patches submitted that may be included before release </strike><br />
#: Completion Date: 12/20/2018<br />
<!-----------------------------------------------------------------------------><br />
# <strike> Identify Bugs which *must* be fixed prior to release<br />
#* Review bugs on tracker for possible inclusion in list<br />
#* Review bugs and update to correct category, such as Patch submitted </strike><br />
#: Completion Date: 12/31/18<br />
<!-----------------------------------------------------------------------------><br />
# Clear all bugs identified as must-fix<br />
#* See [[Bug Fix List - 5.0 Release]]<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# GPL License activities<br />
#* <strike> Update Copyright statements for all source controlled files </strike><br />
#* Update dates in any other locations (launch message, citation, MXE files, etc.)<br />
#* Add any new contributors to contributors.in<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# WON'T DO <strike> Style-check code base<br />
#* This will produce lots of whitespace changes, but no behavior changes<br />
#* Must occur after patches have been added since whitespace changes can prevent patches from applying<br />
#* m-file style check. Completion Date:<br />
#* C++ style check. Completion Date: </strike><br />
<!-----------------------------------------------------------------------------><br />
# <strike> Run lint checker on code base </strike><br />
#* <strike> Possibilities include compiling with -fsanitize=undefined and running 'make check', cppcheck, etc. </strike><br />
#* <strike> PVS static analyzer results [[PVS static analyzer - 5.0 Release]] </strike><br />
#* <strike> clang static analyzer results {{bug #55400|55400}} </strike><br />
#* <strike> Compile with -fsanitize=undefined and run 'make check' </strike><br />
#: Completion Date: 1/17/19<br />
<!-----------------------------------------------------------------------------><br />
# Verify 'make check' is passing on all buildbot combinations of OS and compilers<br />
#* Start discussion on octave-maintainers list about which failing tests must be fixed<br />
#* Identify and fix any tests determined critical in step above<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# <strike> Compile and run Octave test suite with --enable-address-sanitizer-flags to check for memory leaks<br />
#* Results posted to bug report: {{bug #55415|55415}}<br />
#* Memory leak in graphics subsystem {{bug #55287|55287}} </strike><br />
#: Completion Date: 1/18/19<br />
<!-----------------------------------------------------------------------------><br />
# Review documentation<br />
#* <strike> Grammar check documentation so that it conforms to Octave standards <br />
#* Spell check documentation<br />
#* Verify no functions missing from manual<br />
#* Verify deprecated functions removed from "see also" links<br />
#* Verify all formats (Info, HTML, pdf) build correctly<br />
#* Review NEWS for any features which should be announced<br />
#* Update major version number in "@subtitle Edition XXX" in octave.texi </strike><br />
#: Completion Date: 12/23/18<br />
<!-----------------------------------------------------------------------------><br />
# <strike> Localization and Internationalization<br />
#* Update language translation files (*.ts)<br />
#* Create issue report on Savannah as a centralized location for uploading files<br />
#* Submit call for translations for GUI strings<br />
#* Push translations provided by translators </strike><br />
#: Completion Date: 1/16/19<br />
<!-----------------------------------------------------------------------------><br />
# Update shared library and oct file API version numbers<br />
#* Increment oct file API version number (configure.ac:OCTAVE_API_VERSION, increment number and drop "+" suffix)<br />
#* Increment libtool versioning (liboctave/module.mk:%canon_reldir%_%canon_reldir%_current, libinterp/module.mk:%canon_reldir%_liboctinterp_current, libgui/module.mk:%canon_reldir%_liboctgui_current)<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# Verify build process and create release candidates<br />
#* Update configure.ac with new version information<br />
#** Update AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION, OCTAVE_RELEASE_DATE<br />
#* <strike> Verify 'make distcheck' passes </strike><br />
#* Create release candidate<br />
#** 'make dist'<br />
#** hg tag repository with release candidate ID<br />
#** For Windows, create installer [[Windows Installer]]<br />
#** Upload release candidate<br />
#** Add release candidate version to Savannah bug tracker<br />
#** Announce release candidate to Octave-Maintainers, Octave-Help, on web page<br />
#** Repeat release candidate cycle until clean<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# Final Release<br />
#* Update version information<br />
#** Update configure.ac (AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION, OCTAVE_RELEASE_DATE)<br />
#** Update NEWS (final release date)<br />
#** <strike>Update CITATION (version, year, URL)</strike><br />
#** Update org.octave.Octave.appdata.xml (version number and release date)<br />
#* hg tag repository with release version number<br />
#* <strike> merge default onto stable to become the current stable release </strike><br />
#* Savannah bug tracker version info<br />
#** add new release version to bug tracker<br />
#** remove release candidate versions from bug tracker<br />
#* Announce final release on Octave mailing lists and web site<br />
#: Completion Date:<br />
<!-----------------------------------------------------------------------------><br />
# Post-Release<br />
#* <strike> Update configure.ac (AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION) to next release cycle </strike><br />
#* Update oct file API version number (configure.ac:OCTAVE_API_VERSION, add "+" suffix)<br />
#* <strike> Remove all deprecated functions (either OCTAVE_DEPRECATED in C++ or scripts/deprecated for m-files) scheduled for deletion in default branch<br />
#* Move NEWS file to backup in etc/NEWS.X<br />
#* Create new NEWS file </strike><br />
#: Completion Date:<br />
<br />
[[Category:Releases]]<br />
[[Category:Development]]</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Bug_Fix_List_-_5.0_Release&diff=11627Bug Fix List - 5.0 Release2019-01-12T06:53:39Z<p>Mtmiller: /* Bugs marked Configuration and Build System */ won't fix</p>
<hr />
<div>The following bugs must be fixed prior to the next release. See also the [[5.0.0 Release Checklist]].<br />
<br />
<p>Sign up for a bug by filling in the Owner field so people won't duplicate each other's work.</p><br />
<br />
<p>Use <pre><strike> ... </strike></pre> to cross an item off the list when it has been done.</p><br />
<br />
<p>Add <pre>WON'T FIX</pre> and the strike through tag for any bugs that will not be fixed in this round.</p><br />
<br />
<div class="tocinline">__TOC__</div><br />
<br />
----<br />
<br />
== Bugs marked as Crash ==<br />
<br />
* Owner: ??? {{bug|55432}} clang w/ ASAN: stack-use-after-scope (starting octave)<br />
<br />
* Owner: ??? {{bug|55397}} test imwrite error with address sanitizer<br />
<br />
* Owner: ??? {{bug|55375}} [MXE Octave] crash after plot<br />
<br />
* Owner: ??? {{bug|55287}} Memory leak in graphics subsystem<br />
<br />
* Owner: ??? {{bug|55258}} Recursion in a script file causes a segmentation fault<br />
<br />
* Owner: ??? {{bug|55254}} clear all crashes when variable from oct file class is displayed in workspace<br />
<br />
* <strike>Owner: ??? {{bug|55139}} m-editor locale failure caused crash</strike><br />
<br />
* Owner: ??? {{bug|55053}} GUI hanging when editing and saving function file during debugging<br />
<br />
* Owner: ??? {{bug|55047}} Running the test suite causes Octave to segfault on Windows<br />
<br />
* Owner: ??? {{bug|55028}} plots executed from script containing many plots seg fault<br />
<br />
* Owner: ??? {{bug|54708}} Segfault closing plot fig on precompiled octave on Mojave<br />
<br />
* Owner: ??? {{bug|54507}} Segfault in QT5 when resizing window during initialization<br />
<br />
* Owner: ??? {{bug|54431}} GUI crashes on workspace refresh while executing script<br />
<br />
* <strike> Owner: ??? {{bug|54187}} fail to close a busy figure and crash octave </strike><br />
<br />
* Owner: ??? {{bug|54169}} Test suite crashes when Octave built with Qt and FLTK<br />
<br />
* Owner: ??? {{bug|53858}} Octave crashes when expanding an array of a sub-structure viewed by Variable Editor<br />
<br />
* <strike> Owner: ??? {{bug|53802}} octave deadlocks with deletefcn callback that calls graphical function </strike><br />
<br />
* Owner: ??? {{bug|53733}} Panic/segfault when calling Java method after forge:im[read|write]<br />
<br />
* <strike> Owner: ??? {{bug|53342}} Figure property IntegerHandle does not work fully with Qt toolkit </strike><br />
<br />
* Owner: ??? {{bug|53207}} crash when Octave starts on Windows after removing external 4K display<br />
<br />
* Owner: ??? {{bug|53115}} "octave exited with signal 6" on attempt to stop debugging<br />
<br />
* Owner: ??? {{bug|53054}} Variable Editor: crash when trying to edit specific empty struct cells<br />
<br />
* Owner: ??? {{bug|52996}} calling audiodevinfo() results in a segfault on exit when JACK sound server is running<br />
<br />
* <strike> Owner: ??? {{bug|52274}} Segfault when calling previously used oct-file from deleted directory </strike><br />
<br />
* Owner: ??? {{bug|52123}} Indirect memory leak in cdef_manager::initialize ()<br />
<br />
* WON'T FIX <strike>Owner: ??? {{bug|51950}} sparse qr may return a malformed sparse matrix R with out of bounds entries </strike><br />
<br />
* Owner: ??? {{bug|50974}} SEGFAULT with constructed cmdline_options<br />
<br />
* Owner: ??? {{bug|50430}} plot function causes crash/termination of Octave (Windows)<br />
<br />
* Owner: ??? {{bug|50025}} Octave window freezes when I quit Octave GUI<br />
<br />
* Owner: ??? {{bug|49758}} octave-cli crashes when closing fullscreen plot<br />
<br />
* <strike> Owner: ??? {{bug|49736}} GUI: Crash when attempting to use the editor after too many files are opened </strike><br />
<br />
* Owner: ??? {{bug|49702}} CTRL+C crashes Octave CLI in Homebrew<br />
<br />
* Owner: ??? {{bug|49109}} child process started by fork crashes or hangs with octave-gui<br />
<br />
* <strike> Owner: ??? {{bug|48709}} GUI Command prompt showing no text </strike><br />
<br />
* <strike> Owner: ??? {{bug|48519}} Segfault with Qt plotting when running demos </strike><br />
<br />
* Owner: ??? {{bug|47958}} GUI freezes when starting debug with a partly drawn Qt figure<br />
<br />
* <strike> Owner: ??? {{bug|47445}} Setting colors for too many plots causes Segmentation violation </strike><br />
<br />
* Owner: ??? {{bug|54170}} java.lang.String.toCharArray result incorrect conversion to char matrix<br />
<br />
== Bugs marked Configuration and Build System ==<br />
<br />
* Owner: ??? {{bug|55447}} mkoctfile: wrong LFLAGS warning, resets LDFLAGS<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55371}} Add configure flag to specify makeinfo path </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55363}} Global variable in a MEX file </strike><br />
<br />
* <strike> Owner: ??? {{bug|55307}} qthelp-installdir error on cygwin </strike><br />
<br />
* <strike> Owner: ??? {{bug|55281}} [MXE Octave] Cannot strip script files </strike><br />
<br />
* <strike> Owner: ??? {{bug|55273}} mkfifo returns "Function not implemented" error </strike><br />
<br />
* <strike> Owner: ??? {{bug|55262}} [MXE Octave] could not build stable Octave </strike><br />
<br />
* Owner: ??? {{bug|55187}} build: fails to work with Qt 5.12, qcollectiongenerator no longer exists<br />
<br />
* <strike> Owner: Ben {{bug|55033}} mkoctfile link failure on macos </strike><br />
<br />
* <strike> Owner: ??? {{bug|54939}} Getting error while performing installation of octave 4.4.1 in linux </strike><br />
<br />
* <strike> Owner: ??? {{bug|54216}} Additional items for .hgignore </strike><br />
<br />
* <strike> Owner: ??? {{bug|53627}} build: oct files should not need to link with -loctinterp -loctave </strike><br />
<br />
* Owner: ??? {{bug|53153}} MXE octave crash after introduction of QOpenGLWidget<br />
<br />
* Owner: ??? {{bug|53099}} mkoctfile confused by unknown options followed by source file arguments<br />
<br />
* Owner: ??? {{bug|53070}} Empty search path when starting Octave from TCC/LE (alternative Windows command prompt)<br />
<br />
* Owner: ??? {{bug|52369}} proxy settings do not work at Windows 10<br />
<br />
* Owner: ??? {{bug|51684}} Request for Windows Portable zip version without absolute paths & system hooks<br />
<br />
* Owner: ??? {{bug|50266}} [mxe-octave] incremental builds fail and require "make clean"<br />
<br />
* Owner: ??? {{bug|49707}} Windows 10 won't associate .m files with Octave after re-install<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|49653}} Build failure with ImageMagick </strike><br />
<br />
* Owner: ??? {{bug|49503}} [mxe-octave] cross-building packages with configure script calling octave itself have issues<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|48710}} normalize core and package architecture-dependent installation directories </strike><br />
<br />
* <strike> Owner: rik {{bug|48678}} mkoctfile returns linker flags on LFLAGS instead of LDFLAGS </strike><br />
<br />
* Owner: ??? {{bug|45188}} MXE: problems installing same version number of Octave into different directories<br />
<br />
== Bugs marked as Build Failure ==<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55367}} Linking fails on cygwin </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55282}} QT_CPPFLAGS and QT_LDFLAGS command-line / environment vars ignored by configure </strike><br />
<br />
* <strike> Owner: ??? {{bug|55277}} some public Octave header files are missing type includes or forward decls </strike><br />
<br />
* Owner: ??? {{bug|55268}} macos: images fail to build for docs<br />
<br />
* <strike> Owner: ??? {{bug|54939}} Getting error while performing installation of octave 4.4.1 in linux </strike><br />
<br />
* <strike> Owner: ??? {{bug|53889}} dev fails to compile with Qt 4.6.2 </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|53430}} Octave user manual is not installed at all on systems with older Texinfo </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|52414}} llvm 4.0.1 fails on ./configure --enable-jit </strike><br />
<br />
* Owner: ??? {{bug|49653}} Build failure with ImageMagick<br />
<br />
* Owner: ??? {{bug|49503}} [mxe-octave] cross-building packages with configure script calling octave itself have issues<br />
<br />
* Owner: ??? {{bug|47405}} pkg update errors out of one package sees dependency error<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|45578}} build libgnu using non-recursive automake rules </strike><br />
<br />
* Owner: ??? {{bug|45188}} MXE: problems installing same version number of Octave into different directories<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|45082}} [mxe-octave] Windows native build fails at gmp </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|41061}} building with --enable-jit with libllvm 3.5 fails to compile </strike><br />
<br />
== Bugs with severity >= 4 ==<br />
<br />
* <strike> Owner: ??? {{bug|55347}} PVS studio static analysis report </strike><br />
<br />
* <strike> Owner: ??? {{bug|55266}} deprecation warning about octave::eval_string just for including parse.h </strike><br />
<br />
* <strike> Owner: ??? {{bug|54920}} AutoScale in xscale = log mode may lead to an unexpected error </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54028}} copy of non-handle class instance is not deep </strike><br />
<br />
* <strike> Owner: ??? {{bug|53506}} qp uses fix tolerance: ignores sqp tolerance argument </strike><br />
<br />
* <strike> Owner: ??? {{bug|52823}} Review files which lack GPL license header </strike><br />
<br />
* WON'T FIX <strike> * Owner: ??? {{bug|51779}} bsxfun unit tests occasionally fail on certain random inputs </strike><br />
<br />
* WON'T FIX <strike> * Owner: ??? {{bug|51709}} Creating function handle to static methods </strike><br />
<br />
* <strike> Owner: ??? {{bug|43571}} 'pkg build ...' with dependencies </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|42118}} COW memory issues when extracting small slices from large arrays </strike><br />
<br />
* WON'T FIX <strike> Owner: jwe {{bug|39257}} handles to nested functions are not yet supported </strike><br />
<br />
== Bugs marked as regressions ==<br />
<br />
* Owner: ??? {{bug|55437}} Files in editor are reported as modified while heavily parsing date strings with datenum()<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55418}} Speed issue with uicontrols </strike><br />
<br />
* <strike> Owner: ??? {{bug|55381}} mkoctfile --link-stand-alone no longer links with liboctinterp </strike><br />
<br />
* <strike> Owner: ??? {{bug|55368}} warning: popupmenu value not within valid display range </strike><br />
<br />
* <strike> Owner: ??? {{bug|55349}} Building with --enable-jit fails with LLVM 3.8.x </strike><br />
<br />
* <strike> Owner: ??? {{bug|55329}} history_timestamp_format_string is not initialized anymore </strike><br />
<br />
* <strike> Owner: ??? {{bug|55328}} loglog plots have clipped exponents for labels of x and y axes </strike><br />
<br />
* <strike> Owner: ??? {{bug|55273}} mkfifo returns "Function not implemented" error </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55195}} "help" for core functions contains odd symbols for non-ASCII characters </strike><br />
<br />
* <strike> Owner: ??? {{bug|55133}} Sidebar File Browser Not Rendered Correctly </strike><br />
<br />
* Owner: ??? {{bug|55029}} pause causes hang<br />
<br />
* Owner: ??? {{bug|54995}} Removal of called_from_builtin<br />
<br />
* Owner: ??? {{bug|54953}} Possible to create uncloseable figures when using --no-gui-libs option<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54832}} __run_test_suite__ fails with nested directories </strike><br />
<br />
* Owner: ??? {{bug|54789}} 'keyboard' in function inside script file no longer gives debugging console<br />
<br />
* Owner: ??? {{bug|54554}} When plotting large arrays, some graphic elements are not visible (llvmpipe Windows)<br />
<br />
* Owner: ??? {{bug|54444}} Octave-4.4.X CLI doesn't terminate at sigterm until <ENTER> pressed at prompt<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54342}} rand() produces different results on octave 4.4.0 compared to earlier versions </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54028}} copy of non-handle class instance is not deep </strike><br />
<br />
* Owner: ??? {{bug|53683}} numerical output format for float values with magnitude greater than precision is wrong<br />
<br />
* Owner: ??? {{bug|53468}} Octave 4.3.0+ can't load figures saved with previous versions<br />
<br />
* Owner: ??? {{bug|53456}} output_precision: Cannot set precision higher than 16<br />
<br />
* Owner: ??? {{bug|53283}} Variable Editor: floated variable panels disappear with loss of V.E. focus<br />
<br />
* Owner: ??? {{bug|53189}} Truncated initial message in Command Window on Windows<br />
<br />
* Owner: ??? {{bug|53153}} MXE octave crash after introduction of QOpenGLWidget<br />
<br />
* Owner: ??? {{bug|53099}} mkoctfile confused by unknown options followed by source file arguments<br />
<br />
* <strike> Owner: ??? {{bug|53091}} [MXE-Octave] new warning from gnuplot </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|52851}} parse error at command line or in scripts "duplicate subfunction or nested function name" </strike><br />
<br />
* Owner: ??? {{bug|52840}} GUI hangs on use of uigetfile/uiputfile<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|52765}} FreeSans default font is non portable in svg printout </strike><br />
<br />
* <strike> Owner: ??? {{bug|49612}} QT: uicontrol checkboxes and radiobuttons have wrong sizes </strike><br />
<br />
== Other Bugs ==<br />
<br />
== Potentially excluded bugs ==<br />
These bugs have been provisionally decided not to be blockers for 5.0.0. That doesn't mean they can't be fixed, if someone wants to fix them.</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Bug_Fix_List_-_5.0_Release&diff=11587Bug Fix List - 5.0 Release2019-01-07T23:33:03Z<p>Mtmiller: /* Bugs marked as regressions */ won't fix</p>
<hr />
<div>The following bugs must be fixed prior to the next release. See also the [[5.0.0 Release Checklist]].<br />
<br />
<p>Sign up for a bug by filling in the Owner field so people won't duplicate each other's work.</p><br />
<br />
<p>Use <pre><strike> ... </strike></pre> to cross an item off the list when it has been done.</p><br />
<br />
<p>Add <pre>WON'T FIX</pre> and the strike through tag for any bugs that will not be fixed in this round.</p><br />
<br />
<div class="tocinline">__TOC__</div><br />
<br />
----<br />
<br />
== Bugs marked as Crash ==<br />
<br />
* Owner: ??? {{bug|55397}} test imwrite error with address sanitizer<br />
<br />
* Owner: ??? {{bug|55375}} [MXE Octave] crash after plot<br />
<br />
* Owner: ??? {{bug|55287}} Memory leak in graphics subsystem<br />
<br />
* Owner: ??? {{bug|55258}} Recursion in a script file causes a segmentation fault<br />
<br />
* Owner: ??? {{bug|55254}} clear all crashes when variable from oct file class is displayed in workspace<br />
<br />
* <strike>Owner: ??? {{bug|55139}} m-editor locale failure caused crash</strike><br />
<br />
* Owner: ??? {{bug|55053}} GUI hanging when editing and saving function file during debugging<br />
<br />
* Owner: ??? {{bug|55047}} Running the test suite causes Octave to segfault on Windows<br />
<br />
* Owner: ??? {{bug|55028}} plots executed from script containing many plots seg fault<br />
<br />
* Owner: ??? {{bug|54708}} Segfault closing plot fig on precompiled octave on Mojave<br />
<br />
* Owner: ??? {{bug|54507}} Segfault in QT5 when resizing window during initialization<br />
<br />
* Owner: ??? {{bug|54431}} GUI crashes on workspace refresh while executing script<br />
<br />
* Owner: ??? {{bug|54187}} fail to close a busy figure and crash octave<br />
<br />
* Owner: ??? {{bug|54169}} Test suite crashes when Octave built with Qt and FLTK<br />
<br />
* Owner: ??? {{bug|53858}} Octave crashes when expanding an array of a sub-structure viewed by Variable Editor<br />
<br />
* Owner: ??? {{bug|53802}} octave deadlocks with deletefcn callback that calls graphical function<br />
<br />
* Owner: ??? {{bug|53733}} Panic/segfault when calling Java method after forge:im[read|write]<br />
<br />
* <strike> Owner: ??? {{bug|53342}} Figure property IntegerHandle does not work fully with Qt toolkit </strike><br />
<br />
* Owner: ??? {{bug|53207}} crash when Octave starts on Windows after removing external 4K display<br />
<br />
* Owner: ??? {{bug|53115}} "octave exited with signal 6" on attempt to stop debugging<br />
<br />
* Owner: ??? {{bug|53054}} Variable Editor: crash when trying to edit specific empty struct cells<br />
<br />
* Owner: ??? {{bug|52996}} calling audiodevinfo() results in a segfault on exit when JACK sound server is running<br />
<br />
* <strike> Owner: ??? {{bug|52274}} Segfault when calling previously used oct-file from deleted directory </strike><br />
<br />
* Owner: ??? {{bug|52123}} Indirect memory leak in cdef_manager::initialize ()<br />
<br />
* WON'T FIX <strike>Owner: ??? {{bug|51950}} sparse qr may return a malformed sparse matrix R with out of bounds entries </strike><br />
<br />
* Owner: ??? {{bug|50974}} SEGFAULT with constructed cmdline_options<br />
<br />
* Owner: ??? {{bug|50430}} plot function causes crash/termination of Octave (Windows)<br />
<br />
* Owner: ??? {{bug|50025}} Octave window freezes when I quit Octave GUI<br />
<br />
* Owner: ??? {{bug|49758}} octave-cli crashes when closing fullscreen plot<br />
<br />
* Owner: ??? {{bug|49736}} GUI: Crash when attempting to use the editor after too many files are opened<br />
<br />
* Owner: ??? {{bug|49702}} CTRL+C crashes Octave CLI in Homebrew<br />
<br />
* Owner: ??? {{bug|49109}} child process started by fork crashes or hangs with octave-gui<br />
<br />
* <strike> Owner: ??? {{bug|48709}} GUI Command prompt showing no text </strike><br />
<br />
* Owner: ??? {{bug|48519}} Segfault with Qt plotting when running demos<br />
<br />
* Owner: ??? {{bug|47958}} GUI freezes when starting debug with a partly drawn Qt figure<br />
<br />
* Owner: ??? {{bug|47445}} Setting colors for too many plots causes Segmentation violation<br />
<br />
* Owner: ??? {{bug|54170}} java.lang.String.toCharArray result incorrect conversion to char matrix<br />
<br />
== Bugs marked Configuration and Build System ==<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55371}} Add configure flag to specify makeinfo path </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55363}} Global variable in a MEX file </strike><br />
<br />
* <strike> Owner: ??? {{bug|55307}} qthelp-installdir error on cygwin </strike><br />
<br />
* <strike> Owner: ??? {{bug|55281}} [MXE Octave] Cannot strip script files </strike><br />
<br />
* <strike> Owner: ??? {{bug|55273}} mkfifo returns "Function not implemented" error </strike><br />
<br />
* <strike> Owner: ??? {{bug|55262}} [MXE Octave] could not build stable Octave </strike><br />
<br />
* Owner: ??? {{bug|55187}} build: fails to work with Qt 5.12, qcollectiongenerator no longer exists<br />
<br />
* <strike> Owner: Ben {{bug|55033}} mkoctfile link failure on macos </strike><br />
<br />
* <strike> Owner: ??? {{bug|54939}} Getting error while performing installation of octave 4.4.1 in linux </strike><br />
<br />
* <strike> Owner: ??? {{bug|54216}} Additional items for .hgignore </strike><br />
<br />
* <strike> Owner: ??? {{bug|53627}} build: oct files should not need to link with -loctinterp -loctave </strike><br />
<br />
* Owner: ??? {{bug|53153}} MXE octave crash after introduction of QOpenGLWidget<br />
<br />
* Owner: ??? {{bug|53099}} mkoctfile confused by unknown options followed by source file arguments<br />
<br />
* Owner: ??? {{bug|53070}} Empty search path when starting Octave from TCC/LE (alternative Windows command prompt)<br />
<br />
* Owner: ??? {{bug|52369}} proxy settings do not work at Windows 10<br />
<br />
* Owner: ??? {{bug|51684}} Request for Windows Portable zip version without absolute paths & system hooks<br />
<br />
* Owner: ??? {{bug|50266}} [mxe-octave] incremental builds fail and require "make clean"<br />
<br />
* Owner: ??? {{bug|49707}} Windows 10 won't associate .m files with Octave after re-install<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|49653}} Build failure with ImageMagick </strike><br />
<br />
* Owner: ??? {{bug|49503}} [mxe-octave] cross-building packages with configure script calling octave itself have issues<br />
<br />
* Owner: ??? {{bug|48710}} normalize core and package architecture-dependent installation directories<br />
<br />
* <strike> Owner: rik {{bug|48678}} mkoctfile returns linker flags on LFLAGS instead of LDFLAGS </strike><br />
<br />
* Owner: ??? {{bug|45188}} MXE: problems installing same version number of Octave into different directories<br />
<br />
== Bugs marked as Build Failure ==<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55367}} Linking fails on cygwin </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55282}} QT_CPPFLAGS and QT_LDFLAGS command-line / environment vars ignored by configure </strike><br />
<br />
* <strike> Owner: ??? {{bug|55277}} some public Octave header files are missing type includes or forward decls </strike><br />
<br />
* Owner: ??? {{bug|55268}} macos: images fail to build for docs<br />
<br />
* <strike> Owner: ??? {{bug|54939}} Getting error while performing installation of octave 4.4.1 in linux </strike><br />
<br />
* <strike> Owner: ??? {{bug|53889}} dev fails to compile with Qt 4.6.2 </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|53430}} Octave user manual is not installed at all on systems with older Texinfo </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|52414}} llvm 4.0.1 fails on ./configure --enable-jit </strike><br />
<br />
* Owner: ??? {{bug|49653}} Build failure with ImageMagick<br />
<br />
* Owner: ??? {{bug|49503}} [mxe-octave] cross-building packages with configure script calling octave itself have issues<br />
<br />
* Owner: ??? {{bug|47405}} pkg update errors out of one package sees dependency error<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|45578}} build libgnu using non-recursive automake rules </strike><br />
<br />
* Owner: ??? {{bug|45188}} MXE: problems installing same version number of Octave into different directories<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|45082}} [mxe-octave] Windows native build fails at gmp </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|41061}} building with --enable-jit with libllvm 3.5 fails to compile </strike><br />
<br />
== Bugs with severity >= 4 ==<br />
<br />
* Owner: ??? {{bug|55347}} PVS studio static analysis report<br />
<br />
* <strike> Owner: ??? {{bug|55266}} deprecation warning about octave::eval_string just for including parse.h </strike><br />
<br />
* Owner: ??? {{bug|54920}} AutoScale in xscale = log mode may lead to an unexpected error<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54028}} copy of non-handle class instance is not deep </strike><br />
<br />
* <strike> Owner: ??? {{bug|53506}} qp uses fix tolerance: ignores sqp tolerance argument </strike><br />
<br />
* <strike> Owner: ??? {{bug|52823}} Review files which lack GPL license header </strike><br />
<br />
* WON'T FIX <strike> * Owner: ??? {{bug|51779}} bsxfun unit tests occasionally fail on certain random inputs </strike><br />
<br />
* WON'T FIX <strike> * Owner: ??? {{bug|51709}} Creating function handle to static methods </strike><br />
<br />
* <strike> Owner: ??? {{bug|43571}} 'pkg build ...' with dependencies </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|42118}} COW memory issues when extracting small slices from large arrays </strike><br />
<br />
* WON'T FIX <strike> Owner: jwe {{bug|39257}} handles to nested functions are not yet supported </strike><br />
<br />
== Bugs marked as regressions ==<br />
<br />
* <strike> Owner: ??? {{bug|55381}} mkoctfile --link-stand-alone no longer links with liboctinterp </strike><br />
<br />
* <strike> Owner: ??? {{bug|55368}} warning: popupmenu value not within valid display range </strike><br />
<br />
* <strike> Owner: ??? {{bug|55349}} Building with --enable-jit fails with LLVM 3.8.x </strike><br />
<br />
* <strike> Owner: ??? {{bug|55329}} history_timestamp_format_string is not initialized anymore </strike><br />
<br />
* <strike> Owner: ??? {{bug|55328}} loglog plots have clipped exponents for labels of x and y axes </strike><br />
<br />
* <strike> Owner: ??? {{bug|55273}} mkfifo returns "Function not implemented" error </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55195}} "help" for core functions contains odd symbols for non-ASCII characters </strike><br />
<br />
* <strike> Owner: ??? {{bug|55133}} Sidebar File Browser Not Rendered Correctly </strike><br />
<br />
* Owner: ??? {{bug|55029}} pause causes hang<br />
<br />
* Owner: ??? {{bug|54995}} Removal of called_from_builtin<br />
<br />
* Owner: ??? {{bug|54953}} Possible to create uncloseable figures when using --no-gui-libs option<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54832}} __run_test_suite__ fails with nested directories </strike><br />
<br />
* Owner: ??? {{bug|54789}} 'keyboard' in function inside script file no longer gives debugging console<br />
<br />
* Owner: ??? {{bug|54554}} When plotting large arrays, some graphic elements are not visible (llvmpipe Windows)<br />
<br />
* Owner: ??? {{bug|54444}} Octave-4.4.X CLI doesn't terminate at sigterm until <ENTER> pressed at prompt<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54342}} rand() produces different results on octave 4.4.0 compared to earlier versions </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54028}} copy of non-handle class instance is not deep </strike><br />
<br />
* Owner: ??? {{bug|53683}} numerical output format for float values with magnitude greater than precision is wrong<br />
<br />
* Owner: ??? {{bug|53468}} Octave 4.3.0+ can't load figures saved with previous versions<br />
<br />
* Owner: ??? {{bug|53456}} output_precision: Cannot set precision higher than 16<br />
<br />
* Owner: ??? {{bug|53283}} Variable Editor: floated variable panels disappear with loss of V.E. focus<br />
<br />
* Owner: ??? {{bug|53189}} Truncated initial message in Command Window on Windows<br />
<br />
* Owner: ??? {{bug|53153}} MXE octave crash after introduction of QOpenGLWidget<br />
<br />
* Owner: ??? {{bug|53099}} mkoctfile confused by unknown options followed by source file arguments<br />
<br />
* Owner: ??? {{bug|53091}} [MXE-Octave] new warning from gnuplot<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|52851}} parse error at command line or in scripts "duplicate subfunction or nested function name" </strike><br />
<br />
* Owner: ??? {{bug|52840}} GUI hangs on use of uigetfile/uiputfile<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|52765}} FreeSans default font is non portable in svg printout </strike><br />
<br />
* <strike> Owner: ??? {{bug|49612}} QT: uicontrol checkboxes and radiobuttons have wrong sizes </strike><br />
<br />
== Other Bugs ==<br />
<br />
== Potentially excluded bugs ==<br />
These bugs have been provisionally decided not to be blockers for 5.0.0. That doesn't mean they can't be fixed, if someone wants to fix them.</div>Mtmillerhttps://wiki.octave.org/wiki/index.php?title=Bug_Fix_List_-_5.0_Release&diff=11581Bug Fix List - 5.0 Release2019-01-07T21:30:48Z<p>Mtmiller: /* Bugs marked as regressions */ fixed</p>
<hr />
<div>The following bugs must be fixed prior to the next release. See also the [[5.0.0 Release Checklist]].<br />
<br />
<p>Sign up for a bug by filling in the Owner field so people won't duplicate each other's work.</p><br />
<br />
<p>Use <pre><strike> ... </strike></pre> to cross an item off the list when it has been done.</p><br />
<br />
<p>Add <pre>WON'T FIX</pre> and the strike through tag for any bugs that will not be fixed in this round.</p><br />
<br />
<div class="tocinline">__TOC__</div><br />
<br />
----<br />
<br />
== Bugs marked as Crash ==<br />
<br />
* Owner: ??? {{bug|55287}} Memory leak in graphics subsystem<br />
<br />
* Owner: ??? {{bug|55258}} Recursion in a script file causes a segmentation fault<br />
<br />
* Owner: ??? {{bug|55254}} clear all crashes when variable from oct file class is displayed in workspace<br />
<br />
* <strike>Owner: ??? {{bug|55139}} m-editor locale failure caused crash</strike><br />
<br />
* Owner: ??? {{bug|55053}} GUI hanging when editing and saving function file during debugging<br />
<br />
* Owner: ??? {{bug|55047}} Running the test suite causes Octave to segfault on Windows<br />
<br />
* Owner: ??? {{bug|55028}} plots executed from script containing many plots seg fault<br />
<br />
* Owner: ??? {{bug|54708}} Segfault closing plot fig on precompiled octave on Mojave<br />
<br />
* Owner: ??? {{bug|54507}} Segfault in QT5 when resizing window during initialization<br />
<br />
* Owner: ??? {{bug|54431}} GUI crashes on workspace refresh while executing script<br />
<br />
* Owner: ??? {{bug|54187}} fail to close a busy figure and crash octave<br />
<br />
* Owner: ??? {{bug|54169}} Test suite crashes when Octave built with Qt and FLTK<br />
<br />
* Owner: ??? {{bug|53858}} Octave crashes when expanding an array of a sub-structure viewed by Variable Editor<br />
<br />
* Owner: ??? {{bug|53802}} octave deadlocks with deletefcn callback that calls graphical function<br />
<br />
* Owner: ??? {{bug|53733}} Panic/segfault when calling Java method after forge:im[read|write]<br />
<br />
* <strike> Owner: ??? {{bug|53342}} Figure property IntegerHandle does not work fully with Qt toolkit </strike><br />
<br />
* Owner: ??? {{bug|53207}} crash when Octave starts on Windows after removing external 4K display<br />
<br />
* Owner: ??? {{bug|53115}} "octave exited with signal 6" on attempt to stop debugging<br />
<br />
* Owner: ??? {{bug|53054}} Variable Editor: crash when trying to edit specific empty struct cells<br />
<br />
* Owner: ??? {{bug|52996}} calling audiodevinfo() results in a segfault on exit when JACK sound server is running<br />
<br />
* <strike> Owner: ??? {{bug|52274}} Segfault when calling previously used oct-file from deleted directory </strike><br />
<br />
* Owner: ??? {{bug|52123}} Indirect memory leak in cdef_manager::initialize ()<br />
<br />
* WON'T FIX <strike>Owner: ??? {{bug|51950}} sparse qr may return a malformed sparse matrix R with out of bounds entries </strike><br />
<br />
* Owner: ??? {{bug|50974}} SEGFAULT with constructed cmdline_options<br />
<br />
* Owner: ??? {{bug|50430}} plot function causes crash/termination of Octave (Windows)<br />
<br />
* Owner: ??? {{bug|50025}} Octave window freezes when I quit Octave GUI<br />
<br />
* Owner: ??? {{bug|49758}} octave-cli crashes when closing fullscreen plot<br />
<br />
* Owner: ??? {{bug|49736}} GUI: Crash when attempting to use the editor after too many files are opened<br />
<br />
* Owner: ??? {{bug|49702}} CTRL+C crashes Octave CLI in Homebrew<br />
<br />
* Owner: ??? {{bug|49109}} child process started by fork crashes or hangs with octave-gui<br />
<br />
* <strike> Owner: ??? {{bug|48709}} GUI Command prompt showing no text </strike><br />
<br />
* Owner: ??? {{bug|48519}} Segfault with Qt plotting when running demos<br />
<br />
* Owner: ??? {{bug|47958}} GUI freezes when starting debug with a partly drawn Qt figure<br />
<br />
* Owner: ??? {{bug|47445}} Setting colors for too many plots causes Segmentation violation<br />
<br />
* Owner: ??? {{bug|54170}} java.lang.String.toCharArray result incorrect conversion to char matrix<br />
<br />
== Bugs marked Configuration and Build System ==<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55363}} Global variable in a MEX file </strike><br />
<br />
* <strike> Owner: ??? {{bug|55307}} qthelp-installdir error on cygwin </strike><br />
<br />
* <strike> Owner: ??? {{bug|55281}} [MXE Octave] Cannot strip script files </strike><br />
<br />
* <strike> Owner: ??? {{bug|55273}} mkfifo returns "Function not implemented" error </strike><br />
<br />
* <strike> Owner: ??? {{bug|55262}} [MXE Octave] could not build stable Octave </strike><br />
<br />
* Owner: ??? {{bug|55187}} build: fails to work with Qt 5.12, qcollectiongenerator no longer exists<br />
<br />
* <strike> Owner: Ben {{bug|55033}} mkoctfile link failure on macos </strike><br />
<br />
* <strike> Owner: ??? {{bug|54939}} Getting error while performing installation of octave 4.4.1 in linux </strike><br />
<br />
* <strike> Owner: ??? {{bug|54216}} Additional items for .hgignore </strike><br />
<br />
* <strike> Owner: ??? {{bug|53627}} build: oct files should not need to link with -loctinterp -loctave </strike><br />
<br />
* Owner: ??? {{bug|53153}} MXE octave crash after introduction of QOpenGLWidget<br />
<br />
* Owner: ??? {{bug|53099}} mkoctfile confused by unknown options followed by source file arguments<br />
<br />
* Owner: ??? {{bug|53070}} Empty search path when starting Octave from TCC/LE (alternative Windows command prompt)<br />
<br />
* Owner: ??? {{bug|52369}} proxy settings do not work at Windows 10<br />
<br />
* Owner: ??? {{bug|51684}} Request for Windows Portable zip version without absolute paths & system hooks<br />
<br />
* Owner: ??? {{bug|50266}} [mxe-octave] incremental builds fail and require "make clean"<br />
<br />
* Owner: ??? {{bug|49707}} Windows 10 won't associate .m files with Octave after re-install<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|49653}} Build failure with ImageMagick </strike><br />
<br />
* Owner: ??? {{bug|49503}} [mxe-octave] cross-building packages with configure script calling octave itself have issues<br />
<br />
* Owner: ??? {{bug|48710}} normalize core and package architecture-dependent installation directories<br />
<br />
* <strike> Owner: rik {{bug|48678}} mkoctfile returns linker flags on LFLAGS instead of LDFLAGS </strike><br />
<br />
* Owner: ??? {{bug|45188}} MXE: problems installing same version number of Octave into different directories<br />
<br />
== Bugs marked as Build Failure ==<br />
<br />
* Owner: ??? {{bug|55367}} Linking fails on cygwin<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|55282}} QT_CPPFLAGS and QT_LDFLAGS command-line / environment vars ignored by configure </strike><br />
<br />
* <strike> Owner: ??? {{bug|55277}} some public Octave header files are missing type includes or forward decls </strike><br />
<br />
* Owner: ??? {{bug|55268}} macos: images fail to build for docs<br />
<br />
* <strike> Owner: ??? {{bug|54939}} Getting error while performing installation of octave 4.4.1 in linux </strike><br />
<br />
* <strike> Owner: ??? {{bug|53889}} dev fails to compile with Qt 4.6.2 </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|53430}} Octave user manual is not installed at all on systems with older Texinfo </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|52414}} llvm 4.0.1 fails on ./configure --enable-jit </strike><br />
<br />
* Owner: ??? {{bug|49653}} Build failure with ImageMagick<br />
<br />
* Owner: ??? {{bug|49503}} [mxe-octave] cross-building packages with configure script calling octave itself have issues<br />
<br />
* Owner: ??? {{bug|47405}} pkg update errors out of one package sees dependency error<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|45578}} build libgnu using non-recursive automake rules </strike><br />
<br />
* Owner: ??? {{bug|45188}} MXE: problems installing same version number of Octave into different directories<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|45082}} [mxe-octave] Windows native build fails at gmp </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|41061}} building with --enable-jit with libllvm 3.5 fails to compile </strike><br />
<br />
== Bugs with severity >= 4 ==<br />
<br />
* Owner: ??? {{bug|55347}} PVS studio static analysis report<br />
<br />
* <strike> Owner: ??? {{bug|55266}} deprecation warning about octave::eval_string just for including parse.h </strike><br />
<br />
* Owner: ??? {{bug|54920}} AutoScale in xscale = log mode may lead to an unexpected error<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54028}} copy of non-handle class instance is not deep </strike><br />
<br />
* <strike> Owner: ??? {{bug|53506}} qp uses fix tolerance: ignores sqp tolerance argument </strike><br />
<br />
* <strike> Owner: ??? {{bug|52823}} Review files which lack GPL license header </strike><br />
<br />
* WON'T FIX <strike> * Owner: ??? {{bug|51779}} bsxfun unit tests occasionally fail on certain random inputs </strike><br />
<br />
* WON'T FIX <strike> * Owner: ??? {{bug|51709}} Creating function handle to static methods </strike><br />
<br />
* <strike> Owner: ??? {{bug|43571}} 'pkg build ...' with dependencies </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|42118}} COW memory issues when extracting small slices from large arrays </strike><br />
<br />
* WON'T FIX <strike> Owner: jwe {{bug|39257}} handles to nested functions are not yet supported </strike><br />
<br />
== Bugs marked as regressions ==<br />
<br />
* <strike> Owner: ??? {{bug|55381}} mkoctfile --link-stand-alone no longer links with liboctinterp </strike><br />
<br />
* Owner: ??? {{bug|55368}} warning: popupmenu value not within valid display range<br />
<br />
* <strike> Owner: ??? {{bug|55349}} Building with --enable-jit fails with LLVM 3.8.x </strike><br />
<br />
* <strike> Owner: ??? {{bug|55329}} history_timestamp_format_string is not initialized anymore </strike><br />
<br />
* <strike> Owner: ??? {{bug|55328}} loglog plots have clipped exponents for labels of x and y axes </strike><br />
<br />
* <strike> Owner: ??? {{bug|55273}} mkfifo returns "Function not implemented" error </strike><br />
<br />
* Owner: ??? {{bug|55195}} "help" for core functions contains odd symbols for non-ASCII characters<br />
<br />
* <strike> Owner: ??? {{bug|55133}} Sidebar File Browser Not Rendered Correctly </strike><br />
<br />
* Owner: ??? {{bug|55029}} pause causes hang<br />
<br />
* Owner: ??? {{bug|54995}} Removal of called_from_builtin<br />
<br />
* Owner: ??? {{bug|54953}} Possible to create uncloseable figures when using --no-gui-libs option<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54832}} __run_test_suite__ fails with nested directories </strike><br />
<br />
* Owner: ??? {{bug|54789}} 'keyboard' in function inside script file no longer gives debugging console<br />
<br />
* Owner: ??? {{bug|54554}} When plotting large arrays, some graphic elements are not visible (llvmpipe Windows)<br />
<br />
* Owner: ??? {{bug|54444}} Octave-4.4.X CLI doesn't terminate at sigterm until <ENTER> pressed at prompt<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54342}} rand() produces different results on octave 4.4.0 compared to earlier versions </strike><br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|54028}} copy of non-handle class instance is not deep </strike><br />
<br />
* Owner: ??? {{bug|53683}} numerical output format for float values with magnitude greater than precision is wrong<br />
<br />
* Owner: ??? {{bug|53468}} Octave 4.3.0+ can't load figures saved with previous versions<br />
<br />
* Owner: ??? {{bug|53456}} output_precision: Cannot set precision higher than 16<br />
<br />
* Owner: ??? {{bug|53283}} Variable Editor: floated variable panels disappear with loss of V.E. focus<br />
<br />
* Owner: ??? {{bug|53189}} Truncated initial message in Command Window on Windows<br />
<br />
* Owner: ??? {{bug|53153}} MXE octave crash after introduction of QOpenGLWidget<br />
<br />
* Owner: ??? {{bug|53099}} mkoctfile confused by unknown options followed by source file arguments<br />
<br />
* Owner: ??? {{bug|53091}} [MXE-Octave] new warning from gnuplot<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|52851}} parse error at command line or in scripts "duplicate subfunction or nested function name" </strike><br />
<br />
* Owner: ??? {{bug|52840}} GUI hangs on use of uigetfile/uiputfile<br />
<br />
* WON'T FIX <strike> Owner: ??? {{bug|52765}} FreeSans default font is non portable in svg printout </strike><br />
<br />
* <strike> Owner: ??? {{bug|49612}} QT: uicontrol checkboxes and radiobuttons have wrong sizes </strike><br />
<br />
== Other Bugs ==<br />
<br />
== Potentially excluded bugs ==<br />
These bugs have been provisionally decided not to be blockers for 5.0.0. That doesn't mean they can't be fixed, if someone wants to fix them.</div>Mtmiller