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

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to