commit:     2e2154546c2cc9b71ddccef7d6717829a8bd575f
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 20 10:36:14 2017 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Nov 20 10:36:30 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2e215454

dev-libs/xapian-bindings: improve multislot support, bug #635826

Package-Manager: Portage-2.3.13, Repoman-2.3.3

 .../xapian-bindings/xapian-bindings-1.4.5.ebuild   | 221 +++++++++++++++++----
 1 file changed, 183 insertions(+), 38 deletions(-)

diff --git a/dev-libs/xapian-bindings/xapian-bindings-1.4.5.ebuild 
b/dev-libs/xapian-bindings/xapian-bindings-1.4.5.ebuild
index 2a25212d28d..8124da90fde 100644
--- a/dev-libs/xapian-bindings/xapian-bindings-1.4.5.ebuild
+++ b/dev-libs/xapian-bindings/xapian-bindings-1.4.5.ebuild
@@ -3,16 +3,19 @@
 
 EAPI="6"
 
-PYTHON_COMPAT=( python{2_7,3_4,3_5} )
+PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
 PYTHON_REQ_USE="threads(+)"
 
-USE_PHP="php5-6"
+USE_PHP="php5-6 php7-0 php7-1 php7-2"
 
 PHP_EXT_NAME="xapian"
 PHP_EXT_INI="yes"
 PHP_EXT_OPTIONAL_USE="php"
 
-inherit distutils-r1 libtool java-pkg-opt-2 mono-env php-ext-source-r3 
toolchain-funcs
+USE_RUBY="ruby22 ruby23 ruby24"
+RUBY_OPTIONAL="yes"
+
+inherit java-pkg-opt-2 mono-env multibuild php-ext-source-r3 python-r1 ruby-ng 
toolchain-funcs
 
 DESCRIPTION="SWIG and JNI bindings for Xapian"
 HOMEPAGE="http://www.xapian.org/";
@@ -22,7 +25,9 @@ LICENSE="GPL-2"
 SLOT="0"
 KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86"
 IUSE="java lua mono perl php python ruby tcl"
-REQUIRED_USE="|| ( java lua mono perl php python ruby tcl )"
+REQUIRED_USE="|| ( java lua mono perl php python ruby tcl )
+       python? ( ${PYTHON_REQUIRED_USE} )
+       ruby? ( || ( $(ruby_get_use_targets) ) )"
 
 COMMONDEPEND="dev-libs/xapian:0/30
        lua? ( dev-lang/lua:= )
@@ -31,7 +36,7 @@ COMMONDEPEND="dev-libs/xapian:0/30
                dev-python/sphinx[${PYTHON_USEDEP}]
                ${PYTHON_DEPS}
        )
-       ruby? ( dev-lang/ruby:= )
+       ruby? ( $(ruby_implementations_depend) )
        tcl? ( dev-lang/tcl:= )
        mono? ( dev-lang/mono )"
 DEPEND="${COMMONDEPEND}
@@ -40,64 +45,140 @@ DEPEND="${COMMONDEPEND}
 RDEPEND="${COMMONDEPEND}
        java? ( >=virtual/jre-1.6 )"
 
+S="${WORKDIR}/${P}"
+
+has_basic_bindings() {
+       # Update this list if new bindings are added that are not built
+       # multiple times for multiple versions like php, python and ruby are
+       return $(use mono || use java || use lua || use perl || use tcl)
+}
+
+php_copy_sources() {
+       local MULTIBUILD_VARIANTS=($(php_get_slots))
+       multibuild_copy_sources
+}
+
+php_foreach_impl() {
+       local MULTIBUILD_VARIANTS=($(php_get_slots))
+       multibuild_foreach_variant "$@"
+}
+
+ruby_copy_sources() {
+       local MULTIBUILD_VARIANTS=($(ruby_get_use_implementations))
+       multibuild_copy_sources
+}
+
+ruby_foreach_impl() {
+       local MULTIBUILD_VARIANTS=($(ruby_get_use_implementations))
+       multibuild_foreach_variant "$@"
+}
+
 pkg_setup() {
        use mono && mono-env_pkg_setup
        use java && java-pkg-opt-2_pkg_setup
 }
 
+src_unpack() {
+       default
+
+       if use php; then
+               local php_slot
+               for php_slot in $(php_get_slots); do
+                       # Unfortunately required for 
php-ext-source-r3_createinifiles().
+                       mkdir "${WORKDIR}/${php_slot}"
+               done
+       fi
+}
+
 src_prepare() {
        use java && java-pkg-opt-2_src_prepare
 
        # http://trac.xapian.org/ticket/702
        export XAPIAN_CONFIG="/usr/bin/xapian-config"
 
-       # Accept ruby 2.0 - patch configure directly to avoid autoreconf
-       epatch "${FILESDIR}"/${PN}-1.3.6-allow-ruby-2.0.patch
+       if use php; then
+               php_copy_sources
+       fi
 
        if use python; then
                python_copy_sources
        fi
 
+       if use ruby; then
+               ruby_copy_sources
+       fi
+
        eapply_user
 }
 
 src_configure() {
-       local conf=(
-               --disable-documentation
-               --without-csharp
-               --without-python
-               --without-python3
-       )
+       if has_basic_bindings ; then
+               local conf=(
+                       --disable-documentation
+                       $(use_with mono csharp)
+                       $(use_with java)
+                       $(use_with lua)
+                       $(use_with perl)
+                       $(use_with tcl)
+                       --without-php
+                       --without-php7
+                       --without-python
+                       --without-python3
+                       --without-ruby
+               )
 
-       if use java; then
-               export CXXFLAGS="${CXXFLAGS} $(java-pkg_get-jni-cflags)"
-               conf+=( --with-java )
-       fi
+               if use java; then
+                       local -x CXXFLAGS="${CXXFLAGS} 
$(java-pkg_get-jni-cflags)"
+               fi
 
-       if use perl; then
-               export PERL_ARCH="$(perl -MConfig -e 'print 
$Config{installvendorarch}')"
-               export PERL_LIB="$(perl -MConfig -e 'print 
$Config{installvendorlib}')"
-               conf+=( --with-perl )
-       fi
+               if use perl; then
+                       local -x PERL_ARCH="$(perl -MConfig -e 'print 
$Config{installvendorarch}')"
+                       local -x PERL_LIB="$(perl -MConfig -e 'print 
$Config{installvendorlib}')"
+               fi
+
+               if use lua; then
+                       local -x LUA_INC="$("$(tc-getPKG_CONFIG)" 
--variable=INSTALL_INC lua)"
+                       local -x LUA_LIB="$("$(tc-getPKG_CONFIG)" 
--variable=INSTALL_CMOD lua)"
+               fi
 
-       if use lua; then
-               export LUA_LIB="$($(tc-getPKG_CONFIG) --variable=INSTALL_CMOD 
lua)"
-               conf+=( --with-lua )
+               econf "${conf[@]}"
        fi
 
-       if use php; then
-               if has_version "=dev-lang/php-7*"; then
-                       conf+=( --with-php7 )
-               else
-                       conf+=( --with-php )
+       php_configure() {
+               local myconf=(
+                       --disable-documentation
+                       --without-java
+                       --without-lua
+                       --without-csharp
+                       --without-perl
+                       --without-python
+                       --without-python3
+                       --without-ruby
+                       --without-tcl
+               )
+               if [[ ${MULTIBUILD_VARIANT} == php5.* ]]; then
+                       myconf+=(
+                               --with-php
+                               --without-php7
+                       )
+                       local -x 
PHP_CONFIG="${EPREFIX}/usr/$(get_libdir)/${MULTIBUILD_VARIANT/-/.}/bin/php-config"
+               elif [[ ${MULTIBUILD_VARIANT} == php7.* ]]; then
+                       myconf+=(
+                               --without-php
+                               --with-php7
+                       )
+                       local -x 
PHP_CONFIG7="${EPREFIX}/usr/$(get_libdir)/${MULTIBUILD_VARIANT/-/.}/bin/php-config"
                fi
-       fi
 
-       use ruby && conf+=( --with-ruby )
-       use tcl  && conf+=( --with-tcl )
-       use mono && conf+=( --with-csharp )
+               econf "${myconf[@]}"
+       }
+
+       if use php; then
+               addpredict /usr/share/snmp/mibs/.index
+               addpredict /var/lib/net-snmp/mib_indexes
 
-       econf ${conf[@]}
+               php_foreach_impl run_in_build_dir php_configure
+       fi
 
        python_configure() {
                local myconf=(
@@ -107,6 +188,7 @@ src_configure() {
                        --without-csharp
                        --without-perl
                        --without-php
+                       --without-php7
                        --without-ruby
                        --without-tcl
                )
@@ -125,18 +207,72 @@ src_configure() {
        if use python; then
                python_foreach_impl run_in_build_dir python_configure
        fi
+
+       ruby_configure() {
+               local myconf=(
+                       --disable-documentation
+                       --without-java
+                       --without-lua
+                       --without-csharp
+                       --without-perl
+                       --without-php
+                       --without-php7
+                       --without-python
+                       --without-python3
+                       --with-ruby
+                       --without-tcl
+               )
+               local -x RUBY="${EPREFIX}/usr/bin/${MULTIBUILD_VARIANT}"
+
+               econf "${myconf[@]}"
+       }
+
+       if use ruby; then
+               ruby_foreach_impl run_in_build_dir ruby_configure
+       fi
 }
 
 src_compile() {
-       default
+       if has_basic_bindings ; then
+               default
+       fi
+
+       if use php; then
+               php_foreach_impl run_in_build_dir emake
+       fi
+
        if use python; then
                unset PYTHONDONTWRITEBYTECODE
                python_foreach_impl run_in_build_dir emake
        fi
+
+       if use ruby; then
+               ruby_foreach_impl run_in_build_dir emake
+       fi
+}
+
+src_test() {
+       if has_basic_bindings ; then
+               default
+       fi
+
+       if use php; then
+               php_foreach_impl run_in_build_dir emake check
+       fi
+
+       if use python; then
+               python_foreach_impl run_in_build_dir emake check
+       fi
+
+       if use ruby; then
+               ruby_foreach_impl run_in_build_dir emake check
+       fi
 }
 
 src_install() {
-       emake DESTDIR="${D}" install
+       if has_basic_bindings ; then
+               emake DESTDIR="${D}" install
+       fi
 
        if use java; then
                java-pkg_dojar java/built/xapian_jni.jar
@@ -145,12 +281,21 @@ src_install() {
                rm -rf "${D}var" || die "could not remove java cruft!"
        fi
 
-       use php && php-ext-source-r3_createinifiles
+       if use php; then
+               php_foreach_impl run_in_build_dir emake DESTDIR="${D}" install
+               php-ext-source-r3_createinifiles
+               # php-ext-source-r3_createinifiles() changes current directory.
+               cd "${S}"
+       fi
 
        if use python; then
                python_foreach_impl run_in_build_dir emake DESTDIR="${D}" 
install
        fi
 
+       if use ruby; then
+               ruby_foreach_impl run_in_build_dir emake DESTDIR="${D}" install
+       fi
+
        # For some USE combinations this directory is not created
        if [[ -d "${D}/usr/share/doc/xapian-bindings" ]]; then
                mv "${D}/usr/share/doc/xapian-bindings" 
"${D}/usr/share/doc/${PF}" || die

Reply via email to