blob: a816963b238db27c67da15e1b28d4ff9687f689b [file] [log] [blame]
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI="5"
PYTHON_DEPEND="python? 2"
SUPPORT_PYTHON_ABIS="1"
RESTRICT_PYTHON_ABIS="3.* *-jython"
inherit autotools distutils flag-o-matic perl-app eutils versionator libtool multilib java-pkg-opt-2
MY_PV="$(get_version_component_range 1-3)"
MY_P="${PN}-${MY_PV}"
PATCH_V="$(get_version_component_range 4)"
PATCH_V="${PATCH_V:-0}"
DB_VER="4.8"
DESCRIPTION="BerkeleyDB XML, a native XML database from the BerkeleyDB team"
HOMEPAGE="http://www.oracle.com/technetwork/database/berkeleydb/index-083851.html
http://download.oracle.com/otndocs/products/berkeleydb/html/$(get_version_component_range 1-2).html"
SRC_URI="http://download-east.oracle.com/berkeley-db/${MY_P}.tar.gz
http://download-west.oracle.com/berkeley-db/${MY_P}.tar.gz
http://download-uk.oracle.com/berkeley-db/${MY_P}.tar.gz"
LICENSE="Sleepycat Apache-1.1 BSD"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="doc examples java perl python tcl"
RDEPEND="sys-libs/db:${DB_VER}[cxx,java?]
>=dev-libs/xerces-c-3
=dev-libs/xqilla-2.2*
sys-libs/zlib
perl? ( dev-lang/perl )
python? (
>=dev-python/bsddb3-4.8.0 )
tcl? ( dev-lang/tcl:0= )
java? ( >=virtual/jre-1.5 )"
DEPEND="${RDEPEND}
sys-devel/libtool
java? ( >=virtual/jdk-1.5 )"
# return a list of patches calculated using the micro-version
get_patches() {
local patches=""
for (( patch_v=1 ; patch_v <= ${PATCH_V} ; patch_v++ )) ; do
patches="${patches} patch.${MY_PV}.${patch_v}"
done
echo ${patches}
}
MYPATCHES="$(get_patches)"
for patch in ${MYPATCHES} ; do
SRC_URI="${SRC_URI} http://www.oracle.com/technology/products/berkeley-db/xml/update/${MY_PV}/${patch}"
done
S="${WORKDIR}/${MY_P}/dbxml"
src_unpack() {
tar xzpf "${DISTDIR}/${MY_P}.tar.gz" ${MY_P}/dbxml || die "unpacking package failed"
for patch in ${MYPATCHES} ; do
cp "${DISTDIR}/${patch}" "${WORKDIR}" || die "copying patch ${patch} failed"
done
}
src_prepare() {
for patch in ${MYPATCHES} ; do
edos2unix "${WORKDIR}/${patch}"
epatch "${WORKDIR}/${patch}"
done
epatch "${FILESDIR}/${PV}-respect-ldflags-no-rpath.patch"
# sys-libs/db is slotted on Gentoo
sed -i \
-e "s:db_version=.*:db_version=${DB_VER}:" \
dist/aclocal/options.ac configure || die "sed failed"
if use java ; then
sed -i \
-e "s|\$with_berkeleydb/lib/db.jar|$(java-pkg_getjars db-${DB_VER})|" \
dist/aclocal/options.ac configure || die "sed failed"
fi
# * Fix libraries to link
# * Strip "../../build_unix/.libs" from LIBPATH or it'll
# show up in the RPATH entry
sed -i \
-e "s|dbxml-2|dbxml-$(get_version_component_range 1-2)|" \
-e "s|db-4|db-${DB_VER}|" \
-e 's|dbxml_home = .*|dbxml_home = "../.."|' \
-e 's|"../../build_unix/.libs",||' \
src/python/setup.py.in || die "sed failed"
sed -i \
-e "s|dbxml-2|dbxml-$(get_version_component_range 1-2)|" \
-e "s|db_cxx-4|db_cxx-${DB_VER}|" \
-e "s|@DB_DIR@/lib|/usr/$(get_libdir)|" \
-e "s|@DB_DIR@/include|/usr/include/db${DB_VER}|" \
-e "s|@XERCES_DIR@/lib|/usr/$(get_libdir)|" \
-e "s|@XQILLA_DIR@/lib|/usr/$(get_libdir)|" \
src/perl/config.in || die "sed failed"
# avoid the automake/autoconf run in src_{configure,compile}
eautoreconf
}
src_configure() {
cd "${S}/build_unix"
#Needed despite db_version stuff above
append-flags -I"${EPREFIX}"/usr/include/db${DB_VER}
local myconf=""
# use_enable doesn't work here due to a different syntax
use java && myconf="${myconf} --enable-java"
use tcl && myconf="${myconf} --enable-tcl --with-tcl=${EPREFIX}/usr/$(get_libdir)"
export ac_cv_prog_path_strip="missing_strip"
ECONF_SOURCE="../" \
JAVAPREFIX="${JAVA_HOME}" \
econf \
--with-berkeleydb="${EPREFIX}"/usr \
--with-xqilla="${EPREFIX}"/usr \
--with-xerces="${EPREFIX}"/usr \
${myconf}
}
src_compile() {
cd "${S}/build_unix"
default
if use python ; then
einfo "Compiling python extension"
cd "${S}/src/python"
append-cflags "-I../../include"
append-ldflags "-L../../build_unix/.libs"
distutils_src_compile
fi
if use perl ; then
cd "${S}/src/perl"
perl-app_src_prep
perl-app_src_compile
fi
}
src_install() {
cd "${S}/build_unix"
# somewhat broken build system
emake DESTDIR="${D}" install || die "emake install failed"
use doc && dohtml -A pdf -r "${ED}"/usr/docs/*
rm -rf "${ED}/usr/docs"
if use java ; then
java-pkg_dojar "${ED}/usr/$(get_libdir)/dbxml.jar"
rm "${ED}/usr/$(get_libdir)/dbxml.jar"
fi
if use python ; then
cd "${S}/src/python"
distutils_src_install
fi
if use perl ; then
cd "${S}/src/perl"
emake DESTDIR="${D}" install || die "emake install perl module failed"
perl_delete_localpod
fi
if use examples ; then
insinto /usr/share/doc/${PF}
doins -r "${S}/examples"
fi
}
pkg_preinst() {
perl_set_version
java-pkg-opt-2_pkg_preinst
}
pkg_postinst() {
if use python ; then
python_mod_optimize dbxml.py
fi
}
pkg_postrm() {
if use python ; then
python_mod_cleanup dbxml.py
fi
}