summaryrefslogtreecommitdiff
path: root/scripts/build/chroot_prep
diff options
context:
space:
mode:
authorLyndon Brown <jnqnfe@gmail.com>2020-04-01 05:22:39 +0100
committerRaphaƫl Hertzog <hertzog@debian.org>2020-04-23 09:38:02 +0000
commite22bd27170bba862239c41ebdd9a6f23ef865caf (patch)
treeef5e94ab59d716835f21a8e706ef80bc909e3dcc /scripts/build/chroot_prep
parentfc88358b29bc353b15879d611cc25fc74ae91442 (diff)
downloadvyos-live-build-e22bd27170bba862239c41ebdd9a6f23ef865caf.tar.gz
vyos-live-build-e22bd27170bba862239c41ebdd9a6f23ef865caf.zip
add bulk chroot preparation script execution helper
rather than explicitly running one helper after another in the major build stages, or by hand (e.g. while testing things during development), they can be run in bulk via this new helper. it essentially just takes a list of helpers to run and runs them one by one. it supports running all helpers except chroot_archives because that one has different parameter requirements to the rest and supporting it would make things messier. helper scripts can either be named by their full script name or without the 'chroot_' prefix for brevity. you can also just specify 'all' to refer to all helpers (except chroot_archives, per above). it automatically reverses the order of the list when run in remove mode. Gbp-Dch: Short
Diffstat (limited to 'scripts/build/chroot_prep')
-rwxr-xr-xscripts/build/chroot_prep69
1 files changed, 69 insertions, 0 deletions
diff --git a/scripts/build/chroot_prep b/scripts/build/chroot_prep
new file mode 100755
index 000000000..8bb456b8b
--- /dev/null
+++ b/scripts/build/chroot_prep
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2020 The Debian Live team
+##
+## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
+## This is free software, and you are welcome to redistribute it
+## under certain conditions; see COPYING for details.
+
+
+set -e
+
+# Including common functions
+[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh
+
+# Setting static variables
+DESCRIPTION="Prep chroot"
+USAGE="${PROGRAM} {install|remove} {all|\"HELPERS\"} [--force]"
+
+# Processing arguments and configuration files
+Init_config_data "${@}"
+
+# Requiring stage file
+Require_stagefiles config bootstrap
+
+ACTION="${1}"
+HELPERS="${2}"
+shift 2
+
+if ! In_list "${ACTION}" install remove; then
+ Echo_error "Invalid action parameter"
+ exit 1
+fi
+
+if [ -z "${HELPERS}" ]; then
+ Echo_error "You must specify which helpers to run"
+ exit 1
+fi
+
+if [ "${HELPERS}" = "all" ]; then
+ # Use default set of all helpers (except chroot_archives which cannot be supported due to different parameter needs)
+ HELPERS="devpts proc selinuxfs sysfs debianchroot dpkg tmpfs sysv-rc hosts resolv hostname apt"
+else
+ # Support both comma and space separation
+ # Support with and without 'chroot_' script filename prefix
+ HELPERS="$(echo "${HELPERS}" | sed -e 's|,| |g' -e 's|^chroot_||g')"
+fi
+
+if In_list "prep" ${HELPERS}; then
+ Echo_error "Recursive!"
+ exit 1
+fi
+
+if In_list "archives" ${HELPERS}; then
+ Echo_error "The chroot_archives helper cannot be used through chroot_prep!"
+ exit 1
+fi
+
+if [ "${_ACTION}" = "remove" ]; then
+ HELPERS_REVERSED=""
+ for HELPER in $HELPERS; do
+ HELPERS_REVERSED="${HELPER}${HELPERS_REVERSED:+ $HELPERS_REVERSED}"
+ done
+ HELPERS="${HELPERS_REVERSED}"
+fi
+
+for HELPER in $HELPERS; do
+ lb "chroot_${HELPER}" "${ACTION}" "${@}"
+done