diff --git a/contrib/mkimage-yum.sh b/contrib/mkimage-yum.sh index 49eeacc0cb5b7..b4471a94f602c 100755 --- a/contrib/mkimage-yum.sh +++ b/contrib/mkimage-yum.sh @@ -13,9 +13,9 @@ usage() { $(basename $0) [OPTIONS] OPTIONS: -p "" The list of packages to install in the container. - The default is blank. + The default is blank. Can use multiple times. -g "" The groups of packages to install in the container. - The default is "Core". + The default is "Core". Can use multiple times. -y The path to the yum config to install packages from. The default is /etc/yum.conf for Centos/RHEL and /etc/dnf/dnf.conf for Fedora -t Specify Tag information. @@ -30,7 +30,9 @@ if [ -f /etc/dnf/dnf.conf ] && command -v dnf &> /dev/null; then yum_config=/etc/dnf/dnf.conf alias yum=dnf fi -install_groups="Core" +# for names with spaces, use double quotes (") as install_groups=('Core' '"Compute Node"') +install_groups=() +install_packages=() version= while getopts ":y:p:g:t:h" opt; do case $opt in @@ -41,10 +43,10 @@ while getopts ":y:p:g:t:h" opt; do usage ;; p) - install_packages="$OPTARG" + install_packages+=("\"$OPTARG\"") ;; g) - install_groups="$OPTARG" + install_groups+=("\"$OPTARG\"") ;; t) version="$OPTARG" @@ -62,6 +64,11 @@ if [[ -z $name ]]; then usage fi +# default to Core group if not specified otherwise +if [ ${#install_groups[*]} -eq 0 ]; then + install_groups=('Core') +fi + target=$(mktemp -d --tmpdir $(basename $0).XXXXXX) set -x @@ -87,13 +94,13 @@ fi if [[ -n "$install_groups" ]]; then yum -c "$yum_config" --installroot="$target" --releasever=/ --setopt=tsflags=nodocs \ - --setopt=group_package_types=mandatory -y groupinstall "$install_groups" + --setopt=group_package_types=mandatory -y groupinstall "${install_groups[*]}" fi if [[ -n "$install_packages" ]]; then yum -c "$yum_config" --installroot="$target" --releasever=/ --setopt=tsflags=nodocs \ - --setopt=group_package_types=mandatory -y install "$install_packages" + --setopt=group_package_types=mandatory -y install "${install_packages[*]}" fi yum -c "$yum_config" --installroot="$target" -y clean all