diff options
author | Michael Orlitzky <mjo@gentoo.org> | 2021-03-27 07:35:44 -0400 |
---|---|---|
committer | Michael Orlitzky <mjo@gentoo.org> | 2021-03-29 08:42:05 -0400 |
commit | 33d71eafab35a8f6083ebeeaa849a7c0a5d82e29 (patch) | |
tree | 120dc1535883e80174363c6833b09a6257a3af73 /sci-mathematics | |
parent | sys-boot/os-prober: fix doexe warning (diff) | |
download | gentoo-33d71eafab35a8f6083ebeeaa849a7c0a5d82e29.tar.gz gentoo-33d71eafab35a8f6083ebeeaa849a7c0a5d82e29.tar.bz2 gentoo-33d71eafab35a8f6083ebeeaa849a7c0a5d82e29.zip |
sci-mathematics/maxima: new revision with separate ccl/ccl64 support.
In Gentoo, both the 32-bit and 64-bit versions of clozurecl are
provided by the same package and executable name (ccl). Maxima
however treats them as separate lisp implementations, with two
complete sets of configure flags.
To make that work correctly in the ebuild, we'd need to have a bunch
of special cases for the user's architecture. Instead, this commit
adds a separate "clozurecl64" USE flag to complement the existing,
now 32-bit, "clozurecl" flag. This will allow us to mask the 32-bit
flag in the 64-bit profiles and vice-versa.
Closes: https://bugs.gentoo.org/665364
Closes: https://bugs.gentoo.org/715278
Package-Manager: Portage-3.0.13, Repoman-3.0.2
Signed-off-by: Michael Orlitzky <mjo@gentoo.org>
Diffstat (limited to 'sci-mathematics')
-rw-r--r-- | sci-mathematics/maxima/maxima-5.44.0-r5.ebuild | 231 | ||||
-rw-r--r-- | sci-mathematics/maxima/metadata.xml | 4 |
2 files changed, 234 insertions, 1 deletions
diff --git a/sci-mathematics/maxima/maxima-5.44.0-r5.ebuild b/sci-mathematics/maxima/maxima-5.44.0-r5.ebuild new file mode 100644 index 000000000000..e0dbc91fdb0b --- /dev/null +++ b/sci-mathematics/maxima/maxima-5.44.0-r5.ebuild @@ -0,0 +1,231 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{7,8} ) + +inherit autotools elisp-common eutils flag-o-matic python-single-r1 xdg-utils + +DESCRIPTION="Free computer algebra environment based on Macsyma" +HOMEPAGE="http://maxima.sourceforge.net/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz" + +LICENSE="GPL-2 GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" + +IUSE="clisp clozurecl clozurecl64 cmucl ecls emacs gcl gui nls +sbcl unicode vtk X test" +RESTRICT="!test? ( test )" + +# Languages +LANGS="de es pt pt_BR" +for lang in ${LANGS}; do + IUSE="${IUSE} l10n_${lang/_/-}" +done + +LISP_DEPEND=" + clisp? ( dev-lisp/clisp ) + clozurecl? ( dev-lisp/clozurecl app-misc/rlwrap ) + clozurecl64? ( dev-lisp/clozurecl app-misc/rlwrap ) + cmucl? ( dev-lisp/cmucl app-misc/rlwrap ) + ecls? ( dev-lisp/ecls app-misc/rlwrap ) + gcl? ( dev-lisp/gcl ) + sbcl? ( dev-lisp/sbcl app-misc/rlwrap ) +" + +# Python is used in e.g. doc/info/build_html.sh to build the docs. +# LISP_DEPEND is included in both BDEPEND and DEPEND because the various +# lisp engines are used to both compile and run maxima. It's possible +# that they don't (all?) need to be listed in DEPEND; who knows. +BDEPEND=" + ${PYTHON_DEPS} + ${LISP_DEPEND} + test? ( sci-visualization/gnuplot ) + sys-apps/texinfo +" + +DEPEND=" + ${LISP_DEPEND} + emacs? ( >=app-editors/emacs-23.1:* ) + gui? ( dev-lang/tk:0 ) +" + +# texlive-latexrecommended needed by imaxima for breqn.sty +# +# VTK is an optional plotting backend that can be enabled by +# running "draw_renderer: 'vtk;" within maxima. +# +# It's NON-optional for the scene() command, but that command is +# currently useless since Tcl/Tk support was dropped in sci-libs/vtk. +# Thus we include VTK only as an optional dependency. +# +# We require app-misc/rlwrap for any lisps that don't support readline +# themselves. +RDEPEND=" + ${DEPEND} + X? ( + x11-misc/xdg-utils + sci-visualization/gnuplot[gd] + vtk? ( + ${PYTHON_DEPS} + sci-libs/vtk[python,rendering,${PYTHON_SINGLE_USEDEP}] + ) + ) + emacs? ( + virtual/latex-base + app-emacs/auctex + app-text/ghostscript-gpl + dev-texlive/texlive-latexrecommended + )" + +# Maxima can make use of X features like plotting (and launching a PNG +# viewer) from the console, but you can't use the xmaxima GUI without X. +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + || ( clisp clozurecl clozurecl64 cmucl ecls gcl sbcl ) + gui? ( X )" + +TEXMF="${EPREFIX}"/usr/share/texmf-site + +pkg_setup() { + # Set the PYTHON variable to whatever it should be. + python-single-r1_pkg_setup +} + +PATCHES=( + "${FILESDIR}/support-new-vtk.patch" + "${FILESDIR}/dont-hardcode-python.patch" + "${FILESDIR}/xdg-utils-1.patch" + "${FILESDIR}/wish-2.patch" + "${FILESDIR}/rmaxima-0.patch" + "${FILESDIR}/emacs-0.patch" + "${FILESDIR}/clisp-1.patch" + "${FILESDIR}/clozurecl-3.patch" + "${FILESDIR}/ecls-4.patch" + "${FILESDIR}/cmucl-1.patch" + "${FILESDIR}/sbcl-2.patch" +) + +src_prepare() { + default + + # bug #343331 + rm share/Makefile.in || die + rm src/Makefile.in || die + touch src/*.mk + touch src/Makefile.am + eautoreconf +} + +src_configure() { + local CONFS="" + + # enable existing translated doc + if use nls; then + for lang in ${LANGS}; do + if use "l10n_${lang/_/-}"; then + CONFS="${CONFS} --enable-lang-${lang}" + use unicode && CONFS="${CONFS} --enable-lang-${lang}-utf8" + fi + done + fi + + # Using raw-ldflags fixes the error, + # + # x86_64-pc-linux-gnu/bin/ld: fatal error: -O1 -Wl: invalid option + # value (expected an integer): 1 -Wl + # + # when building the maxima.fas library for ECL. See upstream bugs: + # + # * https://sourceforge.net/p/maxima/bugs/3759/ + # * https://gitlab.com/embeddable-common-lisp/ecl/-/issues/636 + # + # The 32-bit and 64-bit version of the clozurecl executable + # are both called "ccl" on Gentoo, so we need the additional + # use_with for clozurecl64. See bugs 665364 and 715278.... + # + # The usex works around https://sourceforge.net/p/maxima/bugs/3757/ + # + econf ${CONFS} \ + LDFLAGS="$(raw-ldflags)" \ + $(use_enable clisp) \ + $(use_enable clozurecl ccl) \ + $(use_enable clozurecl64 ccl64) \ + $(usex clozurecl64 "--with-ccl64=ccl" "") \ + $(use_enable cmucl) \ + $(use_enable ecls ecl) \ + $(use_enable emacs) \ + $(use_enable gcl) \ + $(use_with gui wish) \ + $(use_enable sbcl) \ + --with-lispdir="${EPREFIX}/${SITELISP}/${PN}" +} + +src_compile() { + # The variable PYTHONBIN is used in one place while building the + # German documentation. Some day that script should be converted + # to use the value of @PYTHON@ obtained during ./configure. + emake PYTHONBIN="${PYTHON}" + if use emacs; then + pushd interfaces/emacs/emaxima > /dev/null + elisp-compile *.el + popd > /dev/null + pushd interfaces/emacs/imaxima > /dev/null + BYTECOMPFLAGS="-L . -L ../emaxima" + elisp-compile *.el + popd > /dev/null + fi +} + +src_install() { + docompress -x /usr/share/info + emake DESTDIR="${D}" emacsdir="${EPREFIX}/${SITELISP}/${PN}" install + + use gui && make_desktop_entry xmaxima xmaxima \ + /usr/share/${PN}/${PV}/xmaxima/maxima-new.png \ + "Science;Math;Education" + + # do not use dodoc because interfaces can't read compressed files + # read COPYING before attempt to remove it from dodoc + insinto /usr/share/${PN}/${PV}/doc + doins AUTHORS COPYING README README.lisps + dodir /usr/share/doc + dosym ../${PN}/${PV}/doc /usr/share/doc/${PF} + + if use emacs; then + elisp-install ${PN} interfaces/emacs/{emaxima,imaxima}/*.{el,elc,lisp} + elisp-site-file-install "${FILESDIR}"/50maxima-gentoo-1.el + + rm "${ED}"/${SITELISP}/${PN}/emaxima.sty || die + insinto ${TEXMF}/tex/latex/emaxima + doins interfaces/emacs/emaxima/emaxima.sty + + insinto /usr/share/${PN}/${PV}/doc/imaxima + doins interfaces/emacs/imaxima/README + doins -r interfaces/emacs/imaxima/imath-example + fi + + if use ecls; then + # Use ECL to find the path where it expects to load packages from. + ECLLIB=$(ecl -eval "(princ (SI:GET-LIBRARY-PATHNAME))" -eval "(quit)") + insinto "${ECLLIB#${EPREFIX}}" + doins src/binary-ecl/maxima.fas + fi +} + +pkg_postinst() { + xdg_mimeinfo_database_update + if use emacs; then + elisp-site-regen + mktexlsr + fi +} + +pkg_postrm() { + xdg_mimeinfo_database_update + if use emacs; then + elisp-site-regen + mktexlsr + fi +} diff --git a/sci-mathematics/maxima/metadata.xml b/sci-mathematics/maxima/metadata.xml index d87f8aea9f05..154d5891d70c 100644 --- a/sci-mathematics/maxima/metadata.xml +++ b/sci-mathematics/maxima/metadata.xml @@ -18,7 +18,9 @@ <use> <flag name="clisp">Compile maxima with GNU CLISP (<pkg>dev-lisp/clisp</pkg>)</flag> - <flag name="clozurecl">Compile maxima with Clozure Common Lisp + <flag name="clozurecl">Compile maxima with 32-bit Clozure Common Lisp + (<pkg>dev-lisp/clozurecl</pkg>)</flag> + <flag name="clozurecl64">Compile maxima with 64-bit Clozure Common Lisp (<pkg>dev-lisp/clozurecl</pkg>)</flag> <flag name="cmucl">Compile maxima with CMU Common Lisp (<pkg>dev-lisp/cmucl</pkg>)</flag> |