diff --git a/elements/dib-run-parts/root.d/90-base-dib-run-parts b/elements/dib-run-parts/root.d/90-base-dib-run-parts new file mode 100755 index 000000000..fe4ca43dd --- /dev/null +++ b/elements/dib-run-parts/root.d/90-base-dib-run-parts @@ -0,0 +1,5 @@ +#!/bin/bash +home=$(dirname $0) +exec sudo install -m 0755 -o root -g root -D \ + $home/dib-run-parts \ + $TARGET_ROOT/usr/local/bin/dib-run-parts diff --git a/elements/base/bin/dib-run-parts b/elements/dib-run-parts/root.d/dib-run-parts old mode 100755 new mode 100644 similarity index 82% rename from elements/base/bin/dib-run-parts rename to elements/dib-run-parts/root.d/dib-run-parts index 365607ab8..928c292d2 --- a/elements/base/bin/dib-run-parts +++ b/elements/dib-run-parts/root.d/dib-run-parts @@ -16,6 +16,8 @@ # License for the specific language governing permissions and limitations # under the License. +allowed_regex=${RUN_PARTS_REGEX:-"^[0-9A-Za-z_-]+$"} + set -ue name=$(basename $0) @@ -41,8 +43,9 @@ if ! [ -d $target_dir ] ; then fi # We specifically only want to sort *by the numbers*. -# Lexical sorting is not guaranteed. -targets=$(find $target_dir -type f -executable \! -name '.*' -printf '%f\n' | sort -n) +# 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) for target in $targets ; do output "Running $target_dir/$target" diff --git a/elements/ubuntu/element-deps b/elements/ubuntu/element-deps index 6b0d9acea..16fd9fc7c 100644 --- a/elements/ubuntu/element-deps +++ b/elements/ubuntu/element-deps @@ -1 +1,2 @@ dpkg +dib-run-parts diff --git a/lib/img-functions b/lib/img-functions index 38b1de951..ae55abf32 100644 --- a/lib/img-functions +++ b/lib/img-functions @@ -116,7 +116,7 @@ function run_d_in_target() { sudo mount --bind ${TMP_HOOKS_PATH} $TMP_MOUNT_PATH/tmp/in_target.d sudo mount -o remount,ro,bind ${TMP_HOOKS_PATH} $TMP_MOUNT_PATH/tmp/in_target.d check_break before-$1 run_in_target bash - run_in_target run-parts /tmp/in_target.d/$1.d + run_in_target dib-run-parts /tmp/in_target.d/$1.d check_break after-$1 run_in_target bash sudo umount -f $TMP_MOUNT_PATH/tmp/in_target.d sudo rmdir $TMP_MOUNT_PATH/tmp/in_target.d