4 CIRROS_BRANCH="lp:cirros"
22 error() { echo "$@" 1>&2; }
23 fail() { [ $# -eq 0 ] || error "$@"; exit 2; }
27 if [ "$1" != "update" ] && ! $_APT_UPDATED; then
29 apt_get update >/dev/null || {
31 error "failed to update apt [$ret]";
36 sudo DEBIAN_FRONTEND=noninteractive apt-get --quiet \
37 --assume-yes "$@" </dev/null
40 filter_installed_packages() {
41 # write to stdout, a list of packages not installed locally
42 local fmt='${Package} ${Version}\n'
43 LC_ALL=C dpkg-query --show "--showformat=${fmt}" "$@" 2>&1 | awk '
44 $0 ~ /[Nn]o packages/ {
53 END { for(p in pkgs) {printf("%s ",pkgs[p])}; printf("\n"); }' n=0
58 needed=$(filter_installed_packages "$@")
59 [ -z "$needed" ] && return 0
60 error "installing: $needed"
64 dist_id=$(lsb_release --short --id) || fail "failed: lsb_release --short --id"
67 *) fail "do not know how to setup $dist_id";;
70 ver=$(lsb_release --short --release)
71 [[ "$ver" < "14.04" ]] &&
72 fail "building not supported prior to 14.04"
74 me=$(readlink -f "$0")
77 if [ -f "$myd/../fixup-fs" ]; then
78 CIRROS_D=$(cd "$myd/.." && pwd)
79 elif [ -f "$PWD/cirros/fixup-fs" ]; then
80 CIRROS_D="$PWD/cirros"
83 apt_install "${DEPS[@]}"
85 if [ -z "$CIRROS_D" ]; then
86 error "getting $CIRROS_BRANCH to $PWD/cirros"
87 bzr branch "$CIRROS_BRANCH" cirros ||
88 fail "failed branch $CIRROS_BRANCH"
89 CIRROS_D="$PWD/cirros"
92 error "set up functional to $CIRROS_D"