1
0
intel-media-ffmpeg/scripts/test-image.sh
James Ketrenos fcbded63a3 Update to latest xe-solutions
Signed-off-by: James Ketrenos <james.p.ketrenos@intel.com>
2021-01-20 15:26:15 -08:00

118 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# Bring in the variables from SOLUTION file, supporting
# nested substitution
. SOLUTION
VARS=($(sed -nE "s,(^[^#][^=]*).*$,\1,pg" SOLUTION))
for var in ${VARS[@]}; do
export ${var}
done
RELEASE_INFO=${RELEASE_INFO:-N/A}
[[ "${RELEASE_INFO}" == "N/A" ]] && {
TAG=${TAG:-test-build-${OS_DISTRO}-${PACKAGE_STREAM}-$(date +%Y%m%d)}
} || {
TAG=${TAG:-test-${OS_DISTRO}-${PACKAGE_STREAM}-${RELEASE_INFO}}
}
function fail {
>&2 echo "$*"
exit -1
}
VIDEO=$(getent group video | sed -E 's,^video:[^:]*:([^:]*):.*$,\1,')
RENDER=$(getent group render | sed -E 's,^render:[^:]*:([^:]*):.*$,\1,')
function usage {
cat << EOF
usage: scripts/test-image.sh [OPTIONS]
Options:
-l Use the local image (vs. from ${REGISTRY})
-r REPO Switch image to use REPO
-s STREAM Switch image to use STREAM
EOF
}
LOCAL=0
REPO=
while getopts lr:s: opt; do
case "${opt}" in
l)
LOCAL=1
;;
r)
REPO=${OPTARG}
;;
s)
STREAM=${OPTARG}
;;
[?])
>&2 echo -e "\nInvalid parameter: ${opt}\n"
usage >&2
exit 1
;;
esac
done
shift $(( OPTIND-1 ))
(( ! LOCAL )) && {
IMAGE=${REGISTRY_URL}/${CONTAINER}:${TAG}
docker pull ${IMAGE} || fail "Unable to pull ${IMAGE}"
} || {
IMAGE=${CONTAINER}:${TAG}
}
# Take entry-point from command line arguments, or set to 'test'
# if nothing provided
ENTRY="${*}"
if [[ "${REPO}" != "" ]]; then
ENTRY="-r ${REPO} ${ENTRY}"
fi
if [[ "${STREAM}" != "" ]]; then
ENTRY="-s ${STREAM} ${ENTRY}"
fi
[[ "${ENTRY}" == "" ]] && {
DOCKER_ARGS=""
ENTRY="test"
} || {
DOCKER_ARGS=" -it --rm \
"
}
[[ "${VIDEO}" != "" ]] || fail "No video group found."
ADD_GROUPS="--group-add ${VIDEO}"
[[ "${RENDER}" != "" ]] && ADD_GROUPS+=" --group-add ${RENDER}"
[[ -e data/ ]] || mkdir data || fail "Unable to make data volume directory"
chown :${VIDEO} data || {
>&2 echo "Unable to chown data volume to video:${VIDEO}"
fail "Make sure you are in the 'video' group (usermod -a -G video \$(whoami))"
}
chmod g+rwX data || fail "Unable to chmod data volume to g+rwX"
CMD="docker run \
${ADD_GROUPS} ${DOCKER_ARGS} \
--rm \
--device=/dev/dri \
-v $(pwd)/data:/data \
${IMAGE}"
cat << EOF
-------------------------------------------------------------------------------
Running test with:
video group GID: ${VIDEO}
$( [[ "${RENDER}" != "" ]] && echo -e " render group GID: ${RENDER}\n" )
Running container via:
$( echo " ${CMD} ${ENTRY}" | sed -e "s, , \\\\\n ,g")
-------------------------------------------------------------------------------
EOF
${CMD} info || fail "Unable to execute 'test' on ${IMAGE}."
${CMD} ${ENTRY} || fail "Unable to execute 'test' on ${IMAGE}."