From 94c7024eaa4fb93b407e2aee0002bbd7014eb974 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Tue, 12 Aug 2003 23:21:21 +0200 Subject: [PATCH] - 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 --- Build-tools/Do-compile | 6 +- Build-tools/Do-rpm | 378 +++++++++++----------------- scripts/make_binary_distribution.sh | 19 +- 3 files changed, 163 insertions(+), 240 deletions(-) diff --git a/Build-tools/Do-compile b/Build-tools/Do-compile index 45037c2f3f0..6cf577162ed 100755 --- a/Build-tools/Do-compile +++ b/Build-tools/Do-compile @@ -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; } diff --git a/Build-tools/Do-rpm b/Build-tools/Do-rpm index 6d107bc2413..77f87cd0358 100755 --- a/Build-tools/Do-rpm +++ b/Build-tools/Do-rpm @@ -1,259 +1,167 @@ -#!/bin/bash +#!/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-.tar.gz) +# in the current directory +# - there must be a spec file (mysql-.spec) in the directory +# $HOME//mysql-/support-files/ +# +# Use the "--help" option for more info! +# +# written by Lenz Grimmer +# -#helper functions +use Getopt::Long; +Getopt::Long::Configure ("bundling"); -function copy_to_bmachine +$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"; +} +else +{ + die "ERROR: $LOGGER cannot be found!\n"; } -function copy_from_bmachine +# +# Override predefined Log file name +# +if (defined $opt_log) { - if [ x$local_build = x1 ]; then - rm -f $2 - cp $1 $2 - else - scp $owner@$bmachine:$1 $2 - fi + if ($opt_log ne "") + { + if ($opt_log =~ /^\/.*/) + { + $LOGFILE= $opt_log; + } + else + { + $LOGFILE= $PWD . "/" . $opt_log; + } + } } -function run_command +&print_help("") if ($opt_help || !$opt_version); + +# +# Newer RPM version ship with a separate tool to build RPMs +# +if (-x "/usr/bin/rpmbuild") { - if [ x$local_build = x1 ]; then - bash $1 - else - cat $1 | ssh $owner@$bmachine bash - fi + $RPM= "/usr/bin/rpmbuild"; +} +else +{ + $RPM= "/bin/rpm"; } -#Supply defaults +foreach $DIR ("/usr/src/packages", "/usr/src/redhat") +{ + if (-d $DIR) + { + $TOPDIR= $DIR; + last; + } +} -# We built on one of two machines -bmachine=work -smachine=work -owner=my +$SPECDIR= $TOPDIR . "/SPECS"; +$SOURCEDIR= $TOPDIR . "/SOURCES"; -# Hard path!! -bpath=`/bin/pwd` +$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"; -for d in /usr/src/redhat /usr/src/packages ; do -if test -d "$d" -then - rpmdir=$d -fi -done +&logger("Starting RPM build of MySQL-$VERSION on $HOST"); -if test -z "$rpmdir" -then - echo "Could not find suitable rpmdir on this system" - exit 1 -fi - +foreach $file ($SOURCEFILE, $SPECFILE) +{ + &abort("Unable to find $file!") unless (-f "$file"); +} -logdir="$bpath/Logs" +# +# 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!"); -###### Perl STUFF ##### +# +# 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!"); -# 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" +&logger("SUCCESS: RPM files successfully created.") if (!$opt_dry_run); +exit 0; -####################### -AM_MAKEFLAGS="-j 2" +sub print_help +{ + my $message= $_[0]; + if ($message ne "") + { + print "\n"; + print "ERROR: $message\n"; + } + print < --version= -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 +Creates a binary RPM package out of a MySQL source distribution and copy the +resulting RPMs into the current directory. -echo "Removing old MySQL packages" -rm -f $bpath/NEW-RPMS/MySQL-*rpm +Options: -if [ ! -d "$logdir" ]; then - echo "$logdir does not exist, creating" - mkdir -p $logdir -fi + --dry-run Dry run without executing +-h, --help Print this help +-l, --log[=] Write a log file [to ] + (default is "$LOGFILE") +-m, --mail=
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= The MySQL version number (e.g. 4.0.11-gamma) +-v, --verbose Verbose execution -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 < $logdir/$TMP_SCRIPT_PERL < $log 2>&1 +EOF + exit 1; +} diff --git a/scripts/make_binary_distribution.sh b/scripts/make_binary_distribution.sh index 73aa95a1100..8735fc800ce 100644 --- a/scripts/make_binary_distribution.sh +++ b/scripts/make_binary_distribution.sh @@ -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