aboutsummaryrefslogtreecommitdiff
path: root/pbuilder-runhooks
diff options
context:
space:
mode:
authorMattia Rizzolo <mattia@mapreri.org>2015-11-25 23:00:15 +0000
committerMattia Rizzolo <mattia@mapreri.org>2015-11-25 23:58:17 +0000
commitad930168edf31d64d3e2af1b52becc5662c4f140 (patch)
tree1a8f6b29b60e4a3e5b299dd217491222028e3c01 /pbuilder-runhooks
parenta3aa1dd2177a0d349cfdf8cbc2642617e955143f (diff)
downloadpbuilder-ad930168edf31d64d3e2af1b52becc5662c4f140.tar
pbuilder-ad930168edf31d64d3e2af1b52becc5662c4f140.tar.gz
runhooks: move (un)loadhooks() and executehooks() to pbuilder-modules.
Merging the file means the hooks can use functions from the modules and viceversa safely; otherwise we would need both the scripts to source the other and this is not supported in bash. We can't delete it since it's referenced in pdebuild-internal, and since we can't assure the same pbuilder version outside and inside the chroot we have to be backward-compatible. Otherwise running an old pbuilder with a newer chroot would break badly. Thanks: Holger to notice this broke with the last release
Diffstat (limited to 'pbuilder-runhooks')
-rw-r--r--pbuilder-runhooks109
1 files changed, 6 insertions, 103 deletions
diff --git a/pbuilder-runhooks b/pbuilder-runhooks
index 8e96e95..5776f47 100644
--- a/pbuilder-runhooks
+++ b/pbuilder-runhooks
@@ -1,106 +1,9 @@
#! /bin/bash
-#==========================================================================
-# Execute any hooks required for this segment
-#
-# Title: pbuilder-runhooks
-# Description User hooks for pbuilder package
-# Programmed by: Dale Amon <amon@vnl.com>
-# $HOOKDIR is set in /etc/pbuilderrc and contains a list of executable
-# programs or scripts. The type is only limited by what you expect will
-# be available in your chrooted environment after debootstrap has done
-# an initial install. The functions must be named in the format:
-# <prefex><digit><digit><descriptive name>. Currently only X is defined;
-# scripts prefixed with X will be run just before the chroot environment
-# is exited and the base.tgz file is created or updated.
+# This file was merged with pbuilder-modules.
+# We can't delete it since it's referenced in pdebuild-internal, and since we
+# can't assure the same pbuilder version outside and inside the chroot we have
+# to be backward-compatible.
+# Otherwise running an old pbuilder with a newer chroot would break badly.
-# $BUILDPLACE is as used in pbuilder. When already inside chroot, this
-# routine can be called with $BUILDPLACE='' (from pdebuild-internal)
-
-# TODO: * Are there any other executable backup types we should
-# filtered besides *~ and *.bak?
-#
-#==========================================================================
-
-hooks=tmp/hooks
-
-#==========================================================================
-# Set up fresh chroot'd hooks tmp script directory
-#
-
-function loadhooks () {
- if [ -z "$HOOKDIR" ]; then
- return ;
- fi
- if [ -d "$BUILDPLACE/$hooks" ]; then
- rm -rf "$BUILDPLACE/$hooks"
- fi
- if [ -d "$HOOKDIR" ]; then
- mkdir -p "$BUILDPLACE/$hooks"
- if ! cp -aL "$HOOKDIR/"* "$BUILDPLACE/$hooks"; then
- log.w "no hooks found in the hookdir '$HOOKDIR'"
- fi
- else
- log.w "hookdir $HOOKDIR does not exist, skipping"
- fi
-}
-
-#--------------------------------------------------------------------------
-# Tidy up after ourselves. (Anything we leave behind ends up in base.tgz)
-#
-
-function unloadhooks () {
- if [ -z "$HOOKDIR" ]; then
- return ;
- fi
- rm -rf "$BUILDPLACE/$hooks"
-}
-
-#--------------------------------------------------------------------------
-# Execute every script found in the chroot'd target directory. We only
-# test for whether a file is executable because we have no idea what
-# the user had put in their dist. If they want PL/1 and ADA on the base
-# dist or have decided to use emacslisp for everything, it's their
-# problem.
-#
-# Args: Required prefix on hook fn name
-# Returns: none
-#
-
-function executehooks () {
- local prefix="$1"
- if [ -z "$HOOKDIR" ]; then
- return
- fi
- for fn in "$BUILDPLACE/$hooks/$prefix"[0-9][0-9]* ; do
- case "$fn" in
- "$BUILDPLACE/$hooks/$prefix"'[0-9][0-9]*')
- log.w "no hooks of type ${prefix} found -- ignoring"
- ;;
- *~)
- log.w "skipping an editor backup file $fn"
- ;;
- *.bak)
- log.w "skipping a backup file $fn"
- ;;
- *)
- if [ -x "$fn" ]; then
- log.i "user script $fn starting"
- BUILDDIR="$BUILDDIR" \
- $CHROOTEXEC "/$hooks/$(basename "$fn")"
- log.i "user script $fn finished"
- else
- if [ -f "$fn" ]; then
- filetype=$(basename "$fn" )
- log.w "execute priv not set on file $filetype, not executing."
- else
- # Should it reach here ? This case should be caught in the above case.
- log.w "no hooks of type ${prefix} found -- internal error in logic"
- fi
- fi
- ;;
- esac
- done
-}
-
-#--------------------------------------------------------------------------
+. "${BASH_SOURCE%/*}/pbuilder-modules"