# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 EAPI=5 MY_P="${P/_}" PKCS11_IUSE="+softhsm opensc external-hsm" inherit autotools multilib user DESCRIPTION="An open-source turn-key solution for DNSSEC" HOMEPAGE="http://www.opendnssec.org/" SRC_URI="http://www.${PN}.org/files/source/${MY_P}.tar.gz" LICENSE="BSD GPL-2" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="debug doc +mysql +signer sqlite test ${PKCS11_IUSE}" RDEPEND=" dev-lang/perl dev-libs/libxml2 dev-libs/libxslt net-libs/ldns mysql? ( virtual/mysql dev-perl/DBD-mysql ) opensc? ( dev-libs/opensc ) softhsm? ( dev-libs/softhsm:* ) sqlite? ( dev-db/sqlite:3 dev-perl/DBD-SQLite ) " DEPEND="${RDEPEND} doc? ( app-doc/doxygen ) test? ( app-text/trang ) " REQUIRED_USE=" ^^ ( mysql sqlite ) ^^ ( softhsm opensc external-hsm ) " PATCHES=( "${FILESDIR}/${PN}-fix-localstatedir.patch" "${FILESDIR}/${PN}-fix-run-dir.patch" "${FILESDIR}/${PN}-drop-privileges.patch" "${FILESDIR}/${PN}-use-system-trang.patch" ) S="${WORKDIR}/${MY_P}" DOCS=( MIGRATION NEWS ) check_pkcs11_setup() { # PKCS#11 HSM's are often only available with proprietary drivers not # available in portage tree. if use softhsm; then PKCS11_LIB=softhsm if has_version ">=dev-libs/softhsm-1.3.1"; then PKCS11_PATH=/usr/$(get_libdir)/softhsm/libsofthsm.so else PKCS11_PATH=/usr/$(get_libdir)/libsofthsm.so fi elog "Building with SoftHSM PKCS#11 library support." fi if use opensc; then PKCS11_LIB=opensc PKCS11_PATH=/usr/$(get_libdir)/opensc-pkcs11.so elog "Building with OpenSC PKCS#11 library support." fi if use external-hsm; then if [[ -n ${PKCS11_SCA6000} ]]; then PKCS11_LIB=sca6000 PKCS11_PATH=${PKCS11_SCA6000} elif [[ -n ${PKCS11_ETOKEN} ]]; then PKCS11_LIB=etoken PKCS11_PATH=${PKCS11_ETOKEN} elif [[ -n ${PKCS11_NCIPHER} ]]; then PKCS11_LIB=ncipher PKCS11_PATH=${PKCS11_NCIPHER} elif [[ -n ${PKCS11_AEPKEYPER} ]]; then PKCS11_LIB=aepkeyper PKCS11_PATH=${PKCS11_AEPKEYPER} else ewarn "You enabled USE flag 'external-hsm' but did not specify a path to a PKCS#11" ewarn "library. To set a path, set one of the following environment variables:" ewarn " for Sun Crypto Accelerator 6000, set: PKCS11_SCA6000=" ewarn " for Aladdin eToken, set: PKCS11_ETOKEN=" ewarn " for Thales/nCipher netHSM, set: PKCS11_NCIPHER=" ewarn " for AEP Keyper, set: PKCS11_AEPKEYPER=" ewarn "Example:" ewarn " PKCS11_ETOKEN=\"/opt/etoken/lib/libeTPkcs11.so\" emerge -pv opendnssec" ewarn "or store the variable into /etc/make.conf" die "USE flag 'external-hsm' set but no PKCS#11 library path specified." fi elog "Building with external PKCS#11 library support ($PKCS11_LIB): ${PKCS11_PATH}" fi } pkg_pretend() { check_pkcs11_setup } pkg_setup() { enewgroup opendnssec enewuser opendnssec -1 -1 -1 opendnssec # pretend does not preserve variables so we need to run this once more check_pkcs11_setup } src_prepare() { base_src_prepare eautoreconf } src_configure() { econf \ --without-cunit \ --localstatedir="${EPREFIX}/var/" \ --disable-static \ --with-database-backend=$(use mysql && echo "mysql")$(use sqlite && echo "sqlite3") \ --with-pkcs11-${PKCS11_LIB}=${PKCS11_PATH} \ $(use_enable debug timeshift) \ $(use_enable signer) } src_compile() { default use doc && emake docs } src_install() { default # remove useless .la files find "${ED}" -name '*.la' -delete # Remove subversion tags from config files to avoid useless config updates sed -i \ -e '/