forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
- Loading branch information
Showing
4 changed files
with
304 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
DIST bufrdc_000405.tar.gz 11873311 SHA256 0c3ab33bdb3eea600c5af6f1e4064a000ec143f4c96a14b72ca09666ca3c3775 SHA512 3355d6bac54ef152f9feb13ae13f3c94f4e01a665a4b9bc7f85f0c98f9aa37411170668ba9adfb6b62c2fe906d0dff67b03a708cdf1acd21a0037e327c7c6169 WHIRLPOOL f97662c240e40086be2e2f7d33d446280576dd79ff119374d54d02af05bd51c9176a6592d965765baf549043ee80e8bb9e824e3149d4ce85599db1f5e3f42e10 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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>[email protected]</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> |