diskimage-builder/elements/ramdisk/post-install.d/01-ensure-binaries
Ben Nemec 381ff6ab1d Fix set -eu and pipefail failures
Fixes problems found by set -eu and pipefail, including:
-Many unset variables
-Commands that can fail under normal circumstances, which breaks
with set -e.  This change swallows those expected errors to allow
our existing error code to handle them.
-The dkms element was not finding Fedora kernel versions correctly.
This may be an issue for other distros too, but since Fedora was
working fine without this functionality I only changed it to print
a warning message rather than failing the build when it happens.
-The ramdisk init script will not be set -eu because if it fails
the result is a kernel panic, which can be tricky to debug.
However, in testing with set -e a few failing commands were found
and have been fixed in this patch.

Change-Id: I44cf98dfc80cfcaec54b88cc83be80a3dbf2cec3
2014-04-15 20:53:15 -05:00

45 lines
963 B
Bash
Executable file

#!/bin/bash
# Ensure that all binaries listed in ramdisk elements, exist
set -e
set -x
export TARGET_DIR="/tmp/in_target.d/"
if [ -z $TARGET_DIR ] ; then
echo "Target dir not specified"
exit 1
fi
if [ ! -d $TARGET_DIR ] ; then
echo "Unable to find specified directory in target: $TARGET_DIR"
bash
exit 1
fi
BINARY_DEPS=
for _FILE in $(ls ${TARGET_DIR}/binary-deps.d/) ; do
_FILE="${TARGET_DIR}/binary-deps.d/${_FILE}"
if [ -a $_FILE ]; then
for _LINE in $(cat $_FILE) ; do
BINARY_DEPS="${BINARY_DEPS} $_LINE"
done
fi
done
for _BIN in $BINARY_DEPS ; do
_LOCATION=$(which "$_BIN" || echo "")
if [ -z "$_LOCATION" ]; then
echo "$_BIN is not found in PATH. Please ensure your elements install it"
exit 1
fi
done
if [ "$BINARY_DEPS" == "" ]; then
echo "No binary-deps found"
else
DEPS_OUTPUT="/etc/dib_binary_deps"
echo "Creating binary_deps record at: ${DEPS_OUTPUT}"
echo "$BINARY_DEPS" >${DEPS_OUTPUT}
fi