The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/bin/sh -u

#
# Build rpm distribution
#
# Helpful Documentation:
#   Maximum RPM 
#   Taking the Red Hat Package Manager to the Limit
#   Edward C. Bailey
#   http://www.redhat.com/docs/books/max-rpm/
#

umask 022

echo ''
case "`id`" in
*root*) ;;
*)
    echo    "Warning! 'rpm' may core dump if you are not root."
    echo -n "Hit enter to continue: "
    read junk
    ;;
esac

get_rpm_version() {
    rpm -q --queryformat '%{VERSION}' $* 2>/dev/null
}

# Get distribution name
distro=RedHat
echo -n "Linux distribution [$distro]: "
read ans
if test "$ans" != ""; then
    distro=$ans
fi

# Get distribution version
rev=`get_rpm_version redhat-release`
echo -n "Distribution version [$rev]: "
read ans
if test "$ans" != ""; then
    rev=$ans
fi

# Which release.  Increment every time an rpm is released for the same version.
release=1
echo -n "RPM Release [$release]: "
read ans
if test "$ans" != ""; then
    release=$ans
fi

rpms=${TMPDIR}/RPMS
build=${TMPDIR}/BUILD
binroot=${TMPDIR}/binroot
perlrev=`get_rpm_version perl`
ver=`echo $VERSION | sed 's/-//g'`
serial=`echo $ver $release | awk '{print $1 * 1000 + $2}'`
summary=`grab_summary`
spec=${TMPDIR}/${PKGNM}-${ver}-${release}.spec
doc_files="README README.html COPYING Changes"
group=Development/Languages
arch=`rpm --showrc | awk '/build arch/ {print $NF; exit}'`
os=${distro}-$rev

mkdir $rpms $rpms/$arch $build $binroot

file_list() {
    copy_pkgfiles $binroot "$@"
    for f in `file_dest "$@"`; do echo "%attr(755,root,root) $f"; done
}

# Write the spec file
(
    cat <<-END
	Summary: $summary
	Name: $PKGNM
	Version: $ver
	Release: $release
	Serial: $serial
	Copyright: $COPYRIGHT
	Group: $group
	Requires: perl = $perlrev
	Prefix: $PREFIX
	URL: $URL
	Vendor: $VENDOR
	%define _topdir $TMPDIR
	BuildRoot: $binroot
	END

    # Insert the description from PM file
    echo '%description'
    grab_description | sed 's/^/\: /'

    # Files to install
    echo '%files'
    file_list $STD_FILES

    # Documentation files
    cp ${doc_files} ${build}
    for f in $doc_files; do echo '%doc' $f; done

    if want_apache_package; then
	# Put the apache files into the build dir
	copy_pkgfiles $binroot $APACHE_FILES

	APACHE_VERSION_NEXT=`expr $APACHE_VERSION + 1`
	if test $APACHE_VERSION -gt 1; then
		apache_pkg=httpd
	else
		apache_pkg=apache
	fi

	# Apache module
	cat <<-END
	%package $MODNM
	Summary: $APACHE_DESC
	Group: $group
	Requires: speedycgi = ${ver}, $apache_pkg >= $APACHE_VERSION, $apache_pkg < $APACHE_VERSION_NEXT
	%description $MODNM
	$APACHE_DESC
	END

	# File list
	echo "%files $MODNM"
	file_list $APACHE_FILES

	# Apache install script
	echo "%post $MODNM"
	apache_install_script '$RPM_INSTALL_PREFIX' 'rpmsave'

	# Apache uninstall script
	echo "%preun $MODNM"
	echo "# Don't uninstall during an upgrade"
	echo 'if test $1 -gt 0; then exit 0; fi'
	apache_uninstall_script
    fi
) >$spec &&

# Build the rpms from the spec
if test -x /usr/bin/rpmbuild; then
    rpmbuild -bb $spec
else
    rpm -bb $spec
fi
if test $? -ne 0; then
    echo "rpm command failed"
    adios $?
fi

# Copy the rpms from the TMPDIR
for f in `cd $rpms/$arch; echo *.rpm`; do
    o=$OUTDIR/${os}-$f
    cp $rpms/$arch/$f $o
    case $f in
	*${MODNM}*)
	    add_desc $o $APACHE_VERSION $os $arch "Apache $APACHE_VERSION"
	    ;;
	*)
	    add_desc $o 0 $os $arch "Perl $perlrev"
	    ;;
    esac
done