diff options
author | lenz@mysql.com <> | 2003-08-19 13:49:53 +0200 |
---|---|---|
committer | lenz@mysql.com <> | 2003-08-19 13:49:53 +0200 |
commit | d8c31db54b32f1ec093d8024de08ce3ef0d0692e (patch) | |
tree | 44de0193743fb91d52739026aa9fd818e10933ff /Build-tools | |
parent | 39a65cd777f10c0710c1f8b06b11357a60355dac (diff) | |
download | mariadb-git-d8c31db54b32f1ec093d8024de08ce3ef0d0692e.tar.gz |
- Optimized and cleaned up the Do-rpm and Bootstrap Perl scripts
- Enhanced Do-rpm to support building RPMs with different compilers
and options
Diffstat (limited to 'Build-tools')
-rwxr-xr-x | Build-tools/Bootstrap | 11 | ||||
-rwxr-xr-x | Build-tools/Do-rpm | 138 |
2 files changed, 104 insertions, 45 deletions
diff --git a/Build-tools/Bootstrap b/Build-tools/Bootstrap index 1facf7b5f0d..4a2e6f284f2 100755 --- a/Build-tools/Bootstrap +++ b/Build-tools/Bootstrap @@ -10,6 +10,7 @@ # written by Lenz Grimmer <lenz@mysql.com> # +use Cwd; use Getopt::Long; Getopt::Long::Configure ("bundling"); @@ -26,10 +27,9 @@ else # Some predefined settings $build_command= "BUILD/compile-pentium-max"; -chomp ($LOGFILE= `pwd`); -$LOGFILE.= "/Bootstrap.log"; -chomp ($opt_directory= `pwd`); -$opt_docdir= $opt_directory . "/mysqldoc"; +$PWD= cwd(); +$LOGFILE= $PWD . "/Bootstrap.log"; +$opt_docdir= $PWD . "/mysqldoc"; $opt_build_command= undef; $opt_changelog= undef; $opt_delete= undef; @@ -82,8 +82,7 @@ if (defined $opt_log) } else { - chomp ($LOGFILE= `pwd`); - $LOGFILE.= "/" . $opt_log; + $LOGFILE= $PWD . "/" . $opt_log; } } } diff --git a/Build-tools/Do-rpm b/Build-tools/Do-rpm index 77f87cd0358..0f423feb921 100755 --- a/Build-tools/Do-rpm +++ b/Build-tools/Do-rpm @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # -# Do-rpm - compile RPM packages out of a source tarball and copy the +# Do-rpm - compile RPM packages out of a source tarball and move the # resulting RPM packages into the current directory. # # The script currently assumes the following environment (which should exist @@ -17,27 +17,43 @@ # written by Lenz Grimmer <lenz@mysql.com> # +use Cwd; +use File::Basename; +use File::Copy; use Getopt::Long; Getopt::Long::Configure ("bundling"); +use Sys::Hostname; +$opt_cc= undef; +$opt_cflags= undef; +$opt_clean= undef; +$opt_cxx= undef; +$opt_cxxflags= undef; $opt_dry_run= undef; $opt_help= undef; $opt_log= undef; $opt_mail= ""; $opt_verbose= undef; -$opt_version= undef; + +$MAJOR= $MINOR= $RELEASE= 0; GetOptions( - "dry-run", + "cc=s", + "cflags=s", + "clean|c", + "cxx=s", + "cxxflags=s", + "dry-run|t", "help|h", "log|l:s", "mail|m=s", "verbose|v", - "version=s", ) || &print_help; +defined($VERSION=$ARGV[0]) || print_help("Please provide the MySQL version!"); + # Include helper functions -chomp($PWD= `pwd`); +$PWD= cwd(); $LOGGER= "$PWD/logger.pm"; if (-f "$LOGGER") { @@ -66,10 +82,16 @@ if (defined $opt_log) } } -&print_help("") if ($opt_help || !$opt_version); +($MAJOR, $MINOR, $RELEASE)= split(/\./, $VERSION); +$HOST= hostname(); +$HOST=~ /^([^.-]*)/; +$HOST= $1; +$LOGFILE= "$PWD/Logs/Do-rpm-$HOST-$MAJOR.$MINOR.log"; + +&print_help("") if ($opt_help); # -# Newer RPM version ship with a separate tool to build RPMs +# Newer RPM versions ship with a separate tool "rpmbuild" to build RPMs # if (-x "/usr/bin/rpmbuild") { @@ -80,24 +102,24 @@ else $RPM= "/bin/rpm"; } -foreach $DIR ("/usr/src/packages", "/usr/src/redhat") +if ($RPM) { - if (-d $DIR) - { - $TOPDIR= $DIR; - last; - } + &logger("Found rpm binary: $RPM"); +} +else +{ + &abort("Unable to find RPM binary!"); } -$SPECDIR= $TOPDIR . "/SPECS"; -$SOURCEDIR= $TOPDIR . "/SOURCES"; +# +# determine some RPM settings for this host +# +chomp($RPMARCH= `$RPM --eval "%{_arch}" 2> /dev/null`); +chomp($RPMDIR= `$RPM --eval "%{_rpmdir}" 2> /dev/null`); +chomp($SOURCEDIR= `$RPM --eval "%{_sourcedir}" 2> /dev/null`); +chomp($SPECDIR= `$RPM --eval "%{_specdir}" 2> /dev/null`); +chomp($SRCRPMDIR= `$RPM --eval "%{_srcrpmdir}" 2> /dev/null`); -$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"; @@ -112,23 +134,56 @@ foreach $file ($SOURCEFILE, $SPECFILE) # 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!"); +copy($SOURCEFILE, $SOURCEDIR) +or &abort("Unable to copy $SOURCEFILE to $SOURCEDIR!"); +copy($SPECFILE, $SPECDIR) +or &abort("Unable to copy $SPECFILE to $SPECDIR!"); + +# +# Set environment variables - these are being used in the +# official MySQL RPM spec file +# +&logger("Setting special build environment variables") +if ($opt_cc) or ($opt_cflags) or ($opt_cxxflags) or ($opt_cxx); +$ENV{MYSQL_BUILD_CC}=$opt_cc if ($opt_cc); +$ENV{MYSQL_BUILD_CFLAGS}=$opt_cflags if ($opt_cflags); +$ENV{MYSQL_BUILD_CXXFLAGS}=$opt_cxxflags if ($opt_cxxflags); +$ENV{MYSQL_BUILD_CXX}=$opt_cxx if ($opt_cxx); # # 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!"); +$command.= " -v" if ($opt_verbose); +$command.= " -ba"; +$command.= " --clean" if $opt_clean; +$command.= " $SPECDIR/"; +$command.= basename($SPECFILE); +&logger("Building RPM."); +&run_command($command, "Error while building the RPMs!"); + +# +# Move the resulting RPMs into the pwd +# +$command= "mv"; +$command.= " -v " if ($opt_verbose); +$command.= "$SRCRPMDIR/MySQL*$VERSION*.src.rpm $PWD"; +&run_command($command, "Error moving source RPM!"); + +$command= "mv"; +$command.= " -v " if ($opt_verbose); +$command.= "$RPMDIR/$RPMARCH/MySQL*$VERSION*.$RPMARCH.rpm $PWD"; +&run_command($command, "Error moving binary RPMs!"); + +# +# Clean up +# +if ($opt_clean) +{ + &logger("Removing spec file and source package"); + unlink("$SPECDIR/" . basename($SPECFILE)); + unlink("$SOURCEDIR/$SOURCEFILE"); +} &logger("SUCCESS: RPM files successfully created.") if (!$opt_dry_run); exit 0; @@ -139,18 +194,24 @@ sub print_help if ($message ne "") { print "\n"; - print "ERROR: $message\n"; + print "ERROR: $message\n\n}"; } print <<EOF; -Usage: Do-rpm <options> --version=<version> +Usage: Do-rpm <options> <version> -Creates a binary RPM package out of a MySQL source distribution and copy the -resulting RPMs into the current directory. +Creates a binary RPM package out of a MySQL source distribution and moves the +resulting RPMs into the current directory. <version> is the MySQL version +number (e.g. 4.0.11-gamma) Options: - --dry-run Dry run without executing + --cc=<compiler> Use <compiler> to compile C code + --ccflags=<flags> Use special C compiler flags + --cxx=<compiler> Use <compiler> to compile C++ code + --cxxflags=<flags> Use special C++ compiler flags +-c, --clean Clean up after the build +-t, --dry-run Dry run without executing -h, --help Print this help -l, --log[=<filename>] Write a log file [to <filename>] (default is "$LOGFILE") @@ -159,7 +220,6 @@ Options: 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 |