eed131c373
This patch updates the openSuse element to work with the new base image file format. It should be noted that the base image file name has changed several times while updating this element, and and may need to be set manually via the "BASE_IMAGE_NAME" env var. Change-Id: I4dac8bf9a4bf76a00d4a04cbf063fd245b11f3d6
82 lines
2.3 KiB
Bash
Executable file
82 lines
2.3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Copyright 2013 SUSE Linux Products GmbH
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
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 "$@"
|
|
}
|
|
|
|
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=('')
|
|
WHITELIST=('')
|
|
|
|
for i in "$@"
|
|
do
|
|
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
|
|
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
|