|  | #!/bin/bash | 
|  | # | 
|  | # Copyright (c) 2020, Arm Limited. All rights reserved. | 
|  | # | 
|  | # SPDX-License-Identifier: BSD-3-Clause | 
|  | # | 
|  |  | 
|  | # Creates a dockerfile based on a fvp model (model). | 
|  |  | 
|  | # The scripts takes two argument: the model tarball's filename (first argument) | 
|  | # and target directory to store the created Dockerfile (second argument) | 
|  | # | 
|  |  | 
|  | # globals | 
|  | OS="${OS:-ubuntu}" | 
|  | OS_VER="${OS_VERSION:-jammy}" | 
|  | MODEL_DIR="${MODEL_DIR:-/opt/model}" | 
|  |  | 
|  | function usage() { | 
|  | echo "Usage: $0 model-tarball target-dir" 1>&2 | 
|  | exit 1 | 
|  | } | 
|  |  | 
|  | function get_model_model_ver() { | 
|  | local tgz=$1 | 
|  | local arr_model=(${tgz//./ }) | 
|  | local x=${arr_model[0]##*_} | 
|  | local y=${arr_model[1]} | 
|  | local z=${arr_model[2]} | 
|  | if [ -n "$z" -a "$z" != "tgz" ]; then | 
|  | MODEL_VER="${x}.${y}.${z}" | 
|  | else | 
|  | MODEL_VER="${x}.${y}" | 
|  | fi | 
|  | MODEL=$(echo $tgz | sed "s/_${MODEL_VER}.tgz//") | 
|  | } | 
|  |  | 
|  | function main() { | 
|  | local tarball=$1 | 
|  | local target_dir=$2 | 
|  |  | 
|  | # get MODEL and MODEL_VER | 
|  | get_model_model_ver $tarball | 
|  |  | 
|  | # check variables are populated | 
|  | MODEL="${MODEL:?}" | 
|  | MODEL_VER="${MODEL_VER:?}" | 
|  |  | 
|  | # replace template macros with real model values | 
|  | sed -e "s|\${OS}|${OS}|g" \ | 
|  | -e "s|\${OS_VER}|${OS_VER}|g" \ | 
|  | -e "s|\${MODEL}|${MODEL}|g" \ | 
|  | -e "s|\${MODEL_VER}|${MODEL_VER}|g" \ | 
|  | -e "s|\${MODEL_DIR}|${MODEL_DIR}|g" < dockerfile-template > $target_dir/Dockerfile | 
|  | } | 
|  |  | 
|  | [ $# -ne 2 ] && usage | 
|  |  | 
|  | tarball=$1; target_dir=$2; main ${tarball} ${target_dir} |