From f74cecbcd12dceebb6bf44fa2da305c03ec17555 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Wed, 5 Dec 2007 10:06:20 +0000 Subject: [PATCH] support for net settings in myplc-init-vserver - reviewed interface to use options - nightly changed --- README-build.txt | 2 +- vbuild-init-vserver.sh | 76 +++++++++++++++++++----------------------- vbuild-nightly.sh | 29 ++++++++-------- 3 files changed, 51 insertions(+), 56 deletions(-) diff --git a/README-build.txt b/README-build.txt index b09343f8..c738f35c 100644 --- a/README-build.txt +++ b/README-build.txt @@ -14,7 +14,7 @@ devel@planet-lab.org, as all this is not precisely foolproof :) * create a local fedora mirror - see vbuild-fedora-mirror.sh * create a vserver - see vbuild-init-vserver.sh * enter the vserver and svn export this build module into /build -* cd /build and ru +* cd /build and run # make stage1=true PLDISTRO= # make help # make diff --git a/vbuild-init-vserver.sh b/vbuild-init-vserver.sh index 9587c695..03845f21 100755 --- a/vbuild-init-vserver.sh +++ b/vbuild-init-vserver.sh @@ -7,6 +7,10 @@ DIRNAME=$(dirname $0) # lst parsing utilities PATH=$(dirname $0):$PATH . build.common +DEFAULT_FCDISTRO=f7 +DEFAULT_PLDISTRO=planetlab +DEFAULT_PERSONALITY=linux32 + function failure () { echo "$COMMAND : Bailing out" exit 1 @@ -82,7 +86,11 @@ function setup_vserver () { fi # create it - $personality vserver $VERBOSE $vserver build -m yum -- -d $fcdistro + options="" + [ -n "$IP_ADDR" ] && options="$options --interface $IP_ADDR" + [ -n "$HOSTNAME" ] && options="$options --hostname $HOSTNAME" + [ -n "$NET_DEV" ] && options="$options --netdev $NET_DEV" + $personality vserver $VERBOSE $vserver build $options -m yum -- -d $fcdistro if [ ! -z "$personality" ] ; then registered_personality=$(grep $personality /etc/vservers/$vserver/personality | wc -l) @@ -245,29 +253,21 @@ COMMAND_VBUILD="vbuild-init-vserver.sh" COMMAND_MYPLC="myplc-init-vserver.sh" function usage () { set +x - echo "Usage: $COMMAND_VBUILD [-s|s|p] [-v] vserver-name distribution pldistro [personality]" - echo "Usage: $COMMAND_MYPLC [-s|s|p] [-v] vserver-name distribution pldistro repo-url [personality]" + echo "Usage: $COMMAND_VBUILD [-v] vserver-name" + echo "Usage: $COMMAND_MYPLC [-v] vserver-name repo-url" echo "Requirements: you need to have a vserver-compliant kernel," echo " as well as the util-vserver RPM installed" echo "Description:" - echo " This command creates a fresh vserver instance" - echo " . vserver-name : the vserver's name" - echo " . distribution : for creating the root filesystem, e.g. fc6" - echo " . pldistro: e.g. onelab" - echo " . repo-url: for myplc vserver, used to create a yum repository" - echo " . personality: last, optional, argument defaults to linux32" - echo "This is done in three steps" - echo " (*) setup phase : vserver creation, yum internalization and config (from /etc/vservers)" - echo " (*) tools install the tools required for building are installed" - echo " based on the folowing file for the actual set of packages and groups" - echo " vbuild mode : -devel.lst" - echo " myplc mode : -shell.lst" - echo " (*) post-install : various tunings required, as well as create a build user (vbuild only)" - echo "Options:" - echo " -s : skips the setup phase" - echo " -t : skips the tools phase" - echo " -p : skips the post-install" + echo " This command creates a fresh vserver instance, for building, or running, myplc" + echo "Supported options" + echo " -f fcdistro - for creating the root filesystem - defaults to $DEFAULT_FCDISTRO" + echo " -d pldistro - defaults to $DEFAULT_PLDISTRO" + echo " -p personality - defaults to $DEFAULT_PERSONALITY" echo " -v : passes -v to calls to vserver" + echo "$COMMAND_MYPLC only:" + echo " -h hostname: passed as vserver build --hostname" + echo " -i ip-address: passed as vserver build --interface" + echo " -d dev: passed as vserver build --netdev" exit 1 } @@ -286,42 +286,36 @@ function main () { usage ;; esac - DO_SETUP=true - DO_TOOLS=true - DO_POST=true VERBOSE= - while getopts "stpvh" opt ; do + while getopts "f:d:p:vu:h:i:d:" opt ; do case $opt in - s) DO_SETUP="" ;; - t) DO_TOOLS="" ;; - p) DO_POST="" ;; + f) fcdistro=$OPTARG;; + d) pldistro=$OPTARG;; + p) personality=$OPTARG;; + i) [ -z "$MYPLC_MODE" ] && usage ; IP_ADDR=$OPTARG;; + h) [ -z "$MYPLC_MODE" ] && usage ; HOSTNAME=$OPTARG;; + d) [ -z "$MYPLC_MODE" ] && usage ; NET_DEV==$OPTARG;; v) VERBOSE="-v" ;; - h|*) usage ;; + *) usage ;; esac done shift $(($OPTIND - 1)) - [[ -z "$@" ]] && usage vserver=$1 ; shift - [[ -z "$@" ]] && usage - fcdistro=$1 ; shift - [[ -z "$@" ]] && usage - pldistro=$1 ; shift if [ -n "$MYPLC_MODE" ] ; then [[ -z "$@" ]] && usage REPO_URL=$1 ; shift fi - if [[ -z "$@" ]] ; then - personality=linux32 - else - personality=$1; shift - fi [[ -n "$@" ]] && usage - [ -n "$DO_SETUP" ] && setup_vserver $vserver $fcdistro $personality - [ -n "$DO_TOOLS" ] && devel_tools $vserver $fcdistro $pldistro $personality - [ -n "$DO_POST" ] && post_install $vserver $personality + [ -z "$fcdistro" ] && fcdistro=$DEFAULT_FCDISTRO + [ -z "$pldistro" ] && pldistro=$DEFAULT_PLDISTRO + [ -z "$personality" ] && personality=$DEFAULT_PERSONALITY + + setup_vserver $vserver $fcdistro $personality + devel_tools $vserver $fcdistro $pldistro $personality + post_install $vserver $personality } diff --git a/vbuild-nightly.sh b/vbuild-nightly.sh index 41930450..72b35610 100755 --- a/vbuild-nightly.sh +++ b/vbuild-nightly.sh @@ -5,7 +5,7 @@ COMMANDPATH=$0 COMMAND=$(basename $0) # default values, tunable with command-line options -DEFAULT_FCDISTRO=fc6 +DEFAULT_FCDISTRO=f7 DEFAULT_PLDISTRO=planetlab DEFAULT_PERSONALITY=linux32 DEFAULT_BASE="@DATE@--@PLDISTRO@-@FCDISTRO@-@PERSONALITY@" @@ -171,17 +171,18 @@ function usage () { echo "This is $REVISION" echo "Supported options" echo " -n dry-run : -n passed to make - vserver gets created though - no mail sent" - echo " -f FCDISTRO - defaults to $DEFAULT_FCDISTRO" - echo " -d PLDISTRO - defaults to $DEFAULT_PLDISTRO" - echo " -b BASE - defaults to $DEFAULT_BASE" + echo " -f fcdistro - defaults to $DEFAULT_FCDISTRO" + echo " -d pldistro - defaults to $DEFAULT_PLDISTRO" + echo " -p personality - defaults to $DEFAULT_PERSONALITY" + echo " -b base - defaults to $DEFAULT_BASE" echo " @NAME@ replaced as appropriate" - echo " -t PLDISTROTAGS - defaults to \${PLDISTRO}-tags.mk" - echo " -r TAGSRELEASE - a release number that refers to PLDISTROTAGS - defaults to HEAD" - echo " -s SVNPATH - where to fetch the build module" + echo " -t pldistrotags - defaults to \${PLDISTRO}-tags.mk" + echo " -r tagsrelease - a release number that refers to PLDISTROTAGS - defaults to HEAD" + echo " -s svnpath - where to fetch the build module" echo " -o : overwrite - re-run in base directory, do not create vserver" - echo " -m MAILTO" - echo " -a MAKEVAR=value - space in values are not supported" - echo " -w WEBPATH - defaults to $DEFAULT_WEBPATH" + echo " -m mailto" + echo " -a makevar=value - space in values are not supported" + echo " -w webpath - defaults to $DEFAULT_WEBPATH" echo " -B : run build only" echo " -T : run test only" echo " -v : be verbose" @@ -201,12 +202,12 @@ function main () { MAKEOPTS=() DO_BUILD=true DO_TEST=true - PERSONALITY=$DEFAULT_PERSONALITY - while getopts "nf:d:b:t:r:s:om:a:w:BTvhp:" opt ; do + while getopts "nf:d:b:p:t:r:s:om:a:w:BTvh" opt ; do case $opt in n) DRY_RUN="true" ; MAKEOPTS=(${MAKEOPTS[@]} -n) ;; f) FCDISTRO=$OPTARG ;; d) PLDISTRO=$OPTARG ;; + p) PERSONALITY=$OPTARG ;; b) BASE=$OPTARG ;; t) PLDISTROTAGS=$OPTARG ;; r) TAGSRELEASE=$OPTARG ;; @@ -217,7 +218,6 @@ function main () { w) WEBPATH=$OPTARG ;; B) DO_TEST= ;; T) DO_BUILD= ; USEOLD=true ;; - p) PERSONALITY=$OPTARG ;; v) set -x ;; h|*) usage ;; esac @@ -229,6 +229,7 @@ function main () { # set defaults [ -z "$FCDISTRO" ] && FCDISTRO=$DEFAULT_FCDISTRO [ -z "$PLDISTRO" ] && PLDISTRO=$DEFAULT_PLDISTRO + [ -z "$PERSONALITY" ] && PERSONALITY=$DEFAULT_PERSONALITY [ -z "$PLDISTROTAGS" ] && PLDISTROTAGS="${PLDISTRO}-tags.mk" [ -z "$BASE" ] && BASE="$DEFAULT_BASE" [ -z "$WEBPATH" ] && WEBPATH="$DEFAULT_WEBPATH" @@ -302,7 +303,7 @@ function main () { svn export $SVNPATH $tmpdir # Create vserver cd $tmpdir - ./vbuild-init-vserver.sh ${BASE} ${FCDISTRO} ${PLDISTRO} ${PERSONALITY} + ./vbuild-init-vserver.sh ${BASE} -f ${FCDISTRO} -d ${PLDISTRO} -p ${PERSONALITY} # cleanup cd - rm -rf $tmpdir -- 2.47.0