mariadb/Build-tools/Do-rpm
sasha@mysql.sashanet.com aa67831207 merged from 3.23 to pull the LOAD DATA INFILE fix as rpl000001 was failing.
Let's hope this did not break anything. Will not push this one until Monty
gets back
2002-03-01 19:36:46 -07:00

255 lines
6.2 KiB
Bash
Executable file

#!/bin/bash
#helper functions
function copy_to_bmachine
{
if [ x$local_build = x1 ]; then
rm -f $2
cp $1 $2
else
scp $1 $owner@$bmachine:$2
fi
}
function copy_from_bmachine
{
if [ x$local_build = x1 ]; then
rm -f $2
cp $1 $2
else
scp $owner@$bmachine:$1 $2
fi
}
function run_command
{
if [ x$local_build = x1 ]; then
bash $1
else
cat $1 | ssh $owner@$bmachine bash
fi
}
#Supply defaults
# We built on one of two machines
bmachine=work
smachine=work
owner=my
# Hard path!!
bpath=`/bin/pwd`
for d in /usr/src/redhat /usr/src/packages ; do
if test -d "$d"
then
rpmdir=$d
fi
done
if test -z "$rpmdir"
then
echo "Could not find suitable rpmdir on this system"
exit 1
fi
logdir="$bpath/Logs"
###### Perl STUFF #####
# Perl version numbers. Should be autodetected from the files in the
# Perl-mysql-modules/ directory.
DBI_VERSION="1.14"
DATA_SHOWTABLE_VERSION="3.3"
DBD_MYSQL_VERSION="1.2215"
MAKERPM="$rpmdir/SOURCES/makerpm.pl"
#######################
AM_MAKEFLAGS="-j 2"
VER=`grep "AM_INIT_AUTOMAKE(mysql, " $bpath/configure.in | \
sed -e 's;AM_INIT_AUTOMAKE(mysql, ;;' -e 's;);;'`
VER_NO_DASH=`echo $VER | sed -e "s|-.*$||"`
tarball=$bpath/mysql-$VER.tar.gz
while test $# -gt 0; do
case "$1" in
--rpmdir=*)
rpmdir=`echo $1 | sed -e "s;--rpmdir=;;"`
;;
--smachine=*)
smachine=`echo $1 | sed -e "s;--smachine=;;"`
;;
--bmachine=*)
bmachine=`echo $1 | sed -e "s;--bmachine=;;"`
;;
--owner=*)
owner=`echo $1 | sed -e "s;--owner=;;"`
;;
--tarball=*)
tarball=`echo $1 | sed -e "s;--tarball=;;"`
;;
--logdir=*)
logdir=`echo $1 | sed -e "s;--logdir=;;"`
;;
--local )
local_build=1
;;
--skip-perl )
skip_perl=1
;;
* ) break ;;
esac
shift
done
echo "Removing old MySQL packages"
rm -f $bpath/NEW-RPMS/MySQL-*rpm
if [ ! -d "$logdir" ]; then
echo "$logdir does not exist, creating"
mkdir -p $logdir
fi
if [ ! -f "$tarball" ]; then
echo "Tarball file $tarball does not exist, please make one first"
exit 1
fi
log=$logdir/Log-RPM-`date +%y%m%d-%H%M`
echo "Building RPM for MySQL version $VER on $bmachine"
echo "Details in $log"
(
set -x
# remove old stuff
rm -rf $rpmdir/BUILD/mysql-*
rm -f $rpmdir/SOURCES/mysql-*
rm -f $rpmdir/SRPMS/MySQL-*
rm -f $rpmdir/SPECS/mysql-*
rm -rf /var/tmp/mysql
# Copy MySQL source and spec files
#Sasha: I left the scp stuff commented out instead of deleted to make it
#easy to revert in a hurry, if there is a need. Once everything is tested
#and works perfectly, the scp stuff should be deleted to avoid confusion
#scp $bpath/mysql-$VER.tar.gz $owner@$bmachine:$rpmdir/SOURCES
copy_to_bmachine $tarball $rpmdir/SOURCES
#scp $bpath/Docs/Images/mysql-logo.gif $owner@$bmachine:$rpmdir/SOURCES/mysql.gif
copy_to_bmachine $bpath/Docs/Images/mysql-logo.gif $rpmdir/SOURCES/mysql.gif
#scp $bpath/support-files/mysql-$VER.spec $owner@$bmachine:$rpmdir/SPECS
copy_to_bmachine $bpath/support-files/mysql-$VER.spec $rpmdir/SPECS
# Copy perl things. Has to be uncompressed since Compress.pm is not
# installed yet. Set CEXT to .gz when we support compression.
CEXT=
#scp $bpath/Perl-mysql-modules/To-SOURCES/* $owner@$bmachine:$rpmdir/SOURCES
# This had to be installed on the target machince!
# http://www.perl.com/CPAN/modules/by-module/Archive/Archive-Tar-0.21.tar.gz
# cd /usr/lib/perl5/site_perl/5.005; ln -s ../* .; rm -f 5.005
TMP_SCRIPT_MYSQL=00-temp-for-do-rpm.$$
cat > $logdir/$TMP_SCRIPT_MYSQL <<END
set -x
# Check environment
export MYSQL_BUILD_PATH="/usr/cygnus/redhat-980810/H-i386-pc-linux-gnu/bin/:/usr/bin:/bin"
export MYSQL_BUILD_CFLAGS="-O6 -fno-omit-frame-pointer -mpentium"
export MYSQL_BUILD_CXXFLAGS="-O6 -fno-omit-frame-pointer \
-felide-constructors -fno-exceptions -fno-rtti -mpentium"
gcc -v
# Make RPM
rpm -ba $rpmdir/SPECS/mysql-$VER.spec
rm -f /tmp/$TMP_SCRIPT_MYSQL
END
if [ ! x$skip_perl=x1 ]; then
TMP_SCRIPT_PERL=00-temp-for-perl-rpm.$$
cat > $logdir/$TMP_SCRIPT_PERL <<END
set -x
# First clean up so we do not get old versions when wildcard matching
rm -f $rpmdir/SOURCES/DBI-*.spec $rpmdir/SOURCES/mysql*
rm -f $rpmdir/RPMS/i386/Perl-*.rpm
rm -f $rpmdir/SRPMS/Perl-*.rpm
rm -f $rpmdir/RPMS/i386/MySQL*-$VER_NO_DASH*.rpm
rm -f $rpmdir/SRPMS/MySQL*-$VER_NO_DASH*.rpm
chmod a+x ${MAKERPM}
rm
${MAKERPM} --verbose --package-name=DBI --package-version ${DBI_VERSION} \
--specs --source=DBI-${DBI_VERSION}.tar$CEXT
rpm -ba $rpmdir/SPECS/DBI-${DBI_VERSION}.spec
${MAKERPM} --verbose --package-name=Data-ShowTable \
--package-version ${DATA_SHOWTABLE_VERSION} \
--specs --source=Data-ShowTable-${DATA_SHOWTABLE_VERSION}.tar$CEXT
rpm -ba $rpmdir/SPECS/Data-ShowTable-${DATA_SHOWTABLE_VERSION}.spec
for v in ${DBD_MYSQL_VERSION}; do
${MAKERPM}
--specs \
--source=Msql-Mysql-modules-$v.tar$CEXT \
--setup-dir=Msql-Mysql-modules-$v \
--package-name=DBD-mysql \
--package-version=$v \
--makemakeropts='--noprompt --mysql-install --mysql-install-nodbd \
--nomsql-install --nomsql1-install' \
--require=perl-Data-ShowTable --require=perl-DBI
rpm -ba $rpmdir/SPECS/DBD-mysql-$v.spec
done
for srcrpm in $rpmdir/SRPMS/perl-*.src.rpm
do
rpm --rebuild $srcrpm
done
rm -f /tmp/$TMP_SCRIPT_PERL
END
fi
# scp $bpath/Logs/$TMP_SCRIPT_MYSQL $owner@$bmachine:/tmp/$TMP_SCRIPT_MYSQL
# ssh $bmachine -l $owner bash $bpath/Logs/$TMP_SCRIPT_MYSQL
cmd=$logdir/$TMP_SCRIPT_MYSQL
run_command $cmd
if [ $? != 0 ]; then
echo "$cmd failed, perhaps the following will help figure out why:"
tail $log
fi
if [ x$local_build != x1 ]; then
# Build perl RPM (we currently need to be root to do this and that is
# not possible)
#scp $bpath/Logs/$TMP_SCRIPT_PERL $owner@$bmachine:/tmp/$TMP_SCRIPT_PERL
#ssh $bmachine -l root bash /tmp/$TMP_SCRIPT_PERL
# Copy RPMs back to the source dir. We must do this here since the
# $bmachine may not have permission to access $smachine.
scp $owner@$bmachine:$rpmdir/RPMS/i386/MySQL*-$VER_NO_DASH*.rpm $bpath/NEW-RPMS
scp $owner@$bmachine:$rpmdir/SRPMS/MySQL*-$VER_NO_DASH*.rpm $bpath/NEW-RPMS
# And the perl ones
#scp $owner@$bmachine:$rpmdir/RPMS/i386/Perl*-*.rpm $bpath/NEW-RPMS
#scp $owner@$bmachine:$rpmdir/SRPMS/Perl*-*.rpm $bpath/NEW-RPMS
#Remove some of the files that can interfere with future builds
rm -rf /var/tmp/mysql
fi
) > $log 2>&1