# The shell is commented out so that it will run in bash on linux and ksh on aix # !/bin/bash # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html # Common script to make any one the xcat rpms. To build locally, run in the top dir of local svn repository, for example: # ./makerpm xCAT-server # ./makerpm xCAT x86_64 # If you want verbose output: export VERBOSE=1 # set -x # Make one of the following rpms: perl-xCAT, xCAT-server, xCAT-client, xCAT-IBMhpc, xCAT-rmc, xCAT-UI, xCAT-test, xCAT-OpenStack function makenoarch { RPMNAME=$1 if [ "$OSNAME" = "AIX" -a "$RPMNAME" != "xCAT-OpenStack" ]; then echo '.svn' > /tmp/xcat-excludes tar -X /tmp/xcat-excludes -cf $RPMROOT/SOURCES/$RPMNAME-$VER.tar $RPMNAME gzip -f $RPMROOT/SOURCES/$RPMNAME-$VER.tar rm -f $RPMROOT/SRPMS/$RPMNAME-$VER*rpm $RPMROOT/RPMS/ppc/$RPMNAME-$VER*rpm echo "Building $RPMROOT/RPMS/ppc/$RPMNAME-$VER-snap*.ppc.rpm $EMBEDTXT..." rpm $QUIET -ba $RPMNAME/$RPMNAME.spec RC=$? else # linux echo "Building $RPMROOT/RPMS/noarch/$RPMNAME-$VER-snap*.noarch.rpm $EMBEDTXT..." tar --exclude .svn -czf $RPMROOT/SOURCES/$RPMNAME-$VER.tar.gz $RPMNAME rm -f $RPMROOT/SRPMS/$RPMNAME-$VER*rpm $RPMROOT/RPMS/noarch/$RPMNAME-$VER*rpm rpmbuild $QUIET -ta $RPMROOT/SOURCES/$RPMNAME-$VER.tar.gz RC=$? fi } # Make one of the following rpms: xCAT, xCATsn, xCAT-buildkit function makexcat { if [ "$OSNAME" != "AIX" -a "$1" != "xCAT-buildkit" -a -z "$2" ]; then echo 'Usage: makerpm []' exit 1 fi RPMNAME="$1" if [ "$OSNAME" = "AIX" ]; then source=/opt/freeware/src/packages cd `dirname $0`/$RPMNAME echo '.svn' > /tmp/xcat-excludes echo 'upflag' >> /tmp/xcat-excludes if [ "$RPMNAME" = "xCAT" ]; then tar -X /tmp/xcat-excludes -cf $RPMROOT/SOURCES/postscripts.tar postscripts LICENSE.html gzip -f $RPMROOT/SOURCES/postscripts.tar tar -X /tmp/xcat-excludes -cf $RPMROOT/SOURCES/templates.tar templates gzip -f $RPMROOT/SOURCES/templates.tar cp xcat.conf $RPMROOT/SOURCES cp xCATMN $RPMROOT/SOURCES else # xCATsn tar -X /tmp/xcat-excludes -cf $RPMROOT/SOURCES/license.tar LICENSE.html gzip -f $RPMROOT/SOURCES/license.tar cp xCATSN $RPMROOT/SOURCES fi rm -f $RPMROOT/SRPMS/$RPMNAME-$VER*rpm $RPMROOT/RPMS/ppc/$RPMNAME-$VER*rpm cd - >/dev/null echo "Building $RPMROOT/RPMS/ppc/$RPMNAME-$VER-snap*.ppc.rpm $EMBEDTXT..." rpm $QUIET -ba $RPMNAME/$RPMNAME.spec RC=$? else # linux ARCH="$2" TARGET="--target $ARCH" if [ "$RPMNAME" = "xCAT" ]; then cd `dirname $0`/$RPMNAME tar --exclude .svn --exclude upflag -czf $RPMROOT/SOURCES/postscripts.tar.gz postscripts LICENSE.html tar --exclude .svn -czf $RPMROOT/SOURCES/prescripts.tar.gz prescripts tar --exclude .svn -czf $RPMROOT/SOURCES/templates.tar.gz templates cp xcat.conf $RPMROOT/SOURCES cp xCATMN $RPMROOT/SOURCES cd - >/dev/null elif [ "$RPMNAME" = "xCATsn" ]; then cd `dirname $0`/$RPMNAME tar --exclude .svn -czf $RPMROOT/SOURCES/license.tar.gz LICENSE.html cp xcat.conf $RPMROOT/SOURCES cp xCATSN $RPMROOT/SOURCES cd - >/dev/null elif [ "$RPMNAME" = "xCAT-buildkit" ]; then ARCH="noarch" TARGET="" tar --exclude .svn --exclude xCAT-buildkit.spec -czf $RPMROOT/SOURCES/$RPMNAME-$VER.tar.gz $RPMNAME else # do not recognize rpm echo "Unrecognized rpm: $RPMNAME" exit 2 fi rm -f $RPMROOT/SRPMS/$RPMNAME-$VER*rpm $RPMROOT/RPMS/$ARCH/$RPMNAME-$VER*rpm echo "Building $RPMROOT/RPMS/$ARCH/$RPMNAME-$VER-snap*.$ARCH.rpm $EMBEDTXT..." rpmbuild $QUIET -ba $RPMNAME/$RPMNAME.spec $TARGET RC=$? fi } # Make the xCAT-nbroot-core rpm function makenbroot { if [ -z "$2" ]; then echo 'Usage: makerpm xCAT-nbroot-core []' exit 1 fi DIR="xCAT-nbroot" ARCH="$2" RPMNAME="xCAT-nbroot-core-$ARCH" SPEC="xcat-core-nbroot" cd `dirname $0`/$DIR tar --exclude .svn -czf $RPMROOT/SOURCES/xcat-nbrootoverlay.tar.gz -C overlay/ . cp LICENSE.html $RPMROOT/BUILD cp $SPEC.spec $RPMROOT/SOURCES cd - >/dev/null rm -f $RPMROOT/SRPMS/$RPMNAME-$VER*rpm $RPMROOT/RPMS/noarch/$RPMNAME-$VER*rpm echo "Building $RPMROOT/RPMS/noarch/$RPMNAME-$VER-snap*.noarch.rpm $EMBEDTXT..." rpmbuild $QUIET -ba $DIR/$SPEC.spec --target $ARCH } # Make the xCAT-genesis rpm function makegenesis { DIR="xCAT-genesis-builder" RPMNAME="$1" cd `dirname $0`/$DIR tar --exclude .svn -cjf $RPMROOT/SOURCES/$RPMNAME.tar.bz2 . cp LICENSE.html $RPMROOT/BUILD cp $RPMNAME.spec $RPMROOT/SOURCES cd - >/dev/null rm -f $RPMROOT/SRPMS/$RPMNAME-$VER*rpm $RPMROOT/RPMS/noarch/$RPMNAME-$VER*rpm echo "Building $RPMROOT/RPMS/noarch/$RPMNAME-$VER-snap*.noarch.rpm $EMBEDTXT..." rpmbuild $QUIET -ba $DIR/$RPMNAME.spec } function makegenesisscripts { DIR="xCAT-genesis-scripts" if [ -z "$2" ]; then echo 'Usage: makerpm xCAT-genesis-scripts []' exit 1 fi RPMNAME="$1" ARCH="$2" TARGET="--target $ARCH" cd `dirname $0`/ tar --exclude .svn -cjf $RPMROOT/SOURCES/$RPMNAME.tar.bz2 $DIR cp $DIR/LICENSE.html $RPMROOT/BUILD cp $DIR/$RPMNAME.spec $RPMROOT/SOURCES cd - >/dev/null rm -f $RPMROOT/SRPMS/$RPMNAME-$ARCH-$VER*rpm $RPMROOT/RPMS/noarch/$RPMNAME-$ARCH-$VER*rpm echo "Building $RPMROOT/RPMS/noarch/$RPMNAME-$ARCH-$VER-snap*.noarch.rpm $EMBEDTXT..." rpmbuild $QUIET -ba $DIR/$RPMNAME.spec $TARGET } # Export the name of the embedded system we are building for function exportEmbed { if [ -n "$1" ]; then export "$1=1" EMBEDTXT="for $1 " else EMBEDTXT="" fi } # Main code.... if [ -z "$1" ]; then echo 'Usage: makerpm [] []' exit 1 fi OSNAME=$(uname) VER=`cat Version` if [ "$VERBOSE" = "1" -o "$VERBOSE" = "yes" ];then QUIET="" else QUIET="--quiet" fi if [ "$OSNAME" = "AIX" ]; then RPMROOT=/opt/freeware/src/packages else # linux rpmbuild --version > /dev/null if [ $? -gt 0 ]; then echo "Error: rpmbuild does not appear to be installed or working." exit 2 fi RPMROOT=`rpmbuild --eval '%_topdir' xCATsn/xCATsn.spec` if [ $? -gt 0 ]; then echo "Error: Could not determine rpmbuild's root directory." exit 2 fi fi if [ "$1" = "xCAT" -o "$1" = "xCATsn" -o "$1" = "xCAT-buildkit" ]; then exportEmbed $3 makexcat $1 $2 elif [ "$1" = "xCAT-nbroot" -o "$1" = "xCAT-nbroot-core" ]; then exportEmbed $3 makenbroot xCAT-nbroot-core $2 elif [ "$1" = "xCAT-genesis-builder" ]; then exportEmbed $2 makegenesis $1 elif [ "$1" = "xCAT-genesis-scripts" ]; then exportEmbed $3 makegenesisscripts $1 $2 else # must be one of the noarch rpms exportEmbed $2 makenoarch $1 fi exit $RC