%define octave_api 53 %define major 7 %define guimajor 5 %define subrel 1 %bcond_without audio %bcond_without gui %bcond_without java Name: octave Epoch: 0 Version: 5.1.0 Release: %mkrel 7 Summary: High-level language for numerical computations License: GPLv3+ Group: Sciences/Mathematics Source0: http://ftp.gnu.org/gnu/octave/%{name}-%{version}.tar.xz Source4: octave-2.1.36-emac.lisp URL: http://www.octave.org/ Obsoletes: octave3 < %{epoch}:%{version}-%{release} Provides: octave3 = %{epoch}:%{version}-%{release} Provides: octave(api) = api-v%{octave_api} Requires: gnuplot # (Anssi) for makeinfo which is needed for "help foo" command: Requires: texinfo Requires: graphicsmagick Requires(post): desktop-file-utils Requires(postun): desktop-file-utils Requires(post): rpm-helper #(eatdirt) qtoctave is dead, does not work with this version and #octave now provides octave --gui Obsoletes: qtoctave <= 0.10.1 Provides: qtoctave = %{version}-%{release} BuildRequires: lzip BuildRequires: bison BuildRequires: blas-devel BuildRequires: dejagnu BuildRequires: desktop-file-utils BuildRequires: emacs BuildRequires: emacs-bin BuildRequires: fftw-devel >= 0:3.0.1 BuildRequires: flex BuildRequires: gcc-gfortran BuildRequires: glpk-devel BuildRequires: gnuplot-nox # (Abel) not strictly needed, but play safe BuildRequires: gperf BuildRequires: hdf5-devel BuildRequires: lapack-devel BuildRequires: pkgconfig(ncurses) BuildRequires: readline-devel BuildRequires: texinfo BuildRequires: texinfo-tex BuildRequires: texlive BuildRequires: pkgconfig(libpcre) BuildRequires: pkgconfig(libcurl) # (Lev) needed to support sparse matrix functionality BuildRequires: suitesparse-devel # (Lev) other useful libraries BuildRequires: qhull-devel BuildRequires: qrupdate-devel # (Lev) for new experimental plotting BuildRequires: fltk-devel BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glu) # (Mitya) for eigs and svds to work BuildRequires: pkgconfig(arpack) # to make imread more functional BuildRequires: pkgconfig(GraphicsMagick) # (eatdirt) build against Qt5 %if %{with gui} BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5Gui) BuildRequires: pkgconfig(Qt5Network) BuildRequires: pkgconfig(Qt5OpenGL) BuildRequires: pkgconfig(Qt5PrintSupport) BuildRequires: pkgconfig(Qt5Help) BuildRequires: pkgconfig(Qt5Xml) BuildRequires: qscintilla-qt5-devel %endif # (Mitya) Java interface %if %{with java} BuildRequires: java-devel %endif # (Mitya) rendering stuff BuildRequires: gl2ps-devel BuildRequires: pkgconfig(osmesa) # (Mitya) Audio processing %if %{with audio} BuildRequires: pkgconfig(portaudio-2.0) BuildRequires: pkgconfig(sndfile) %endif # (eatdirt) fix some warnings for icon generation BuildRequires: icoutils BuildRequires: librsvg BuildRequires: sundials-devel %description GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab. It may also be used as a batch-oriented language. Octave has extensive tools for solving common numerical linear algebra problems, finding the roots of nonlinear equations, integrating ordinary functions, manipulating polynomials, and integrating ordinary differential and differential-algebraic equations. It is easily extensible and customizable via user-defined functions written in Octave's own language, or using dynamically loaded modules written in C++, C, Fortran, or other languages. %package devel Summary: Development headers and files for Octave Group: Development/C Obsoletes: octave3-devel < %{epoch}:%{version}-%{release} Provides: octave3-devel = %{epoch}:%{version}-%{release} Requires: %{name} = %{epoch}:%{version}-%{release} Requires: blas-devel Requires: fftw-devel Requires: gcc-c++ Requires: gcc-gfortran Requires: hdf5-devel Requires: lapack-devel Requires: readline-devel Requires: zlib-devel Requires: gnuplot-nox Requires: pstoedit Requires: transfig Provides: mkoctfile = %{epoch}:%{version}-%{release} %description devel The octave-devel package contains files needed for developing applications which use GNU Octave. This package is necessary if you intend to install external packages (for example, through Octave forge) in Octave. %package doc Summary: Documentation for Octave, a numerical computational language Group: Sciences/Mathematics BuildArch: noarch %description doc GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab. It may also be used as a batch-oriented language. This package contains documentation of Octave in various formats. %prep %setup -q #this command just returns the API number hardcoded in configure.ac #and ensures that it matches the one defined above OCTAVE_API=`%{__sed} -nr 's/^OCTAVE_API_VERSION="api-v([[:digit:]]+)"/\1/p' configure.ac` test "x${OCTAVE_API}" = x%{octave_api} || exit 1 %{__cp} -a %{SOURCE4} octave.el %build %define enable64 no export CPPFLAGS="%{optflags} -DH5_USE_16_API" export GNUPLOT=%{_bindir}/gnuplot-nox %{configure2_5x} \ --enable-shared \ --disable-static \ --enable-64=%{enable64} \ --with-amd="-lamd -lsuitesparseconfig" \ --with-camd="-lcamd -lsuitesparseconfig" \ --with-colamd="-lcolamd -lsuitesparseconfig" \ --with-ccolamd="-lccolamd -lsuitesparseconfig" \ --enable-link-all-dependencies \ --disable-rpath ##(eatdirt) ##--with-gnu-ld # (Mitya) Because of gnuplot-nox used for build, Octave will set it as default gnuplot binary. # Revert it to original gnuplot. #{__sed} -i 's/gnuplot-nox/gnuplot/' scripts/plot/util/gnuplot_binary.m %{make_build} OCTAVE_RELEASE="%{distribution} %{version}-%{release}" LDFLAGS="-lgfortran -llapack -lGL -lGLU -lpthread" # emacs mode %{_bindir}/emacs -batch -q -no-site-file -f batch-byte-compile %{name}.el %install %{make_install} # Make library links %{__mkdir_p} %{buildroot}/etc/ld.so.conf.d /bin/echo "%{_libdir}/octave/%{version}" > %{buildroot}/etc/ld.so.conf.d/octave-%{_arch}.conf # Remove RPM_BUILD_ROOT from ls-R files %{__perl} -pi -e "s,%{buildroot},," %{buildroot}%{_libexecdir}/octave/ls-R %{__perl} -pi -e "s,%{buildroot},," %{buildroot}%{_datadir}/octave/ls-R %{_bindir}/find %{buildroot} -name "*.oct" -print0 | %{_bindir}/xargs -t -0 -r strip --strip-unneeded %{__mkdir_p} %{buildroot}%{_sysconfdir}/emacs/site-start.d %{__cp} -a %{name}.elc %{buildroot}%{_sysconfdir}/emacs/site-start.d/%{name}.elc %{__cp} -a %{name}.el %{buildroot}%{_sysconfdir}/emacs/site-start.d/%{name}.el # prepare documentation %{__rm} -rf package-doc %{__mkdir_p} package-doc %{__mkdir_p} package-doc/interpreter/octave.html/ /bin/ln doc/interpreter/octave.html/*.html package-doc/interpreter/octave.html/ %{__mkdir_p} package-doc/liboctave/liboctave.html/ /bin/ln doc/liboctave/liboctave.html/*.html package-doc/liboctave/liboctave.html/ %{__mkdir_p} package-doc/examples %{__cp} -a examples/[[:lower:]]* package-doc/examples/ %{__cp} -a doc/liboctave/liboctave.info %{buildroot}%{_infodir}/ # Create desktop file %{__mv} %{buildroot}%{_datadir}/applications/org.octave.Octave.desktop \ %{buildroot}%{_datadir}/applications/octave.desktop %{_bindir}/desktop-file-install --add-category Education --remove-category Development \ --dir %{buildroot}%{_datadir}/applications %{buildroot}%{_datadir}/applications/octave.desktop # Create directories for add-on packages HOST_TYPE=`%{buildroot}%{_bindir}/octave-config -p CANONICAL_HOST_TYPE` %{__mkdir_p} %{buildroot}%{_libexecdir}/octave/site/oct/%{octave_api}/$HOST_TYPE %{__mkdir_p} %{buildroot}%{_libexecdir}/octave/site/oct/$HOST_TYPE %{__mkdir_p} %{buildroot}%{_datadir}/octave/packages /bin/touch %{buildroot}%{_datadir}/octave/octave_packages %multiarch_includes %{buildroot}%{_includedir}/octave-%{version}/octave/*.h #(eatdirt) remove .la files find %{buildroot}%{_libdir} -name "*.la" -delete echo %{buildroot}%{_libdir} #(eatdirt) trigger libification with symlinks (thanks tv) pushd %{buildroot}%{_libdir} %__ln_s ./octave/%{version}/liboctave.so liboctave.so %__ln_s ./octave/%{version}/liboctinterp.so liboctinterp.so %__ln_s ./octave/%{version}/liboctgui.so liboctgui.so popd %post %create_ghostfile %{_datadir}/octave/octave_packages root root 0664 %files %defattr(0644,root,root,0755) %doc NEWS* README %doc examples %defattr(-,root,root,0755) %{_bindir}/octave* %config(noreplace) /etc/ld.so.conf.d/* #(eatdirt) fix packaging of libraries (.so files go to devel) %{_libdir}/octave/site %{_libdir}/octave/%{version}/oct %{_libdir}/octave/%{version}/liboctave.so.%{major}{,.*} %{_libdir}/octave/%{version}/liboctinterp.so.%{major}*{,.*} %{_libdir}/octave/%{version}/liboctgui.so.%{guimajor}*{,.*} %{_datadir}/octave %{_datadir}/metainfo/org.octave.Octave.appdata.xml %{_datadir}/icons/*/*/apps/octave.png %{_datadir}/icons/*/*/apps/octave.svg %exclude %{_datadir}/octave/octave_packages %ghost %{_datadir}/octave/octave_packages #(eatdirt) why should they be the same? #if "#{_libdir}" != "#{_libexecdir}" #{_libexecdir}/octave #endif %{_libexecdir}/octave %{_mandir}/man*/octave* %{_infodir}/octave.info* %{_datadir}/applications/* %config(noreplace) %_sysconfdir/emacs/site-start.d/octave.el* %files devel %defattr(-,root,root) %{_bindir}/mkoctfile* %{_libdir}/pkgconfig/*.pc #(eatdirt) adding library devel files %{_libdir}/octave/%{version}/*.so %{_libdir}/*.so %{_includedir}/octave-%{version} %dir %{multiarch_includedir}/octave-* %multiarch %{multiarch_includedir}/octave-*/octave/*.h %multiarch %{multiarch_includedir}/octave-*/octave/*.cc %{_mandir}/man*/mkoctfile* %files doc %defattr(0644,root,root,0755) %doc doc/refcard/*.pdf %doc doc/interpreter/*.pdf %doc doc/liboctave/*.pdf %doc package-doc/* %{_infodir}/liboctave.* %changelog * Tue Nov 05 2019 eatdirt <eatdirt> 0:5.1.0-7.1.mga7 + Revision: 1458044 - Force link dependencies to build third party packages (mga#25617) * Sun Mar 31 2019 umeabot <umeabot> 0:5.1.0-7.mga7 + Revision: 1383589 - Qt5 Rebuild * Fri Mar 08 2019 eatdirt <eatdirt> 0:5.1.0-6.mga7 + Revision: 1372896 - Add symlinks to .so file to trigger missing libification * Wed Mar 06 2019 eatdirt <eatdirt> 0:5.1.0-4.mga7 + Revision: 1371920 - Tentative fix of missing devel files, obsoletes qtoctave - Fix packaging of library devel files * Tue Mar 05 2019 eatdirt <eatdirt> 0:5.1.0-2.mga7 + Revision: 1371706 - Fixing wrong ld.conf file and disabling rpath * Tue Mar 05 2019 eatdirt <eatdirt> 0:5.1.0-1.mga7 + Revision: 1371639 - Upgrade to version 5.1.0 * Fri Nov 09 2018 joequant <joequant> 0:4.4.1-3.mga7 + Revision: 1329220 - upgrade hdf5 * Thu Nov 08 2018 daviddavid <daviddavid> 0:4.4.1-2.mga7 + Revision: 1328945 - rebuild for new hdf5 1.10.4 * Sun Oct 14 2018 shlomif <shlomif> 0:4.4.1-1.mga7 + Revision: 1320352 - New version 4.4.1 * Mon Sep 03 2018 tv <tv> 0:4.4.0-3.mga7 + Revision: 1256621 - rely on filetriggers for info system (mga#23482) * Tue Jul 31 2018 eatdirt <eatdirt> 0:4.4.0-2.mga7 + Revision: 1246442 - Rebuild for new gfortran * Sun May 13 2018 eatdirt <eatdirt> 0:4.4.0-1.mga7 + Revision: 1229198 - Upgrade to version 4.4.0 * Thu Apr 19 2018 daviddavid <daviddavid> 0:4.2.2-2.mga7 + Revision: 1220178 - rebuild for new qscintilla 2.10.4 * Wed Mar 14 2018 kekepower <kekepower> 0:4.2.2-1.mga7 + Revision: 1209544 - Update to version 4.2.2 * Thu Nov 02 2017 mjack <mjack> 0:4.2.1-5.mga7 + Revision: 1175622 - Added Provides: mkoctfile for octave-devel * Mon Oct 16 2017 mjack <mjack> 0:4.2.1-4.mga7 + Revision: 1172270 - Added info in octave-devel description - Added Requires: graphicsmagick * Mon Sep 11 2017 tv <tv> 0:4.2.1-3.mga7 + Revision: 1152748 - rebuild for new libgfortran * Wed May 03 2017 eatdirt <eatdirt> 0:4.2.1-2.mga6 + Revision: 1098827 - Rebuild for new gl2ps, fix compilation warnings * Fri Mar 03 2017 eatdirt <eatdirt> 0:4.2.1-1.mga6 + Revision: 1088563 - Upgrade to version 4.2.1 * Fri Dec 02 2016 eatdirt <eatdirt> 0:4.2.0-1.mga6 + Revision: 1071703 - Upgrade to version 4.2.0 * Fri Sep 30 2016 eatdirt <eatdirt> 0:4.0.3-1.mga6 + Revision: 1057870 - Upgrade to bugfix release 4.0.3 * Sat Apr 16 2016 shlomif <shlomif> 0:4.0.1-2.mga6 + Revision: 1003004 - Rebuild for the new glpk * Fri Apr 01 2016 eatdirt <eatdirt> 0:4.0.1-1.mga6 + Revision: 997314 - Update to bug fixing release 4.0.1 * Mon Mar 14 2016 daviddavid <daviddavid> 0:4.0.0-6.mga6 + Revision: 990435 - rebuild for new qhull 2015.2 * Tue Feb 16 2016 umeabot <umeabot> 0:4.0.0-5.mga6 + Revision: 961812 - Mageia 6 Mass Rebuild * Wed Dec 30 2015 mitya <mitya> 0:4.0.0-4.mga6 + Revision: 916873 - introduce conditionals for GUI, Java and audio - build with everything by default * Tue Dec 29 2015 mitya <mitya> 0:4.0.0-3.mga6 + Revision: 916858 - enable: GUI, Java, sparse matrices - audio processing disabled by default, use --with audio - use gnuplot-nox for build - minor cleanups * Tue Dec 29 2015 tv <tv> 0:4.0.0-2.mga6 + Revision: 916739 - rebuild for new libGraphicsMagick * Mon Nov 09 2015 shlomif <shlomif> 0:4.0.0-1.mga6 + Revision: 900084 - New version 4.0.0 * Sun Aug 16 2015 ycantin <ycantin> 0:3.8.2-5.mga6 + Revision: 865134 - rebuild for libfltk * Tue Jul 21 2015 daviddavid <daviddavid> 0:3.8.2-4.mga6 + Revision: 855869 - rebuild with new hdf5 * Wed Oct 15 2014 umeabot <umeabot> 0:3.8.2-3.mga5 + Revision: 741674 - Second Mageia 5 Mass Rebuild - Mageia 5 Mass Rebuild * Thu Sep 04 2014 grenoya <grenoya> 0:3.8.2-1.mga5 + Revision: 671908 - new version 3.8.2 - disable all SuiteSparse module at build due to incompatibility between Octave and new SuiteSparse 4.3.x (Octave bug #43063) * Sun Mar 16 2014 grenoya <grenoya> 0:3.8.1-3.mga5 + Revision: 604275 - new version 3.8.1 * Tue Oct 22 2013 umeabot <umeabot> 0:3.6.4-3.mga4 + Revision: 545563 - Mageia 4 Mass Rebuild * Wed Oct 16 2013 grenoya <grenoya> 0:3.6.4-2.mga4 + Revision: 501406 - rebuild for new suitesparse * Wed Oct 09 2013 grenoya <grenoya> 0:3.6.4-1.mga4 + Revision: 494208 - new version 3.6.4 * Tue Jul 16 2013 fwang <fwang> 0:3.6.3-4.mga4 + Revision: 455024 - rebuild for new hdf5 * Thu Jan 17 2013 pterjan <pterjan> 0:3.6.3-3.mga4 + Revision: 389214 + rebuild (emptylog) * Sun Jan 13 2013 umeabot <umeabot> 0:3.6.3-3.mga3 + Revision: 361782 - Mass Rebuild - https://wiki.mageia.org/en/Feature:Mageia3MassRebuild * Sat Dec 01 2012 fwang <fwang> 0:3.6.3-2.mga3 + Revision: 323831 - rebuild for new pcre * Sat Sep 22 2012 grenoya <grenoya> 0:3.6.3-1.mga3 + Revision: 296721 - new version 3.6.3 * Thu Apr 05 2012 mitya <mitya> 0:3.6.1-2.mga2 + Revision: 228781 - Build with ARPACK to support eigs and svds functions * Thu Mar 01 2012 grenoya <grenoya> 0:3.6.1-1.mga2 + Revision: 216573 - update to 3.6.1 + fwang <fwang> - mark doc package as noarch * Wed Jan 18 2012 grenoya <grenoya> 0:3.4.3-4.mga2 + Revision: 197868 - fix flags for linkage - add gnuplot-nox, pstoedit and transfig for better functioning + anssi <anssi> - require texinfo, needed for the "help" command to work properly * Sat Dec 10 2011 grenoya <grenoya> 0:3.4.3-2.mga2 + Revision: 180467 - add missing pdf files * Sat Nov 12 2011 grenoya <grenoya> 0:3.4.3-1.mga2 + Revision: 166963 - new version 3.4.3 * Sat Sep 03 2011 grenoya <grenoya> 0:3.4.2-1.mga2 + Revision: 138319 - build without parallel make - fix new info and html doc path - fix octave.desktop build - fix rpm file content + misc <misc> - remove old file from sha1.lst + fwang <fwang> - fix linkage - fix build with latest curl - new version 3.4.2 - rebuild for new fltk * Mon Jun 20 2011 grenoya <grenoya> 0:3.2.4-6.mga2 + Revision: 110415 - rebuild after upgrade of umfpack library * Mon Apr 18 2011 grenoya <grenoya> 0:3.2.4-5.mga1 + Revision: 87881 -rebuild for new version of qhull * Fri Apr 15 2011 grenoya <grenoya> 0:3.2.4-4.mga1 + Revision: 85774 - clean old Mdv syntax - put texlive requirement instead of tetex-* - imported package octave