public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michael Orlitzky" <mjo@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sci-mathematics/maxima/
Date: Mon, 29 Mar 2021 13:47:12 +0000 (UTC)	[thread overview]
Message-ID: <1617021725.33d71eafab35a8f6083ebeeaa849a7c0a5d82e29.mjo@gentoo> (raw)

commit:     33d71eafab35a8f6083ebeeaa849a7c0a5d82e29
Author:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 27 11:35:44 2021 +0000
Commit:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
CommitDate: Mon Mar 29 12:42:05 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=33d71eaf

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 <AT> gentoo.org>

 sci-mathematics/maxima/maxima-5.44.0-r5.ebuild | 231 +++++++++++++++++++++++++
 sci-mathematics/maxima/metadata.xml            |   4 +-
 2 files changed, 234 insertions(+), 1 deletion(-)

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 00000000000..e0dbc91fdb0
--- /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 d87f8aea9f0..154d5891d70 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>


             reply	other threads:[~2021-03-29 13:47 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-29 13:47 Michael Orlitzky [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-09-01 20:56 [gentoo-commits] repo/gentoo:master commit in: sci-mathematics/maxima/ Michael Orlitzky
2024-06-04  6:33 Andrey Grozin
2023-11-22 23:18 Michael Orlitzky
2023-07-22 15:19 Andrey Grozin
2023-06-01 15:38 Andrey Grozin
2023-06-01 15:37 Andrey Grozin
2023-05-25  8:32 Andrey Grozin
2023-04-23  5:36 Jakov Smolić
2023-04-19 11:52 Sam James
2023-02-16 13:18 Andrey Grozin
2023-01-22  6:29 Andrey Grozin
2022-09-19 19:49 Andreas Sturmlechner
2022-09-16  8:31 Ulrich Müller
2022-09-15  6:47 Agostino Sarubbo
2022-09-14 12:52 Michael Orlitzky
2022-04-14 11:46 Andrey Grozin
2022-04-13  8:48 Andrey Grozin
2022-04-13  8:48 Andrey Grozin
2021-11-18 23:50 Georgy Yakovlev
2021-07-17 18:58 Michael Orlitzky
2021-06-22 22:38 Sam James
2021-06-21  4:09 Andrey Grozin
2021-06-21  4:07 Andrey Grozin
2021-06-09 10:29 Andrey Grozin
2021-04-02  1:03 Michael Orlitzky
2021-03-30 12:43 Michael Orlitzky
2021-03-29 13:47 Michael Orlitzky
2021-03-26  0:57 Michael Orlitzky
2020-11-05 20:25 Andreas Sturmlechner
2020-07-23  7:03 Kent Fredric
2020-06-08 14:10 Andrey Grozin
2020-04-07 15:08 Andrey Grozin
2020-03-27  3:49 Michael Orlitzky
2020-03-27  3:44 Michael Orlitzky
2020-01-30 15:44 Andrey Grozin
2020-01-30 15:42 Andrey Grozin
2019-12-20 22:49 Ulrich Müller
2019-12-20 10:11 Ulrich Müller
2019-04-28 22:06 Thomas Deutschmann
2019-04-08 14:13 Mikle Kolyada
2019-03-15 15:38 Andrey Grozin
2019-03-12 18:32 Andrey Grozin
2018-10-18 16:51 Andrey Grozin
2018-09-05 15:22 Andrey Grozin
2018-01-07 16:57 Ulrich Müller
2017-12-31 13:32 Andrey Grozin
2017-12-31  5:00 Andrey Grozin
2017-10-05 15:59 Andrey Grozin
2017-05-30 19:38 Andrey Grozin
2016-12-29 10:05 Agostino Sarubbo
2016-12-11 12:04 Andrey Grozin
2016-06-06 11:53 Andrey Grozin
2016-05-14  7:54 Andrey Grozin
2016-05-14  7:53 Andrey Grozin
2016-03-18 11:18 Andrey Grozin
2016-03-05 16:26 Mikle Kolyada
2015-12-25 11:47 Andrey Grozin
2015-12-23 11:29 Ulrich Müller
2015-12-23  8:20 Ulrich Müller
2015-11-27 12:08 Andrey Grozin
2015-11-10  5:09 Andrey Grozin
2015-11-10  5:07 Andrey Grozin
2015-09-18  4:25 Andrey Grozin
2015-09-18  4:23 Andrey Grozin
2015-09-03 18:57 Andrey Grozin
2015-08-26 12:31 Guilherme Amadio

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1617021725.33d71eafab35a8f6083ebeeaa849a7c0a5d82e29.mjo@gentoo \
    --to=mjo@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox