summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2014-10-13 04:12:57 +0100
committerBen Hutchings <ben@decadent.org.uk>2014-10-13 04:12:57 +0100
commit85295509a63e5d454574e1f395978e8f404d4ba5 (patch)
tree620b0f412e6b9c84a7cbdba5c8a6dfe0648fe5b7
parentbf238f6aceb206e25969d64f5b496eb5d051f481 (diff)
Move get_source, set_initlist, get_prereq_pairs, call_scripts to hook-functions
These functions are not needed at boot time. Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--hook-functions94
-rw-r--r--scripts/functions94
2 files changed, 94 insertions, 94 deletions
diff --git a/hook-functions b/hook-functions
index 957e4c2..acac222 100644
--- a/hook-functions
+++ b/hook-functions
@@ -577,6 +577,76 @@ EOF
}
+# Find the source for a script file. This is needed to work around
+# temporary directories mounted with the noexec option. The source
+# will be on / or /usr which must be executable.
+get_source()
+{
+ if [ -z "$scriptdir" ]; then
+ echo "${initdir}/$1"
+ elif [ -f "${CONFDIR}${scriptdir}/$1" ]; then
+ echo "${CONFDIR}${scriptdir}/$1"
+ else
+ echo "/usr/share/initramfs-tools${scriptdir}/$1"
+ fi
+}
+
+set_initlist()
+{
+ unset initlist
+ for si_x in ${initdir}/*; do
+ # skip empty dirs without warning
+ [ "${si_x}" = "${initdir}/*" ] && return
+
+ # only allow variable name chars
+ case ${si_x#${initdir}/} in
+ *[![:alnum:]\._-]*)
+ [ "${verbose}" = "y" ] \
+ && echo "$si_x ignored: not alphanumeric or '_' file" >&2
+ continue
+ ;;
+ esac
+
+ # skip directories
+ if [ -d ${si_x} ]; then
+ [ "${verbose}" = "y" ] \
+ && echo "$si_x ignored: a directory" >&2
+ continue
+ fi
+
+ si_x="$(get_source "${si_x#${initdir}/}")"
+
+ # skip non executable scripts
+ if [ ! -x ${si_x} ]; then
+ [ "${verbose}" = "y" ] \
+ && echo "$si_x ignored: not executable" >&2
+ continue
+ fi
+
+ # skip bad syntax
+ if ! sh -n ${si_x} ; then
+ [ "${verbose}" = "y" ] \
+ && echo "$si_x ignored: bad syntax" >&2
+ continue
+ fi
+
+ initlist="${initlist:-} ${si_x##*/}"
+ done
+}
+
+get_prereq_pairs()
+{
+ set_initlist
+ for gp_x in ${initlist:-}; do
+ echo ${gp_x} ${gp_x}
+ gp_src="$(get_source $gp_x)"
+ prereqs=$("${gp_src}" prereqs)
+ for prereq in ${prereqs}; do
+ echo ${prereq} ${gp_x}
+ done
+ done
+}
+
# cache boot scripts order
cache_run_scripts()
{
@@ -593,6 +663,30 @@ cache_run_scripts()
done
}
+call_scripts()
+{
+ set -e
+ for cs_x in ${runlist}; do
+ [ -f ${initdir}/${cs_x} ] || continue
+ # mkinitramfs verbose output
+ if [ "${verbose}" = "y" ]; then
+ echo "Calling hook ${cs_x}"
+ fi
+ ${initdir}/${cs_x} && ec=$? || ec=$?
+ # allow hooks to abort build:
+ if [ "$ec" -ne 0 ]; then
+ echo "E: ${initdir}/${cs_x} failed with return $ec."
+ # only errexit on mkinitramfs
+ [ -n "${version}" ] && exit $ec
+ fi
+ # allow boot scripts to modify exported boot parameters
+ if [ -e /conf/param.conf ]; then
+ . /conf/param.conf
+ fi
+ done
+ set +e
+}
+
run_scripts()
{
scriptdir=${2:-}
diff --git a/scripts/functions b/scripts/functions
index 7ae9ef3..c0dd684 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -68,100 +68,6 @@ render()
eval "echo -n \${$@}"
}
-# Find the source for a script file. This is needed to work around
-# temporary directories mounted with the noexec option. The source
-# will be on / or /usr which must be executable.
-get_source()
-{
- if [ -z "$scriptdir" ]; then
- echo "${initdir}/$1"
- elif [ -f "${CONFDIR}${scriptdir}/$1" ]; then
- echo "${CONFDIR}${scriptdir}/$1"
- else
- echo "/usr/share/initramfs-tools${scriptdir}/$1"
- fi
-}
-
-set_initlist()
-{
- unset initlist
- for si_x in ${initdir}/*; do
- # skip empty dirs without warning
- [ "${si_x}" = "${initdir}/*" ] && return
-
- # only allow variable name chars
- case ${si_x#${initdir}/} in
- *[![:alnum:]\._-]*)
- [ "${verbose}" = "y" ] \
- && echo "$si_x ignored: not alphanumeric or '_' file" >&2
- continue
- ;;
- esac
-
- # skip directories
- if [ -d ${si_x} ]; then
- [ "${verbose}" = "y" ] \
- && echo "$si_x ignored: a directory" >&2
- continue
- fi
-
- si_x="$(get_source "${si_x#${initdir}/}")"
-
- # skip non executable scripts
- if [ ! -x ${si_x} ]; then
- [ "${verbose}" = "y" ] \
- && echo "$si_x ignored: not executable" >&2
- continue
- fi
-
- # skip bad syntax
- if ! sh -n ${si_x} ; then
- [ "${verbose}" = "y" ] \
- && echo "$si_x ignored: bad syntax" >&2
- continue
- fi
-
- initlist="${initlist:-} ${si_x##*/}"
- done
-}
-
-get_prereq_pairs()
-{
- set_initlist
- for gp_x in ${initlist:-}; do
- echo ${gp_x} ${gp_x}
- gp_src="$(get_source $gp_x)"
- prereqs=$("${gp_src}" prereqs)
- for prereq in ${prereqs}; do
- echo ${prereq} ${gp_x}
- done
- done
-}
-
-call_scripts()
-{
- set -e
- for cs_x in ${runlist}; do
- [ -f ${initdir}/${cs_x} ] || continue
- # mkinitramfs verbose output
- if [ "${verbose}" = "y" ]; then
- echo "Calling hook ${cs_x}"
- fi
- ${initdir}/${cs_x} && ec=$? || ec=$?
- # allow hooks to abort build:
- if [ "$ec" -ne 0 ]; then
- echo "E: ${initdir}/${cs_x} failed with return $ec."
- # only errexit on mkinitramfs
- [ -n "${version}" ] && exit $ec
- fi
- # allow boot scripts to modify exported boot parameters
- if [ -e /conf/param.conf ]; then
- . /conf/param.conf
- fi
- done
- set +e
-}
-
# For boot time only; this is overridden at build time in hook-functions
run_scripts()
{