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:
		| @@ -31,41 +31,7 @@ for f in $XBPS_COMMONDIR/environment/build/*.sh; do | ||||
|     source_file "$f" | ||||
| done | ||||
|  | ||||
| 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 | ||||
|  | ||||
| run_pkg_hooks pre-build | ||||
|  | ||||
| # Run pre_build() | ||||
| if declare -f pre_build >/dev/null; then | ||||
|     run_func pre_build | ||||
| fi | ||||
|  | ||||
| # Run do_build() | ||||
| if declare -f do_build >/dev/null; then | ||||
|     run_func do_build | ||||
| else | ||||
|     if [ -n "$build_style" ]; then | ||||
|         if [ ! -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then | ||||
|             msg_error "$pkgver: cannot find build helper $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n" | ||||
|         fi | ||||
|         . $XBPS_BUILDSTYLEDIR/${build_style}.sh | ||||
|         if declare -f do_build >/dev/null; then | ||||
|             run_func do_build | ||||
|         fi | ||||
|     fi | ||||
| fi | ||||
|  | ||||
|  | ||||
| # Run post_build() | ||||
| if declare -f post_build >/dev/null; then | ||||
|     run_func post_build | ||||
| fi | ||||
|  | ||||
| run_pkg_hooks post-build | ||||
| run_step build | ||||
|  | ||||
| touch -f $XBPS_BUILD_DONE | ||||
|  | ||||
|   | ||||
| @@ -31,40 +31,7 @@ for f in $XBPS_COMMONDIR/environment/configure/*.sh; do | ||||
|     source_file "$f" | ||||
| done | ||||
|  | ||||
| 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 | ||||
|  | ||||
| run_pkg_hooks pre-configure | ||||
|  | ||||
| # Run pre_configure() | ||||
| if declare -f pre_configure >/dev/null; then | ||||
|     run_func pre_configure | ||||
| fi | ||||
|  | ||||
| # Run do_configure() | ||||
| if declare -f do_configure >/dev/null; then | ||||
|     run_func do_configure | ||||
| else | ||||
|     if [ -n "$build_style" ]; then | ||||
|         if [ ! -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then | ||||
|             msg_error "$pkgver: cannot find build helper $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n" | ||||
|         fi | ||||
|         . $XBPS_BUILDSTYLEDIR/${build_style}.sh | ||||
|         if declare -f do_configure >/dev/null; then | ||||
|             run_func do_configure | ||||
|         fi | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| # Run post_configure() | ||||
| if declare -f post_configure >/dev/null; then | ||||
|     run_func post_configure | ||||
| fi | ||||
|  | ||||
| run_pkg_hooks post-configure | ||||
| run_step configure optional | ||||
|  | ||||
| touch -f $XBPS_CONFIGURE_DONE | ||||
|  | ||||
|   | ||||
| @@ -37,32 +37,7 @@ if [ "$SUBPKG_MODE"  = "no" ]; then | ||||
|     if [ ! -f $XBPS_INSTALL_DONE ] || [ -f $XBPS_INSTALL_DONE -a -n "$XBPS_BUILD_FORCEMODE" ]; then | ||||
|         mkdir -p $XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/$pkgname-$version | ||||
|  | ||||
|         # Run pre-install hooks | ||||
|         run_pkg_hooks pre-install | ||||
|  | ||||
|         # Run pre_install() | ||||
|         if declare -f pre_install >/dev/null; then | ||||
|             run_func pre_install | ||||
|         fi | ||||
|  | ||||
|         # Run do_install() | ||||
|         cd "$wrksrc" | ||||
|         [ -n "$build_wrksrc" ] && cd $build_wrksrc | ||||
|         if declare -f do_install >/dev/null; then | ||||
|             run_func do_install | ||||
|         else | ||||
|             if [ ! -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then | ||||
|                 msg_error "$pkgver: cannot find build helper $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n" | ||||
|             fi | ||||
|             . $XBPS_BUILDSTYLEDIR/${build_style}.sh | ||||
|             run_func do_install | ||||
|         fi | ||||
|         # Run post_install() | ||||
|         cd "$wrksrc" | ||||
|         [ -n "$build_wrksrc" ] && cd $build_wrksrc | ||||
|         if declare -f post_install >/dev/null; then | ||||
|             run_func post_install | ||||
|         fi | ||||
|         run_step install "" skip | ||||
|  | ||||
|         touch -f $XBPS_INSTALL_DONE | ||||
|     fi | ||||
|   | ||||
| @@ -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" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Enno Boland
					Enno Boland