- patch maxima-sbcl so it uses gmp for arithmetic (closes #34849) also add libgmp to shlib_requires since it won't be detected - remove `nopie=yes` to fix #34861, replace by `nopie_files` - remove `nostrip=yes`, replace by `nostrip_files` - add checks for #34849 and #34861 - run testsuite only for full check (not in CI) - some html and info files are shipped with source: do not rebuild
This commit is contained in:
parent
92720ddd33
commit
3370c5ebd1
2 changed files with 63 additions and 8 deletions
19
srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch
Normal file
19
srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch
Normal file
|
@ -0,0 +1,19 @@
|
|||
Patch maxima initialization for sbcl so it uses gmp for arithmetic
|
||||
|
||||
|
||||
--- a/src/init-cl.lisp 2021-05-15 20:20:53.000000000 -0300
|
||||
+++ b/src/init-cl.lisp 2022-01-04 17:45:03.838273626 -0300
|
||||
@@ -574,8 +574,13 @@
|
||||
(delete-file file)))))
|
||||
*temp-files-list*))
|
||||
|
||||
+#+sbcl
|
||||
+(eval-when (:compile-toplevel :load-toplevel :execute)
|
||||
+ (require 'sb-gmp))
|
||||
+
|
||||
(defun cl-user::run ()
|
||||
"Run Maxima in its own package."
|
||||
+ #+sbcl (sb-gmp:install-gmp-funs)
|
||||
(in-package :maxima)
|
||||
(initialize-runtime-globals)
|
||||
(let ((input-stream *standard-input*)
|
|
@ -1,7 +1,7 @@
|
|||
# Template file for 'maxima'
|
||||
pkgname=maxima
|
||||
version=5.45.1
|
||||
revision=2
|
||||
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"
|
||||
|
@ -15,8 +15,15 @@ homepage="http://maxima.sourceforge.net"
|
|||
distfiles="${SOURCEFORGE_SITE}/maxima/maxima-${version}.tar.gz"
|
||||
checksum=fe9016276970bef214a1a244348558644514d7fdfaa4fc8b9d0e87afcbb4e7dc
|
||||
|
||||
nostrip=yes
|
||||
nopie=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"
|
||||
|
@ -24,6 +31,14 @@ 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
|
||||
|
@ -38,13 +53,34 @@ post_build() {
|
|||
|
||||
do_check() {
|
||||
if [ "$build_option_ecl" ]; then
|
||||
echo "Check that maxima.fas works"
|
||||
ecl --eval "(require 'maxima \"src/binary-ecl/maxima.fas\")" \
|
||||
--eval "(quit)"
|
||||
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
|
||||
|
||||
# now run the testsuite
|
||||
make ${makejobs} check
|
||||
if [ "$XBPS_CHECK_PKGS" = full ]; then
|
||||
# run the testsuite for all versions enabled
|
||||
make ${makejobs} check
|
||||
fi
|
||||
}
|
||||
|
||||
post_install() {
|
||||
|
|
Loading…
Reference in a new issue