| # Copyright 1999-2014 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI="3" |
| |
| inherit elisp-common multilib eutils flag-o-matic java-pkg-opt-2 |
| |
| MY_P=${PN}${PV/_p/-} |
| MY_P=${MY_P/_alpha*/-alpha} |
| MY_P=${MY_P/_beta*/-beta} |
| |
| BGL_RELEASE=${PV/_*/} |
| PATCHSET="1" |
| |
| DESCRIPTION="Bigloo is a Scheme implementation" |
| HOMEPAGE="http://www-sop.inria.fr/indes/fp/Bigloo/bigloo.html" |
| SRC_URI="ftp://ftp-sop.inria.fr/members/Cyprien.Nicolas/mirror/bigloo-${BGL_RELEASE}-patchset-${PATCHSET}.tbz2 |
| ftp://ftp-sop.inria.fr/indes/fp/Bigloo/${MY_P}.tar.gz" |
| |
| LICENSE="GPL-2" |
| SLOT="0" |
| KEYWORDS="~amd64 ~ppc ~x86" |
| IUSE="bglpkg calendar crypto debug doc emacs gmp gstreamer java mail multimedia packrat sqlite srfi1 srfi27 ssl text threads web" |
| |
| # bug 254916 for >=dev-libs/boehm-gc-7.1 |
| DEPEND=">=dev-libs/boehm-gc-7.1[threads?] |
| emacs? ( virtual/emacs ) |
| gmp? ( dev-libs/gmp ) |
| gstreamer? ( media-libs/gstreamer:0.10 media-libs/gst-plugins-base:0.10 ) |
| java? ( >=virtual/jdk-1.5 app-arch/zip ) |
| sqlite? ( dev-db/sqlite:3 ) |
| ssl? ( dev-libs/openssl ) |
| " |
| RDEPEND="${DEPEND}" |
| |
| S=${WORKDIR}/${MY_P/-[ab]*/} |
| |
| SITEFILE="50bigloo-gentoo.el" |
| |
| pkg_setup() { |
| if use gstreamer; then |
| if ! use threads; then |
| die "USE Dependency: 'gstreamer' needs 'threads'. You may enable 'threads', or disable 'gstreamer'." |
| fi |
| |
| if ! use multimedia; then |
| die "USE Dependency: 'gstreamer' needs 'multimedia'." |
| fi |
| fi |
| |
| if use packrat && ! use srfi1; then |
| die "USE Dependency: 'packrat' needs 'srfi1'." |
| fi |
| |
| if use srfi27; then |
| # 'dev-scheme/bigloo srfi27' should be added in arch/amd64/package.use.mask |
| if use amd64; then |
| ewarn "srfi27 is known to only work on 32-bit architectures." \ |
| "The USE is ignored on amd64." |
| elif ! use gmp; then |
| die "USE Dependency: 'srfi27' needs 'gmp'." |
| fi |
| fi |
| |
| if use bglpkg && ! (use sqlite && use web); then |
| die "USE Dependency: 'bglpkg' needs both 'sqlite' and 'web'." |
| fi |
| |
| java-pkg-opt-2_pkg_setup |
| } |
| |
| src_prepare() { |
| EPATCH_SOURCE="${WORKDIR}/patches" EPATCH_SUFFIX="patch" \ |
| EPATCH_FORCE="yes" epatch |
| |
| # bglmem is not built according to the EFLAGS |
| # (which forces LDFLAGS, see emake below) |
| ebegin "Adding EFLAGS to BMEMFLAGS" |
| sed -i 's/BMEMFLAGS[^=]\+= /&$(EFLAGS) /' bde/bmem/Makefile |
| eend $? |
| |
| # Removing bundled boehm-gc |
| rm -rf gc || die |
| } |
| |
| src_configure() { |
| filter-flags -fomit-frame-pointer |
| |
| local myconf="" |
| |
| # Filter Zile emacs replacement. Bug #336717 |
| if use emacs; then |
| myconf="--bee=full --emacs=${EMACS} --lispdir=${SITELISP}/${PN}" |
| else |
| myconf="--emacs=false" |
| fi |
| |
| # dev-java/ibm-jdk-bin fails during configure, bug #331279 |
| # api/crypto java tests show failures, I'm looking into it |
| if use java; then |
| sed -e "s/^\(jcflags=\)\(.*\)/\\1\"\\2 $(java-pkg_javac-args)\"/" \ |
| -e 's/jcflags=$jcflags/jcflags="$jcflags"/'\ |
| -i configure |
| myconf="${myconf} |
| --jvm=yes" |
| fi |
| |
| # No pkglib/pkgcomp in IUSE, I don't see any need besides bglpkg |
| # One or the other could be added upon user request |
| if use bglpkg; then |
| myconf="${myconf} |
| --enable-bglpkg --enable-pkgcomp --enable-pkglib" |
| else |
| myconf="${myconf} |
| --disable-bglpkg --disable-pkgcomp --disable-pkglib" |
| fi |
| |
| # srfi27 management |
| if use amd64; then |
| myconf="${myconf} |
| --disable-srfi27" |
| else |
| myconf="${myconf} |
| $(use_enable srfi27)" |
| fi |
| |
| # Put every non quoted configure opt into myconf, for the einfo below |
| myconf=" |
| --prefix=/usr |
| --libdir=/usr/$(get_libdir) |
| --benchmark=yes |
| --coflags= |
| --customgc=no |
| --sharedbde=no |
| --sharedcompiler=no |
| --strip=no |
| $(use debug && echo --debug) |
| ${myconf} |
| $(use_enable calendar) |
| $(use_enable crypto) |
| $(use_enable gmp) |
| $(use_enable gstreamer) |
| $(use_enable mail) |
| $(use_enable multimedia) |
| $(use_enable packrat) |
| $(use_enable sqlite) |
| $(use_enable srfi1) |
| $(use_enable ssl) |
| $(use_enable text) |
| $(use_enable threads) |
| $(use_enable web) |
| " |
| |
| einfo "Configuring bigloo with:" \ |
| "--ldflags=\"${LDFLAGS}\" $(echo ${myconf} | sed 's/\n\t\t/ /g')" |
| |
| # Bigloo doesn't use autoconf and consequently a lot of options used by econf give errors |
| # Manuel Serrano says: "Please, dont talk to me about autoconf. I simply dont want to hear about it..." |
| ./configure --ldflags="${LDFLAGS}" ${myconf} || die "configure failed" |
| } |
| |
| src_compile() { |
| emake EFLAGS='-ldopt "$(LDFLAGS)"' || die "emake failed" |
| |
| if use emacs; then |
| einfo "Compiling bee..." |
| emake -j1 compile-bee EFLAGS='-ldopt "$(LDFLAGS)"' || die "compiling bee failed" |
| fi |
| } |
| |
| # default thinks that target doesn't exist |
| src_test() { |
| emake -j1 test || die "emake test failed" |
| } |
| |
| src_install() { |
| # Makefile:671:install: install-progs install-docs |
| emake DESTDIR="${D}" install-progs || die "install failed" |
| |
| if use emacs; then |
| einfo "Installing bee..." |
| emake DESTDIR="${D}" install-bee || die "install-bee failed" |
| elisp-site-file-install "${FILESDIR}/${SITEFILE}" |
| else |
| # Fix EMACS*=false in Makefile.config |
| sed -i 's:^\(EMACS=\).*$:\1:' "${D}"/usr/$(get_libdir)/bigloo/${BGL_RELEASE}/Makefile.config \ |
| || die "dosed EMACS failed" |
| sed -i 's:^\(EMACSBRAND=\).*$:\1:' "${D}"/usr/$(get_libdir)/bigloo/${BGL_RELEASE}/Makefile.config \ |
| || die "dosed EMACSBRAND failed" |
| fi |
| |
| dodoc ChangeLog README || die "dodoc failed" |
| newdoc LICENSE COPYING || die "newdoc failed" |
| |
| cd "${S}/manuals" |
| if use doc; then |
| dohtml -r . || die "dohtml failed" |
| doinfo *.info* || die "doinfo failed" |
| fi |
| |
| for man in *.man; do |
| newman ${man} ${man/.man/.1} || die "newman ${man} ${man/.man/.1} failed" |
| done |
| } |
| |
| pkg_postinst() { |
| if use emacs; then |
| elisp-site-regen |
| elog "In order to use the bee-mode, add" |
| elog " (require 'bmacs)" |
| elog "to your ~/.emacs file" |
| fi |
| } |
| |
| pkg_postrm() { |
| use emacs && elisp-site-regen |
| } |