#!/bin/bash usage() { echo "Usage: buildinstall [--comp ] [--pkgorder ] [--version ] [--product ] [--release ] --default [--site ] " >&2 exit 1 } COMPNAME=dist-7.0 RUN=1 DEBUGSTR="" while [ $# -gt 0 ]; do case $1 in --pkgorder) PKGORDER=$2 PKGORDERSTR="--pkgorder $2 " shift; shift ;; --comp) COMPNAME=$2 shift; shift ;; --version) VERSION=$2 shift; shift ;; --release) RELEASESTR=$2 shift; shift ;; --product) PRODUCTSTR=$2 shift; shift ;; --default) DEFAULTSTR=$2 shift; shift ;; --site) SITE=`basename $2` SITEDIR=`dirname $2` if [ -z $SITEDIR ]; then SITEDIR="sites" fi shift; shift ;; --debug) DEBUGSTR="--debug" shift ;; --second) RUN=2 shift ;; --buildinstdir) BUILDINSTDIR=$2 shift; shift ;; *) if [ -n "$DIR" -o ! -d $1/$DEFAULTSTR/RPMS ]; then usage fi DIR=$1 shift ;; esac done if [ -z "$PRODUCTSTR" ]; then usage fi if [ -z "$VERSION" ]; then usage fi if [ -z "$DIR" ]; then usage fi if [ -z "$RELEASESTR" ]; then usage fi if [ -z "$DEFAULTSTR" ]; then usage fi MYPWD=`pwd` p=`cd $DIR; /bin/pwd` if [ -z "$BUILDINSTDIR" ]; then BUILDINSTDIR=$p/buildinstall.tree.$$ rm -rf $BUILDINSTDIR mkdir -p $BUILDINSTDIR fi TREEDIR=/tmp/treedir.$$ UPD_INSTROOT=$BUILDINSTDIR/upd-instroot #MK_IMAGES=$BUILDINSTDIR/mk-images MK_IMAGES=$MYPWD/mk-images MK_STAMP=$BUILDINSTDIR/makestamp.py #BUILDINSTALL=$BUILDINSTDIR/buildinstall BUILDINSTALL=$MYPWD/buildinstall BUILDARCH=`rpm -qp --qf "%{ARCH}" $p/$DEFAULTSTR/RPMS/anaconda-runtime-[0-9]*` firstRun() { echo "Running buildinstall..." pushd $BUILDINSTDIR if [ -z $SITE ]; then if [ -f $p/$DEFAULTSTR/Updates/anaconda-runtime-[0-9]* ]; then path=$DEFAULTSTR/Updates else if [ -f $p/$DEFAULTSTR/RPMS/anaconda-runtime-[0-9]* ]; then path=$DEFAULTSTR/RPMS fi fi else if [ -f $p/$SITEDIR/$SITE/Updates/anaconda-runtime-[0-9]* ]; then path=$SITEDIR/$SITE/Updates else if [ -f $p/$DEFAULTSTR/Updates/anaconda-runtime-[0-9]* ]; then path=$DEFAULTSTR/Updates else if [ -f $p/$DEFAULTSTR/RPMS/anaconda-runtime-[0-9]* ]; then path=$DEFAULTSTR/RPMS fi fi fi fi rpm2cpio $p/$path/anaconda-runtime-[0-9]* | cpio --quiet -iumd './usr*' popd #UPD_INSTROOT=./upd-instroot UPD_INSTROOT=$MYPWD/upd-instroot #MK_IMAGES=./mk-images MK_IMAGES=$MYPWD/mk-images MK_STAMP=./makestamp.py #BUILDINSTALL=./buildinstall BUILDINSTALL=$MYPWD/buildinstall for f in $UPD_INSTROOT $MK_IMAGES $MK_STAMP $BUILDINSTALL; do if [ ! -f $f ]; then cp -a $BUILDINSTDIR/usr/lib/anaconda-runtime/$f* $BUILDINSTDIR/ else cp -a $f* $BUILDINSTDIR/ fi done UPD_INSTROOT=$BUILDINSTDIR/upd-instroot MK_IMAGES=$BUILDINSTDIR/mk-images MK_STAMP=$BUILDINSTDIR/makestamp.py BUILDINSTALL=$BUILDINSTDIR/buildinstall rm -rf $BUILDINSTDIR/usr echo "Going to run buildinstall again" # run it again for the second half if [ -z $SITE ] ; then $BUILDINSTALL --buildinstdir $BUILDINSTDIR --second $PKGORDERSTR --comp $COMPNAME --version $VERSION --release "$RELEASESTR" --product "$PRODUCTSTR" --default $DEFAULTSTR $DIR else $BUILDINSTALL --buildinstdir $BUILDINSTDIR --second $PKGORDERSTR --comp $COMPNAME --version $VERSION --release "$RELEASESTR" --product "$PRODUCTSTR" --default $DEFAULTSTR --site $SITEDIR/$SITE $DIR fi rm -rf $BUILDINSTDIR } secondRun() { echo "Building images..." if [ -z $SITE ]; then $UPD_INSTROOT $DEBUGSTR --comp $COMPNAME $p/$DEFAULTSTR/RPMS $TREEDIR/image-template $TREEDIR/instimage else $UPD_INSTROOT $DEBUGSTR --comp $COMPNAME --site $SITEDIR/$SITE $p/$DEFAULTSTR/RPMS $TREEDIR/image-template $TREEDIR/instimage fi if [ -n "$PKGORDER" ]; then echo "Getting package order..." PYTHONPATH=$TREEDIR/instimage/usr/lib/anaconda $TREEDIR/instimage/usr/lib/anaconda-runtime/pkgorder $p $BUILDARCH $DEFAULTSTR > $PKGORDER fi echo "Making images..." if [ -z $SITE ] ; then $MK_IMAGES $DEBUGSTR $p/$DEFAULTSTR/RPMS $p $TREEDIR/image-template $TREEDIR/instimage $BUILDARCH "$PRODUCTSTR" $VERSION $DEFAULTSTR else $MK_IMAGES $DEBUGSTR $p/$DEFAULTSTR/RPMS $p $TREEDIR/image-template $TREEDIR/instimage $BUILDARCH "$PRODUCTSTR" $VERSION $DEFAULTSTR $SITEDIR/$SITE fi echo "Writing .discinfo file" $MK_STAMP --releasestr="$RELEASESTR" --arch=$BUILDARCH --discNum="1,2,3" --baseDir=$DEFAULTSTR/base --packagesDir=$DEFAULTSTR/RPMS --pixmapsDir=$DEFAULTSTR/pixmaps --outfile=$p/.discinfo rm -rf $TREEDIR/image-template $TREEDIR/instimage } if [ $RUN == 1 ]; then firstRun else secondRun fi