opensuse: support pkg-map in bin/install-packages
Updates the opensuse element's bin/install-packages script so that if supports using pkg-map instead of map-packages for package mapping. To make use of the new change simply add the -m <element name> to allow install-packages to know which element namespace to use when installing packages. Use of the new -m option is off by default. As part of this change we also updated install-packages to use getopt for in script argument parsing. Change-Id: I56da8adf6c445c50c7642e221c6c11ba59330404
This commit is contained in:
		| @@ -17,31 +17,65 @@ | ||||
| set -eu | ||||
| set -o pipefail | ||||
|  | ||||
| EXTRA_ARGS="" | ||||
| MAP_ELEMENT="" | ||||
|  | ||||
| SCRIPTNAME=$(basename $0) | ||||
| function show_options () { | ||||
|     echo "Usage: $SCRIPTNAME [package ...]" | ||||
|     echo | ||||
|     echo "Options:" | ||||
|     echo "    -u          -- update all packages" | ||||
|     echo "    -d          -- download the packages only" | ||||
|     echo "    -m          -- use custom element package map (Example: -m nova)" | ||||
|     exit 0 | ||||
| } | ||||
|  | ||||
| function run_zypper() { | ||||
|     # TODO: Uncertain if this can ever block wanting input from user | ||||
|     zypper --non-interactive --gpg-auto-import-keys "$@" | ||||
| } | ||||
|  | ||||
| if [ "$1" = "-u" ] ; then | ||||
|     run_zypper dist-upgrade | ||||
|     exit 0 | ||||
| elif [ "$1" = "-d" ] ; then | ||||
|     EXTRA_ARGS="--download-only" | ||||
|     shift | ||||
| fi | ||||
| TEMP=$(getopt -o hudem: -n $SCRIPTNAME -- "$@") | ||||
| if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi | ||||
| eval set -- "$TEMP" | ||||
|  | ||||
| while true ; do | ||||
|     case "$1" in | ||||
|         -u) run_zypper dist-upgrade; exit 0;; | ||||
|         -d) EXTRA_ARGS="--download-only"; shift;; | ||||
|         -m) MAP_ELEMENT=$2; shift 2;; | ||||
|         -h) show_options;; | ||||
|         --) shift; break ;; | ||||
|         *) echo "Error: unsupported option $1."; exit 1;; | ||||
|     esac | ||||
| done | ||||
|  | ||||
| # Packages that aren't available in the distro but requested for installation | ||||
| # can be ignored by adding them to the exclude list | ||||
| BLACKLIST=(dkms) | ||||
| WHITELIST=() | ||||
| WHITELIST="" | ||||
| for i in "$@" | ||||
| do | ||||
|     if [[ ! ${BLACKLIST[*]} =~ $i ]]; then | ||||
|     PKG_NAME=$i | ||||
|     if [ -n "$MAP_ELEMENT" ]; then | ||||
|         PKG_NAME=$(pkg-map --element $MAP_ELEMENT $i) | ||||
|     fi | ||||
|     if [[ ! ${BLACKLIST[*]} =~ $PKG_NAME ]]; then | ||||
|         WHITELIST+="$i " | ||||
|     else | ||||
|         echo "The package $i is not available and will not be installed" | ||||
|     fi | ||||
| done | ||||
|  | ||||
| if [ -n "$WHITELIST" ]; then | ||||
|     run_zypper install $EXTRA_ARGS $(map-packages $WHITELIST) | ||||
|     if [ -n "$MAP_ELEMENT" ]; then | ||||
|         if ! PKGS=$(pkg-map --element $MAP_ELEMENT $WHITELIST); then | ||||
|             echo "bin/pkg-map error. $PKGS" | ||||
|             exit 1 | ||||
|         fi | ||||
|     else | ||||
|         PKGS=$(map-packages $WHITELIST) | ||||
|     fi | ||||
|     run_zypper install $EXTRA_ARGS $PKGS | ||||
| fi | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Dan Prince
					Dan Prince