summaryrefslogtreecommitdiff
path: root/sci-mathematics/fricas
diff options
context:
space:
mode:
Diffstat (limited to 'sci-mathematics/fricas')
-rw-r--r--sci-mathematics/fricas/Manifest2
-rw-r--r--sci-mathematics/fricas/files/fricas-sbcl-2.3.9.patch61
-rw-r--r--sci-mathematics/fricas/fricas-1.3.9-r2.ebuild113
3 files changed, 176 insertions, 0 deletions
diff --git a/sci-mathematics/fricas/Manifest b/sci-mathematics/fricas/Manifest
index 6c85df3989f6..7c7ce2deacc0 100644
--- a/sci-mathematics/fricas/Manifest
+++ b/sci-mathematics/fricas/Manifest
@@ -1,3 +1,5 @@
+AUX fricas-sbcl-2.3.9.patch 2340 BLAKE2B 3cada471742b006a072f1d9a732fc78d0be97af762b8b6165ab8e929a9cb34ec631f10c505c90394032e46ea00895f4ff90e52139b9e5acc14dbe16a7708a3fb SHA512 44d722e989f458d83546efb81e7025e32aaafcd0b47c1bf2765f292bc9b01e1890b25ea5be8b4baeda3bedecd3efd9044420ceb866b1e93177357b368e5395e8
DIST fricas-1.3.9-full.tar.bz2 10949173 BLAKE2B c535d2a384fa55db53b6901d3ba5d1cc8eca35ccf67a2664f934da427a808b5adc7a5522b935f5dcff89795c0ca5816818d9cf37399b6f9bdc63cfe4d622a7c3 SHA512 9cfcb8bad52550a46216509154d5c06dac23625bc14d504a1febbea7ff771fd3172f91c2824df51375b8d85adc19959a5cbbfa2b77a0095ca37e8a4d4b8cc405
EBUILD fricas-1.3.9-r1.ebuild 2474 BLAKE2B e6f86a8f209b3fefb4dd94ca0b89cf67f3d8fdeaccd52b0606f3c86747ed3f4d21310e77f7f177b93575876fdc7ca0d17fa3068789b8e90cb20f81c42cb4f06a SHA512 48f2e2acccf8808ba776468a7c64c1f1f18518ee53bd3d59e5e8d49fcc41071938319883c0b6b1dec44134fbae81e1379c8d5bc997955313790edb044cac7938
+EBUILD fricas-1.3.9-r2.ebuild 2470 BLAKE2B 073fb7b9a284c23914c76c8fefac3ba4f4282d2171dec92d8ec01b26857413a8064f24468143bbc5a420e7f6c29ed26c0b78041b609753a575fa0b0fda4e39de SHA512 27a397054365df927c4812b471c9a27f837736d09205b0d269db2035b4828dfe14afccc6bfee5ff0ddfa9cab04cf92a02285597b3e412df090b7e8198443a680
MISC metadata.xml 1115 BLAKE2B dc1fcf98b2fb9df013ab256c4f81952ac5808f2761ae66479106482260b5328d337755fcb5208fa67ff7448c368d5db32a0c6c12537eaaa64d22a16cf32962ee SHA512 686316e67d08d27e48be2e544657c27ca20b8303b097b2154d18a2873ce39fe27c33be61a1922a3e61f89fadc9f4f6d204c9f591e670bcbf46ff2c71200f6660
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
+}