#!/bin/bash usage() { echo "Usage: buildinstall [--pkgorder ] [--comps ] [--version ] [--product ] [--release ] [--prodpath ] [--discs ] " >&2 exit 1 } PRODUCTPATH="anaconda" while [ $# -gt 0 ]; do case $1 in --pkgorder) PKGORDER=$2 PKGORDERSTR="--pkgorder $2" shift; shift ;; --comp) COMPNAME=$2 shift; shift ;; --comps) COMPSFILE=$2 shift; shift ;; --version) VERSION=$2 shift; shift ;; --release) RELEASESTR=$2 shift; shift ;; --product) PRODUCTSTR=$2 shift; shift ;; --variant) VARIANT=$2 shift; shift ;; --prodpath) PRODUCTPATH=$2 shift; shift ;; --nogr) NOGRSTR="--nogr" shift ;; --debug) DEBUGSTR="--debug" shift ;; --buildinstdir) BUILDINSTDIR=$2 shift; shift ;; --discs) DISCSTR=$2 shift; shift ;; --bugurl) BUGURL=$2 shift; shift ;; *) 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 "$DISCSTR" ]; then DISCSTR="ALL" fi if [ -z "$BUGURL" ]; then BUGURL="your distribution provided bug reporting tool." fi if [ -z "$COMPSFILE" ]; then COMPSFILE="$PRODUCTPATH/base/comps.xml" fi p=`cd $DIR; /bin/pwd` if [ -d $DIR/$PRODUCTPATH/RPMS ]; then PKGDIR=$p/$PRODUCTPATH/RPMS else PKGDIR=$p/$PRODUCTPATH fi 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_TREEINFO=$BUILDINSTDIR/maketreeinfo.py MK_STAMP=$BUILDINSTDIR/makestamp.py BUILDINSTALL=$BUILDINSTDIR/buildinstall BUILDARCH=`rpm -qp --qf "%{ARCH}" $PKGDIR/anaconda-runtime-[0-9]*` echo "Running buildinstall..." pushd $BUILDINSTDIR rpm2cpio $PKGDIR/anaconda-runtime-[0-9]* | cpio --quiet -iumd './usr*' popd UPD_INSTROOT=./upd-instroot MK_IMAGES=./mk-images MK_TREEINFO=./maketreeinfo.py MK_STAMP=./makestamp.py BUILDINSTALL=./buildinstall for f in $UPD_INSTROOT $MK_IMAGES $MK_STAMP $MK_TREEINFO $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_TREEINFO=$BUILDINSTDIR/maketreeinfo.py MK_STAMP=$BUILDINSTDIR/makestamp.py BUILDINSTALL=$BUILDINSTDIR/buildinstall echo "Building images..." $UPD_INSTROOT $DEBUGSTR $NOGRSTR $PKGDIR $TREEDIR/image-template $TREEDIR/instimage echo "Creating repository metadata..." createrepo -g "$COMPSFILE" -q $p if [ -n "$PKGORDER" ]; then echo "Getting package order..." echo "PYTHONPATH=$TREEDIR/instimage/usr/lib/anaconda $TREEDIR/instimage/usr/lib/anaconda-runtime/pkgorder $p $BUILDARCH $PRODUCTPATH" PYTHONPATH=$TREEDIR/instimage/usr/lib/anaconda $TREEDIR/instimage/usr/lib/anaconda-runtime/pkgorder $p $BUILDARCH $PRODUCTPATH > $PKGORDER fi echo "Writing .treeinfo file..." $MK_TREEINFO --family="$PRODUCTSTR" ${VARIANT:+--variant="$VARIANT"} --version=$VERSION --arch=$BUILDARCH --packagedir=$PRODUCTPATH --outfile=$p/.treeinfo echo "Making images..." $MK_IMAGES $DEBUGSTR $NOGRSTR $PKGDIR $p $TREEDIR/image-template $TREEDIR/instimage $BUILDARCH "$PRODUCTSTR" $VERSION $PRODUCTPATH "$BUGURL" echo "Writing .discinfo file" $MK_STAMP --releasestr="$RELEASESTR" --arch=$BUILDARCH --discNum="$DISCSTR" --baseDir=$PRODUCTPATH/base --packagesDir=$PKGDIR --pixmapsDir=$PRODUCTPATH/pixmaps --outfile=$p/.discinfo rm -rf $TREEDIR/image-template $TREEDIR/instimage $BUILDINSTDIR