diff options
author | Andrey Grozin <grozin@gentoo.org> | 2023-10-15 15:26:51 +0700 |
---|---|---|
committer | Andrey Grozin <grozin@gentoo.org> | 2023-10-15 15:27:15 +0700 |
commit | cc71105828670c0a9d7314c938dfc806fac4a95c (patch) | |
tree | a39c9a4d312886d9e4637b44556311edef374b81 /sci-mathematics | |
parent | net-misc/smb4k: Stabilize 3.2.3 amd64, #915772 (diff) | |
download | gentoo-cc71105828670c0a9d7314c938dfc806fac4a95c.tar.gz gentoo-cc71105828670c0a9d7314c938dfc806fac4a95c.tar.bz2 gentoo-cc71105828670c0a9d7314c938dfc806fac4a95c.zip |
sci-mathematics/fricas: now compiles with sbcl-2.3.9
Signed-off-by: Andrey Grozin <grozin@gentoo.org>
Diffstat (limited to 'sci-mathematics')
-rw-r--r-- | sci-mathematics/fricas/files/fricas-sbcl-2.3.9.patch | 61 | ||||
-rw-r--r-- | sci-mathematics/fricas/fricas-1.3.9-r2.ebuild | 113 |
2 files changed, 174 insertions, 0 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 new file mode 100644 index 000000000000..6f7440afecf5 --- /dev/null +++ b/sci-mathematics/fricas/files/fricas-sbcl-2.3.9.patch @@ -0,0 +1,61 @@ +diff --git a/src/lisp/num_gmp.lisp b/src/lisp/num_gmp.lisp +index b58001e..9538e3c 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 ++ ++(defmacro negate_bignum(x) ++ (let ((sym2 ++ (find-symbol "NEGATE-BIGNUM-NOT-FULLY-NORMALIZED" "SB-BIGNUM"))) ++ (if sym2 ++ `(,sym2 ,x) ++ ;;; 'read-from-string' looks silly, but here we want error ++ ;;; if NEGATE-BIGNUM is absent from SB-BIGNUM ++ (let ((sym1 (read-from-string "SB-BIGNUM::NEGATE-BIGNUM"))) ++ `(,sym1 ,x nil)) ++ ) ++ ) ++) ++ + (defun gmp-bignum-isqrt (x) + (let* ((len-x (sb-bignum::%bignum-length x)) + (len-res (ceiling (+ 1 len-x) 2)) +@@ -652,8 +666,8 @@ + (sb-bignum::%bignum-length a))) + (b-plusp (sb-bignum::%bignum-0-or-plusp b + (sb-bignum::%bignum-length b))) +- (a (if a-plusp a (sb-bignum::negate-bignum a))) +- (b (if b-plusp b (sb-bignum::negate-bignum b))) ++ (a (if a-plusp a (negate_bignum a))) ++ (b (if b-plusp b (negate_bignum b))) + (len-a (sb-bignum::%bignum-length a)) + (len-b (sb-bignum::%bignum-length b)) + (len-res (+ len-a len-b)) +@@ -697,10 +711,10 @@ + (let* ( + (nx (if (sb-bignum::%bignum-0-or-plusp x (sb-bignum::%bignum-length x)) + (sb-bignum::copy-bignum x) +- (sb-bignum::negate-bignum x nil))) ++ (negate_bignum x))) + (ny (if (sb-bignum::%bignum-0-or-plusp y (sb-bignum::%bignum-length y)) + (sb-bignum::copy-bignum y) +- (sb-bignum::negate-bignum y nil))) ++ (negate_bignum y))) + (xl (sb-bignum::%bignum-length nx)) + (yl (sb-bignum::%bignum-length ny)) + (rl (if (< xl yl) xl yl)) +@@ -735,9 +749,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 +- (sb-bignum::negate-bignum x nil))) ++ (negate_bignum x))) + (ny (if y-plusp y +- (sb-bignum::negate-bignum y nil))) ++ (negate_bignum y))) + (len-x (sb-bignum::%bignum-length nx)) + (len-y (sb-bignum::%bignum-length ny)) + (q nil) diff --git a/sci-mathematics/fricas/fricas-1.3.9-r2.ebuild b/sci-mathematics/fricas/fricas-1.3.9-r2.ebuild new file mode 100644 index 000000000000..07f9242ca06b --- /dev/null +++ b/sci-mathematics/fricas/fricas-1.3.9-r2.ebuild @@ -0,0 +1,113 @@ +# 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" + +# Supported lisps, number 0 is the default +LISPS=( sbcl cmucl gcl ecl clisp clozurecl ) +# Version restrictions, . means no restrictions +REST=( . . . . . . ) +# command name: . means just ${LISP} +COMS=( . lisp . . . ccl ) + +IUSE="${LISPS[*]} X emacs gmp" +RDEPEND="X? ( x11-libs/libXpm x11-libs/libICE ) + emacs? ( >=app-editors/emacs-23.1:* ) + gmp? ( dev-libs/gmp:= )" + +# Generating lisp deps +n=${#LISPS[*]} +for ((n--; n > 0; n--)); do + LISP=${LISPS[$n]} + if [ "${REST[$n]}" = "." ]; then + DEP="dev-lisp/${LISP}" + else + DEP="${REST[$n]}" + fi + RDEPEND="${RDEPEND} ${LISP}? ( ${DEP}:= ) !${LISP}? (" +done +if [ "${REST[0]}" = "." ]; then + DEP="dev-lisp/${LISPS[0]}" +else + DEP="${REST[0]}" +fi +RDEPEND="${RDEPEND} ${DEP}:=" +n=${#LISPS[*]} +for ((n--; n > 0; n--)); do + RDEPEND="${RDEPEND} )" +done + +DEPEND="${RDEPEND}" + +PATCHES=( "${FILESDIR}"/${PN}-sbcl-2.3.9.patch ) + +# necessary for clisp and gcl +RESTRICT="strip" + +src_configure() { + local LISP n GMP + LISP=sbcl + n=${#LISPS[*]} + for ((n--; n > 0; n--)); do + if use ${LISPS[$n]}; then + LISP=${COMS[$n]} + if [ "${LISP}" = "." ]; then + LISP=${LISPS[$n]} + fi + fi + done + einfo "Using lisp: ${LISP}" + + # bug #650788 + if [[ ${LISP} = sbcl || ${LISP} = ccl ]] + 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 +} |