1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
6 PYTHON_COMPAT=( python{2_7,3_6} )
7 PYTHON_REQ_USE="threads(+)"
9 USE_PHP="php5-6 php7-1 php7-2"
13 PHP_EXT_OPTIONAL_USE="php"
15 USE_RUBY="ruby22 ruby23 ruby24"
18 inherit java-pkg-opt-2 mono-env multibuild php-ext-source-r3 python-r1 ruby-ng toolchain-funcs
20 DESCRIPTION="SWIG and JNI bindings for Xapian"
21 HOMEPAGE="https://www.xapian.org/"
22 SRC_URI="https://oligarchy.co.uk/xapian/${PV}/${P}.tar.xz"
26 KEYWORDS="~alpha amd64 arm ia64 ~mips ppc ppc64 ~sparc ~x86"
27 IUSE="java lua mono perl php python ruby tcl"
28 REQUIRED_USE="|| ( java lua mono perl php python ruby tcl )
29 python? ( ${PYTHON_REQUIRED_USE} )
30 ruby? ( || ( $(ruby_get_use_targets) ) )"
32 COMMONDEPEND=">=dev-libs/xapian-1.4.7:0/30
33 lua? ( dev-lang/lua:= )
34 perl? ( dev-lang/perl:= )
36 dev-python/sphinx[${PYTHON_USEDEP}]
39 ruby? ( $(ruby_implementations_depend) )
40 tcl? ( dev-lang/tcl:= )
41 mono? ( dev-lang/mono )"
42 DEPEND="${COMMONDEPEND}
44 java? ( >=virtual/jdk-1.6 )"
45 RDEPEND="${COMMONDEPEND}
46 java? ( >=virtual/jre-1.6 )"
50 has_basic_bindings() {
51 # Update this list if new bindings are added that are not built
52 # multiple times for multiple versions like php, python and ruby are
53 return $(use mono || use java || use lua || use perl || use tcl)
57 local MULTIBUILD_VARIANTS=($(php_get_slots))
58 multibuild_copy_sources
62 local MULTIBUILD_VARIANTS=($(php_get_slots))
63 multibuild_foreach_variant "$@"
67 local MULTIBUILD_VARIANTS=($(ruby_get_use_implementations))
68 multibuild_copy_sources
72 local MULTIBUILD_VARIANTS=($(ruby_get_use_implementations))
73 multibuild_foreach_variant "$@"
77 use mono && mono-env_pkg_setup
78 use java && java-pkg-opt-2_pkg_setup
86 for php_slot in $(php_get_slots); do
87 # Unfortunately required for php-ext-source-r3_createinifiles().
88 mkdir "${WORKDIR}/${php_slot}"
94 use java && java-pkg-opt-2_src_prepare
96 # https://trac.xapian.org/ticket/702
97 export XAPIAN_CONFIG="/usr/bin/xapian-config"
115 if has_basic_bindings ; then
117 --disable-documentation
118 $(use_with mono csharp)
131 local -x CXXFLAGS="${CXXFLAGS} $(java-pkg_get-jni-cflags)"
135 local -x PERL_ARCH="$(perl -MConfig -e 'print $Config{installvendorarch}')"
136 local -x PERL_LIB="$(perl -MConfig -e 'print $Config{installvendorlib}')"
140 local -x LUA_INC="$("$(tc-getPKG_CONFIG)" --variable=INSTALL_INC lua)"
141 local -x LUA_LIB="$("$(tc-getPKG_CONFIG)" --variable=INSTALL_CMOD lua)"
149 --disable-documentation
159 if [[ ${MULTIBUILD_VARIANT} == php5.* ]]; then
164 local -x PHP_CONFIG="${EPREFIX}/usr/$(get_libdir)/${MULTIBUILD_VARIANT/-/.}/bin/php-config"
165 elif [[ ${MULTIBUILD_VARIANT} == php7.* ]]; then
170 local -x PHP_CONFIG7="${EPREFIX}/usr/$(get_libdir)/${MULTIBUILD_VARIANT/-/.}/bin/php-config"
177 addpredict /usr/share/snmp/mibs/.index
178 addpredict /var/lib/net-snmp/mib_indexes
180 php_foreach_impl run_in_build_dir php_configure
185 --disable-documentation
195 if python_is_python3; then
196 myconf+=( --with-python3 )
198 myconf+=( --with-python )
201 # Avoid sandbox failures when compiling modules
202 addpredict "$(python_get_sitedir)"
208 python_foreach_impl run_in_build_dir python_configure
213 --disable-documentation
225 local -x RUBY="${EPREFIX}/usr/bin/${MULTIBUILD_VARIANT}"
231 ruby_foreach_impl run_in_build_dir ruby_configure
236 if has_basic_bindings ; then
241 php_foreach_impl run_in_build_dir emake
245 unset PYTHONDONTWRITEBYTECODE
246 python_foreach_impl run_in_build_dir emake
250 ruby_foreach_impl run_in_build_dir emake
255 if has_basic_bindings ; then
260 php_foreach_impl run_in_build_dir emake check
264 python_foreach_impl run_in_build_dir emake check
268 ruby_foreach_impl run_in_build_dir emake check
273 if has_basic_bindings ; then
274 emake DESTDIR="${D}" install
278 java-pkg_dojar java/built/xapian.jar
279 # TODO: make the build system not install this...
280 java-pkg_doso java/.libs/libxapian_jni.so
281 rm -rf "${D}var" || die "could not remove java cruft!"
285 php_foreach_impl run_in_build_dir emake DESTDIR="${D}" install
286 php-ext-source-r3_createinifiles
287 # php-ext-source-r3_createinifiles() changes current directory.
292 python_foreach_impl run_in_build_dir emake DESTDIR="${D}" install
296 ruby_foreach_impl run_in_build_dir emake DESTDIR="${D}" install
299 # For some USE combinations this directory is not created
300 if [[ -d "${D}/usr/share/doc/xapian-bindings" ]]; then
301 mv "${D}/usr/share/doc/xapian-bindings" "${D}/usr/share/doc/${PF}" || die
304 dodoc AUTHORS HACKING NEWS TODO README