1
0
intel-media-ffmpeg/scripts/build-dockerfile
James Ketrenos d36c1099a9 Modify build-dockerfile to only replace variables as set in in SOLUTIONS / MANIFEST
Signed-off-by: James Ketrenos <james.p.ketrenos@intel.com>
2019-10-28 15:27:53 -07:00

83 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# Determine if it is Mac OS and switch to use gxargs instead
CMD=xargs
if [ $(which system_profiler) ]; then
CMD=gxargs
fi
# Bring in the variables from SOLUTION file, supporting
# nested substitution
. SOLUTION
. MANIFEST
VARS=($(sed -nE "s,(^[^#][^=]*).*$,\1,pg" SOLUTION))
VARS+=($(sed -nE "s,(^[^#][^=]*).*$,\1,pg" MANIFEST))
for var in ${VARS[@]}; do
export ${var}
done
# Build a SHELL-FORMAT value to pass to envsubst.
# Only those variables matched in SHELL-FORMAT will
# be escaped by envsubst.
ENV=''
for var in ${VARS[@]}; do
ENV=${ENV}'$'${var}
done
# Remove the Dockerfile if it exists; should check
# if it is clean first, and abort if not.
#
[ -e Dockerfile ] && rm Dockerfile
cat << EOM > Dockerfile
#
# DO NOT EDIT THIS DOCKERFILE
#
# This file is auto-generated via scripts/build-dockerfile
# by using environment substitution while concatenating the
# contents of templates/*, and then adding the contents
# of Dockerfile.solution
#
# Most solution specific changes should be isolated in
# Dockerfile.solution. After making changes, you can
# then re-run scripts/build-dockerfile
#
EOM
for snippet in templates/??-*.in; do
cat << EOM >> Dockerfile
#
# Template from templates/${snippet}
#
EOM
envsubst ${ENV} < $snippet >> Dockerfile
done
cat << EOM >> Dockerfile
#
# Solution begins here (from Dockerfile.solution)
#
EOM
envsubst ${ENV} < Dockerfile.solution >> Dockerfile
cat << EOM >> Dockerfile
#
# Standard ending begins here (from templates/ending.in)
#
EOM
envsubst ${ENV} < templates/ending.in >> Dockerfile
cat << EOM
Dockerfile has been updated.
To build the image, you can run scripts/build-images
EOM