diff options
author | unknown <lenz@mysql.com> | 2003-08-12 23:21:21 +0200 |
---|---|---|
committer | unknown <lenz@mysql.com> | 2003-08-12 23:21:21 +0200 |
commit | b0f003bb5bb825663b7260bfd25123331f12783a (patch) | |
tree | 44a4eddc4d437c0a0ca5a9a17645ae32a7ce628d /Build-tools | |
parent | be358fee2502bfe1ffa5defa77b50fa33c181769 (diff) | |
download | mariadb-git-b0f003bb5bb825663b7260bfd25123331f12783a.tar.gz |
- 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:
- enable compiling with the embedded server by default (as requested by
BrianA) - disable it with the "--disable-embedded" compile option.
Build-tools/Do-rpm:
- replaced the original Shell script with a Perl script, similar to Do-pkg.
Some more work remains to be done (copying the resulting packages,
enable using different compile flags and compilers).
scripts/make_binary_distribution.sh:
- move some docs into a subdirectory "docs" to not clutter the top
directory with too many files.
- added mysql.info info file to the docs dir (BUG#1019)
Diffstat (limited to 'Build-tools')
-rwxr-xr-x | Build-tools/Do-compile | 6 | ||||
-rwxr-xr-x | Build-tools/Do-rpm | 396 |
2 files changed, 157 insertions, 245 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 - -#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 - else - cat $1 | ssh $owner@$bmachine bash - fi + if ($opt_log ne "") + { + if ($opt_log =~ /^\/.*/) + { + $LOGFILE= $opt_log; + } + else + { + $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 - -# 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 +&print_help("") if ($opt_help || !$opt_version); -# 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; +} |