diff options
Diffstat (limited to 'sci-libs/libbufr')
-rw-r--r-- | sci-libs/libbufr/Manifest | 1 | ||||
-rw-r--r-- | sci-libs/libbufr/files/libbufr-000360-gcc-includes.patch | 15 | ||||
-rw-r--r-- | sci-libs/libbufr/files/libbufr-makefile.patch | 11 | ||||
-rw-r--r-- | sci-libs/libbufr/libbufr-000387.ebuild | 190 | ||||
-rw-r--r-- | sci-libs/libbufr/metadata.xml | 8 |
5 files changed, 225 insertions, 0 deletions
diff --git a/sci-libs/libbufr/Manifest b/sci-libs/libbufr/Manifest new file mode 100644 index 000000000000..da7f5f559411 --- /dev/null +++ b/sci-libs/libbufr/Manifest @@ -0,0 +1 @@ +DIST bufr_000387.tar.gz 3673816 SHA256 bb8c39f15b2d1661ef2d66de8ee1fcaaa195e8cb80023fc3112d3dd816c97745 SHA512 906129809c92b22bd0a73524048128e4a44335eaf8c978bb4d0c3c5f5be7d01ce530e3248eec681b4662840e4ed0270089ddc801dca8f022e7d6cfbc5e4c2967 WHIRLPOOL 43af1997618c1f73fbd8ee6120c4ad8329f648d1bbb09165b5f750e30cd5d49e246cabb4a6b82341e8408ffb042cbd58cb82ed29e0c234a27fa44a684b89c169 diff --git a/sci-libs/libbufr/files/libbufr-000360-gcc-includes.patch b/sci-libs/libbufr/files/libbufr-000360-gcc-includes.patch new file mode 100644 index 000000000000..8b0ac1ce9a65 --- /dev/null +++ b/sci-libs/libbufr/files/libbufr-000360-gcc-includes.patch @@ -0,0 +1,15 @@ +--- examples/bufr_decode.c.orig 2008-09-17 03:02:39.000000000 -0700 ++++ examples/bufr_decode.c 2010-12-27 19:03:57.000000000 -0800 +@@ -7,9 +7,9 @@ + * See LICENSE and gpl-3.0.txt for details. + */ + +-#include "stdio.h" +-#include "stdlib.h" +- ++#include <stdio.h> ++#include <stdlib.h> ++#include <string.h> + + + int main(int argc, char *argv[]) diff --git a/sci-libs/libbufr/files/libbufr-makefile.patch b/sci-libs/libbufr/files/libbufr-makefile.patch new file mode 100644 index 000000000000..bc6196245ee0 --- /dev/null +++ b/sci-libs/libbufr/files/libbufr-makefile.patch @@ -0,0 +1,11 @@ +--- Makefile.orig 2011-03-16 22:05:18.000000000 -0700 ++++ Makefile 2011-03-16 22:05:40.000000000 -0700 +@@ -10,7 +10,7 @@ + ( echo "*************************"; \ + echo "*** Make in $$name "; \ + echo "*************************"; \ +- cd $$name ; make LIB=bufr ; ) done ++ $(MAKE) -C $$name LIB=bufr ; ) done + + clean : + @for name in $(SUBDIRS); do\ diff --git a/sci-libs/libbufr/libbufr-000387.ebuild b/sci-libs/libbufr/libbufr-000387.ebuild new file mode 100644 index 000000000000..0b274be76ff5 --- /dev/null +++ b/sci-libs/libbufr/libbufr-000387.ebuild @@ -0,0 +1,190 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=3 + +inherit eutils fortran-2 flag-o-matic toolchain-funcs + +MY_P="${PN/lib/}_${PV}" + +DESCRIPTION="ECMWF BUFR library - includes both C and Fortran example utilities" +HOMEPAGE="http://www.ecmwf.int/products/data/software/bufr.html" +SRC_URI="http://www.ecmwf.int/products/data/software/download/software_files/${MY_P}.tar.gz" + +LICENSE="LGPL-3" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +IUSE="debug doc examples" + +RDEPEND="" +DEPEND="sys-apps/findutils" + +S=${WORKDIR}/${MY_P} + +pkg_setup() { + fortran-2_pkg_setup + case "$(tc-getFC)" in + *gfortran) + export CNAME="_gfortran" + ;; + *g77) + export CNAME="_gnu" + ;; + *pgf90|*pgf77) + export CNAME="" + ;; + ifc|ifort) + export CNAME="_intel" + ;; + esac + + elog "Note non-GNU compilers are not currently supported on non-x86" + elog "architectures. If you need it, please subit a patch..." + + export target="linux" + export A64="" + export R64="" + case "${ARCH}" in + amd64) + export R64="R64" + export A64="A64" + ;; + ppc64) + export target="ppc_G5" + ;; + ppc) + export target="ppc" + ;; + *) + ;; + esac +} + +src_prepare() { + update_configs + epatch "${FILESDIR}"/${PN}-makefile.patch + + local config="config/config.$target$CNAME$R64$A64" + + if [[ "${ARCH}" == "ppc" ]] ; then + sed -i -e "s|= -mcpu=G4 -mtune=G4|= |" $config + elif [[ "${ARCH}" == "ppc64" ]] ; then + sed -i -e "s|= -mcpu=G5 -mtune=G5|= |" $config + fi + + sed -i -e "s:DEBUG = -O2:DEBUG = -g:g" $config + + # add local CFLAGS to and build flags + use debug || sed -i -e "s|\$(DEBUG)|${CFLAGS}|" $config + + # add local LDFLAGS to link commands + sed -i \ + -e "s|-o|${LDFLAGS} -o|" \ + examples/Makefile \ + bufrtables/Makefile +} + +src_compile() { + EBUILD_ARCH="${ARCH}" + EBUILD_CFLAGS="${CFLAGS}" + unset ARCH CFLAGS + tc-export CC + append-flags -DTABLE_PATH="/usr/share/bufrtables" + + # emake won't work with this fossil... + make ARCH=$target || die "make failed" + + pushd examples > /dev/null + make ARCH=$target decode_bufr bufr_decode \ + create_bufr decode_bufr_image tdexp \ + || die "make examples failed" + popd > /dev/null + + generate_files + + ARCH="${EBUILD_ARCH}" + CFLAGS="${EBUILD_CFLAGS}" +} + +src_test() { + cd "${S}"/examples + BUFR_TABLES="${S}/bufrtables/" ./decode_bufr -i \ + ../data/ISMD01_OKPR.bufr < ../response_file +} + +src_install() { + # install library + dolib.a libbufr$R64.a + + dosbin bufrtables/{bufr2txt_tables,bufr_split_tables,txt2bufr_tables} + dobin examples/{create_bufr,decode_bufr,decode_bufr_image,tdexp} + + keepdir /usr/share/bufrtables + insinto /usr/share/bufrtables + doins bufrtables/*000* + + # files generated above + doenvd 20${PN} + + dodoc README + if use doc ; then + insinto /usr/share/doc/${P} + doins doc/*.pdf + fi + + if use examples ; then + newdoc examples/README README.examples + insinto /usr/share/doc/${P}/examples + doins examples/{*.F,*.c,Makefile} + fi +} + +pkg_postinst() { + elog + elog "This is the only GPL'd BUFR decoder library written in C/Fortran" + elog "but the build system is an old kluge that pre-dates the discovery" + elog "of fire. File bugs as usual if you have build/runtime problems." + elog "" + elog "The default BUFR tables are stored in /usr/share/bufrtables, so" + elog "add your local tables there if needed. Only a static lib is" + elog "installed currently, as shared lib support is incomplete (feel" + elog "free to submit a patch :)" + elog "" + elog "The installed user-land bufr utilities are just the examples;" + elog "the main library is really all there is (and there are no man" + elog "pages either). Install the examples and use the source, Luke..." + elog +} + +generate_files() { + ## Do not remove blank lines from the response file + cat <<-EOF > 20${PN} + BUFR_TABLES="/usr/share/bufrtables" + CONFIG_PROTECT="/usr/share/bufrtables" + EOF + + cat <<-EOF > response_file + N + N + N + 1 + + N + EOF +} + +update_configs() { + find . -type f | xargs chmod -x + chmod +x bufrtables/links.sh + cp options/options_linux options/options_ppc + cp options/options_linux options/options_ppc_G5 + cp pbio/sources.linux pbio/sources.ppc + cp pbio/sources.linux pbio/sources.ppc_G5 + pushd config > /dev/null + cp config.ppc config.ppc_gfortran + cp config.ppcR64 config.ppc_gfortranR64 + cp config.ppc_G5 config.ppc_G5_gfortran + cp config.ppcR64_G5 config.ppc_G5_gfortranR64 + popd > /dev/null +} diff --git a/sci-libs/libbufr/metadata.xml b/sci-libs/libbufr/metadata.xml new file mode 100644 index 000000000000..69b4f2ff1403 --- /dev/null +++ b/sci-libs/libbufr/metadata.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>sci-geosciences</herd> + <longdescription>This is mainly just an open source BUFR library from ECMWF + that comes with a few example toolss (some of which are built and installed). +</longdescription> +</pkgmetadata> |