2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-21 19:22:05 +00:00
xcat-core/makerpm
Victor Hu 4cc980f3c6 In the c910 build area, we are using the older buildxcat scripts
so the path for finding the compiler.jar was incorrect.  Updated
the makerpm script to be able to find compiler.jar to build xCAT-UI
2015-05-21 14:31:41 -04:00

263 lines
8.0 KiB
Plaintext
Executable File

# 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
function makenoarch {
RPMNAME=$1
if [ "$OSNAME" = "AIX" ]; 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..."
# TODO: should fix this up, this is a hack for the new build machine
if [ $RPMNAME = "xCAT-UI" ]; then
# Only if the old compiler.jar file does not exist.....
if [ ! -e /xcat2/build/tools/compiler.jar ]; then
# look for the dynamic location of the compiler.jar file
DIRNAME=`dirname $(readlink -f $0)`
COMPILER_JAR=`echo "${DIRNAME%%linux_rpm/*}tools/compiler.jar"`
if [ -f $COMPILER_JAR ]; then
sed -i "s#/xcat2/build/tools/compiler.jar#${COMPILER_JAR}#g" xCAT-UI/xCAT-UI.spec
else
# In c910, if using the old buildxcat scripts...
COMPILER_JAR=`echo "${DIRNAME%%old/*}xcat2/tools/compiler.jar"`
if [ -f $COMPILER_JAR ]; then
sed -i "s#/xcat2/build/tools/compiler.jar#${COMPILER_JAR}#g" xCAT-UI/xCAT-UI.spec
fi
fi
fi
fi
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, xCAT-OpenStack
function makexcat {
if [ "$OSNAME" != "AIX" -a "$1" != "xCAT-buildkit" -a -z "$2" ]; then
echo 'Usage: makerpm <RPMname> <arch> [<embedded-system>]'
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 xcat.conf.apach24 $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
tar --exclude .svn -czf $RPMROOT/SOURCES/winpostscripts.tar.gz winpostscripts
cp xcat.conf $RPMROOT/SOURCES
cp xcat.conf.apach24 $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 xcat.conf.apach24 $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
elif [ "$RPMNAME" = "xCAT-OpenStack" ]; then
tar --exclude .svn --exclude xCAT-OpenStack.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 ironic rpm for ironic baremetal driver
function makeironic {
RPMNAME="$1"
ARCH="$2"
cd `dirname $0`/$RPMNAME
cp -rf ironic_baremetal /tmp/
cd /tmp/ironic_baremetal
git init
git add *
git commit -a -m "generate rpm"
python setup.py bdist_rpm
rm -rf $RPMROOT/RPMS/$ARCH/
mkdir -p $RPMROOT/RPMS/$ARCH/
cp -rf dist/*.rpm $RPMROOT/RPMS/$ARCH/
rm -rf /tmp/ironic_baremetal
}
# Make the xCAT-nbroot-core rpm
function makenbroot {
if [ -z "$2" ]; then
echo 'Usage: makerpm xCAT-nbroot-core <arch> [<embedded-system>]'
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 <arch> [<embedded-system>]'
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 <RPMname> [<arch>] [<embedded-system>]'
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" -o "$1" = "xCAT-OpenStack" ]; 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
elif [ "$1" = "xCAT-OpenStack-ironic" ]; then
makeironic $1 $2
else # must be one of the noarch rpms
exportEmbed $2
makenoarch $1
fi
exit $RC