* [gentoo-commits] repo/gentoo:master commit in: sci-libs/libbufr/, sci-libs/libbufr/files/
@ 2016-03-05 21:11 Steve Arnold
0 siblings, 0 replies; only message in thread
From: Steve Arnold @ 2016-03-05 21:11 UTC (permalink / raw
To: gentoo-commits
commit: 61bdaf1182902438d3b045e5921eb8894126a377
Author: Stephen L Arnold <nerdboy <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 5 21:10:26 2016 +0000
Commit: Steve Arnold <nerdboy <AT> gentoo <DOT> org>
CommitDate: Sat Mar 5 21:10:26 2016 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=61bdaf11
sci-libs/libbufr: re-add and version bump to latest upstream (405)
This also adds build fixes and an lto USE flag for checking the linker
and massaging the AR flags for the linker plugin (note this requies an
existing -flto configuration).
Package-Manager: portage-2.2.27
sci-libs/libbufr/Manifest | 1 +
.../libbufr/files/libbufr-000405-makefile.patch | 80 ++++++++
sci-libs/libbufr/libbufr-000405.ebuild | 206 +++++++++++++++++++++
sci-libs/libbufr/metadata.xml | 17 ++
4 files changed, 304 insertions(+)
diff --git a/sci-libs/libbufr/Manifest b/sci-libs/libbufr/Manifest
new file mode 100644
index 0000000..e0171be
--- /dev/null
+++ b/sci-libs/libbufr/Manifest
@@ -0,0 +1 @@
+DIST bufrdc_000405.tar.gz 11873311 SHA256 0c3ab33bdb3eea600c5af6f1e4064a000ec143f4c96a14b72ca09666ca3c3775 SHA512 3355d6bac54ef152f9feb13ae13f3c94f4e01a665a4b9bc7f85f0c98f9aa37411170668ba9adfb6b62c2fe906d0dff67b03a708cdf1acd21a0037e327c7c6169 WHIRLPOOL f97662c240e40086be2e2f7d33d446280576dd79ff119374d54d02af05bd51c9176a6592d965765baf549043ee80e8bb9e824e3149d4ce85599db1f5e3f42e10
diff --git a/sci-libs/libbufr/files/libbufr-000405-makefile.patch b/sci-libs/libbufr/files/libbufr-000405-makefile.patch
new file mode 100644
index 0000000..08b30de
--- /dev/null
+++ b/sci-libs/libbufr/files/libbufr-000405-makefile.patch
@@ -0,0 +1,80 @@
+--- Makefile.orig 2016-01-04 13:09:58.661150785 -0800
++++ Makefile 2016-01-04 13:17:12.707621825 -0800
+@@ -1,7 +1,7 @@
+ # Makefile for libbufrex
+ #
+ R64 = R64
+-TARGETS = all clean
++TARGETS = all clean test
+ LIBRARY = libbufr$(R64).a
+ SHELL=/bin/sh
+ SUBDIRS = fortranC bufrdc pbio bufrtables examples
+@@ -11,12 +11,14 @@
+ ( echo "*************************"; \
+ echo "*** Make in $$name "; \
+ echo "*************************"; \
+- cd $$name ; make ; ) done
++ $(MAKE) -C $$name LIB=bufr ; ) done
++
++test :
+ ./test.sh
+ tables_tools/check_tables.sh bufrtables
+
+ clean :
+ @for name in $(SUBDIRS); do\
+- ( echo "*** Clean in $$name ***" ;cd $$name ; make clean ); \
++ ( echo "*** Clean in $$name ***" ;$(MAKE) -C $$name clean ); \
+ done
+ rm -f $(LIBRARY)
+--- examples/Makefile.in.orig 2016-01-04 13:42:39.790648703 -0800
++++ examples/Makefile.in 2016-01-04 13:45:02.384967830 -0800
+@@ -16,19 +16,19 @@
+ #
+ #
+ TARGETS = all clean
+-EXECS = decode_bufr decode_bufr_image bufr_decode_all tdexp tdexp create_bufr
++EXECS = decode_bufr decode_bufr_image bufr_decode_all bufr_compress tdexp create_bufr
+ #
+ #
+ all :$(EXECS)
+
+-decode_bufr: decode_bufr.o
++decode_bufr: decode_bufr.o
+ $(FC) $(FFLAGS) -o $@ decode_bufr.o -L$(PLACE) -l$(LIB)$(R64)
+
+-bufr_decode_all: bufr_decode_all.o
+- $(FC) $(FFLAGS) -o $@ bufr_decode_all.o -L$(PLACE) -l$(LIB)$(R64)
++bufr_decode_all: bufr_decode_all.o
++ $(FC) $(FFLAGS) -o $@ bufr_decode_all.o -L$(PLACE) -l$(LIB)$(R64)
+
+-bufr_compress: bufr_compress.o
+- $(FC) $(FFLAGS) -o $@ bufr_compress.o -L$(PLACE) -l$(LIB)$(R64)
++bufr_compress: bufr_compress.o
++ $(FC) $(FFLAGS) -o $@ bufr_compress.o -L$(PLACE) -l$(LIB)$(R64)
+
+ bufr2crex : bufr2crex.o
+ $(FC) $(FFLAGS) -o $@ bufr2crex.o -L$(PLACE) -l$(LIB)$(R64) -lcrex$(R64)
+@@ -48,4 +48,4 @@
+ clean :
+ @for name in $(EXECS); do\
+ (rm -f $$name *.o ); \
+- done
++ done
+--- bufrtables/Makefile.orig 2016-01-04 14:03:47.292850644 -0800
++++ bufrtables/Makefile 2016-01-04 14:05:22.242500485 -0800
+@@ -25,11 +25,14 @@
+ OBJECTS = $(OBJECTS.F) $(OBJECTS.c)
+ #
+ #
+-all: links
++all: pgms links
+
+ links:
+ ./clean.sh
+ ./links.sh
++
++pgms: bufr2txt_tables bufr_split_tables txt2bufr_tables
++
+ bufr2txt_tables: bufr2txt_tables.f
+ $(FC) $(FFLAGS) -o bufr2txt_tables bufr2txt_tables.f $(LIBRARY)
+ bufr_split_tables: bufr_split_tables.f
diff --git a/sci-libs/libbufr/libbufr-000405.ebuild b/sci-libs/libbufr/libbufr-000405.ebuild
new file mode 100644
index 0000000..982dbca
--- /dev/null
+++ b/sci-libs/libbufr/libbufr-000405.ebuild
@@ -0,0 +1,206 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils fortran-2 toolchain-funcs
+
+MY_P="${PN/lib/}dc_${PV}"
+
+DESCRIPTION="ECMWF BUFR library - includes both C and Fortran example utilities"
+HOMEPAGE="https://software.ecmwf.int/wiki/display/BUFR/BUFRDC+Home"
+SRC_URI="https://software.ecmwf.int/wiki/download/attachments/35752466/${MY_P}.tar.gz"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
+# needs someone to test on these: ~alpha ~hppa ~ia64 ~sparc etc ...
+
+IUSE="debug doc examples lto"
+
+RDEPEND="
+ virtual/fortran
+ "
+
+DEPEND="sys-apps/findutils"
+
+S=${WORKDIR}/${MY_P}
+
+if use lto; then
+ RESTRICT="strip"
+fi
+
+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 submit 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}"/${P}-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|= |" \
+ -e "s|-fdefault-real-8|-fdefault-real-8 -fdefault-double-8|" \
+ ${config}
+ elif [[ "${ARCH}" == "amd64" ]] ; then
+ cp ${config}.in ${config}
+ sed -i -e "s|-fdefault-real-8|-fdefault-real-8 -fdefault-double-8|" \
+ ${config}
+ else
+ cp ${config}.in ${config} || die "Error updating config!"
+ fi
+
+ sed -i -e "s:DEBUG = -O2:DEBUG = -g:g" ${config}
+ use debug || sed -i -e "s:DEBUG = -g:DEBUG =:g" ${config}
+
+ # add local CFLAGS to build flags
+ sed -i -e "s|\$(DEBUG)|${CFLAGS} \$(DEBUG) -fPIC|" \
+ -e 's|emos|/usr/share/bufrtables|g' ${config}
+
+ # add local LDFLAGS to bins
+ sed -i \
+ -e "s|-o|${LDFLAGS} -fPIC -o|" \
+ examples/Makefile \
+ bufrtables/Makefile
+}
+
+src_compile() {
+ export BUFR_TABLES="${S}"/bufrtables
+ EBUILD_ARCH="${ARCH}"
+ EBUILD_CFLAGS="${CFLAGS}"
+ unset ARCH CFLAGS
+
+ tc-export CC FC AR NM RANLIB
+ export STRIP="/bin/true"
+ TC_FLAGS="CC=$CC FC=$FC AR=$AR RANLIB=$RANLIB"
+ ARFLAGS="rv"
+
+ if use lto; then
+ PLUGIN_PATH="--plugin=$(gcc -print-prog-name=liblto_plugin.so)"
+ tc-ld-is-gold && ARFLAGS="rv ${PLUGIN_PATH}"
+ fi
+
+ # emake won't work with this fossil...
+ BUFRFLAGS="ARCH=$target R64=$R64 CNAME=$CNAME"
+ make $TC_FLAGS ARFLAGS="${ARFLAGS}" $BUFRFLAGS || die "make failed"
+
+ generate_files
+
+ ARCH="${EBUILD_ARCH}"
+ CFLAGS="${EBUILD_CFLAGS}"
+}
+
+src_test() {
+ unset ARCH CFLAGS
+ BUFRFLAGS="ARCH=$target R64=$R64 CNAME=$CNAME"
+ make $BUFRFLAGS test || die "make test failed"
+
+ ARCH="${EBUILD_ARCH}"
+ CFLAGS="${EBUILD_CFLAGS}"
+}
+
+src_install() {
+ # install library
+ dolib.a libbufr$R64.a
+
+ dosbin bufrtables/{bufr2txt_tables,bufr_split_tables,txt2bufr_tables}
+ dobin examples/{bufr_decode_all,create_bufr,decode_bufr,decode_bufr_image,tdexp}
+
+ keepdir /usr/share/bufrtables
+ insinto /usr/share/bufrtables
+ doins -r bufrtables/{B,C,D}*.*
+
+ # files generated above
+ doenvd 20${PN}
+
+ dodoc README
+ if use doc ; then
+ insinto /usr/share/doc/${PF}
+ doins doc/*.pdf
+ fi
+
+ if use examples ; then
+ newdoc examples/README README.examples
+ insinto /usr/share/doc/${PF}/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"
+ EOF
+}
+
+update_configs() {
+ find . -type f -name \*.distinct -o -name \*.f -o -name \*.in \
+ | xargs chmod -x
+ 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_gfortran.in config.ppc_gfortran
+ cp config.ppc_gfortranR64.in config.ppc_gfortranR64
+ cp config.ppc_gfortran_G5.in config.ppc_gfortran_G5
+ cp config.ppc_gfortranR64_G5.in config.ppc_gfortranR64_G5
+ popd > /dev/null
+}
diff --git a/sci-libs/libbufr/metadata.xml b/sci-libs/libbufr/metadata.xml
new file mode 100644
index 0000000..2acd055
--- /dev/null
+++ b/sci-libs/libbufr/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>nerdboy@gentoo.org</email>
+ </maintainer>
+ <longdescription lang="en">
+ This is the only useable open source BUFR library (from ECMWF)
+ and comes with a few example tools (some of which are built
+ and installed).
+ </longdescription>
+ <use>
+ <flag name="lto">
+ Use gold linker and -flto (requires existing env setup)
+ </flag>
+ </use>
+</pkgmetadata>
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2016-03-06 11:55 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-05 21:11 [gentoo-commits] repo/gentoo:master commit in: sci-libs/libbufr/, sci-libs/libbufr/files/ Steve Arnold
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox