El jue, 17-01-2013 a las 07:47 -0800, Zac Medico escribió: [...] > >> Here are a few problems I see with readme.gentoo_print_elog: > >> > >> 1) contains duplication of code > >> > >> 2) [[ -f "${FILESDIR}/README.gentoo-${SLOT%/*}" ]] condition seems > >> wrong, shouldn't it just use [[ -f "${T}"/README.gentoo ]] since the > >> file was copied to "${T}"/README.gentoo iby readme.gentoo_create_doc? > > > > Yeah, probably both can be merged as checking for PACKAGENAME:SLOT > > should be enough, the problem is how to check it :S > > > >> > >> 3) [[ "${REPLACING_VERSIONS}:${SLOT%/*}" ]] condition seems wrong > >> because SLOT is always non-empty and that means the condition is always > >> true. > >> > > > > Is there a way to check if category/package_name:$SLOT was installed > > before merging? > > REPLACING_VERSIONS always refers to packages with identical SLOT to the > current package So, if ${REPLACING_VERSIONS} is non-empty, then the > current package replaces another package with identical SLOT.
Another try ;)
# Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # @ECLASS: readme.gentoo # @MAINTAINER: # Pacho Ramos <pa...@gentoo.org> # @AUTHOR: # Author: Pacho Ramos <pa...@gentoo.org> # @BLURB: An eclass for installing a README.gentoo doc file recording tips # shown via elog messages. With this eclass, those elog messages will only be # shown at first package installation and a file for later reviewing will be # installed under /usr/share/doc/${PF} # @DESCRIPTION: # An eclass for installing a README.gentoo doc file recording tips # shown via elog messages. With this eclass, those elog messages will only be # shown at first package installation and a file for later reviewing will be # installed under /usr/share/doc/${PF} if [[ ${___ECLASS_ONCE_README_GENTOO} != "recur -_+^+_- spank" ]] ; then ___ECLASS_ONCE_README_GENTOO="recur -_+^+_- spank" inherit eutils case "${EAPI:-0}" in 0|1|2|3) die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}" ;; 4|5) # EAPI>=4 is required for REPLACING_VERSIONS preventing us # from needing to export another pkg_preinst phase to save has_version # result. Also relies on EAPI >=4 default src_install phase. ;; *) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;; esac EXPORT_FUNCTIONS src_install pkg_postinst # @FUNCTION: readme.gentoo_create_doc # @DESCRIPTION: # Create doc file with ${DOC_CONTENTS} variable and, if not set, # look for "${FILESDIR}/README.gentoo" contents. You can use # ${FILESDIR}/README.gentoo-${SLOT} also. # Usually called at src_install phase. readme.gentoo_create_doc() { debug-print-function ${FUNCNAME} "${@}" if [[ -n "${DOC_CONTENTS}" ]]; then eshopts_push set -f echo ${DOC_CONTENTS} | fmt > "${T}"/README.gentoo eshopts_pop dodoc "${T}"/README.gentoo else if [[ -f "${FILESDIR}/README.gentoo-${SLOT%/*}" ]]; then cp "${FILESDIR}/README.gentoo-${SLOT%/*}" "${T}"/README.gentoo dodoc "${T}"/README.gentoo else if [[ -f "${FILESDIR}/README.gentoo" ]]; then cp "${FILESDIR}/README.gentoo" "${T}"/README.gentoo dodoc "${T}"/README.gentoo else die "You are not specifying README.gentoo contents!" fi fi fi } # @FUNCTION: readme.gentoo_print_elog # @DESCRIPTION: # Print elog messages with "${T}"/README.gentoo contents. # Usually called at pkg_postinst phase. readme.gentoo_print_elog() { debug-print-function ${FUNCNAME} "${@}" if [[ -f "${T}"/README.gentoo ]]; then if ! [[ "${REPLACING_VERSIONS}" ]]; then eshopts_push set -f cat "${T}"/README.gentoo | while read -r ELINE; do elog "${ELINE}"; done eshopts_pop fi else die "README.gentoo wasn't created at src_install!" fi } # @FUNCTION: readme.gentoo_src_install # @DESCRIPTION: # Install generated doc file automatically. readme.gentoo_src_install() { debug-print-function ${FUNCNAME} "${@}" default readme.gentoo_create_doc } # @FUNCTION: readme.gentoo_pkg_postinst # @DESCRIPTION: # Show elog messages from from just generated doc file. readme.gentoo_pkg_postinst() { debug-print-function ${FUNCNAME} "${@}" readme.gentoo_print_elog } fi
signature.asc
Description: This is a digitally signed message part