#!/bin/bash

# Buildpkg script for producing RPM packages. (Does not require root access.)
# Buildpkg is designed to be used by both buildbot (to automate rpm production)
# and by J Random User (to build an rpm for kicks).  The odd way of handling
# all optioins through environment variables is a product of buildbot.
#
# AMVER: the version of amanda we're working on.  This will become part of the
#     rpm name.  AMVER must line up with the version number mentioned in the
#     .spec file.
# PKG_DIR: Rpmbuild expects absolute paths, so we provide this var.  It also
#     allows you to build somewhere other than `pwd`.  You probably don't want
#     to use the system-wide location, as the script tries to blow these
#     directories away.
# 
# Other Hints:
# Not everyone will want to use the ./configure options we provide.  The
# easiest way to change them is by editing the .spec file.  This isn't so
# easy, unfortunately.  Look at the %build section, and the %define xxxx 
# statements immediately above it. good luck.

# This is useful for debugging
 set -x
# Check for $AMVER, or pull it from configure.ac
if [ -z $AMVER ]; then
    VER=`cat FULL_VERSION`
    AMVER=amanda-${VER}
fi

# Until we get package revisioning in community.
[ -f "PKG_REV" ] || echo "1" > PKG_REV

[ -f "./configure" ] || \
    { echo "./configure does not exist, please run ./autogen"; exit 1; }

# Substitute amanda.spec.src
/usr/bin/perl packaging/common/substitute.pl \
    packaging/rpm/amanda.spec.src packaging/rpm/amanda.spec || exit 1

PKG_TARBALL=${AMVER}.tar.gz
if [ ! -f "${PKG_TARBALL}" ]; then
    mkdir ${AMVER} || exit 1
    cp -Rfp * ${AMVER}/
    tar -cf ${PKG_TARBALL} -z ${AMVER} || exit 1
    rm -rf ${AMVER} || exit 1
fi

# Check for the packaging dirs.
if [ -z "$PKG_DIR" ]; then
    PKG_DIR=${PWD}
fi
if [ ! -d ${PKG_DIR} ]; then
    mkdir ${PKG_DIR} || exit 1
fi
cd ${PKG_DIR}

if [ -d rpm ]; then
    rm -rf rpm || exit 1
fi
mkdir rpm
mkdir rpm/SOURCES
mkdir rpm/SRPMS
mkdir rpm/SPECS
mkdir rpm/BUILD
mkdir rpm/RPMS || exit 1

# Make a copy of the tarball in the rpmbuild location
cp ${PKG_TARBALL} rpm/SOURCES/${PKG_TARBALL} || exit 1
cp packaging/rpm/amanda.spec rpm/SPECS || exit 1
# Rpmbuild requires absolute paths.  annoying.  If you need to change the 
# default value of some rpm.spec variable, just pass extra --define options.
# this is useful for changing %amanda_release or %amanda_version
rpmbuild -ba --define "_topdir ${PKG_DIR}/rpm" \
             ${PKG_DIR}/rpm/SPECS/amanda.spec || exit 1
cp rpm/RPMS/*/*.rpm . || exit 1
cp rpm/SRPMS/*.rpm . || exit 1
