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>
		
			
				
	
	
		
			143 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			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
 |