#! /bin/bash # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you 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. # Load RVM into a shell session *as a function* if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then # First try to load from a user install source "$HOME/.rvm/scripts/rvm" elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then # Then try to load from a root install source "/usr/local/rvm/scripts/rvm" else printf "ERROR: An RVM installation was not found.\n" fi BASEDIR=$PWD/boxes DEVCLOUD_BASEBUILD_DIR=$BASEDIR/basebox-build echo $DEVCLOUD_BASEBUILD_DIR DEVCLOUD_XEN_BASEBUILD_DIR=$BASEDIR/xenbox-build DEVCLOUD_BASE_NAME='devcloudbase' DEVCLOUD_XEN_BASE_NAME='devcloudbase-xen' OS='ubuntu-12.04.1-server-i386' basebox() { set +x rvm rvmrc trust $DEVCLOUD_BASEBUILD_DIR/ case "$1" in build) cd $DEVCLOUD_BASEBUILD_DIR/ set -ex vagrant basebox define $DEVCLOUD_BASE_NAME $OS cp definition.rb postinstall.sh preseed.cfg definitions/$DEVCLOUD_BASE_NAME/ vagrant basebox build $DEVCLOUD_BASE_NAME -f -a -n -r vagrant basebox export $DEVCLOUD_BASE_NAME -f set +ex cd $DEVCLOUD_XEN_BASEBUILD_DIR set -ex vagrant box add $DEVCLOUD_BASE_NAME $DEVCLOUD_BASEBUILD_DIR/${DEVCLOUD_BASE_NAME}.box -f ;; clean) cd $DEVCLOUD_BASEBUILD_DIR/ set -x rm -f iso/*.iso vagrant -f basebox destroy $DEVCLOUD_BASE_NAME #-f vagrant basebox undefine $DEVCLOUD_BASE_NAME #hackery to inherit the proper rvmrc for the hacked vagrant set +x cd $BAS$DEVCLOUD_XEN_BASEBUILD_DIR set -x vagrant -f box remove $DEVCLOUD_BASE_NAME virtualbox set +x cd $DEVCLOUD_BASEBUILD_DIR set -x rm -f ${DEVCLOUD_BASE_NAME}.box set +x cd $BASEDIR #rvm --force gemset delete vagrant-release-cloudstack ;; esac } xenbox() { set +x rvm rvmrc trust $DEVCLOUD_XEN_BASEBUILD_DIR/ case "$1" in build) cd $DEVCLOUD_XEN_BASEBUILD_DIR #adding it here because it needs to be added into the $VAGRANT_HOME of #the hacked vagrant set -ex vagrant up vagrant halt vagrant package default --output ${DEVCLOUD_XEN_BASE_NAME}.box vagrant box add $DEVCLOUD_XEN_BASE_NAME ${DEVCLOUD_XEN_BASE_NAME}.box -f ;; clean) cd $DEVCLOUD_XEN_BASEBUILD_DIR set -x vagrant -f box remove $DEVCLOUD_XEN_BASE_NAME virtualbox vagrant destroy -f rm -f ${DEVCLOUD_XEN_BASE_NAME}.box set +x #rvm --force gemset delete vagrant-xen-cloudstack set -x ;; esac } usage() { cat <&2 echo "$usage" >&2 exit 1 ;; esac done shift $((OPTIND - 1)) posargs=$@ #removes duplicate positionals posargs=$(echo "$posargs" | tr ' ' '\n' | nl | sort -u -k2 | sort -n | cut -f2-) for arg in $posargs; do case "$arg" in basebox) true ;; xenbox) true ;; all) true ;; *) usage exit 1 ;; esac done cd $BASEDIR for arg in $posargs; do case "$1" in "all") case "$action" in clean) xenbox $action basebox $action ;; build) basebox $action xenbox $action ;; esac ;; $arg) $arg $action ;; esac done