# Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sci-biology/ncbi-tools/ncbi-tools-20050605-r1.ebuild,v 1.3 2005/11/16 16:52:54 ribosome Exp $ inherit flag-o-matic toolchain-funcs eutils DESCRIPTION="Development toolkit and applications (BLAST, entrez, ddv, udv, sequin...) for computational biology" LICENSE="public-domain" HOMEPAGE="http://www.ncbi.nlm.nih.gov/" SRC_URI="mirror://gentoo/${P}.tar.gz doc? ( mirror://gentoo/${PN}-sdk-doc.tar.bz2 ) mpi? ( mirror://gentoo/mpiBLAST-1.4.0.tgz )" SLOT="0" KEYWORDS="~alpha ~amd64 ~ppc ~ppc-macos ~ppc64 ~sparc ~x86" IUSE="doc mpi X" DEPEND="app-shells/tcsh dev-lang/perl media-libs/libpng mpi? ( virtual/mpi ) X? ( virtual/x11 virtual/motif )" S="${WORKDIR}/ncbi" pkg_setup() { echo ewarn 'It is important to note that the NCBI tools (especially the X' ewarn 'applications) are known to have compilation and run-time' ewarn 'problems when compiled with agressive compilation flags. The' ewarn '"-O3" flag is filtered by the ebuild on the x86 architecture if' ewarn 'X support is enabled. If you experience difficulties with this' ewarn 'package and use agressive "CFLAGS", lower the "CFLAGS" and try' ewarn 'to install the NCBI tools again.' echo } src_unpack() { unpack ${A} if use ppc64; then cd "${S}" epatch "${FILESDIR}"/${P}-lop.patch fi if use mpi; then cd "${S}" epatch "${WORKDIR}"/mpiblast-1.4.0/ncbi_Jun2005_evalue.patch fi if ! use X; then cd "${S}"/make sed -e "s:\#set HAVE_OGL=0:set HAVE_OGL=0:" \ -e "s:\#set HAVE_MOTIF=0:set HAVE_MOTIF=0:" \ -i makedis.csh || die else if use x86; then # X applications segfault on startup on x86 with -O3. replace-flags '-O3' '-O2' fi fi # Apply user C flags... cd "${S}"/platform # ... on x86... sed -e "s/NCBI_CFLAGS1 = -c/NCBI_CFLAGS1 = -c ${CFLAGS}/" \ -e "s/NCBI_LDFLAGS1 = -O3 -mcpu=pentium4/NCBI_LDFLAGS1 = ${CFLAGS}/" \ -e "s/NCBI_OPTFLAG = -O3 -mcpu=pentium4/NCBI_OPTFLAG = ${CFLAGS}/" \ -i linux-x86.ncbi.mk || die # ... on alpha... sed -e "s/NCBI_CFLAGS1 = -c/NCBI_CFLAGS1 = -c ${CFLAGS}/" \ -e "s/NCBI_LDFLAGS1 = -O3 -mieee/NCBI_LDFLAGS1 = -mieee ${CFLAGS}/" \ -e "s/NCBI_OPTFLAG = -O3 -mieee/NCBI_OPTFLAG = -mieee ${CFLAGS}/" \ -i linux-alpha.ncbi.mk || die # ... on hppa... sed -e "s/NCBI_CFLAGS1 = -c/NCBI_CFLAGS1 = -c ${CFLAGS}/" \ -e "s/NCBI_LDFLAGS1 = -O2/NCBI_LDFLAGS1 = ${CFLAGS}/" \ -e "s/NCBI_OPTFLAG = -O2/NCBI_OPTFLAG = ${CFLAGS}/" \ -i hppalinux.ncbi.mk || die # ... on ppc... sed -e "s/NCBI_CFLAGS1 = -c/NCBI_CFLAGS1 = -c ${CFLAGS}/" \ -e "s/NCBI_LDFLAGS1 = -O2/NCBI_LDFLAGS1 = ${CFLAGS}/" \ -e "s/NCBI_OPTFLAG = -O2/NCBI_OPTFLAG = ${CFLAGS}/" \ -i ppclinux.ncbi.mk || die # ... on generic Linux. sed -e "s/NCBI_CFLAGS1 = -c/NCBI_CFLAGS1 = -c ${CFLAGS}/" \ -e "s/NCBI_LDFLAGS1 = -O3/NCBI_LDFLAGS1 = ${CFLAGS}/" \ -e "s/NCBI_OPTFLAG = -O3/NCBI_OPTFLAG = ${CFLAGS}/" \ -i linux.ncbi.mk || die # Put in our MAKEOPTS (doesn't work). # sed -e "s:make \$MFLG:make ${MAKEOPTS}:" -i ncbi/make/makedis.csh # Set C compiler... # ... on x86... sed -i -e "s/NCBI_CC = gcc/NCBI_CC = $(tc-getCC)/" linux-x86.ncbi.mk || die # ... on alpha... sed -i -e "s/NCBI_CC = gcc/NCBI_CC = $(tc-getCC)/" linux-alpha.ncbi.mk || die # ... on hppa... sed -i -e "s/NCBI_CC = gcc/NCBI_CC = $(tc-getCC)/" hppalinux.ncbi.mk || die # ... on ppc... sed -i -e "s/NCBI_CC = gcc/NCBI_CC = $(tc-getCC)/" ppclinux.ncbi.mk || die # ... on generic Linux. sed -i -e "s/NCBI_CC = gcc/NCBI_CC = $(tc-getCC)/" linux.ncbi.mk || die } src_compile() { cd "${WORKDIR}" ncbi/make/makedis.csh || die mkdir "${S}"/cgi mkdir "${S}"/real mv "${S}"/bin/*.cgi "${S}"/cgi mv "${S}"/bin/*.REAL "${S}"/real if use mpi; then cd "${WORKDIR}"/mpiblast-1.4.0 econf --with-ncbi="${WORKDIR}"/ncbi --with-mpi=/usr || die emake || die fi } src_install() { dobin "${S}"/bin/* dolib "${S}"/lib/* mkdir -p "${D}"/usr/include/ncbi cp -RL "${S}"/include/* "${D}"/usr/include/ncbi if use mpi; then cd "${WORKDIR}"/mpiblast-1.4.0 make install DESTDIR="${D}" || die fi # TODO: Web apps #insinto /usr/share/ncbi/lib/cgi #doins ${S}/cgi/* #insinto /usr/share/ncbi/lib/real #doins ${S}/real/* # TODO: Add support for wwwblast. # Basic documentation dodoc "${S}"/{README,VERSION,doc/{*.txt,README.asn2xml}} newdoc "${S}"/doc/fa2htgs/README README.fa2htgs newdoc "${S}"/config/README README.config newdoc "${S}"/network/encrypt/README README.encrypt newdoc "${S}"/network/nsclilib/readme README.nsclilib newdoc "${S}"/sequin/README README.sequin doman "${S}"/doc/man/* # Hypertext user documentation dohtml "${S}"/{README.html,doc/{*.html *.gif}} insinto /usr/share/doc/${PF}/html/blast doins "${S}"/doc/blast/* # Developer documentation if use doc; then # "socks" documentation SOCKS="network/socks/socks.cstc.4.2" insinto /usr/share/doc/${PF}/socks doins "${S}"/${SOCKS}/{CHANGES,How_to_SOCKSify,README.{1st,4.{0,1,2},DK},What_are_the_risks,What_SOCKS_expects} newins "${S}"/${SOCKS}/libident/README README.libident doins "${S}"/${SOCKS}/sockd/sockd.conf.sample doman "${S}"/${SOCKS}/{doc/*.{1,5,8},libident/ident.3} # "regexp" documentation insinto /usr/share/doc/${PF}/regexp doins "${S}"/regexp/doc/{AUTHORS,NEWS,README,Tech.Notes,*.txt} insinto /usr/share/doc/${PF}/regexp/html doins "${S}"/regexp/doc/*.html doman "${S}"/regexp/doc/*.{1,3} # Hypertext SDK documentation insinto /usr/share/doc/${PF}/html/sdk doins "${WORKDIR}"/${PN}-sdk-doc/* # Demo programs mkdir "${D}"/usr/share/ncbi mv "${S}"/demo "${D}"/usr/share/ncbi/demo mv "${S}"/regexp/demo "${D}"/usr/share/ncbi/demo/regexp mv "${S}"/regexp/test "${D}"/usr/share/ncbi/demo/regexp/test fi # Shared data (similarity matrices and such) and database directory. insinto /usr/share/ncbi/data doins "${S}"/data/* dodir /usr/share/ncbi/formatdb # Default config file to set the path for shared data. insinto /etc/ncbi newins "${FILESDIR}"/ncbirc .ncbirc # Env file to set the location of the config file and BLAST databases. newenvd "${FILESDIR}"/21ncbi-r1 21ncbi }