void-packages/srcpkgs/maxima/template

149 lines
4.4 KiB
Bash

# Template file for 'maxima'
pkgname=maxima
version=5.47.0
revision=3
build_style=gnu-configure
configure_args="$(vopt_enable clisp) $(vopt_enable sbcl sbcl-exec) $(vopt_enable ecl)"
hostmakedepends="python3 perl texinfo patchelf $(vopt_if ecl ecl)"
makedepends="$(vopt_if clisp clisp) $(vopt_if sbcl sbcl) $(vopt_if ecl ecl)"
depends="$(vopt_if clisp clisp) rlwrap"
checkdepends="gnuplot"
short_desc="Computer Algebra System"
maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
license="GPL-2.0-only"
homepage="http://maxima.sourceforge.net"
changelog="https://sourceforge.net/p/maxima/code/ci/master/tree/changelogs/ChangeLog-${version%.*}.md?format=raw"
distfiles="${SOURCEFORGE_SITE}/maxima/maxima-${version}.tar.gz"
checksum=9104021b24fd53e8c03a983509cb42e937a925e8c0c85c335d7709a14fd40f7a
nocross=yes
# maxima-sbcl is nopie and should NOT be stripped or it won't work
nostrip_files=/usr/lib/maxima/$version/binary-sbcl/maxima
nopie_files=/usr/lib/maxima/$version/binary-sbcl/maxima
if [ "$build_option_sbcl" ]; then
# binary-sbcl/maxima uses libgmp but this won't show up in objdump
shlib_requires=libgmp.so.10
fi
build_options="clisp sbcl ecl"
desc_option_clisp="Build with CLISP"
desc_option_sbcl="Build with SBCL"
desc_option_ecl="Build with ECL"
build_options_default="ecl"
# sbcl is only available for these architectures
case "$XBPS_TARGET_MACHINE" in
i686|x86_64*|armv7l|ppc64le*)
build_options_default+=" sbcl"
;;
esac
vopt_conflict clisp sbcl
post_configure() {
# do not rebuild these files if they exist
touch -c doc/info/*.html
touch -c doc/info/maxima.info*
touch -c doc/info/maxima_toc.html
touch -c interfaces/xmaxima/doc/xmaxima.html
}
post_build() {
if [ "$build_option_ecl" ]; then
# everything will go in the same directory, use rpath=$ORIGIN
patchelf --remove-rpath src/binary-ecl/libmaxima-ecl.so
patchelf --set-rpath \$ORIGIN \
src/binary-ecl/{maxima,maxima.fas}
patchelf \
--replace-needed binary-ecl/libmaxima-ecl.so libmaxima-ecl.so \
src/binary-ecl/{maxima,maxima.fas}
fi
}
do_check() {
if [ "$build_option_ecl" ]; then
echo "maxima-ecl: check that maxima.fas works (#34273)"
ecl --eval '(require :maxima "src/binary-ecl/maxima.fas")' \
--eval '(quit)'
echo PASS
echo "maxima-ecl: check that unlimited heap-size works (#34861)"
./maxima-local -q -l ecl --batch-string=":lisp \
(ext:set-limit 'ext:heap-size 0)
showtime : true $
a : 10^(10^5) $
b : a^600 $
c : a^600 $
"
echo PASS
fi
if [ "$build_option_sbcl" ]; then
echo "maxima-sbcl: check that long arithmetic is fast (#34849)"
timeout -v 30s ./maxima-local -q -l sbcl --batch-string="
showtime : true $
a : 10^(10^5) $
b : a^1000 $
"
echo PASS
fi
if [ "$XBPS_CHECK_PKGS" = full ]; then
# run the testsuite for all versions enabled
make ${makejobs} check
fi
}
post_install() {
vmkdir usr/share/doc
ln -sf ../maxima/${version}/doc ${DESTDIR}/usr/share/doc/maxima
# symlink man pages for rmaxima and xmaxima
ln -s maxima.1 ${DESTDIR}/usr/share/man/man1/rmaxima.1
ln -s maxima.1 ${DESTDIR}/usr/share/man/man1/xmaxima.1
# info files are used for maxima help, and need to be uncompressed
# removing this file prevents compression of info files
rm ${DESTDIR}/usr/share/info/dir
}
maxima-src_package() {
depends="${sourcepkg}-${version}_${revision}"
short_desc+=" - source files"
pkg_install() {
vmove usr/share/maxima/${version}/src
}
}
xmaxima_package() {
short_desc+=" - Tk interface"
depends="${sourcepkg}-${version}_${revision} tk"
pkg_install() {
vmove usr/bin/xmaxima
vmove usr/share/man/man1/xmaxima.1
vmove usr/share/maxima/${version}/xmaxima
vmove usr/share/info/xmaxima.info
vinstall ${FILESDIR}/maxima.desktop 644 usr/share/applications
vmkdir usr/share/pixmaps
ln -sf /usr/share/maxima/${version}/xmaxima/maxima-new.png \
${PKGDESTDIR}/usr/share/pixmaps/maxima
}
}
maxima-ecl_package() {
short_desc+=" - compiled with ECL"
depends="${sourcepkg}-${version}_${revision}"
pkg_install() {
BINARY_ECL=/usr/lib/maxima/${version}/binary-ecl
vmove ${BINARY_ECL}
vinstall src/binary-ecl/libmaxima-ecl.so 755 ${BINARY_ECL}
vinstall src/binary-ecl/maxima.fas 755 ${BINARY_ECL}
# symlink maxima.fas in ECLDIR
ECLDIR=$(ecl -eval "(princ (SI:GET-LIBRARY-PATHNAME))" -eval "(quit)")
vmkdir ${ECLDIR}
ln -sr ${PKGDESTDIR}/${BINARY_ECL}/maxima.fas ${PKGDESTDIR}/${ECLDIR}
}
}
subpackages="maxima-src xmaxima $(vopt_if ecl maxima-ecl)"