[Ovirt-devel] [PATCH] Cleanup and some enhancements to build script
Perry Myers
pmyers at redhat.com
Fri Jun 6 18:59:26 UTC 2008
added various options to control how much you want to build/cleanup
added dynamic generation of VIRBR variable
updated rpm deps and added check for rpms
Signed-off-by: Perry Myers <pmyers at redhat.com>
---
build-all.sh | 153 +++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 114 insertions(+), 39 deletions(-)
diff --git a/build-all.sh b/build-all.sh
index b226ff6..782d5be 100755
--- a/build-all.sh
+++ b/build-all.sh
@@ -7,9 +7,13 @@
# - create local YUM repository with ovirt-wui and ovirt-host-image-pxe RPMs
# - create oVirt admin appliance
-# Requires: httpd createrepo pungi libvirt
+# Requires: createrepo httpd kvm libvirt livecd-tools pungi
+
+ME=$(basename "$0")
+warn() { printf "$ME: $@\n" >&2; }
+try_h() { printf "Try \`$ME -h' for more information.\n" >&2; }
+die() { warn "$@"; try_h; exit 1; }
-set -x
cd $(dirname $0)
BASE=$(pwd)
FEDORA=9
@@ -18,65 +22,136 @@ HTDOCS=/var/www/html
OVIRT=$HTDOCS/ovirt
PUNGI=$HTDOCS/pungi
PUNGIKS=$PUNGI/pungi.ks
-VIRBR=192.168.122.1
+DEP_RPMS="createrepo httpd kvm libvirt livecd-tools pungi"
+
+usage() {
+ case $# in 1) warn "$1"; try_h; exit 1;; esac
+ cat <<EOF
+Usage: $ME [-w] [-n] [-p] [-d|-b] [-a] [-c]
+ -w: update oVirt WUI RPMs
+ -n: update oVirt Managed Node RPMs
+ -p: update pungi repository
+ -d: update developer appliance
+ -b: update bundled appliance
+ -a: updates all (WUI, Node, App), requires -d or -b
+ -c: cleanup old repos (pungi and ovirt)
+ -h: display this help and exit
+EOF
+}
+
+update_wui=0 update_node=0
+update_pungi=0 update_app=0
+cleanup=0
+app_type=
+err=0 help=0
+while getopts wnpdbahc c; do
+ case $c in
+ w) update_wui=1;;
+ n) update_node=1;;
+ p) update_pungi=1;;
+ d) update_app=1; app_type="-v";;
+ b) update_app=1; app_type="-b";;
+ a) update_wui=1; update_node=1; update_app=1; update_pungi=1;;
+ c) cleanup=1;;
+ h) help=1;;
+ '?') err=1; warn "invalid option: \`-$OPTARG'";;
+ :) err=1; warn "missing argument to \`-$OPTARG' option";;
+ *) err=1; warn "internal error: \`-$OPTARG' not handled";;
+ esac
+done
+test $err = 1 && { try_h; exit 1; }
+test $help = 1 && { usage; exit 0; }
+test $update_app = 1 -a -z "$app_type" && usage "Need to specify -d or -b"
+
+if [ $update_node = 1 -o $update_app = 1 ]; then
+ test $( id -u ) -ne 0 && die "Node or Application Update must run as root"
+fi
+
+set -x
+
+# now make sure the packages we need are installed
+rpm -q $DEP_RPMS >& /dev/null
+if [ $? -ne 0 ]; then
+ # one of the previous packages wasn't installed; bail out
+ die "Must have $DEP_RPMS installed"
+fi
+
+mkdir -p $PUNGI
+mkdir -p $OVIRT
# cleanup repository folders
-mkdir -p $PUNGI; rm -rf $PUNGI/*
-mkdir -p $OVIRT; rm -rf $OVIRT/*
+if [ $cleanup = 1 ]; then
+ rm -rf $PUNGI/*
+ rm -rf $OVIRT/*
+fi
# build ovirt-wui RPM
-cd $BASE/wui
-rm -rf rpm-build
-make rpms
-cp rpm-build/ovirt-wui*rpm $OVIRT
-cd $OVIRT
-createrepo .
+if [ $update_wui = 1 ]; then
+ cd $BASE/wui
+ rm -rf rpm-build
+ make rpms
+ cp rpm-build/ovirt-wui*rpm $OVIRT
+ cd $OVIRT
+ createrepo .
+fi
# build Fedora mirror for oVirt
-cat > $PUNGIKS << EOF
+if [ $update_pungi = 1 ]; then
+ cat > $PUNGIKS << EOF
repo --name=f$FEDORA --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$FEDORA&arch=\$basearch
repo --name=f$FEDORA-updates --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$FEDORA&arch=\$basearch
-repo --name=ovirt --baseurl=http://localhost/ovirt
%packages
EOF
-cd $BASE
-grep -hv "^-" ovirt-host-creator/common-pkgs.ks wui-appliance/common-pkgs.ks >> $PUNGIKS
-echo "anaconda-runtime" >> $PUNGIKS
-echo "%end" >> $PUNGIKS
-cd $PUNGI
-pungi --ver=$FEDORA -GCB --nosource -c $PUNGIKS
-restorecon -r .
+ cd $BASE
+ grep -hv "^-" ovirt-host-creator/common-pkgs.ks wui-appliance/common-pkgs.ks >> $PUNGIKS
+ echo "anaconda-runtime" >> $PUNGIKS
+ echo "%end" >> $PUNGIKS
+ cd $PUNGI
+ pungi --ver=$FEDORA -GCB --nosource -c $PUNGIKS
+ restorecon -r .
+fi
+
+# If doing either a node or app build, get the default
+# network ip address
+if [ $update_app = 1 -o $update_node = 1 ]; then
+ VIRBR=$(virsh net-dumpxml default | grep "<ip address=" | sed "s/.*ip address='\(.*\)' .*/\1/")
+ test -z $VIRBR && die "Could not get ip address of default network for app"
+fi
# build oVirt host image
# NOTE: livecd-tools must run as root
-lokkit --service http
-service libvirtd reload
-cd $BASE/ovirt-host-creator
-rm -rf rpm-build
-cat > repos.ks << EOF
+if [ $update_node = 1 ]; then
+ lokkit --service http
+ service libvirtd reload
+ cd $BASE/ovirt-host-creator
+ rm -rf rpm-build
+ cat > repos.ks << EOF
repo --name=f9 --baseurl=http://$VIRBR/pungi/$FEDORA/$ARCH/os
EOF
-make rpms
-cp rpm-build/ovirt-host-image-pxe*rpm $OVIRT
-cd $OVIRT
-createrepo .
+ make rpms
+ cp rpm-build/ovirt-host-image-pxe*rpm $OVIRT
+ cd $OVIRT
+ createrepo .
+fi
# build oVirt admin appliance
-cd $BASE/wui-appliance
-make clean
-cat > repos-x86_64.ks << EOF
+# NOTE: create-wui-appliance.sh must be run as root
+if [ $update_app == 1 ]; then
+ cd $BASE/wui-appliance
+ make clean
+ cat > repos-x86_64.ks << EOF
url --url http://$VIRBR/pungi/$FEDORA/$ARCH/os
repo --name=ovirt --baseurl=http://$VIRBR/ovirt
EOF
-make
-cp wui-rel-*.ks $OVIRT
-./create-wui-appliance.sh -t http://$VIRBR/pungi/$FEDORA/$ARCH/os -k http://$VIRBR/ovirt/wui-rel-$ARCH.ks -v
+ make
+ cp wui-rel-*.ks $OVIRT
+ ./create-wui-appliance.sh -t http://$VIRBR/pungi/$FEDORA/$ARCH/os -k http://$VIRBR/ovirt/wui-rel-$ARCH.ks $app_type
+
+ echo "oVirt appliance setup started, check progress with:"
+ echo " virt-viewer developer"
+fi
set +x
-
-echo "oVirt appliance setup started, check progress with:"
-echo " virt-viewer developer"
-
--
1.5.5.1
More information about the ovirt-devel
mailing list