# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-libs/nss/nss-3.12.2_rc1.ebuild,v 1.1 2008/12/11 10:39:04 armin76 Exp $ inherit eutils flag-o-matic multilib toolchain-funcs NSPR_VER="4.7.3" RTM_NAME="NSS_${PV//./_}_RTM" DESCRIPTION="Mozilla's Network Security Services library that implements PKI support" HOMEPAGE="http://www.mozilla.org/projects/security/pki/nss/" #SRC_URI="ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/${RTM_NAME}/src/${P}.tar.gz" SRC_URI="http://dev.gentoo.org/~armin76/dist/${P}.tar.bz2 mirror://gentoo/${P}.tar.bz2" LICENSE="|| ( MPL-1.1 GPL-2 LGPL-2.1 )" SLOT="0" KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd" IUSE="utils multilib" EMULTILIB_PKG="true" S="${WORKDIR}" DEPEND=">=dev-libs/nspr-${NSPR_VER} >=dev-db/sqlite-3.6.2" pkg_setup() { # try to turn off distcc and ccache for people that have a problem with it export DISTCC_DISABLE=1 export CCACHE_DISABLE=1 } setup_env() { # workaround for users having FEATURES=ccache set, as ccache doesn't, play # nice to multilib builds (see bug 206822) filter-flags -DABI=* append-flags -DABI=${ABI} } src_unpack() { for ABI in $(get_install_abis); do einfo "Unpacking for ABI ${ABI}" cd "${S}" ABI=${ABI:-default} mkdir abi-${ABI} cd abi-${ABI} unpack ${A} cd "${S}"/abi-${ABI}/mozilla/security/coreconf # hack nspr paths echo 'INCLUDES += -I/usr/include/nspr -I$(DIST)/include/dbm' \ >> headers.mk || die "failed to append include" # cope with nspr being in /usr/$(get_libdir)/nspr sed -e 's:$(DIST)/lib:/usr/'"$(get_libdir)"/nspr':' \ -i location.mk # modify install path sed -e 's:SOURCE_PREFIX = $(CORE_DEPTH)/\.\./dist:SOURCE_PREFIX = $(CORE_DEPTH)/dist:' \ -i source.mk # Respect LDFLAGS sed -i -e 's/\$(MKSHLIB) -o/\$(MKSHLIB) \$(LDFLAGS) -o/g' rules.mk cd "${S}"/abi-${ABI} epatch "${FILESDIR}"/${PN}-3.11-config.patch epatch "${FILESDIR}"/${PN}-3.12-config-1.patch epatch "${FILESDIR}"/${PN}-mips64-2.patch done } src_compile() { if [[ -z ${OABI} ]] && has_multilib_profile; then strip-flags einfo "Building multilib ${PN} for ABIs: $(get_install_abis)" OABI=${ABI} for ABI in $(get_install_abis); do export ABI=${ABI} src_compile done ABI=${OABI} return fi ABI=${ABI:-default} setup_env case ${ABI} in *amd64*) export USE_64=1;; *) ;; esac einfo "Compiling for ABI ${ABI}" export NSDISTMODE=copy export NSS_USE_SYSTEM_SQLITE=1 export NSS_ENABLE_ECC=1 cd "${S}"/abi-${ABI}/mozilla/security/coreconf emake -j1 BUILD_OPT=1 XCFLAGS="${CFLAGS}" CC="$(tc-getCC)" || die "coreconf ABI ${ABI} make failed" cd "${S}"/abi-${ABI}/mozilla/security/dbm emake -j1 BUILD_OPT=1 XCFLAGS="${CFLAGS}" CC="$(tc-getCC)" || die "dbm ABI ${ABI} make failed" cd "${S}"/abi-${ABI}/mozilla/security/nss emake -j1 BUILD_OPT=1 XCFLAGS="${CFLAGS}" CC="$(tc-getCC)" || die "nss ABI ${ABI} make failed" } src_install () { MINOR_VERSION=12 NSS_VMAJOR=`cat ${S}/abi-${DEFAULT_ABI}/mozilla/security/nss/lib/nss/nss.h | grep "#define.*NSS_VMAJOR" | awk '{print $3}'` NSS_VMINOR=`cat ${S}/abi-${DEFAULT_ABI}/mozilla/security/nss/lib/nss/nss.h | grep "#define.*NSS_VMINOR" | awk '{print $3}'` NSS_VPATCH=`cat ${S}/abi-${DEFAULT_ABI}/mozilla/security/nss/lib/nss/nss.h | grep "#define.*NSS_VPATCH" | awk '{print $3}'` dodir /usr/bin dodir /etc/env.d cp "${FILESDIR}"/3.12-nss-config.in "${D}"/usr/bin/nss-config for ABI in $(get_install_abis); do einfo "Installing for ABI ${ABI}" ABI=${ABI:-default} cd "${S}"/abi-${ABI}/mozilla/security/dist # put all *.a files in /usr/lib/nss (because some have conflicting names # with existing libraries) dodir /usr/$(get_libdir)/nss cp -L */lib/*.so "${D}"/usr/$(get_libdir)/nss || die "copying shared libs for ABI ${ABI} failed" cp -L */lib/*.chk "${D}"/usr/$(get_libdir)/nss || die "copying chk files for ABI ${ABI} failed" cp -L */lib/*.a "${D}"/usr/$(get_libdir)/nss || die "copying libs for ABI ${ABI} failed" cd "${D}"/usr/$(get_libdir)/nss for file in *.so; do mv ${file} ${file}.${MINOR_VERSION} ln -s ${file}.${MINOR_VERSION} ${file} done dodir /usr/$(get_libdir)/pkgconfig cp "${FILESDIR}"/3.12-nss.pc.in "${D}"/usr/$(get_libdir)/pkgconfig/nss.pc # coping with nss being in a different path. We move up priority to # ensure that nss/nspr are used specifically before searching elsewhere. echo "LDPATH=/usr/$(get_libdir)/nss" > "${D}"/etc/env.d/08nss-${ABI} if [[ ${ABI} == ${DEFAULT_ABI} ]]; then cd "${S}"/abi-${ABI}/mozilla/security/dist # all the include files insinto /usr/include/nss doins private/nss/*.h doins public/nss/*.h sed -e "s,@libdir@,/usr/"$(get_libdir)"/nss,g" \ -e "s,@prefix@,/usr,g" \ -e "s,@exec_prefix@,\$\{prefix},g" \ -e "s,@includedir@,\$\{prefix}/include/nss,g" \ -e "s,@MOD_MAJOR_VERSION@,$NSS_VMAJOR,g" \ -e "s,@MOD_MINOR_VERSION@,$NSS_VMINOR,g" \ -e "s,@MOD_PATCH_VERSION@,$NSS_VPATCH,g" \ -i "${D}"/usr/bin/nss-config chmod 755 "${D}"/usr/bin/nss-config if use utils; then cd "${S}"/abi-${ABI}/mozilla/security/dist/*/bin/ for f in *; do newbin ${f} nss${f} done fi fi sed -e "s,@libdir@,/usr/"$(get_libdir)"/nss,g" \ -e "s,@prefix@,/usr,g" \ -e "s,@exec_prefix@,\$\{prefix},g" \ -e "s,@includedir@,\$\{prefix}/include/nss," \ -e "s,@NSPR_VERSION@,`nspr-config --version`,g" \ -e "s,@NSS_VERSION@,$NSS_VMAJOR.$NSS_VMINOR.$NSS_VPATCH,g" \ -i "${D}"/usr/$(get_libdir)/pkgconfig/nss.pc chmod 644 "${D}"/usr/$(get_libdir)/pkgconfig/nss.pc done }