common/libexec: remove redundant pre/do/post preparation code

This pullrequest removes redundant codepaths in
xbps-src-do{build,configure,install}.sh and joins the code in the
run_step function. This causes slightly different behavior to
do_install:
Do install will chdir to wrksrc only _before_ the first step. The
current behavior is that pre_install will run without a chdir, do_ and
post_ is runned with a chdir. This is a subtle but breaking change and
may cause some templates to break at install phase.
This commit is contained in:
Enno Boland 2017-11-17 14:25:29 +01:00 committed by Enno Boland
parent ac0ca9945a
commit ba84655a13
4 changed files with 51 additions and 95 deletions

View file

@ -27,6 +27,54 @@ run_func() {
set +E
}
ch_wrksrc() {
cd "$wrksrc" || msg_error "$pkgver: cannot access wrksrc directory [$wrksrc]\n"
if [ -n "$build_wrksrc" ]; then
cd $build_wrksrc || \
msg_error "$pkgver: cannot access build_wrksrc directory [$build_wrksrc]\n"
fi
}
# runs {pre,do,post}_X tripplets
run_step() {
local step_name="$1" optional_step="$2" skip_post_hook="$3"
run_pkg_hooks "pre-$step_name"
ch_wrksrc
# Run pre_* Phase
if declare -f "pre_$step_name" >/dev/null; then
run_func "pre_$step_name"
fi
# Run do_* Phase
if declare -f "do_$step_name" >/dev/null; then
run_func "do_$step_name"
elif [ -n "$build_style" ]; then
if [ -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then
. $XBPS_BUILDSTYLEDIR/${build_style}.sh
if declare -f "do_$step_name" >/dev/null; then
run_func "do_$step_name"
elif [ ! "$optional_step" ]; then
msg_error "$pkgver: cannot find do_$step_name() in $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
fi
else
msg_error "$pkgver: cannot find build helper $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
fi
elif [ ! "$optional_step" ]; then
msg_error "$pkgver: cannot find do_$step_name()!\n"
fi
# Run post_* Phase
if declare -f "post_$step_name" >/dev/null; then
run_func "post_$step_name"
fi
if ! [ "$skip_post_hook" ]; then
run_pkg_hooks "post-$step_name"
fi
}
error_func() {
if [ -n "$1" -a -n "$2" ]; then
msg_red "$pkgver: failed to run $1() at line $2.\n"