In order to facilitate better ease of use with phase hooks, I propose a
paludis-style default phase hook. Basically ebuild.sh provides a default
hook that looks in PORTAGE_HOOKS_DIR/{pre,post}_${EBUILD_PHASE}/ for shell
scripts and sources them.
The patch to ebuild.sh only generates hooks 1 phase at a time. People
with existing hooks in bashrc will not be affected (the bashrc hooks will
over-ride these default hooks).
The motivation here is to have users create functionality in these hooks
and enable them to easily share hooks. 'hey drop this hook in location X'
is a lot easier than 'add this hook to bashrc...oh and make sure you don't
already have a post_pkg_prerm hook in there...oh and make sure if you do
have an existing hook you make it so that both run...' and so forth.
For people with no hooks the speed penalty is nil; for those with many
hooks, there is probably some small overhead per phase as the script
enumerates and sources the hooks.
Comments and Questions are welcome.
-Alec Warner
Index: ebuild.sh
===================================================================
--- ebuild.sh (revision 5930)
+++ ebuild.sh (working copy)
@@ -69,6 +69,24 @@
source "${PORTAGE_BIN_PATH}/isolated-functions.sh" &>/dev/null
+
+# Generate default hooks for EBUILD_PHASE
+# Users may over-ride these in their bashrc
+shopt -s nullglob
+for prefix in pre post
+do
+ eval "${prefix}_${EBUILD_PHASE}() {
+ for script in
\"${PORTAGE_HOOKS_DIR}/${prefix}_${EBUILD_PHASE}/*.sh\"
+ do
+ ebegin \"Sourcing \$script\"
+ qa_source \$script || die \"Failed to source \$script\"
+ eend
+ done
+ }"
+done
+
+shopt -u nullglob
+
OCC="$CC"
OCXX="$CXX"