Enable running disk-image-create on SUSE Linux

- Ensures /sbin and friends are in $PATH when invoked (without this,
  various sudo invocations fail in exciting ways).
- Use dib-run-parts in lib/common-functions instead of run-parts
  (neither SLES nor openSUSE ship run-parts).
- Ensure dib-run-parts doesn't descend into subdirectories (same
  behaviour as run-parts).
- Move dib-run-parts from root.d to bin (cleaner, consistent with
  other elements with separate bin scripts).
- Tested by building Ubuntu image on openSUSE 12.3.
- Note: this doesn't add support for creating SUSE images, it just
  lets you run disk-image-create on SUSE-based distros.

Change-Id: I906c6bc3cf51cdf2c4415adeae1ca250faac25e1
This commit is contained in:
Tim Serong 2013-07-22 20:06:54 +10:00
parent 5f52562570
commit ee5ae03d58
5 changed files with 14 additions and 3 deletions

1
bin/dib-run-parts Symbolic link
View File

@ -0,0 +1 @@
../elements/dib-run-parts/bin/dib-run-parts

View File

@ -45,7 +45,9 @@ fi
# We specifically only want to sort *by the numbers*. # We specifically only want to sort *by the numbers*.
# Lexical sorting is not guaranteed, and identical numbers may be # Lexical sorting is not guaranteed, and identical numbers may be
# parallelized later # parallelized later
targets=$(find $target_dir -type f -executable -printf '%f\n' | grep -E "$allowed_regex" | LANG=C sort -n) # Note: -maxdepth 1 ensures only files in the target directory (but not
# subdirectories) are run, which is the way run-parts behaves.
targets=$(find $target_dir -maxdepth 1 -type f -executable -printf '%f\n' | grep -E "$allowed_regex" | LANG=C sort -n)
PROFILE_DIR=$(mktemp -d /tmp/profiledir.XXXXXX) PROFILE_DIR=$(mktemp -d /tmp/profiledir.XXXXXX)

View File

@ -1,5 +1,6 @@
#!/bin/bash #!/bin/bash
home=$(dirname $0) home=$(dirname $0)
exec sudo install -m 0755 -o root -g root -D \ exec sudo install -m 0755 -o root -g root -D \
$home/dib-run-parts \ $home/../bin/dib-run-parts \
$TARGET_ROOT/usr/local/bin/dib-run-parts $TARGET_ROOT/usr/local/bin/dib-run-parts

View File

@ -40,3 +40,10 @@ _BASE_ELEMENT_DIR=$(dirname $0)/../elements
ELEMENTS_PATH=${ELEMENTS_PATH:+"$ELEMENTS_PATH:$_BASE_ELEMENT_DIR"} ELEMENTS_PATH=${ELEMENTS_PATH:+"$ELEMENTS_PATH:$_BASE_ELEMENT_DIR"}
export ELEMENTS_PATH=${ELEMENTS_PATH:-$_BASE_ELEMENT_DIR} export ELEMENTS_PATH=${ELEMENTS_PATH:-$_BASE_ELEMENT_DIR}
export DIB_OFFLINE=${DIB_OFFLINE:-''} export DIB_OFFLINE=${DIB_OFFLINE:-''}
# /sbin and friends aren't automatically included in $PATH when running sudo
# on SUSE Linux which breaks various pieces of this script in exciting ways,
# so inject them into the current $PATH if they're not there.
if ! [[ "$PATH" =~ "/sbin" ]] ; then
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
fi

View File

@ -155,7 +155,7 @@ function run_d() {
check_element check_element
check_break before-$1 bash check_break before-$1 bash
if [ -d ${TMP_HOOKS_PATH}/$1.d ] ; then if [ -d ${TMP_HOOKS_PATH}/$1.d ] ; then
run-parts ${TMP_HOOKS_PATH}/$1.d ${SCRIPT_HOME}/dib-run-parts ${TMP_HOOKS_PATH}/$1.d
fi fi
check_break after-$1 bash check_break after-$1 bash
} }