diff options
Diffstat (limited to 'makerpm.sh')
-rw-r--r-- | makerpm.sh | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/makerpm.sh b/makerpm.sh new file mode 100644 index 0000000..6427df6 --- /dev/null +++ b/makerpm.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +# Simple script to create RPMs for G4S + +cleanup() +{ + rm -rf ${RPMBUILDDIR} > /dev/null 2>&1 + rm -f ${PKGCONFIG} > /dev/null 2>&1 +} + +fail() +{ + cleanup + echo $1 + exit $2 +} + +create_dir() +{ + if [ ! -d "$1" ] ; then + mkdir -p "$1" + if [ $? -ne 0 ] ; then + fail "Unable to create dir $1" $? + fi + fi +} + +gittotar() +{ + # Only archives committed changes + git archive --format=tar.gz --prefix=${SRCTAR_DIR}/ HEAD --output ${SRCTAR} + if [ $? -ne 0 ] ; then + fail "Unable to create git archive" $? + fi +} + +prep() +{ + rm -rf ${RPMBUILDDIR} > /dev/null 2>&1 + create_dir ${RPMBUILDDIR} + + # Create a tar file out of the current committed changes + gittotar + +} + +create_rpm() +{ + # Create the rpm + # _topdir Notifies rpmbuild the location of the root directory + # containing the RPM information + # _release Allows Jenkins to setup the version using the + # build number + rpmbuild --define "_topdir ${RPMBUILDDIR}" \ + --define "_release ${PKG_RELEASE}" \ + --define "_version ${PKG_VERSION}" \ + --define "_name ${PKG_NAME}" \ + -ta ${SRCTAR} + if [ $? -ne 0 ] ; then + fail "Unable to create rpm" $? + fi + + # Move the rpms to the root directory + mv ${RPMBUILDDIR_RPMS}/noarch/*rpm ${BUILDDIR} + if [ $? -ne 0 ] ; then + fail "Unable to move rpm to ${BUILDDIR}" $? + fi + + echo "RPMS are now available in ${BUILDDIR}" +} + +################## MAIN ##################### + +# Create a config file with the package information +PKGCONFIG=${PWD}/pkgconfig.in +env python pkgconfig.py +if [ ! -f "${PKGCONFIG}" ] ; then + fail "Unable to create package information file ${PKGCONFIG}" 1 +fi + +# Get PKG_NAME and PKG_VERSION +. ${PKGCONFIG} +if [ -z "${PKG_NAME}" ] ; then + fail "Unable to read the package name from the file created by pkgconfig.py" 1 +fi +if [ -z "${PKG_VERSION}" ] ; then + fail "Unable to read the package version from the file created by pkgconfig.py" 1 +fi + +# +# This can be set by JENKINS builds +# If the environment variable PKG_RELEASE +# has not been set, then we set it locally to +# a default value +# +if [ -z "$PKG_RELEASE" ] ; then + PKG_RELEASE=0 +fi + + +BUILDDIR=$PWD/build +RPMBUILDDIR=${BUILDDIR}/rpmbuild +RPMBUILDDIR_RPMS=${RPMBUILDDIR}/RPMS +SRCNAME=${PKG_NAME}-${PKG_VERSION}-${PKG_RELEASE} +SRCTAR_DIR=${PKG_NAME}-${PKG_VERSION} +SRCTAR=${RPMBUILDDIR}/${SRCNAME}.tar.gz + +prep +create_rpm +cleanup |