Commit 94c7024e authored by lenz@mysql.com's avatar lenz@mysql.com

- enabled embedded server in the binary distributions by default

   (Do-compile)
 - added mysql.info to the binary distribution files (BUG#1019)
 - heavily reworked the Do-rpm script to be more in line with Do-pkg
 - create a "docs" subdirectory in the binary distribution and moved the
   manual, ChangeLog and mysql.info file into it to unclutter the top
   directory
parent 83de458e
......@@ -8,7 +8,7 @@ use Getopt::Long;
$opt_distribution=$opt_user=$opt_config_env="";
$opt_dbd_options=$opt_perl_options=$opt_config_options=$opt_make_options=$opt_suffix="";
$opt_tmp=$opt_version_suffix="";
$opt_help=$opt_delete=$opt_debug=$opt_stage=$opt_no_test=$opt_no_perl=$opt_with_low_memory=$opt_fast_benchmark=$opt_static_client=$opt_static_server=$opt_static_perl=$opt_sur=$opt_with_small_disk=$opt_local_perl=$opt_tcpip=$opt_build_thread=$opt_use_old_distribution=$opt_enable_shared=$opt_no_crash_me=$opt_no_strip=$opt_with_debug=$opt_no_benchmark=$opt_no_mysqltest=0;
$opt_help=$opt_delete=$opt_debug=$opt_stage=$opt_no_test=$opt_no_perl=$opt_with_low_memory=$opt_fast_benchmark=$opt_static_client=$opt_static_server=$opt_static_perl=$opt_sur=$opt_with_small_disk=$opt_local_perl=$opt_tcpip=$opt_build_thread=$opt_use_old_distribution=$opt_enable_shared=$opt_no_crash_me=$opt_no_strip=$opt_with_debug=$opt_no_benchmark=$opt_no_mysqltest=$opt_without_embedded=0;
$opt_innodb=$opt_bdb=$opt_raid=$opt_libwrap=0;
GetOptions(
......@@ -230,6 +230,7 @@ if ($opt_stage <= 1)
$opt_config_options.= " --with-low-memory" if ($opt_with_low_memory);
$opt_config_options.= " --with-mysqld-ldflags=-all-static" if ($opt_static_server);
$opt_config_options.= " --with-raid" if ($opt_raid);
$opt_config_options.= " --with-embedded-server" unless ($opt_without_embedded);
# Only enable InnoDB when requested (required to be able to
# build the "Classic" packages that do not include InnoDB)
......@@ -551,6 +552,9 @@ non-standard location overriding default.
--with-small-disk
Clean up the build environment before testing the binary distribution
(to save disk space)
--without-embedded
Don't compile the embedded server.
EOF
exit 1;
}
......
#!/bin/bash
#helper functions
function copy_to_bmachine
#!/usr/bin/perl -w
#
# Do-rpm - compile RPM packages out of a source tarball and copy the
# resulting RPM packages into the current directory.
#
# The script currently assumes the following environment (which should exist
# like that, if the Do-compile script was used to build the binary
# distribution)
#
# - there must be a source distribution (mysql-<version>.tar.gz)
# in the current directory
# - there must be a spec file (mysql-<version>.spec) in the directory
# $HOME/<hostname>/mysql-<version>/support-files/
#
# Use the "--help" option for more info!
#
# written by Lenz Grimmer <lenz@mysql.com>
#
use Getopt::Long;
Getopt::Long::Configure ("bundling");
$opt_dry_run= undef;
$opt_help= undef;
$opt_log= undef;
$opt_mail= "";
$opt_verbose= undef;
$opt_version= undef;
GetOptions(
"dry-run",
"help|h",
"log|l:s",
"mail|m=s",
"verbose|v",
"version=s",
) || &print_help;
# Include helper functions
chomp($PWD= `pwd`);
$LOGGER= "$PWD/logger.pm";
if (-f "$LOGGER")
{
if [ x$local_build = x1 ]; then
rm -f $2
cp $1 $2
else
scp $1 $owner@$bmachine:$2
fi
do "$LOGGER";
}
function copy_from_bmachine
else
{
if [ x$local_build = x1 ]; then
rm -f $2
cp $1 $2
else
scp $owner@$bmachine:$1 $2
fi
die "ERROR: $LOGGER cannot be found!\n";
}
function run_command
#
# Override predefined Log file name
#
if (defined $opt_log)
{
if [ x$local_build = x1 ]; then
bash $1
if ($opt_log ne "")
{
if ($opt_log =~ /^\/.*/)
{
$LOGFILE= $opt_log;
}
else
cat $1 | ssh $owner@$bmachine bash
fi
{
$LOGFILE= $PWD . "/" . $opt_log;
}
}
}
#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
&print_help("") if ($opt_help || !$opt_version);
# Check environment
#export MYSQL_BUILD_PATH="/usr/local/bin:/my/gnu/bin:/usr/bin:/bin"
#export MYSQL_BUILD_CFLAGS="-O6 -fno-omit-frame-pointer -mcpu=pentiumpro"
#export MYSQL_BUILD_CXXFLAGS="-O6 -fno-omit-frame-pointer \
# -felide-constructors -fno-exceptions -fno-rtti -mcpu=pentiumpro"
export MYSQL_BUILD_PATH="/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
#
# Newer RPM version ship with a separate tool to build RPMs
#
if (-x "/usr/bin/rpmbuild")
{
$RPM= "/usr/bin/rpmbuild";
}
else
{
$RPM= "/bin/rpm";
}
# Build perl RPM (we currently need to be root to do this and that is
# not possible)
foreach $DIR ("/usr/src/packages", "/usr/src/redhat")
{
if (-d $DIR)
{
$TOPDIR= $DIR;
last;
}
}
#scp $bpath/Logs/$TMP_SCRIPT_PERL $owner@$bmachine:/tmp/$TMP_SCRIPT_PERL
#ssh $bmachine -l root bash /tmp/$TMP_SCRIPT_PERL
$SPECDIR= $TOPDIR . "/SPECS";
$SOURCEDIR= $TOPDIR . "/SOURCES";
# 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
$VERSION= $opt_version;
($MAJOR, $MINOR, $RELEASE)= split(/\./, $VERSION);
chomp($HOST= `hostname`);
$HOST=~ /^([^.-]*)/;
$HOST= $1;
$LOGFILE= "$PWD/Logs/Do-rpm-$HOST-$MAJOR.$MINOR.log";
$SOURCEFILE= "mysql-$VERSION.tar.gz";
$SPECFILE= "$PWD/$HOST/mysql-$VERSION/support-files/mysql-$VERSION.spec";
# 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
&logger("Starting RPM build of MySQL-$VERSION on $HOST");
#Remove some of the files that can interfere with future builds
foreach $file ($SOURCEFILE, $SPECFILE)
{
&abort("Unable to find $file!") unless (-f "$file");
}
rm -rf /var/tmp/mysql
fi
) > $log 2>&1
#
# Install source and spec file
#
&logger("Copying SOURCE and SPEC file to build directories.");
$command= "cp";
$command.= " -v" if ($opt_verbose);
$command.= " $SOURCEFILE $SOURCEDIR";
&run_command($command, "Unable to copy $SOURCEFILE to $SOURCEDIR!");
$command= "cp";
$command.= " -v" if ($opt_verbose);
$command.= " $SPECFILE $SPECDIR";
&run_command($command, "Unable to copy $SPECFILE to $SPECDIR!");
#
# Build the RPMs
#
$command= "$RPM";
$command.=" -v" if ($opt_verbose);
$command.=" -ba --clean $SPECDIR/$SPECFILE";
&logger("Builing RPM.");
&run_command($command, "Unable to build RPM!");
&logger("SUCCESS: RPM files successfully created.") if (!$opt_dry_run);
exit 0;
sub print_help
{
my $message= $_[0];
if ($message ne "")
{
print "\n";
print "ERROR: $message\n";
}
print <<EOF;
Usage: Do-rpm <options> --version=<version>
Creates a binary RPM package out of a MySQL source distribution and copy the
resulting RPMs into the current directory.
Options:
--dry-run Dry run without executing
-h, --help Print this help
-l, --log[=<filename>] Write a log file [to <filename>]
(default is "$LOGFILE")
-m, --mail=<address> Mail a failure report to the given address
(and include a log file snippet, if logging
is enabled)
Note that the \@-Sign needs to be quoted!
Example: --mail=user\\\@domain.com
--version=<version> The MySQL version number (e.g. 4.0.11-gamma)
-v, --verbose Verbose execution
EOF
exit 1;
}
......@@ -61,7 +61,7 @@ case $system in
esac
mkdir $BASE $BASE/bin \
mkdir $BASE $BASE/bin $BASE/docs \
$BASE/include $BASE/lib $BASE/support-files $BASE/share $BASE/scripts \
$BASE/mysql-test $BASE/mysql-test/t $BASE/mysql-test/r \
$BASE/mysql-test/include $BASE/mysql-test/std_data
......@@ -73,9 +73,20 @@ if [ $BASE_SYSTEM != "netware" ] ; then
chmod o-rwx $BASE/data $BASE/data/*
fi
for i in ChangeLog COPYING COPYING.LIB README Docs/INSTALL-BINARY \
MySQLEULA.txt Docs/manual.html Docs/manual.txt Docs/manual_toc.html \
LICENSE.doc README.NW Docs/mysqlbug.txt
for i in ChangeLog \
Docs/manual.html \
Docs/manual.txt \
Docs/manual_toc.html \
Docs/mysql.info
do
if [ -f $i ]
then
$CP $i $BASE/docs
fi
done
for i in COPYING COPYING.LIB README Docs/INSTALL-BINARY \
MySQLEULA.txt LICENSE.doc README.NW
do
if [ -f $i ]
then
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment