mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
- Optimized and cleaned up the Do-rpm and Bootstrap Perl scripts
- Enhanced Do-rpm to support building RPMs with different compilers and options
This commit is contained in:
parent
39a65cd777
commit
d8c31db54b
2 changed files with 104 additions and 45 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue