summaryrefslogtreecommitdiff
blob: fb0458edd3024e2085f660d0d04aa36de8ce7f93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-libs/udunits/udunits-1.12.11.ebuild,v 1.1 2010/06/23 08:29:31 jlec Exp $

inherit eutils flag-o-matic fortran perl-module toolchain-funcs

IUSE=""

S=${WORKDIR}/${P}/src
SP=${WORKDIR}/${P}/src/perl
DESCRIPTION="The UCAR/Unidata Units library"
HOMEPAGE="http://www.unidata.ucar.edu/packages/udunits/"
SRC_URI="ftp://ftp.unidata.ucar.edu/pub/udunits/udunits-${PV}.tar.gz"

SLOT="0"
LICENSE="UCAR-Unidata"
KEYWORDS="~x86 ~amd64 ~ppc ~sparc ~alpha ~mips ~hppa"

DEPEND="dev-lang/perl
	sys-apps/sed"

RDEPEND="dev-lang/perl"

src_unpack() {
	unpack ${A}
	cd "${S}"
	sed -i -e "s:\${prefix}/etc:/etc:g" \
		-i -e "s:\${prefix}/man:\${prefix}/share/man:g" \
		-i -e "s:\${exec_prefix}/lib:\${exec_prefix}/$(get_libdir):g" \
		configure || die "sed 1 failed"
	epatch "${FILESDIR}/${P}-fixingtests.patch"
}

src_compile() {
	export CPPFLAGS="-Df2cFortran -D_POSIX_SOURCE"
	export CFLAGS="${CFLAGS}"
	export FC="${FORTRANC}"
	export CC="$(tc-getCC)"
	export CXX="$(tc-getCXX)"
	export LD_MATH="-lm"
	# This is needed for the perl shared object build
	append-flags -fPIC

	econf || die "econf failed"

	cd "${S}"/lib
		emake || die "emake lib failed"
	cd "${S}"

	cd "${S}"/perl
		perl-module_src_prep
		perl-module_src_compile
	cd "${S}"

	# random compile failures with -jN (when N > 1)
	emake -j1 || die "emake died"
}

src_test() {
	make check || die "make test failed"
}

src_install() {
	# The configure sucks, and so do the makefiles; this pretty much
	# needs to be done manually...
	dobin udunits/udunits
	dolib.a lib/libudunits.a port/misc/libudport.a
	doman udunits/udunits.1 lib/udunits.3 perl/udunitsperl.1

	insinto /etc
	doins lib/udunits.dat
	insinto /usr/include
	doins lib/{udunits.h,udunits.inc}
	# doman still doesn't put this in the right place
	insinto /usr/share/man/man3f
	doins lib/udunits.3f
	dodoc README RELEASE_NOTES

	fixlocalpod
	cd "${S}"/perl
		perl-module_src_install
	cd "${S}"

	# Clean up left-over cruft...  (yes, this is still needed)
	find "${D}" -type f -a \( -name perllocal.pod -o -name .packlist \
		-o \( -name '*.bs' -a -empty \) \) -exec rm -f {} ';'
	find "${D}" -type d -depth -exec rmdir {} 2>/dev/null ';'
	chmod -R u+w "${D}"/*
}

pkg_postinst() {
	ewarn "This package requires a Fortran compiler for maximum utility."
	ewarn "For now, make sure you have at least g77 for the f77 interface."
	ewarn "The internal configure should detect many f77 compilers, however,"
	ewarn "if you have the PG compiler you will need to change the above"
	ewarn "preprocessor macro to something like -Dpgifortran."
}