# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/eclass/zproduct.eclass,v 1.28 2011/12/27 17:55:13 fauli Exp $ # Author: Jason Shoemaker # This eclass is designed to streamline the construction of # ebuilds for new zope products EXPORT_FUNCTIONS src_install pkg_prerm pkg_postinst pkg_config DESCRIPTION="This is a zope product" RDEPEND="net-zope/zope app-admin/zprod-manager" IUSE="" SLOT="0" S=${WORKDIR} ZI_DIR="${ROOT}/var/lib/zope/" ZP_DIR="${ROOT}/usr/share/zproduct" DOT_ZFOLDER_FPATH="${ZP_DIR}/${PF}/.zfolder.lst" zproduct_src_install() { ## Assume that folders or files that shouldn't be installed # in the zproduct directory have been already been removed. ## Assume $S set to the parent directory of the zproduct(s). debug-print-function ${FUNCNAME} ${*} [ -n "${ZPROD_LIST}" ] || die "ZPROD_LIST isn't defined." [ -z "${1}" ] && zproduct_src_install all # set defaults into ${ZP_DIR} dodir ${ZP_DIR}/${PF} while [ -n "$1" ] ; do case ${1} in do_zpfolders) ## Create .zfolders.lst from $ZPROD_LIST. debug-print-section do_zpfolders for N in ${ZPROD_LIST} ; do echo ${N} >> "${D}"/${DOT_ZFOLDER_FPATH} done ;; do_docs) #*Moves txt docs debug-print-section do_docs docs_move for ZPROD in ${ZPROD_LIST} ; do docs_move ${ZPROD}/ done ;; do_install) debug-print-section do_install # Copy everything that's left to ${D}${ZP_DIR} # modified to not copy ownership (QA) cp --recursive --no-dereference --preserve=timestamps,mode,links "${S}"/* "${D}"/${ZP_DIR}/${PF} ;; all) debug-print-section all zproduct_src_install do_zpfolders do_docs do_install ;; esac shift done debug-print "${FUNCNAME}: result is ${RESULT}" } docs_move() { # if $1 == "/", then this breaks. if [ -n "$1" ] ; then docinto $1 else docinto / fi dodoc $1HISTORY.txt $1README{.txt,} $1INSTALL{.txt,} > /dev/null 2>/dev/null dodoc $1AUTHORS $1COPYING $1CREDITS.txt $1TODO{.txt,} > /dev/null 2>/dev/null dodoc $1LICENSE{.GPL,.txt,} $1CHANGES{.txt,} > /dev/null 2>/dev/null dodoc $1DEPENDENCIES.txt $1FAQ.txt $1UPGRADE.txt > /dev/null 2>/dev/null for item in ${MYDOC} ; do dodoc ${1}${item} > /dev/null 2>/dev/null done } zproduct_pkg_postinst() { #*check for multiple zinstances, if several display install help msg. #*Use zprod-update to install this zproduct to the default zinstance. debug-print-function ${FUNCNAME} ${*} # this is a shared directory, so root should be owner; # zprod-manager or whatever is used to copy products into the # instances has to take care of setting the right permissions in # the target directory chown -R root:root ${ZP_DIR}/${PF} # make shure there is nothing writable in the new dir, and all is readable chmod -R go-w,a+rX ${ZP_DIR}/${PF} einfo "Attention: ${PF} was not installed in any instance! Use 'zprod-manager add'" #disabled by radek@20061228 - contact me in case of any question! #${ROOT}/usr/sbin/zprod-manager add ${ZP_DIR}/${PF} } zproduct_pkg_prerm() { # checks how many times product is installed and informs about it # it does not remove it (change in behaviour done by radek@20061228) debug-print-function ${FUNCNAME} ${*} ZINST_LST=$(ls /var/lib/zope/) if [ "${ZINST_LST}" ] ; then # first check and warn on any installed products into instances ARE_INSTALLED=0 for N in ${ZINST_LST} ; do if [ -s $DOT_ZFOLDER_FPATH ] then # check only if installed product has non empty folder lists # # for every fodler inside product ... for PFOLD in `cat $DOT_ZFOLDER_FPATH` do # ... check if its in instance. if [ -d "${ZI_DIR}${N}/Products/${PFOLD}" ] then ARE_INSTALLED=$[ARE_INSTALLED + 1] fi done fi done if [ $ARE_INSTALLED -gt 0 ] then ewarn "Detected at least $ARE_INSTALLED copies of product being unmerged." ewarn "Please manually remove it from instances using 'zprod-manager del'" ewarn "Product is removed from ${ZP_DIR} but not from instances!" fi fi } zproduct_pkg_config() { einfo "To add zproducts to zope instances use:" einfo "\tzprod-manager add" }