| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=5 |
| |
| inherit autotools elisp-common eutils |
| |
| DESCRIPTION="Free computer algebra environment based on Macsyma" |
| HOMEPAGE="http://maxima.sourceforge.net/" |
| SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz" |
| |
| LICENSE="GPL-2" |
| SLOT="0" |
| KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos" |
| |
| # Supported lisps |
| LISPS=( sbcl cmucl gcl ecls clozurecl clisp ) |
| # <lisp> supports readline: . - no, y - yes |
| SUPP_RL=( . . y . . y ) |
| # . - just --enable-<lisp>, <flag> - --enable-<flag> |
| CONF_FLAG=( . . . ecl ccl . ) |
| # patch file version; . - no patch |
| PATCH_V=( 1 1 . 2 2 1 ) |
| |
| IUSE="latex emacs tk nls unicode xemacs X ${LISPS[*]}" |
| |
| # Languages |
| LANGS="es pt pt_BR" |
| for lang in ${LANGS}; do |
| IUSE="${IUSE} linguas_${lang}" |
| done |
| |
| RDEPEND="X? ( x11-misc/xdg-utils |
| sci-visualization/gnuplot[gd] |
| tk? ( dev-lang/tk:0 ) ) |
| latex? ( virtual/latex-base ) |
| emacs? ( virtual/emacs |
| latex? ( app-emacs/auctex ) ) |
| xemacs? ( app-editors/xemacs |
| latex? ( app-emacs/auctex ) )" |
| |
| PDEPEND="emacs? ( app-emacs/imaxima )" |
| |
| # generating lisp dependencies |
| depends() { |
| local LISP DEP |
| LISP=${LISPS[$1]} |
| DEP="dev-lisp/${LISP}:=" |
| if [ "${SUPP_RL[$1]}" = "." ]; then |
| DEP="${DEP} app-misc/rlwrap" |
| fi |
| echo ${DEP} |
| } |
| |
| n=${#LISPS[*]} |
| for ((n--; n >= 0; n--)); do |
| LISP=${LISPS[${n}]} |
| RDEPEND="${RDEPEND} ${LISP}? ( $(depends ${n}) )" |
| if (( ${n} > 0 )); then |
| DEF_DEP="${DEF_DEP} !${LISP}? ( " |
| fi |
| done |
| |
| # default lisp |
| if use arm; then |
| DEF_LISP=2 # gcl |
| else |
| DEF_LISP=0 # sbcl |
| fi |
| |
| DEF_DEP="${DEF_DEP} `depends ${DEF_LISP}`" |
| |
| n=${#LISPS[*]} |
| for ((n--; n > 0; n--)); do |
| DEF_DEP="${DEF_DEP} )" |
| done |
| |
| unset LISP |
| |
| RDEPEND="${RDEPEND} |
| ${DEF_DEP}" |
| |
| DEPEND="${RDEPEND} |
| sys-apps/texinfo" |
| |
| TEXMF="${EPREFIX}"/usr/share/texmf-site |
| |
| pkg_setup() { |
| local n=${#LISPS[*]} |
| |
| for ((n--; n >= 0; n--)); do |
| use ${LISPS[${n}]} && NLISPS="${NLISPS} ${n}" |
| done |
| |
| if [ -z "${NLISPS}" ]; then |
| ewarn "No lisp specified in USE flags, choosing ${LISPS[${DEF_LISP}]} as default" |
| NLISPS=${DEF_LISP} |
| fi |
| } |
| |
| src_prepare() { |
| local n PATCHES v |
| PATCHES=( imaxima-0 rmaxima-0 wish-1 xdg-utils-0 db-0 ) |
| |
| n=${#PATCHES[*]} |
| for ((n--; n >= 0; n--)); do |
| epatch "${FILESDIR}"/${PATCHES[${n}]}.patch |
| done |
| |
| n=${#LISPS[*]} |
| for ((n--; n >= 0; n--)); do |
| v=${PATCH_V[${n}]} |
| if [ "${v}" != "." ]; then |
| epatch "${FILESDIR}"/${LISPS[${n}]}-${v}.patch |
| fi |
| done |
| |
| # bug #343331 |
| rm share/Makefile.in || die |
| rm src/Makefile.in || die |
| touch src/*.mk |
| touch src/Makefile.am |
| eautoreconf |
| } |
| |
| src_configure() { |
| local CONFS CONF n lang |
| for n in ${NLISPS}; do |
| CONF=${CONF_FLAG[${n}]} |
| if [ ${CONF} = . ]; then |
| CONF=${LISPS[${n}]} |
| fi |
| CONFS="${CONFS} --enable-${CONF}" |
| done |
| |
| # enable existing translated doc |
| if use nls; then |
| for lang in ${LANGS}; do |
| if use "linguas_${lang}"; then |
| CONFS="${CONFS} --enable-lang-${lang}" |
| use unicode && CONFS="${CONFS} --enable-lang-${lang}-utf8" |
| fi |
| done |
| fi |
| |
| econf ${CONFS} $(use_with tk wish) --with-lispdir="${EPREFIX}/${SITELISP}"/${PN} |
| } |
| |
| src_install() { |
| docompress -x /usr/share/info |
| emake DESTDIR="${D}" emacsdir="${EPREFIX}/${SITELISP}/${PN}" install |
| |
| use tk && make_desktop_entry xmaxima xmaxima \ |
| /usr/share/${PN}/${PV}/xmaxima/maxima-new.png \ |
| "Science;Math;Education" |
| |
| if use latex; then |
| insinto ${TEXMF}/tex/latex/emaxima |
| doins interfaces/emacs/emaxima/emaxima.sty |
| fi |
| |
| # 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 || die |
| dodir /usr/share/doc |
| dosym ../${PN}/${PV}/doc /usr/share/doc/${PF} || die |
| |
| if use emacs; then |
| elisp-site-file-install "${FILESDIR}"/50maxima-gentoo.el || die |
| fi |
| |
| # if we use ecls, build an ecls library for maxima |
| if use ecls; then |
| ECLLIB=`ecl -eval "(princ (SI:GET-LIBRARY-PATHNAME))" -eval "(quit)"` |
| insinto "${ECLLIB#${EPREFIX}}" |
| doins src/binary-ecl/maxima.fas |
| fi |
| } |
| |
| pkg_postinst() { |
| use emacs && elisp-site-regen |
| use latex && mktexlsr |
| } |
| |
| pkg_postrm() { |
| use emacs && elisp-site-regen |
| use latex && mktexlsr |
| } |