54bb5bec7a
Our initial implementation only required Jenkins to export binary RPMs, but as we move foward, we really need to also export SRPMs. To support SRPMs, the spec file in the RPM has to have the correct NAME, VERSION, and RELEASE information. Change-Id: Icd7132b4aafdbe7a1f02a35d0be7ad63b2e7c056 Signed-off-by: Luis Pabon <lpabon@redhat.com> Reviewed-on: http://review.gluster.org/5669 Reviewed-by: Peter Portante <pportant@redhat.com> Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com> Tested-by: Peter Portante <pportant@redhat.com> Reviewed-on: http://review.gluster.org/5679
132 lines
3.0 KiB
Bash
132 lines
3.0 KiB
Bash
#!/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
|
|
gitarchive_dir="${RPMBUILDDIR}/gitarchive"
|
|
specfile="${gitarchive_dir}/${SRCTAR_DIR}/${PKG_NAME}.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__#${PKG_NAME}#" \
|
|
-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}"
|
|
}
|
|
|
|
################## 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=${PKG_NAME}-${PKG_VERSION}-${PKG_RELEASE}
|
|
SRCTAR_DIR=${PKG_NAME}-${PKG_VERSION}
|
|
SRCTAR=${RPMBUILDDIR}/${SRCNAME}.tar.gz
|
|
|
|
prep
|
|
create_rpm
|
|
cleanup
|