mirror of
https://github.com/MailScanner/v5.git
synced 2024-11-10 17:35:06 +08:00
640f6fbaa6
none
162 lines
4.5 KiB
Bash
Executable file
162 lines
4.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Written by:
|
|
# Jerry Benton < mailscanner@mailborder.com >
|
|
# 13 FEB 2015
|
|
# 18 April 2016 - Updated
|
|
#
|
|
# This script will build the latest RPM install
|
|
# package and put it in /msbuilds/rpm
|
|
|
|
# make sure this is run from the base directory
|
|
if [ ! -d 'rhel' ]; then
|
|
echo 'This script must be executed from the base directory.';
|
|
echo './RPM.files was not found. Exiting ...';
|
|
echo;
|
|
exit 192
|
|
fi
|
|
|
|
# directory we are in
|
|
THISCURDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
|
|
|
# if not set from the "Build.all" script
|
|
if [ -z "$RPMOUT" ]; then
|
|
RPMOUT="$HOME/msbuilds/rpm";
|
|
export RPMOUT;
|
|
fi
|
|
|
|
# check to see if the output directory exists
|
|
if [ ! -d "$RPMOUT" ]; then
|
|
mkdir -p $RPMOUT
|
|
fi
|
|
|
|
# if not set from the "Build.all" script
|
|
if [ -z "$MSVERSION" ]; then
|
|
echo "Please tell me the version number (x.xx.x): ";
|
|
read MSVERSION
|
|
export MSVERSION
|
|
fi
|
|
|
|
# if not set from the "Build.all" script
|
|
if [ -z "$MSBUILD" ]; then
|
|
echo "And the build number (-x): ";
|
|
read MSBUILD
|
|
export MSBUILD
|
|
fi
|
|
|
|
# if not set from the "Build.all" script
|
|
if [ -z "$FULLMSVER" ]; then
|
|
FULLMSVER=$MSVERSION-$MSBUILD
|
|
export FULLMSVER
|
|
fi
|
|
|
|
# if not set from the "Build.all" script
|
|
if [ -z "$DEVBASEDIR" ]; then
|
|
DEVBASEDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
|
#echo "You current directory is $THISCURDIR"; echo;
|
|
#echo "Enter the parent directory of RPM.files without the trailing slash: ";
|
|
#read DEVBASEDIR
|
|
export DEVBASEDIR
|
|
fi
|
|
|
|
# create this if missing
|
|
#if [ ! -f '/tmp/MailScanner.conf.index.html' ]; then
|
|
#sh $DEVBASEDIR/config.index/make.sh
|
|
#fi
|
|
|
|
# the source directory
|
|
SRCDIR=$DEVBASEDIR/rhel
|
|
|
|
# version info
|
|
BUILD=$MSBUILD
|
|
VERSION=$MSVERSION-$BUILD
|
|
export VERSION BUILD
|
|
|
|
# setup rpm development dirs
|
|
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
|
|
|
# create build output base dir
|
|
mkdir -p $RPMOUT
|
|
|
|
# the work directory
|
|
WORK="/tmp/MailScanner-$MSVERSION";
|
|
|
|
# delete work tmp if already exists
|
|
if [ -d $WORK ]; then
|
|
rm -rf $WORK
|
|
fi
|
|
|
|
# make working dir and subs
|
|
mkdir -p $WORK
|
|
mkdir -p $WORK/{usr,etc}
|
|
|
|
# etc
|
|
cp -fr $DEVBASEDIR/common/etc/* $WORK/etc/
|
|
cp -fr $DEVBASEDIR/rhel/etc/* $WORK/etc/
|
|
|
|
# usr
|
|
cp -fr $DEVBASEDIR/common/usr/* $WORK/usr/
|
|
|
|
# Insert the version number we are building
|
|
perl -pi -e 's/VersionNumberHere/'$MSVERSION'/;' $WORK/etc/MailScanner/MailScanner.conf
|
|
perl -pi -e 's/VersionNumberHere/'$MSVERSION'/;' $WORK/usr/sbin/MailScanner
|
|
|
|
# do the same for mailscanner.spec
|
|
cp -f $DEVBASEDIR/rhel/mailscanner.spec ~/rpmbuild/SPECS/mailscanner.spec
|
|
perl -pi -e 's/VersionNumberHere/'$MSVERSION'/;' ~/rpmbuild/SPECS/mailscanner.spec
|
|
perl -pi -e 's/ReleaseNumberHere/'$MSBUILD'/;' ~/rpmbuild/SPECS/mailscanner.spec
|
|
|
|
# remove svn and git and mac stuff
|
|
find $WORK -name '.svn' -exec rm -rf {} \;
|
|
find $WORK -name '.git' -exec rm -rf {} \;
|
|
find $WORK -name '*.DS_Store' -exec rm -rf {} \;
|
|
find $WORK -depth -name '__MACOSX' -exec rm -rf {} \;
|
|
|
|
# permissions
|
|
cd $WORK
|
|
find . -type f -exec chmod 0644 {} \;
|
|
find . -type d -exec chmod 0755 {} \;
|
|
chmod +x $WORK/usr/sbin/*
|
|
chmod +x $WORK/usr/lib/MailScanner/wrapper/*-autoupdate
|
|
chmod +x $WORK/usr/lib/MailScanner/wrapper/*-wrapper
|
|
chmod +x $WORK/usr/lib/MailScanner/init/*
|
|
chmod +x $WORK/etc/cron.daily/*
|
|
chmod +x $WORK/etc/cron.hourly/*
|
|
|
|
# Build the src tarball for RPM construction
|
|
cd $WORK
|
|
cd ..
|
|
tar czf ~/rpmbuild/SOURCES/MailScanner-${MSVERSION}.tgz MailScanner-${MSVERSION}
|
|
|
|
# return to where i started
|
|
cd $THISCURDIR
|
|
|
|
# create the output dir in $RPMOUT
|
|
if [ -d $RPMOUT/MailScanner-$VERSION ]; then
|
|
rm -rf $RPMOUT/MailScanner-$VERSION
|
|
fi
|
|
mkdir -p $RPMOUT/MailScanner-$VERSION
|
|
|
|
# copy some file we need
|
|
cp $SRCDIR/install.sh $RPMOUT/MailScanner-$VERSION/
|
|
cp $DEVBASEDIR/README $RPMOUT/MailScanner-$VERSION/
|
|
cp $DEVBASEDIR/LICENSE $RPMOUT/MailScanner-$VERSION/
|
|
find $RPMOUT/MailScanner-$VERSION -name 'install.sh' -exec chmod 755 {} \;
|
|
find $RPMOUT/MailScanner-$VERSION -name 'LICENSE' -exec chmod 644 {} \;
|
|
find $RPMOUT/MailScanner-$VERSION -name 'README' -exec chmod 644 {} \;
|
|
|
|
# Build the RPM and SRPMS
|
|
# extra define statements help make the rpm backwards compatible
|
|
#rpmbuild -ba --sign --define "_binary_filedigest_algorithm 1" --define "_binary_payload 1" ~/rpmbuild/SPECS/mailscanner.spec
|
|
rpmbuild -ba --define "_binary_filedigest_algorithm 1" --define "_binary_payload 1" ~/rpmbuild/SPECS/mailscanner.spec
|
|
|
|
# copy the rpm built to the output dir
|
|
cp ~/rpmbuild/RPMS/noarch/MailScanner-${VERSION}.noarch.rpm $RPMOUT/MailScanner-$VERSION
|
|
cd $RPMOUT
|
|
tar czf MailScanner-${VERSION}.rhel.tar.gz MailScanner-$VERSION
|
|
rm -rf $RPMOUT/MailScanner-$VERSION
|
|
rm -rf $WORK
|
|
|
|
echo;
|
|
echo "Completed: $RPMOUT/MailScanner-${VERSION}.rhel.tar.gz";
|
|
|