summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-11-25 08:35:54 +0000
committerZac Medico <zmedico@gentoo.org>2007-11-25 08:35:54 +0000
commit2cc97ac0d0de6600d63d6aec7e684912c00d766e (patch)
treed473f022ec0e2cc248709d6f33190db02d3d1670
parentce40418daeeeabc86ec21b31b5fa48ccf9ebdfa8 (diff)
downloadportage-2cc97ac0d0de6600d63d6aec7e684912c00d766e.tar.gz
portage-2cc97ac0d0de6600d63d6aec7e684912c00d766e.tar.bz2
portage-2cc97ac0d0de6600d63d6aec7e684912c00d766e.zip
Test if ebuild functions are defined before calling them. This
will be useful if an environment.bz2 has been loaded and it has missing functions for some reason. For example, there are a lot of default functions that are empty and could simply be omitted from the environment. svn path=/main/trunk/; revision=8654
-rwxr-xr-xbin/ebuild.sh46
1 files changed, 21 insertions, 25 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index 566ff8a85..b4c6dcc53 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -615,10 +615,19 @@ gen_wrapper() {
chmod 0755 "$1"
}
+ebuild_phase() {
+ [ "$(type -t ${1})" == "function" ] && qa_call ${1}
+}
+
+ebuild_phase_with_hooks() {
+ local x phase_name=${1}
+ for x in {pre_,,post_}${phase_name} ; do
+ ebuild_phase ${x}
+ done
+}
+
dyn_setup() {
- [ "$(type -t pre_pkg_setup)" == "function" ] && qa_call pre_pkg_setup
- qa_call pkg_setup
- [ "$(type -t post_pkg_setup)" == "function" ] && qa_call post_pkg_setup
+ ebuild_phase_with_hooks pkg_setup
}
dyn_unpack() {
@@ -666,7 +675,7 @@ dyn_unpack() {
fi
cd "${WORKDIR}" || die "Directory change failed: \`cd '${WORKDIR}'\`"
vecho ">>> Unpacking source..."
- qa_call src_unpack
+ ebuild_phase src_unpack
touch "${PORTAGE_BUILDDIR}/.unpacked" || die "IO Failure -- Failed 'touch .unpacked' in ${PORTAGE_BUILDDIR}"
vecho ">>> Source unpacked."
cd "${PORTAGE_BUILDDIR}"
@@ -888,7 +897,7 @@ dyn_compile() {
#our libtool to create problematic .la files
export PWORKDIR="$WORKDIR"
vecho ">>> Compiling source in ${srcdir} ..."
- qa_call src_compile
+ ebuild_phase src_compile
vecho ">>> Source compiled."
#|| abort_compile "fail"
cd "${PORTAGE_BUILDDIR}"
@@ -927,7 +936,7 @@ dyn_test() {
vecho ">>> Test phase [explicitly disabled]: ${CATEGORY}/${PF}"
else
addpredict /
- qa_call src_test
+ ebuild_phase src_test
SANDBOX_PREDICT="${SANDBOX_PREDICT%:/}"
fi
@@ -963,7 +972,7 @@ dyn_install() {
#some packages uses an alternative to $S to build in, cause
#our libtool to create problematic .la files
export PWORKDIR="$WORKDIR"
- qa_call src_install
+ ebuild_phase src_install
touch "${PORTAGE_BUILDDIR}/.installed"
vecho ">>> Completed installing ${PF} into ${D}"
vecho
@@ -1012,12 +1021,7 @@ dyn_preinst() {
eerror "${FUNCNAME}: D is unset"
return 1
fi
-
- [ "$(type -t pre_pkg_preinst)" == "function" ] && qa_call pre_pkg_preinst
-
- pkg_preinst
-
- [ "$(type -t post_pkg_preinst)" == "function" ] && qa_call post_pkg_preinst
+ ebuild_phase_with_hooks pkg_preinst
}
dyn_help() {
@@ -1460,7 +1464,7 @@ save_ebuild_env() {
debug-print-section inherit EXPORT_FUNCTIONS newdepend newrdepend \
newpdepend do_newdepend remove_path_entry killparent \
save_ebuild_env filter_readonly_variables preprocess_ebuild_env \
- source_all_bashrcs
+ source_all_bashrcs ebuild_phase ebuild_phase_with_hooks
# portage config variables and variables set directly by portage
unset ACCEPT_KEYWORDS AUTOCLEAN BAD BRACKET BUILD_PREFIX CLEAN_DELAY \
@@ -1727,7 +1731,7 @@ fi
if [ -n "${EBUILD_SH_ARGS}" ] ; then
case ${EBUILD_SH_ARGS} in
nofetch)
- qa_call pkg_nofetch
+ ebuild_phase_with_hooks pkg_nofetch
exit 1
;;
prerm|postrm|postinst|config|info)
@@ -1738,18 +1742,10 @@ if [ -n "${EBUILD_SH_ARGS}" ] ; then
fi
export SANDBOX_ON="0"
if [ "${PORTAGE_DEBUG}" != "1" ] || [ "${-/x/}" != "$-" ]; then
- [ "$(type -t pre_pkg_${EBUILD_SH_ARGS})" == "function" ] && \
- qa_call pre_pkg_${EBUILD_SH_ARGS}
- qa_call pkg_${EBUILD_SH_ARGS}
- [ "$(type -t post_pkg_${EBUILD_SH_ARGS})" == "function" ] && \
- qa_call post_pkg_${EBUILD_SH_ARGS}
+ ebuild_phase_with_hooks pkg_${EBUILD_SH_ARGS}
else
set -x
- [ "$(type -t pre_pkg_${EBUILD_SH_ARGS})" == "function" ] && \
- qa_call pre_pkg_${EBUILD_SH_ARGS}
- qa_call pkg_${EBUILD_SH_ARGS}
- [ "$(type -t post_pkg_${EBUILD_SH_ARGS})" == "function" ] && \
- qa_call post_pkg_${EBUILD_SH_ARGS}
+ ebuild_phase_with_hooks pkg_${EBUILD_SH_ARGS}
set +x
fi
;;