diff options
Diffstat (limited to 'sci-mathematics')
-rw-r--r-- | sci-mathematics/fricas/files/fricas-sbcl-2.3.9.patch | 22 | ||||
-rw-r--r-- | sci-mathematics/fricas/fricas-1.3.9-r3.ebuild | 85 |
2 files changed, 95 insertions, 12 deletions
diff --git a/sci-mathematics/fricas/files/fricas-sbcl-2.3.9.patch b/sci-mathematics/fricas/files/fricas-sbcl-2.3.9.patch index 6f7440afecf5..f3a28ed57457 100644 --- a/sci-mathematics/fricas/files/fricas-sbcl-2.3.9.patch +++ b/sci-mathematics/fricas/files/fricas-sbcl-2.3.9.patch @@ -1,12 +1,11 @@ diff --git a/src/lisp/num_gmp.lisp b/src/lisp/num_gmp.lisp -index b58001e..9538e3c 100644 +index b58001e0b..f4a022ad4 100644 --- a/src/lisp/num_gmp.lisp +++ b/src/lisp/num_gmp.lisp -@@ -549,6 +549,20 @@ - ;;; (gmp-bignum-isqrt (expt 10 50)) - ;;; (gmp-bignum-isqrt (expt 2 127)) - #+:sbcl -+ +@@ -646,14 +646,27 @@ + (setf (symbol-function 'orig-isqrt) + (symbol-function 'common-lisp:isqrt))) + +(defmacro negate_bignum(x) + (let ((sym2 + (find-symbol "NEGATE-BIGNUM-NOT-FULLY-NORMALIZED" "SB-BIGNUM"))) @@ -20,10 +19,9 @@ index b58001e..9538e3c 100644 + ) +) + - (defun gmp-bignum-isqrt (x) - (let* ((len-x (sb-bignum::%bignum-length x)) - (len-res (ceiling (+ 1 len-x) 2)) -@@ -652,8 +666,8 @@ + (defun gmp-multiply-bignums0 (a b) + ;;; (declare (type bignum-type a b)) + (let* ((a-plusp (sb-bignum::%bignum-0-or-plusp a (sb-bignum::%bignum-length a))) (b-plusp (sb-bignum::%bignum-0-or-plusp b (sb-bignum::%bignum-length b))) @@ -34,7 +32,7 @@ index b58001e..9538e3c 100644 (len-a (sb-bignum::%bignum-length a)) (len-b (sb-bignum::%bignum-length b)) (len-res (+ len-a len-b)) -@@ -697,10 +711,10 @@ +@@ -697,10 +710,10 @@ (let* ( (nx (if (sb-bignum::%bignum-0-or-plusp x (sb-bignum::%bignum-length x)) (sb-bignum::copy-bignum x) @@ -47,7 +45,7 @@ index b58001e..9538e3c 100644 (xl (sb-bignum::%bignum-length nx)) (yl (sb-bignum::%bignum-length ny)) (rl (if (< xl yl) xl yl)) -@@ -735,9 +749,9 @@ +@@ -735,9 +748,9 @@ (x-plusp (sb-bignum::%bignum-0-or-plusp x (sb-bignum::%bignum-length x))) (y-plusp (sb-bignum::%bignum-0-or-plusp y (sb-bignum::%bignum-length y))) (nx (if x-plusp x diff --git a/sci-mathematics/fricas/fricas-1.3.9-r3.ebuild b/sci-mathematics/fricas/fricas-1.3.9-r3.ebuild new file mode 100644 index 000000000000..6515c133f0ca --- /dev/null +++ b/sci-mathematics/fricas/fricas-1.3.9-r3.ebuild @@ -0,0 +1,85 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +inherit elisp-common + +DESCRIPTION="FriCAS is a fork of Axiom computer algebra system" +HOMEPAGE="https://fricas.sourceforge.net/ + https://github.com/fricas/fricas + https://fricas.github.io/" +SRC_URI="mirror://sourceforge/${PN}/${PV}/${P}-full.tar.bz2" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +IUSE="+sbcl cmucl gcl ecl clisp clozurecl X emacs gmp" +REQUIRED_USE="^^ ( sbcl cmucl gcl ecl clisp clozurecl ) + gmp? ( ^^ ( sbcl clozurecl ) )" +RDEPEND="sbcl? ( dev-lisp/sbcl:= ) + cmucl? ( dev-lisp/cmucl:= ) + gcl? ( dev-lisp/gcl:= ) + ecl? ( dev-lisp/ecl:= ) + clisp? ( dev-lisp/clisp:= ) + clozurecl? ( dev-lisp/clozurecl:= ) + X? ( x11-libs/libXpm x11-libs/libICE ) + emacs? ( >=app-editors/emacs-23.1:* ) + gmp? ( dev-libs/gmp:= )" +DEPEND="${RDEPEND}" + +PATCHES=( "${FILESDIR}"/${PN}-sbcl-2.3.9.patch ) + +# necessary for clisp and gcl +RESTRICT="strip" + +src_configure() { + local LISP GMP + use sbcl && LISP=sbcl + use cmucl && LISP=lisp + use gcl && LISP=gcl + use ecl && LISP=ecl + use clisp && LISP=clisp + use clozurecl && LISP=ccl + + if use sbcl || use clozurecl + then GMP=$(use_with gmp) + else GMP='' + fi + + # aldor is not yet in portage + econf --disable-aldor --with-lisp=${LISP} $(use_with X x) ${GMP} +} + +src_compile() { + # bug #300132 + emake -j1 +} + +src_test() { + emake -j1 all-input +} + +src_install() { + emake -j1 DESTDIR="${D}" install + dodoc README.rst FAQ + + if use emacs; then + sed -e "s|(setq load-path (cons (quote \"/usr/$(get_libdir)/fricas/emacs\") load-path)) ||" \ + -i "${D}"/usr/bin/efricas \ + || die "sed efricas failed" + elisp-install ${PN} "${D}"/usr/$(get_libdir)/${PN}/emacs/*.el + elisp-make-site-file 64${PN}-gentoo.el + else + rm "${D}"/usr/bin/efricas || die "rm efricas failed" + fi + rm -r "${D}"/usr/$(get_libdir)/${PN}/emacs || die "rm -r emacs failed" +} + +pkg_postinst() { + use emacs && elisp-site-regen +} + +pkg_postrm() { + use emacs && elisp-site-regen +} |