#!/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