140 lines
3.8 KiB
Bash
140 lines
3.8 KiB
Bash
# Template file for 'octave'
|
|
pkgname=octave
|
|
version=7.3.0
|
|
revision=1
|
|
build_style=gnu-configure
|
|
configure_args="--disable-docs"
|
|
hostmakedepends="perl gcc-fortran pkg-config"
|
|
makedepends="pcre-devel readline-devel libSM-devel libltdl-devel lcms2-devel
|
|
glpk-devel SuiteSparse-devel rapidjson"
|
|
depends="$(vopt_if gui qt5-plugin-sqlite)"
|
|
checkdepends="zip unzip ghostscript gnuplot tar texinfo"
|
|
short_desc="High-level language, primarily intended for numerical computations"
|
|
maintainer="Diogo Leal <diogo@diogoleal.com>"
|
|
license="GPL-3.0-or-later"
|
|
homepage="https://gnu.org/software/octave/"
|
|
changelog="https://www.gnu.org/software/octave/NEWS-7.html"
|
|
distfiles="${GNU_SITE}/octave/octave-${version}.tar.gz"
|
|
checksum=6e14a4649d70af45ab660f8cbbf645aaf1ec33f25f88bfda4697cb17e440c4f5
|
|
|
|
# avoid warnings due to egrep deprecation
|
|
export EGREP="grep -E"
|
|
|
|
# Use OpenBLAS on platforms where it is available and fallback to regular BLAS
|
|
# on all others.
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
# List of supported architectures copied from openblas.
|
|
armv[67]*|aarch64*|i686*|x86_64*|ppc64*)
|
|
makedepends+=" openblas-devel"
|
|
configure_args+=" --with-blas=openblas --with-lapack=openblas"
|
|
;;
|
|
*)
|
|
makedepends+=" blas-devel lapack-devel"
|
|
;;
|
|
esac
|
|
|
|
case $XBPS_TARGET_MACHINE in
|
|
i686*)
|
|
# spqr is broken on i686; running `qr(sparse(1,1))` yields a segfault:
|
|
#
|
|
# octave:1> qr(sparse(1,1));
|
|
# fatal: caught signal Segmentation fault -- stopping myself...
|
|
# Segmentation fault
|
|
#
|
|
configure_args+=" --without-spqr"
|
|
;;
|
|
esac
|
|
|
|
# Package build options
|
|
# TODO: some options are still missing, such as java, qrupdate
|
|
build_options="
|
|
arpack
|
|
audio
|
|
curl
|
|
fftw3
|
|
graphicsmagick
|
|
gui
|
|
hdf5
|
|
imagemagick
|
|
opengl
|
|
openmp
|
|
qhull
|
|
zlib"
|
|
|
|
vopt_conflict graphicsmagick imagemagick
|
|
|
|
desc_option_arpack="Provides 'eigs' and 'svds' functions."
|
|
desc_option_audio="Provides audiofile related functionality."
|
|
desc_option_curl="Provides 'urlread' and 'urlwrite' functions and the 'ftp' class."
|
|
desc_option_fftw3="Improves performance on discrete Fourier transforms."
|
|
desc_option_gui="Graphical User Interface."
|
|
desc_option_graphicsmagick="Provides 'imread' and 'imwrite' functions."
|
|
desc_option_hdf5="Support for HDF data files."
|
|
desc_option_imagemagick="Provides 'imread' and 'imwrite' functions."
|
|
desc_option_qhull="Provides 'convhull{,n}', 'delaunay{,n}' and 'voronoi{,n}' functions."
|
|
desc_option_openmp="Enable support for OpenMP SMP multi-threading"
|
|
desc_option_zlib="Support for compressed data."
|
|
|
|
build_options_default="
|
|
arpack
|
|
audio
|
|
curl
|
|
fftw3
|
|
graphicsmagick
|
|
gui
|
|
opengl
|
|
openmp
|
|
qhull
|
|
zlib"
|
|
|
|
if [ -z "$CROSS_BUILD" ]; then
|
|
# hdf5 is nocross
|
|
build_options_default+=" hdf5"
|
|
fi
|
|
|
|
if [ -n "$CROSS_BUILD" ];then
|
|
# cross build cannot determine integer size for BLAS
|
|
# our BLAS (lapack and openblas) are built with 32 bit ints
|
|
# even in 64 bit architectures
|
|
configure_args+=" ax_blas_integer_size=4"
|
|
fi
|
|
|
|
makedepends+="
|
|
$(vopt_if arpack arpack-ng-devel)
|
|
$(vopt_if audio 'libsndfile-devel portaudio-devel')
|
|
$(vopt_if curl libcurl-devel)
|
|
$(vopt_if fftw3 fftw-devel)
|
|
$(vopt_if graphicsmagick libgraphicsmagick-devel)
|
|
$(vopt_if gui 'qt5-devel qt5-plugin-sqlite qscintilla-qt5-devel qt5-tools-devel')
|
|
$(vopt_if hdf5 hdf5-devel)
|
|
$(vopt_if imagemagick libmagick-devel)
|
|
$(vopt_if opengl "glu-devel fltk-devel fontconfig-devel freetype-devel gl2ps-devel")
|
|
$(vopt_if openmp libgomp-devel)
|
|
$(vopt_if qhull libqhull-devel)
|
|
$(vopt_if zlib zlib-devel)"
|
|
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
ppc64*) ;;
|
|
ppc*) broken="fails to configure";;
|
|
esac
|
|
|
|
pre_build() {
|
|
chmod +x build-aux/mk-opts.pl
|
|
}
|
|
|
|
post_install() {
|
|
# add helper to launch octave from dmenu etc.
|
|
printf "#!/bin/sh\noctave --gui" > octave-gui
|
|
vbin octave-gui
|
|
|
|
# install man pages
|
|
for f in doc/*/*.1; do
|
|
vman $f
|
|
done
|
|
|
|
# install info files
|
|
vmkdir usr/share/info
|
|
touch ${DESTDIR}/usr/share/info/dir
|
|
vcopy "doc/*/*.info*" usr/share/info
|
|
}
|