# Template file for 'maxima' pkgname=maxima version=5.45.1 revision=3 build_style=gnu-configure configure_args="$(vopt_enable clisp) $(vopt_enable sbcl sbcl-exec) $(vopt_enable ecl)" hostmakedepends="python3 perl emacs texinfo patchelf" 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="Bosco Garcia " license="GPL-2.0-only" homepage="http://maxima.sourceforge.net" distfiles="${SOURCEFORGE_SITE}/maxima/maxima-${version}.tar.gz" checksum=fe9016276970bef214a1a244348558644514d7fdfaa4fc8b9d0e87afcbb4e7dc # 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="sbcl ecl" 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+=" - Emacs interface" depends="${sourcepkg}-${version}_${revision} virtual?emacs" pkg_install() { vmove usr/share/emacs } } 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)"