summaryrefslogtreecommitdiff
blob: 6ec79657c3653c6fcd971b5a16067c627ff470c3 (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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-libs/geos/geos-2.2.2-r1.ebuild,v 1.2 2006/08/24 01:21:16 markusle Exp $

USE_RUBY="ruby18"
RUBY_OPTIONAL="yes"

inherit eutils distutils autotools kde-functions ruby toolchain-funcs

DESCRIPTION="Geometry Engine - Open Source"
HOMEPAGE="http://geos.refractions.net"
SRC_URI="http://geos.refractions.net/${P}.tar.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~x86"
IUSE="static doc python ruby"

RDEPEND="virtual/libc"
DEPEND="${RDEPEND}
	doc? ( app-doc/doxygen )
	python? ( dev-lang/python
		  >=dev-lang/swig-1.3.29 )
	ruby? ( virtual/ruby
		  >=dev-lang/swig-1.3.29 )"

src_unpack() {
	unpack ${A}
	cd ${S}
	need-autoconf 2.5
	elibtoolize
	epatch ${FILESDIR}/${P}-swig.patch

}

src_compile() {
	cd ${S}
	local myconf
	myconf=""
	if use static; then
	    myconf="$(use_enable static)"
	elif use python || use ruby; then
	    myconf="--with-pic"
	else
	    myconf="--with-pic --disable-static"
	fi

	econf ${myconf} || die "Error: econf failed"

	# intermittent build failures with emake
	make || die "Error: make failed"

	if use python; then
	    einfo "Compilling PyGEOS"
	    cd ${S}/swig/python
	    cp ${FILESDIR}/python.i ${S}/swig/python/
	    rm -f geos_wrap.cxx
	    swig -c++ -python -modern -o geos_wrap.cxx ../geos.i
	    distutils_src_compile
	fi
	if use ruby; then
	    einfo "Compilling Ruby bindings"
	    cd ${S}/swig/ruby
	    swig -c++ -ruby -autorename -o geos_wrap.cxx ../geos.i
	    local CXX=$(tc-getCXX)
	    local RUBY_ARCHDIR="$(ruby -r rbconfig -e 'print Config::CONFIG["archdir"]')"
	    ${CXX} ${CXXFLAGS} -I../../source/headers -I${RUBY_ARCHDIR} \
		-fPIC -c geos_wrap.cxx
	    ${CXX} ${CXXFLAGS} -shared -L${S}/source/geom/.libs -lgeos \
		-lruby geos_wrap.o -o geos.so
	fi
}

src_test() {
	cd ${S}
	make check || die "Tring make check without success."
	# I think this test must be made after the PyGEOS installation
	#export PYTHONPATH=${S}/swig/python
	if use python; then
	    cd ${S}/swig/python
	    python tests/runtests.py -v
	fi
}

src_install(){
	make install DESTDIR=${D} || die "make install failed"

	if use python; then
	    einfo "Installing PyGEOS"
	    cd ${S}/swig/python
	    distutils_src_install
	    insinto /usr/share/doc/${PF}/python
	    doins README.txt tests/*.py
	    insinto /usr/share/doc/${PF}/python/cases
	    doins tests/cases/*
	fi
	if use ruby; then
	    local RUBY_SITEARCHDIR="$(ruby -r rbconfig -e 'print Config::CONFIG["sitearchdir"]')"
	    einfo "Installing Ruby bindings in ${RUBY_SITEARCHDIR}/${PN}"
	    cd ${S}/swig/ruby
	    insinto ${RUBY_SITEARCHDIR}/${PN}
	    doins geos.so
	    insinto /usr/share/doc/${PF}/ruby
	    doins README.txt test/*.rb
	    if use doc; then
		erubydoc
	    fi
	fi
	if use doc; then
	    cd ${S}/doc
	    make doxygen-html
	    dohtml -r doxygen_docs/html/*
	fi
	cd ${S}
	dodoc AUTHORS COPYING INSTALL NEWS README TODO
}

pkg_postinst() {
	if use python; then
	    python_version
	    python_mod_optimize ${ROOT}usr/bin
	fi
}

pkg_postrm() {
	if use python; then
	    python_version
	    python_mod_cleanup
	fi
}