155 lines
4.5 KiB
Bash
155 lines
4.5 KiB
Bash
# Template file for 'maxima'
|
|
pkgname=maxima
|
|
version=5.47.0
|
|
revision=1
|
|
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
|
|
}
|
|
}
|
|
|
|
maxima-emacs_package() {
|
|
short_desc+=" - transitional dummy package"
|
|
depends="${sourcepkg}-${version}_${revision} virtual?emacs"
|
|
build_style=meta
|
|
}
|
|
|
|
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 maxima-emacs xmaxima $(vopt_if ecl maxima-ecl)"
|