Permalink
Browse files

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
  • Loading branch information...
1 parent 5f52562 commit ee5ae03d58ea17bc343430218814f636a65c3d44 @tserong tserong committed Jul 22, 2013
View
@@ -45,7 +45,9 @@ fi
# We specifically only want to sort *by the numbers*.
# Lexical sorting is not guaranteed, and identical numbers may be
# 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)
@@ -1,5 +1,6 @@
#!/bin/bash
+
home=$(dirname $0)
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
View
@@ -40,3 +40,10 @@ _BASE_ELEMENT_DIR=$(dirname $0)/../elements
ELEMENTS_PATH=${ELEMENTS_PATH:+"$ELEMENTS_PATH:$_BASE_ELEMENT_DIR"}
export ELEMENTS_PATH=${ELEMENTS_PATH:-$_BASE_ELEMENT_DIR}
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
@@ -155,7 +155,7 @@ function run_d() {
check_element
check_break before-$1 bash
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
check_break after-$1 bash
}

0 comments on commit ee5ae03

Please sign in to comment.