containerfile: automatically search for distro docker files

This makes the container file element search the active element list
for `containerfiles/${DIB_RELEASE}` for building.  This makes it easy
to write wrappers for ubuntu/fedora/etc. containerfile elements.

Change-Id: I68f1d928e54a70bad76985ddd3e156bb5f978b0d
This commit is contained in:
Ian Wienand 2021-05-10 10:39:24 +10:00
parent b536dbba8e
commit 2a14088eac
2 changed files with 27 additions and 3 deletions

View File

@ -5,5 +5,10 @@ containerfile
Base element for creating images from container files (aka Base element for creating images from container files (aka
Dockerfiles). Dockerfiles).
To use this element, create a container file (Dockerfile), and supply Usually this element will be called via a more specific distro element
the path to that file in the environment variable `DIB_CONTAINER_FILE`. which provides an environment for building a full image. This element
will search active elements for a container file located in
`containerfiles/${DIB_RELEASE}`.
Alternatively, to use this element directly supply the path to a
container file in the environment variable `DIB_CONTAINER_FILE`.

View File

@ -25,7 +25,26 @@ if [ -f ${TARGET_ROOT}/.extra_settings ] ; then
. ${TARGET_ROOT}/.extra_settings . ${TARGET_ROOT}/.extra_settings
fi fi
[ -n "$DIB_CONTAINER_FILE" ] if [ -z "${DIB_CONTAINER_FILE:-}" ]; then
_xtrace=$(set +o | grep xtrace)
set +o xtrace
eval declare -A image_elements=($(get_image_element_array))
for i in "${!image_elements[@]}"; do
element=$i
element_dir=${image_elements[$i]}
containerfile="${element_dir}/containerfiles/${DIB_RELEASE}"
if [ -f "${containerfile}" ]; then
echo "Found container file ${containerfile}"
DIB_CONTAINER_FILE="${containerfile}"
break
fi
done
$_xtrace
fi
# Use the image cache directory as the default context, so anything # Use the image cache directory as the default context, so anything
# there is automatically available for COPY commands. # there is automatically available for COPY commands.