swiftonhpss/makerpm.sh
Luis Pabon f54e06b612 Update RPM spec file
Update the RPM file with the comments from submittal spec
file to the Fedora Project. This update also differntiates
between the project name 'gluster-swift' and the Fedora
distribution name 'glusterfs-openstack-swift'.  This simple
changes makes it less confusing when downloading the source
on http://launchpad.net/gluster-swift .

For more information on the Fedora Project submittal status
please see: https://bugzilla.redhat.com/show_bug.cgi?id=1003089

This fix also creates a tar.gz source file so that Jenkins
can archive it.  This can be used for distributions other
than RPM based systems.

Change-Id: Ia9b85d53cf576a7754aaa018396adb70cb0f2855
Signed-off-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6261
Reviewed-by: Thiago Da Silva <thiago@redhat.com>
Tested-by: Thiago Da Silva <thiago@redhat.com>
2013-11-14 15:14:35 -08:00

143 lines
3.4 KiB
Bash

#!/bin/bash
# Simple script to create RPMs for G4S
## RPM NAME
RPMNAME=glusterfs-openstack-swift
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
gitarchive_dir="${RPMBUILDDIR}/gitarchive"
specfile="${gitarchive_dir}/${SRCTAR_DIR}/${RPMNAME}.spec"
create_dir "${gitarchive_dir}"
# Export the current commited git changes to a directory
git archive --format=tar --prefix=${SRCTAR_DIR}/ HEAD | (cd ${gitarchive_dir} && tar xf -)
# Create a new spec file with the current package version information
sed -e "s#__PKG_RELEASE__#${PKG_RELEASE}#" \
-e "s#__PKG_NAME__#${RPMNAME}#" \
-e "s#__PKG_VERSION__#${PKG_VERSION}#" \
${specfile} > ${specfile}.new
mv ${specfile}.new ${specfile}
# Now create a tar file
( cd ${gitarchive_dir} && tar cf - ${SRCTAR_DIR} | gzip -c > ${SRCTAR} )
if [ $? -ne 0 -o \! -s ${SRCTAR} ] ; 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}" \
-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}
mv ${RPMBUILDDIR_SRPMS}/*rpm ${BUILDDIR}
if [ $? -ne 0 ] ; then
fail "Unable to move rpm to ${BUILDDIR}" $?
fi
echo "RPMS are now available in ${BUILDDIR}"
}
create_src()
{
python setup.py sdist --format=gztar --dist-dir=${BUILDDIR}
if [ $? -ne 0 ] ; then
fail "Unable to create source archive"
fi
}
################## 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 package version information
. ${PKGCONFIG}
if [ -z "${NAME}" ] ; then
fail "Unable to read the package name from the file created by pkgconfig.py" 1
fi
if [ -z "${VERSION}" ] ; then
fail "Unable to read the package version from the file created by pkgconfig.py" 1
fi
if [ -z "${RELEASE}" ] ; then
fail "Unable to read the package version from the file created by pkgconfig.py" 1
fi
PKG_NAME=$NAME
PKG_VERSION=$VERSION
#
# 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="${RELEASE}"
else
PKG_RELEASE="${RELEASE}.${PKG_RELEASE}"
fi
BUILDDIR=$PWD/build
RPMBUILDDIR=${BUILDDIR}/rpmbuild
RPMBUILDDIR_RPMS=${RPMBUILDDIR}/RPMS
RPMBUILDDIR_SRPMS=${RPMBUILDDIR}/SRPMS
SRCNAME=${RPMNAME}-${PKG_VERSION}-${PKG_RELEASE}
SRCTAR_DIR=${PKG_NAME}-${PKG_VERSION}
SRCTAR=${RPMBUILDDIR}/${SRCNAME}.tar.gz
prep
create_src
create_rpm
cleanup