mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
aa67831207
Let's hope this did not break anything. Will not push this one until Monty gets back
255 lines
6.2 KiB
Bash
Executable file
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
|