mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
b707a1ab6b
BitKeeper/etc/logging_ok: auto-union Build-tools/Do-all-build-steps: Auto merged Build-tools/Do-compile: Auto merged Build-tools/Do-rpm: Auto merged Docs/manual.texi: Auto merged include/hash.h: Auto merged include/my_sys.h: Auto merged innobase/dict/dict0dict.c: Auto merged libmysql/libmysql.c: Auto merged mysql-test/t/type_date.test: Auto merged mysys/array.c: Auto merged mysys/hash.c: Auto merged mysys/mf_qsort.c: Auto merged scripts/mysqld_safe.sh: Auto merged scripts/mysqlhotcopy.sh: Auto merged sql/item_timefunc.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.cc: Auto merged sql-bench/server-cfg.sh: Auto merged strings/Makefile.am: Auto merged
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
|