summaryrefslogtreecommitdiff
path: root/Build-tools
diff options
context:
space:
mode:
authorlenz@mysql.com <>2003-08-19 13:49:53 +0200
committerlenz@mysql.com <>2003-08-19 13:49:53 +0200
commitd8c31db54b32f1ec093d8024de08ce3ef0d0692e (patch)
tree44de0193743fb91d52739026aa9fd818e10933ff /Build-tools
parent39a65cd777f10c0710c1f8b06b11357a60355dac (diff)
downloadmariadb-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-xBuild-tools/Bootstrap11
-rwxr-xr-xBuild-tools/Do-rpm138
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