mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
- Cleanup: removed obsolete build tools (build toolchain is now maintained sepearately)
BitKeeper/deleted/.del-Bootstrap~bfc426bd800ccc3a: Delete: Build-tools/Bootstrap BitKeeper/deleted/.del-Do-pkg~5079e47cde0baad8: Delete: Build-tools/Do-pkg BitKeeper/deleted/.del-logger.pm~9234101b5b668373: Delete: Build-tools/logger.pm BitKeeper/deleted/.del-Do-rpm~c0ef3ebafbf53117: Delete: Build-tools/Do-rpm BitKeeper/deleted/.del-cvs-sanity-check~a3c58acf37f27cee: Delete: Build-tools/cvs-sanity-check BitKeeper/deleted/.del-Do-all-build-steps~bb7d38f34728ac06: Delete: Build-tools/Do-all-build-steps BitKeeper/deleted/.del-Do-local-patch-file~b86e1bfa3b7c13d3: Delete: Build-tools/Do-local-patch-file BitKeeper/deleted/.del-Do-linux-build~b3b941454648a285: Delete: Build-tools/Do-linux-build BitKeeper/deleted/.del-Do-patch-file~a2e87df5f75fd496: Delete: Build-tools/Do-patch-file BitKeeper/deleted/.del-newest~2dd91db13f2ea308: Delete: Build-tools/newest BitKeeper/deleted/.del-Do-create-perl-rpms~1f946e7d8560b3d0: Delete: Build-tools/Do-create-perl-rpms BitKeeper/deleted/.del-Do-win-build~cb5c5e1df8b3de6: Delete: Build-tools/Do-win-build BitKeeper/deleted/.del-my_md5sum~4680250631e4fd9: Delete: Build-tools/my_md5sum BitKeeper/deleted/.del-Do-compile~d1a6d7e535befea3: Delete: Build-tools/Do-compile BitKeeper/deleted/.del-mysql-copyright~56fc330ae63cfe03: Delete: Build-tools/mysql-copyright BitKeeper/deleted/.del-mysql-copyright-2~e73ec01547206fec: Delete: Build-tools/mysql-copyright-2
This commit is contained in:
parent
7a2a7de28b
commit
e621d27c77
16 changed files with 0 additions and 3271 deletions
|
@ -1,461 +0,0 @@
|
|||
#!/usr/bin/perl -w
|
||||
#
|
||||
# Bootstrap
|
||||
#
|
||||
# Script to export a given BK source tree into a separate directory
|
||||
# and create the source distribution to be used for all binary builds
|
||||
#
|
||||
# Use the "--help" option for more info!
|
||||
#
|
||||
# written by Lenz Grimmer <lenz@mysql.com>
|
||||
#
|
||||
|
||||
use Cwd;
|
||||
use Getopt::Long;
|
||||
Getopt::Long::Configure ("bundling");
|
||||
|
||||
# Include helper functions
|
||||
$LOGGER= "$ENV{HOME}/bin/logger.pm";
|
||||
if (-f $LOGGER)
|
||||
{
|
||||
do "$LOGGER";
|
||||
}
|
||||
else
|
||||
{
|
||||
die "ERROR: $LOGGER cannot be found!\n";
|
||||
}
|
||||
|
||||
# Some predefined settings
|
||||
$build_command= "BUILD/compile-dist";
|
||||
$PWD= cwd();
|
||||
$opt_docdir= $PWD . "/mysqldoc";
|
||||
$opt_archive_log= undef;
|
||||
$opt_build_command= undef;
|
||||
$opt_changelog= undef;
|
||||
$opt_delete= undef;
|
||||
$opt_directory= $PWD;
|
||||
$opt_dry_run= undef;
|
||||
$opt_export_only= undef;
|
||||
$opt_help= $opt_verbose= 0;
|
||||
$opt_log= undef;
|
||||
$opt_mail= "build\@mysql.com";
|
||||
$opt_pull= undef;
|
||||
$opt_revision= undef;
|
||||
$opt_suffix= "";
|
||||
$opt_test= undef;
|
||||
$opt_skip_check= undef;
|
||||
$opt_skip_manual= undef;
|
||||
$opt_win_dist= undef;
|
||||
$opt_quiet= undef;
|
||||
$version= "unknown";
|
||||
$major=$minor=$release=0;
|
||||
|
||||
GetOptions(
|
||||
"archive-log|a",
|
||||
"build-command|b=s",
|
||||
"changelog|c:s",
|
||||
"directory|d=s",
|
||||
"delete",
|
||||
"docdir=s",
|
||||
"dry-run",
|
||||
"export-only|e",
|
||||
"help|h",
|
||||
"log|l:s",
|
||||
"mail|m=s",
|
||||
"pull|p",
|
||||
"revision|r=s",
|
||||
"skip-check|s",
|
||||
"skip-manual",
|
||||
"suffix=s",
|
||||
"test|t",
|
||||
"verbose|v",
|
||||
"win-dist|w",
|
||||
"quiet|q",
|
||||
) || print_help("");
|
||||
|
||||
#
|
||||
# Override predefined build command
|
||||
#
|
||||
if (defined $opt_build_command)
|
||||
{
|
||||
$build_command= $opt_build_command;
|
||||
}
|
||||
|
||||
print_help("") if ($opt_help);
|
||||
defined($REPO=$ARGV[0]) || print_help("Please enter the BK repository to be used!");
|
||||
|
||||
#
|
||||
# Override predefined Log file name
|
||||
#
|
||||
if (defined $opt_log)
|
||||
{
|
||||
if ($opt_log ne "")
|
||||
{
|
||||
if ($opt_log =~ /^\/.*/)
|
||||
{
|
||||
$LOGFILE= $opt_log;
|
||||
}
|
||||
else
|
||||
{
|
||||
$LOGFILE= $PWD . "/" . $opt_log;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$LOGFILE= $PWD . "/Bootstrap-" . $REPO . ".log" unless ($LOGFILE);
|
||||
|
||||
&logger("Starting build");
|
||||
&abort("The directory \"$REPO\" could not be found!") if (!-d $REPO);
|
||||
&logger("Using $REPO as the BK parent repository");
|
||||
system ("bk help > /dev/null") == 0 or &abort("Cannot execute BitKeeper binary!");
|
||||
system ("bk root $REPO > /dev/null 2>&1") == 0 or &abort("$REPO does not seem to be a valid BK repository!");
|
||||
|
||||
if (($opt_directory ne $PWD) && (!-d $opt_directory && !$opt_dry_run))
|
||||
{
|
||||
&abort("Could not find target directory \"$opt_directory\"!");
|
||||
}
|
||||
|
||||
&logger("Logging to $LOGFILE") if (defined $opt_log);
|
||||
|
||||
#
|
||||
# Pull recent changes first
|
||||
#
|
||||
if ($opt_pull)
|
||||
{
|
||||
&bk_pull("$REPO");
|
||||
&bk_pull("$opt_docdir") unless ($opt_skip_manual);
|
||||
}
|
||||
|
||||
#
|
||||
# Use a temporary name until we know the version number
|
||||
#
|
||||
$target_dir= $opt_directory . "/mysql-" . $$ . "-" . time() . ".tmp";
|
||||
&logger("Using temporary directory $target_dir");
|
||||
&abort("Target directory $target_dir already exists!") if (-d $target_dir && !$opt_dry_run);
|
||||
|
||||
#
|
||||
# Export the BK tree
|
||||
#
|
||||
$command= "bk export ";
|
||||
$command.= "-r " . $opt_revision . " " if $opt_revision;
|
||||
$command.= "-v " if ($opt_verbose || defined $opt_log);
|
||||
$command.= $REPO . " " . $target_dir;
|
||||
&logger("Exporting $REPO");
|
||||
&run_command($command, "Could not create $target_dir!");
|
||||
|
||||
#
|
||||
# Make sure we can write all files
|
||||
#
|
||||
$command= "find $target_dir -type f -print0 | xargs --null chmod u+w";
|
||||
&run_command($command, "Failed to fix file permissions!");
|
||||
|
||||
#
|
||||
# Try to obtain version number from newly extracted configure.in
|
||||
#
|
||||
$CONF="$target_dir/configure.in";
|
||||
&abort("Could not find \"$CONF\" to determine version!") if (!-f $CONF && !$opt_dry_run);
|
||||
|
||||
#
|
||||
# The following can only be done, if the tree has actually been
|
||||
# exported - it cannot be performed in a dry run.
|
||||
#
|
||||
if (!$opt_dry_run)
|
||||
{
|
||||
open (CONF, $CONF) or &abort("Unable to open \"$CONF\": $!");
|
||||
@conf= <CONF>;
|
||||
close CONF;
|
||||
|
||||
foreach (@conf)
|
||||
{
|
||||
m/^AM_INIT_AUTOMAKE\(mysql, ([1-9]\.[0-9]{1,2}\.[0-9]{1,2}.*)\)/;
|
||||
$version= $1;
|
||||
($major, $minor, $release) = split(/\./,$version);
|
||||
}
|
||||
&logger("Found version string: $version");
|
||||
|
||||
#
|
||||
# Add suffix to version string and write out the modified file
|
||||
#
|
||||
if ($opt_suffix)
|
||||
{
|
||||
$opt_suffix= "-" . &ymd() if ($opt_suffix eq "YMD");
|
||||
|
||||
&logger("Replacing $version with $version$opt_suffix");
|
||||
foreach (@conf)
|
||||
{
|
||||
s/^AM_INIT_AUTOMAKE.*/AM_INIT_AUTOMAKE\(mysql, $version$opt_suffix\)/;
|
||||
}
|
||||
open(CONF,">$CONF") or &abort("Unable to open \"$CONF\": $!");
|
||||
print CONF @conf;
|
||||
close(CONF);
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Rename directory according to the version number found in configure.in
|
||||
# of the extracted tree (plus suffix, if requested)
|
||||
#
|
||||
$temp_name= $target_dir;
|
||||
$target_dir= $opt_directory . "/mysql-" . $version . $opt_suffix . "-build";
|
||||
if (-d $target_dir)
|
||||
{
|
||||
&logger("Target directory $target_dir already exists!");
|
||||
if ($opt_delete)
|
||||
{
|
||||
&logger("Deleting $target_dir...");
|
||||
$command= "rm ";
|
||||
$command.= "-v " if ($opt_verbose || defined $opt_log);
|
||||
$command.= "$target_dir";
|
||||
&run_command($command, "Could not delete $target_dir!");
|
||||
}
|
||||
else
|
||||
{
|
||||
# Get the time stamp of "configure.in"
|
||||
@stat= stat("$target_dir/configure.in");
|
||||
my $mtime= $stat[9];
|
||||
my ($sec,$min,$hour,$mday,$mon,$year) = localtime($mtime);
|
||||
my $mtime= sprintf("%04d-%02d-%02d-%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min);
|
||||
|
||||
&logger("Renaming $target_dir to $target_dir-$mtime");
|
||||
$command= "mv ";
|
||||
$command.= "-v " if ($opt_verbose || defined $opt_log);
|
||||
$command.= "$target_dir $target_dir-$mtime";
|
||||
&run_command($command, "Could not rename $target_dir!");
|
||||
}
|
||||
}
|
||||
|
||||
&logger("Renaming temporary directory to $target_dir");
|
||||
$command= "mv ";
|
||||
$command.= "-v " if ($opt_verbose || defined $opt_log);
|
||||
$command.= "$temp_name $target_dir";
|
||||
&run_command($command, "Could not rename $temp_name!");
|
||||
|
||||
#
|
||||
# Add a ChangeLog (make dist will pick it up automatically)
|
||||
#
|
||||
if (defined $opt_changelog)
|
||||
{
|
||||
#
|
||||
# Use some magic to obtain the correct ChangeSet number that identifies
|
||||
# the last tagged ChangeSet (this relies heavily on our current tagging
|
||||
# practice!)
|
||||
#
|
||||
my $revision= "";
|
||||
if ($opt_changelog eq "last")
|
||||
{
|
||||
if (!$opt_revision)
|
||||
{
|
||||
$revision= `bk changes -t -d':REV:::TAG:' -n $REPO | grep mysql-$major.$minor | head -1 | cut -f1 -d ":"`;
|
||||
}
|
||||
else
|
||||
{
|
||||
$revision= `bk changes -r..$opt_revision -t -d':REV:' -n $REPO | head -2 | tail -1`;
|
||||
}
|
||||
chomp($revision);
|
||||
$opt_changelog= $revision;
|
||||
}
|
||||
|
||||
$msg= "Adding $target_dir/ChangeLog";
|
||||
$msg.= " (down to revision $opt_changelog)" if $opt_changelog ne "";
|
||||
&logger($msg);
|
||||
$command= "bk changes -v";
|
||||
$command.= " -r" if ($opt_changelog ne "" || $opt_revision);
|
||||
$command.= $opt_changelog if $opt_changelog ne "";
|
||||
$command.= ".." if ($opt_changelog ne "" && !$opt_revision);
|
||||
$command.= ".." . $opt_revision if $opt_revision;
|
||||
$command.= " " . $REPO . " > $target_dir/ChangeLog";
|
||||
&logger($command);
|
||||
# We cannot use run_command here because of output redirection
|
||||
unless ($opt_dry_run)
|
||||
{
|
||||
system($command) == 0 or &abort("Could not create $target_dir/ChangeLog!");
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Add the latest manual from the mysqldoc tree
|
||||
#
|
||||
unless ($opt_skip_manual)
|
||||
{
|
||||
&logger("Updating manual files");
|
||||
foreach $file qw/internals manual reservedwords/
|
||||
{
|
||||
system ("bk cat $opt_docdir/Docs/$file.texi > $target_dir/Docs/$file.texi") == 0
|
||||
or &abort("Could not update $file.texi in $target_dir/Docs/!");
|
||||
}
|
||||
|
||||
&run_command("rm -f $target_dir/Docs/Images/Makefile*",
|
||||
"Could not remove Makefiles in $target_dir/Docs/Images/!");
|
||||
&run_command("cp $opt_docdir/Docs/Images/*.* $target_dir/Docs/Images",
|
||||
"Could not copy image files in $target_dir/Docs/Images/!");
|
||||
}
|
||||
|
||||
#
|
||||
# Abort here, if we just wanted to export the tree
|
||||
#
|
||||
if ($opt_export_only)
|
||||
{
|
||||
&logger("SUCCESS: Export finished successfully.");
|
||||
exit 0;
|
||||
}
|
||||
|
||||
#
|
||||
# Enter the target directory first
|
||||
#
|
||||
&logger("Entering $target_dir");
|
||||
if (!$opt_dry_run)
|
||||
{
|
||||
chdir($target_dir) or &abort("Cannot chdir to $target_dir: $!");
|
||||
}
|
||||
|
||||
#
|
||||
# Now build the source distribution
|
||||
#
|
||||
&logger("Compiling...");
|
||||
$command= $build_command;
|
||||
&run_command($command, "Compilation failed!");
|
||||
|
||||
#
|
||||
# Testing the built binary by running "make test" (optional)
|
||||
#
|
||||
if ($opt_test)
|
||||
{
|
||||
&logger ("Running test suite");
|
||||
$command= "make test";
|
||||
&run_command($command, "\"make test\" failed!");
|
||||
}
|
||||
|
||||
#
|
||||
# Pack it all up
|
||||
#
|
||||
&logger("Creating source distribution");
|
||||
$command= "make dist";
|
||||
&run_command($command, "make dist failed!");
|
||||
|
||||
#
|
||||
# Package the Windows source
|
||||
#
|
||||
if ($opt_win_dist)
|
||||
{
|
||||
&logger ("Creating Windows source package");
|
||||
$command= "./scripts/make_win_src_distribution --tar --zip";
|
||||
&run_command($command, "make_win_src_distribution failed!");
|
||||
}
|
||||
|
||||
#
|
||||
# Run "make distcheck" to verify the source archive
|
||||
#
|
||||
if (!$opt_skip_check)
|
||||
{
|
||||
&logger ("Checking source distribution");
|
||||
$command= "make distcheck";
|
||||
&run_command($command, "make distcheck failed!");
|
||||
}
|
||||
|
||||
#
|
||||
# All done when we came down here
|
||||
#
|
||||
&logger("SUCCESS: Build finished successfully.") if (!$opt_dry_run);
|
||||
|
||||
#
|
||||
# Move the log file into the Log dir of the target dir
|
||||
#
|
||||
if ($opt_archive_log)
|
||||
{
|
||||
my $logdir= $target_dir . "/Logs";
|
||||
&logger("Moving $LOGFILE to $logdir");
|
||||
mkdir "$logdir" if (! -d $logdir);
|
||||
$command= "mv ";
|
||||
$command.= "-v " if ($opt_verbose || defined $opt_log);
|
||||
$command.= "$LOGFILE $logdir";
|
||||
&run_command($command, "Could not move $LOGFILE to $logdir!");
|
||||
}
|
||||
|
||||
exit 0;
|
||||
|
||||
#
|
||||
# Run a BK pull on the given BK tree
|
||||
#
|
||||
sub bk_pull
|
||||
{
|
||||
my $bk_tree= $_[0];
|
||||
&logger("Updating BK tree $bk_tree to latest ChangeSet first");
|
||||
chdir ($bk_tree) or &abort("Could not chdir to $bk_tree!");
|
||||
&run_command("bk pull", "Could not update $bk_tree!");
|
||||
chdir ($PWD) or &abort("Could not chdir to $PWD!");
|
||||
}
|
||||
|
||||
#
|
||||
# Print the help text message (with an optional message on top)
|
||||
#
|
||||
sub print_help
|
||||
{
|
||||
my $message= $_[0];
|
||||
if ($message ne "")
|
||||
{
|
||||
print "\n";
|
||||
print "ERROR: $message\n";
|
||||
}
|
||||
print <<EOF;
|
||||
|
||||
Usage: Bootstrap [options] <bk repository>
|
||||
|
||||
Creates a MySQL source distribution to be used for the release builds.
|
||||
|
||||
It checks out (exports) a clear-text version of the given local BitKeeper
|
||||
repository, creates and adds a Changelog file (if requested), adds the
|
||||
latest manual files from the mysqldoc BK tree and builds a source
|
||||
distribution (*.tar.gz) file. Optionally, the test suite and the
|
||||
distribution check can be run before the source archive is being created.
|
||||
|
||||
Options:
|
||||
|
||||
-a, --archive-log Move the log file into the Logs directory of
|
||||
the exported tree after a successful build
|
||||
-b, --build-command=<cmd> Use <cmd> to compile the sources before packing
|
||||
the distribution.
|
||||
(default is "$build_command")
|
||||
-c, --changelog[=<rev>] Add a ChangeLog [down to revision <rev>]
|
||||
This will automatically be included in the source
|
||||
distribution. To get a ChangeLog down to the last
|
||||
tagged Changeset, simply use "last" as the revision
|
||||
number.
|
||||
--delete Delete an already existing distribution directory
|
||||
in the target directory instead of renaming it.
|
||||
-d, --directory=<dir> Specify the target directory
|
||||
(default is "$opt_directory")
|
||||
--docdir=<dir> Use the MySQL documentation BK tree located
|
||||
in <dir>
|
||||
(default is "$opt_docdir")
|
||||
--dry-run Dry run without executing
|
||||
-e, --export-only Just export (and add the ChangeLog, if requested),
|
||||
do not build or test the source distribution
|
||||
-h, --help Print this help message
|
||||
-l, --log[=<filename>] Write a log file [to <filename>]
|
||||
(default is "./Bootstrap-<bk repository>.log")
|
||||
-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
|
||||
Default: build\@mysql.com
|
||||
-q, --quiet Be quiet
|
||||
-p, --pull Update the source BK trees before building
|
||||
-r, --revision=<rev> Export the tree as of revision <rev>
|
||||
(default is up to the latest revision)
|
||||
-s, --skip-check Skip checking the distribution with "make distcheck"
|
||||
--skip-manual Skip updating the manual from the mysqldoc tree
|
||||
--suffix=<suffix> Append <suffix> to the version number in
|
||||
configure.in. Using the special suffix "YMD" will
|
||||
add the current date as the suffix
|
||||
(e.g. "-20020518").
|
||||
-t, --test Run the test suite after build
|
||||
-v, --verbose Be verbose
|
||||
-w, --win-dist Also make Windows source distribution
|
||||
|
||||
Example:
|
||||
|
||||
Bootstrap -c last -v -l -- mysql-4.0
|
||||
|
||||
EOF
|
||||
exit 1;
|
||||
}
|
|
@ -1,108 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
WD=`pwd`
|
||||
# Don't write a wrong path for BD !!!!!
|
||||
if [ -w /my/tmp ]
|
||||
then
|
||||
BD=/my/tmp/BUILD
|
||||
elif [ -n "$TMPDIR" ]
|
||||
then
|
||||
BD=$TMPDIR/BUILD
|
||||
else
|
||||
BD=/tmp/BUILD
|
||||
fi
|
||||
TMP_SCRIPT=$WD/Logs/00-temp-for-do-all-build-steps.$$
|
||||
|
||||
# We build on work
|
||||
to_host=`hostname`
|
||||
cc=gcc
|
||||
ccc=gcc
|
||||
EXTRA_CONFIG="--without-perl"
|
||||
#AM_MAKEFLAGS="-j 2"
|
||||
echo "Building on $to_host"
|
||||
|
||||
rm -rf $BD/*
|
||||
rm -f $WD/binary/*
|
||||
mkdir -p $WD/binary
|
||||
mkdir -p $WD/Logs
|
||||
mkdir -p $BD/Logs
|
||||
|
||||
cat > $TMP_SCRIPT <<END
|
||||
# Show executed commands
|
||||
set -x
|
||||
# Move to the right place
|
||||
cd "$WD"
|
||||
# Create a build directory tree
|
||||
bk export $BD
|
||||
cd "$BD"
|
||||
chmod -R u+rw,g+rw .
|
||||
|
||||
# Make it easy to remove an old build
|
||||
umask 002
|
||||
|
||||
CC=$cc CXX=$ccc
|
||||
export CC CXX
|
||||
|
||||
gmake -j 2 -k distclean
|
||||
rm -f NEW-RPMS/*
|
||||
|
||||
# Stop on error
|
||||
set -e
|
||||
|
||||
/bin/rm -f */.deps/*.P
|
||||
/bin/rm -f config.cache
|
||||
|
||||
aclocal; autoheader; aclocal; automake; autoconf
|
||||
(cd bdb/dist && sh s_all)
|
||||
(cd innobase && aclocal && autoheader && aclocal && automake && autoconf)
|
||||
|
||||
# A normal user starts here. We must use mit-threads, bdb and innodb.
|
||||
# Otherwise they do not end up in the distribution.
|
||||
./configure \
|
||||
--with-unix-socket-path=/var/tmp/mysql.sock \
|
||||
--with-low-memory \
|
||||
--with-mit-threads=yes $EXTRA_CONFIG \
|
||||
--enable-thread-safe-client \
|
||||
--enable-local-infile \
|
||||
--with-berkeley-db \
|
||||
--with-innodb \
|
||||
--with-vio \
|
||||
--without-pstack \
|
||||
--with-extra-tools \
|
||||
--with-embedded-server
|
||||
|
||||
gmake -j 2
|
||||
|
||||
time gmake -j 2 distcheck \
|
||||
EXTRA_CONF_ARGS="--with-unix-socket-path=/var/tmp/mysql.sock --with-low-memory $EXTRA_CONFIG"
|
||||
|
||||
sh $BD/Build-tools/Do-rpm $*
|
||||
|
||||
rm -f $TMP_SCRIPT
|
||||
END
|
||||
|
||||
set -e
|
||||
|
||||
log=$WD/Logs/Log-distcheck-`date +%y%m%d-%H%M`
|
||||
|
||||
echo "Logging script $TMP_SCRIPT into $log"
|
||||
|
||||
if test $to_host = "mysql-work"
|
||||
then
|
||||
# Try to get the right user for MySQL builds on work so that all
|
||||
# files is owned by the same user (mysql)
|
||||
ssh -n $to_host -l my "time sh $TMP_SCRIPT" > $log 2>&1
|
||||
else
|
||||
time sh $TMP_SCRIPT > $log 2>&1
|
||||
fi
|
||||
|
||||
# Create a commercial MySQL distribution (mysqlcom-VER.tar.gz) from
|
||||
# the newly made source distribution
|
||||
|
||||
cd "$BD"
|
||||
DIST=`ls -t mysql-*.tar.gz | head -1`
|
||||
$BD/Build-tools/mysql-copyright --target=. $DIST
|
||||
|
||||
# move the binaries to the 'binary' directory
|
||||
mv $BD/mysql*tar.gz $WD/binary
|
||||
mv $BD/NEW-RPMS/* $WD/binary
|
|
@ -1,835 +0,0 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
use File::Basename;
|
||||
use Getopt::Long;
|
||||
use Sys::Hostname;
|
||||
|
||||
@config_options= ();
|
||||
@make_options= ();
|
||||
|
||||
$opt_distribution=$opt_user=$opt_config_env=$opt_config_extra_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_one_error=$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=$opt_clearlogs=$opt_without_ndbcluster=$opt_with_big_tables=0;
|
||||
|
||||
GetOptions(
|
||||
"bdb",
|
||||
"build-thread=i",
|
||||
"config-env=s" => \@config_env,
|
||||
"config-extra-env=s" => \@config_extra_env,
|
||||
"config-options=s" => \@config_options,
|
||||
"dbd-options=s",
|
||||
"debug",
|
||||
"delete",
|
||||
"distribution=s",
|
||||
"enable-shared",
|
||||
"fast-benchmark",
|
||||
"help|Information",
|
||||
"innodb",
|
||||
"libwrap",
|
||||
"local-perl",
|
||||
"make-options=s" => \@make_options,
|
||||
"no-crash-me",
|
||||
"no-perl",
|
||||
"no-strip",
|
||||
"no-test",
|
||||
"no-mysqltest",
|
||||
"no-benchmark",
|
||||
"one-error",
|
||||
"perl-files=s",
|
||||
"perl-options=s",
|
||||
"raid",
|
||||
"stage=i",
|
||||
"static-client",
|
||||
"static-perl",
|
||||
"static-server",
|
||||
"suffix=s",
|
||||
"sur",
|
||||
"tcpip",
|
||||
"tmp=s",
|
||||
"use-old-distribution",
|
||||
"user=s",
|
||||
"version-suffix=s",
|
||||
"with-big-tables",
|
||||
"with-debug",
|
||||
"with-low-memory",
|
||||
"with-other-libc=s",
|
||||
"with-small-disk",
|
||||
"without-embedded",
|
||||
"clearlogs",
|
||||
"without-ndbcluster",
|
||||
) || usage();
|
||||
|
||||
usage() if ($opt_help);
|
||||
usage() if (!$opt_distribution);
|
||||
|
||||
if (@make_options > 0)
|
||||
{
|
||||
chomp(@make_options);
|
||||
$opt_make_options= join(" ", @make_options);
|
||||
}
|
||||
|
||||
if (@config_options > 0)
|
||||
{
|
||||
chomp(@config_options);
|
||||
$opt_config_options= join(" ", @config_options);
|
||||
}
|
||||
|
||||
if (@config_env > 0)
|
||||
{
|
||||
chomp(@config_env);
|
||||
$opt_config_env= join(" ", @config_env);
|
||||
}
|
||||
|
||||
if (@config_extra_env > 0)
|
||||
{
|
||||
chomp(@config_extra_env);
|
||||
$opt_config_extra_env= join(" ", @config_extra_env);
|
||||
}
|
||||
|
||||
$host= hostname();
|
||||
chomp($uname=`uname`);
|
||||
$full_host_name=$host;
|
||||
$connect_option= ($opt_tcpip ? "--host=$host" : "");
|
||||
$host =~ /^([^.-]*)/;
|
||||
$host=$1 . $opt_suffix;
|
||||
$email="$opt_user\@mysql.com";
|
||||
chomp($pwd = `pwd`);
|
||||
$VER= basename($opt_distribution);
|
||||
$VER=~ /mysql.*-([1-9]\.[0-9]{1,2}\.[0-9]{1,2}.*)\.tar*/; $version=$1;
|
||||
$release=""; # Shut up perl
|
||||
($major, $minor, $release) = split(/\./,$version);
|
||||
$log="$pwd/Logs/$host-$major.$minor$opt_version_suffix.log";
|
||||
$opt_distribution =~ /(mysql[^\/]*)\.tar/;
|
||||
$ver=$1;
|
||||
$gcc_version=which("gcc");
|
||||
if (defined($gcc_version) && ! $opt_config_env)
|
||||
{
|
||||
$tmp=`$gcc_version -v 2>&1`;
|
||||
if ($tmp =~ /version 2\.7\./)
|
||||
{
|
||||
$opt_config_env= 'CC=gcc CFLAGS="-O2 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O2 -fno-omit-frame-pointer"';
|
||||
}
|
||||
elsif ($tmp =~ /version 3\.0\./)
|
||||
{
|
||||
$opt_config_env= 'CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti"';
|
||||
}
|
||||
else
|
||||
{
|
||||
$opt_config_env= 'CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti"';
|
||||
}
|
||||
}
|
||||
|
||||
$opt_config_env.=" $opt_config_extra_env";
|
||||
|
||||
$new_opt_tmp=0;
|
||||
if ($opt_tmp)
|
||||
{
|
||||
unless (-d $opt_tmp)
|
||||
{
|
||||
safe_system("mkdir $opt_tmp");
|
||||
$new_opt_tmp=1;
|
||||
}
|
||||
$ENV{'TMPDIR'}=$opt_tmp;
|
||||
}
|
||||
else
|
||||
{
|
||||
$opt_tmp="/tmp";
|
||||
}
|
||||
$bench_tmpdir="$opt_tmp/my_build-$host";
|
||||
$ENV{'PATH'}= "$pwd/$host/bin:" . $ENV{'PATH'};
|
||||
$make=which("gmake","make"); # Can't use -j here!
|
||||
$tar=which("gtar","tar");
|
||||
$sendmail=find("/usr/lib/sendmail","/usr/sbin/sendmail");
|
||||
$sur= $opt_sur ? "/my/local/bin/sur" : "";
|
||||
delete $ENV{'MYSQL_PWD'}; # Reset possibly password
|
||||
delete $ENV{'MY_BASEDIR_VERSION'};
|
||||
$ENV{'MYSQL_TCP_PORT'}= $mysql_tcp_port= 3334 + $opt_build_thread*2;
|
||||
$ENV{'MYSQL_UNIX_PORT'}=$mysql_unix_port="$opt_tmp/mysql$opt_suffix.build";
|
||||
$ENV{"PERL5LIB"}="$pwd/$host/perl5:$pwd/$host/perl5/site_perl";
|
||||
$slave_port=$mysql_tcp_port+16;
|
||||
$manager_port=$mysql_tcp_port+1;
|
||||
$mysqladmin_args="--no-defaults -u root --connect_timeout=5 --shutdown_timeout=20";
|
||||
|
||||
if ($opt_stage == 0 || $opt_clearlogs)
|
||||
{
|
||||
system("mkdir Logs") if (! -d "Logs");
|
||||
system("mv $log ${log}-old") if (-f $log);
|
||||
unlink($log);
|
||||
}
|
||||
|
||||
open(LOG,">>$log") || abort("Can't open log file, error $?");
|
||||
select LOG;
|
||||
$|=1;
|
||||
select STDOUT;
|
||||
$|=1;
|
||||
|
||||
info("Compiling MySQL$opt_version_suffix at $host$opt_suffix, stage: $opt_stage\n");
|
||||
info("LD_LIBRARY_PATH is $ENV{LD_LIBRARY_PATH}");
|
||||
info("PATH is $ENV{PATH}");
|
||||
|
||||
log_timestamp();
|
||||
|
||||
$md5_result= safe_system("perl $ENV{HOME}/my_md5sum -c ${opt_distribution}.md5");
|
||||
|
||||
if ($md5_result != 0)
|
||||
{
|
||||
abort("MD5 check failed for $opt_distribution!");
|
||||
}
|
||||
else
|
||||
{
|
||||
info("SUCCESS: MD5 checks for $opt_distribution");
|
||||
}
|
||||
|
||||
if (-x "$host/bin/mysqladmin")
|
||||
{
|
||||
log_system("$host/bin/mysqladmin $mysqladmin_args -S $mysql_unix_port -s shutdown");
|
||||
log_system("$host/bin/mysqladmin $mysqladmin_args -P $mysql_tcp_port -h $host -s shutdown");
|
||||
log_system("$host/bin/mysqladmin $mysqladmin_args -P $slave_port -h $host -s shutdown");
|
||||
log_system("$host/bin/mysqladmin $mysqladmin_args -P 9306 -h $host -s shutdown");
|
||||
log_system("$host/bin/mysqladmin $mysqladmin_args -P 9307 -h $host -s shutdown");
|
||||
}
|
||||
kill_all("mysqlmanager");
|
||||
#
|
||||
# Kill all old processes that are in the build directories
|
||||
# This is to find any old mysqld servers left from previous builds
|
||||
kill_all("$pwd/host/mysql");
|
||||
kill_all("$pwd/host/test");
|
||||
|
||||
if ($opt_stage == 0)
|
||||
{
|
||||
log_timestamp();
|
||||
print "$host: Removing old distribution\n" if ($opt_debug);
|
||||
if (!$opt_use_old_distribution)
|
||||
{
|
||||
system("mkdir $host") if (! -d $host);
|
||||
system("touch $host/mysql-fix-for-glob");
|
||||
rm_all(<$host/mysql*>);
|
||||
system("mkdir $host/bin") if (! -d "$host/bin");
|
||||
}
|
||||
rm_all("$host/test");
|
||||
system("mkdir $host/test") if (! -d "$host/test");
|
||||
}
|
||||
|
||||
safe_cd($host);
|
||||
if ($opt_stage == 0 && ! $opt_use_old_distribution)
|
||||
{
|
||||
safe_system("gunzip < $opt_distribution | $tar xf -");
|
||||
|
||||
# Fix file times; This is needed because the time for files may be
|
||||
# in the future. The following is done this way to ensure that
|
||||
# we don't get any errors from xargs touch
|
||||
system("touch timestamp");
|
||||
sleep(2);
|
||||
system("touch timestamp2");
|
||||
system("find . -newer timestamp -print | xargs touch");
|
||||
unlink("timestamp");
|
||||
unlink("timestamp2");
|
||||
sleep(2);
|
||||
# Ensure that files we don't want to rebuild are newer than other files
|
||||
safe_cd($ver);
|
||||
foreach $name ("configure",
|
||||
"Docs/include.texi",
|
||||
"Docs/*.html", "Docs/manual.txt", "Docs/mysql.info",
|
||||
"sql/sql_yacc.h", "sql/sql_yacc.cc")
|
||||
{
|
||||
system("touch $name");
|
||||
}
|
||||
# Fix some file modes in BDB tables that makes life harder.
|
||||
system("chmod -R u+rw .");
|
||||
}
|
||||
|
||||
safe_cd("$pwd/$host/$ver");
|
||||
|
||||
#
|
||||
# Configure the sources
|
||||
#
|
||||
if ($opt_stage <= 1)
|
||||
{
|
||||
# Fix files if this is in another timezone than the build host
|
||||
log_timestamp();
|
||||
unlink("config.cache");
|
||||
unlink("bdb/build_unix/config.cache");
|
||||
unlink("innobase/config.cache");
|
||||
log_system("$make clean") if ($opt_use_old_distribution);
|
||||
$opt_config_options.= " --disable-shared" if (!$opt_enable_shared); # Default for binary versions
|
||||
$opt_config_options.= " --with-berkeley-db" if ($opt_bdb);
|
||||
$opt_config_options.= " --with-client-ldflags=-all-static" if ($opt_static_client);
|
||||
$opt_config_options.= " --with-debug" if ($opt_with_debug);
|
||||
$opt_config_options.= " --with-libwrap" if ($opt_libwrap);
|
||||
$opt_config_options.= " --with-low-memory" if ($opt_with_low_memory);
|
||||
$opt_config_options.= " --with-big-tables" if ($opt_with_big_tables);
|
||||
$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);
|
||||
$opt_config_options.= " --without-ndbcluster" if ($opt_without_ndbcluster);
|
||||
|
||||
# Only enable InnoDB when requested (required to be able to
|
||||
# build the "Classic" packages that do not include InnoDB)
|
||||
if ($opt_innodb)
|
||||
{
|
||||
$opt_config_options.= " --with-innodb";
|
||||
}
|
||||
else
|
||||
{
|
||||
$opt_config_options.= " --without-innodb";
|
||||
}
|
||||
|
||||
if ($opt_with_other_libc)
|
||||
{
|
||||
$opt_with_other_libc= " --with-other-libc=$opt_with_other_libc";
|
||||
$opt_config_options.= $opt_with_other_libc;
|
||||
}
|
||||
|
||||
$prefix="/usr/local/mysql";
|
||||
check_system("$opt_config_env ./configure --prefix=$prefix --localstatedir=$prefix/data --libexecdir=$prefix/bin --with-comment=\"Official MySQL$opt_version_suffix binary\" --with-extra-charsets=complex --with-server-suffix=\"$opt_version_suffix\" --enable-thread-safe-client --enable-local-infile $opt_config_options","Thank you for choosing MySQL");
|
||||
if (-d "$pwd/$host/include-mysql")
|
||||
{
|
||||
safe_system("cp -r $pwd/$host/include-mysql/* $pwd/$host/$ver/include");
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Compile the binaries
|
||||
#
|
||||
if ($opt_stage <= 2)
|
||||
{
|
||||
my ($command);
|
||||
log_timestamp();
|
||||
unlink($opt_distribution) if ($opt_delete && !$opt_use_old_distribution);
|
||||
$command=$make;
|
||||
$command.= " $opt_make_options" if (defined($opt_make_options) && $opt_make_options ne "");
|
||||
safe_system($command);
|
||||
print LOG "Do-compile: Build successful\n";
|
||||
}
|
||||
|
||||
#
|
||||
# Create the binary distribution
|
||||
#
|
||||
if ($opt_stage <= 3)
|
||||
{
|
||||
my $flags= "";
|
||||
log_timestamp();
|
||||
log_system("rm -fr mysql-{3,4,5}* $pwd/$host/mysql*.t*gz");
|
||||
# No need to add the debug symbols, if the binaries are not stripped (saves space)
|
||||
unless ($opt_with_debug || $opt_no_strip)
|
||||
{
|
||||
log_system("nm -n sql/mysqld | gzip -9 -v 2>&1 > sql/mysqld.sym.gz | cat");
|
||||
}
|
||||
|
||||
$flags.= "--no-strip" if ($opt_no_strip || $opt_with_debug);
|
||||
check_system("scripts/make_binary_distribution --tmp=$opt_tmp --suffix=$opt_suffix $flags",".tar.gz created");
|
||||
safe_system("mv mysql*.t*gz $pwd/$host");
|
||||
if (-f "client/.libs/mysqladmin")
|
||||
{
|
||||
safe_system("cp client/.libs/mysqladmin $pwd/$host/bin");
|
||||
}
|
||||
else
|
||||
{
|
||||
safe_system("cp client/mysqladmin $pwd/$host/bin");
|
||||
}
|
||||
safe_system("$make clean") if ($opt_with_small_disk);
|
||||
}
|
||||
|
||||
$tar_file=<$pwd/$host/mysql*.t*gz>;
|
||||
abort ("Could not find tarball!") unless ($tar_file);
|
||||
|
||||
# Generate the MD5 for the binary distribution
|
||||
$tar_file=~ /(mysql[^\/]*)\.(tar\.gz|tgz)/;
|
||||
$tar_file_lite= "$1.$2";
|
||||
system("cd $pwd/$host; perl $ENV{HOME}/my_md5sum $tar_file_lite > ${tar_file_lite}.md5");
|
||||
|
||||
#
|
||||
# Unpack the binary distribution
|
||||
#
|
||||
if ($opt_stage <= 4 && !$opt_no_test)
|
||||
{
|
||||
log_timestamp();
|
||||
rm_all(<$pwd/$host/test/*>);
|
||||
safe_cd("$pwd/$host/test");
|
||||
safe_system("gunzip < $tar_file | $tar xf -");
|
||||
}
|
||||
|
||||
$tar_file =~ /(mysql[^\/]*)\.(tar\.gz|tgz)/;
|
||||
$ver=$1;
|
||||
$test_dir="$pwd/$host/test/$ver";
|
||||
$ENV{"LD_LIBRARY_PATH"}= ("$test_dir/lib" .
|
||||
(defined($ENV{"LD_LIBRARY_PATH"}) ?
|
||||
":" . $ENV{"LD_LIBRARY_PATH"} : ""));
|
||||
#
|
||||
# Run the test suite
|
||||
#
|
||||
if ($opt_stage <= 5 && !$opt_no_test && !$opt_no_mysqltest)
|
||||
{
|
||||
my $force= "";
|
||||
if (!$opt_one_error)
|
||||
{
|
||||
$force= "--force"; # default
|
||||
}
|
||||
log_timestamp();
|
||||
system("mkdir $bench_tmpdir") if (! -d $bench_tmpdir);
|
||||
safe_cd("${test_dir}/mysql-test");
|
||||
check_system("./mysql-test-run $force --tmpdir=$bench_tmpdir --master_port=$mysql_tcp_port --slave_port=$slave_port --manager-port=$manager_port --no-manager --sleep=10", "tests were successful");
|
||||
# 'mysql-test-run' writes its own final message for log evaluation.
|
||||
}
|
||||
|
||||
#
|
||||
# Start the server if we are going to run any of the benchmarks
|
||||
#
|
||||
if (!$opt_no_test && !$opt_no_benchmark)
|
||||
{
|
||||
my $extra;
|
||||
safe_cd($test_dir);
|
||||
log_system("./bin/mysqladmin $mysqladmin_args -S $mysql_unix_port -s shutdown") || info("There was no mysqld running\n");
|
||||
sleep(2);
|
||||
log_system("rm -f ./data/mysql/*");
|
||||
check_system("scripts/mysql_install_db --no-defaults --skip-locking","https://order");
|
||||
$extra="";
|
||||
if ($opt_bdb)
|
||||
{
|
||||
$extra.=" --bdb_cache_size=16M --bdb_max_lock=60000"
|
||||
}
|
||||
if ($opt_innodb)
|
||||
{
|
||||
$extra.=" --innodb_data_file_path=ibdata1:100M:autoextend";
|
||||
}
|
||||
safe_system("./bin/mysqld --no-defaults --basedir . --datadir ./data --skip-locking $extra >> $log 2>&1 &");
|
||||
sleep(2);
|
||||
}
|
||||
|
||||
#
|
||||
# Compile and install the required Perl modules
|
||||
#
|
||||
if ($opt_stage <= 7 && $opt_perl_files && !$opt_no_perl && !$opt_no_test &&
|
||||
!$opt_no_benchmark)
|
||||
{
|
||||
log_timestamp();
|
||||
safe_cd($test_dir);
|
||||
rm_all("perl");
|
||||
safe_system("mkdir perl");
|
||||
$ENV{'IN_MYSQL_DISTRIBUTION'}=1;
|
||||
$ENV{'MYSQL_BUILD'}=$test_dir;
|
||||
|
||||
foreach $module (split(/,/,$opt_perl_files))
|
||||
{
|
||||
my $options;
|
||||
safe_cd("$test_dir/perl");
|
||||
if ($opt_debug)
|
||||
{
|
||||
safe_system("gunzip < $pwd/$module | tar xvf -");
|
||||
}
|
||||
else
|
||||
{
|
||||
safe_system("gunzip < $pwd/$module | tar xf -");
|
||||
}
|
||||
$module =~ m|([^/]+)\.tar\.gz|;
|
||||
$module = $1;
|
||||
safe_cd($module);
|
||||
$options="";
|
||||
$options= "--mysql-install --noprompt --mysql-incdir=$test_dir/include --mysql-libdir=$test_dir/lib -nomsql-install -nomsql1-install --mysql-test-db=test $opt_dbd_options" if ($module =~ /Msql-Mysql/);
|
||||
$options.= " PREFIX=$pwd/$host INSTALLPRIVLIB=$pwd/$host/perl5 INSTALLSCRIPT=$pwd/$host/bin INSTALLSITELIB=$pwd/$host/perl5/site_perl INSTALLBIN=$pwd/$host/bin INSTALLMAN1DIR=$pwd/$host/man INSTALLMAN3DIR=$pwd/$host/man/man3" if ($opt_local_perl);
|
||||
$options.= " $opt_perl_options" if (defined($opt_perl_options));
|
||||
safe_system($opt_static_perl ? "perl Makefile.PL -static $options" : "perl Makefile.PL $options");
|
||||
safe_system("$make ; $sur $make install");
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Run crash-me test
|
||||
#
|
||||
if ($opt_stage <= 8 && !$opt_no_test && !$opt_no_crash_me)
|
||||
{
|
||||
log_timestamp();
|
||||
safe_cd("$test_dir/sql-bench");
|
||||
log_system("rm -f limits/mysql.cfg");
|
||||
safe_system("perl ./crash-me --force --batch-mode $connect_option");
|
||||
}
|
||||
|
||||
#
|
||||
# Run sql-bench Benchmarks
|
||||
#
|
||||
if ($opt_stage <= 9 && !$opt_no_test && !$opt_no_benchmark)
|
||||
{
|
||||
log_timestamp();
|
||||
safe_cd("$test_dir/sql-bench");
|
||||
log_system("rm -f output/*");
|
||||
$tmp= $opt_fast_benchmark ? "--fast --user root --small-test" : "";
|
||||
check_system("perl ./run-all-tests --log --die-on-errors $connect_option $tmp","RUN-mysql");
|
||||
# Run additional fast test with dynamic-row tables
|
||||
check_system("perl ./run-all-tests --log --suffix=\"_dynamic_rows\" --die-on-errors $connect_option --fast --user=root --small-test --create-options=\"row_format=dynamic\"","RUN-mysql");
|
||||
if ($opt_innodb)
|
||||
{
|
||||
check_system("perl ./run-all-tests --log --suffix=\"_innodb\" --die-on-errors $connect_option $tmp --create-options=\"type=innodb\"","RUN-mysql");
|
||||
}
|
||||
if ($opt_bdb)
|
||||
{
|
||||
check_system("perl ./run-all-tests --log --suffix=\"_bdb\" --die-on-errors $connect_option $tmp --create-options=\"type=bdb\"","RUN-mysql");
|
||||
}
|
||||
}
|
||||
|
||||
rm_all($bench_tmpdir);
|
||||
rm_all("$opt_tmp") if ($new_opt_tmp);
|
||||
|
||||
log_system("$pwd/$host/bin/mysqladmin $mysqladmin_args -S $mysql_unix_port shutdown");
|
||||
print LOG "ok\n";
|
||||
close LOG;
|
||||
print "$host: ok\n";
|
||||
|
||||
exit 0;
|
||||
|
||||
|
||||
sub usage
|
||||
{
|
||||
print <<EOF;
|
||||
$0 version 1.6
|
||||
|
||||
$0 takes the following options:
|
||||
|
||||
--bdb
|
||||
Compile with support for Berkeley DB tables
|
||||
|
||||
--config-env <environment for configure>
|
||||
To set up the environment, like 'CC=cc CXX=gcc CXXFLAGS=-O3'
|
||||
|
||||
--config-extra-env <environment for configure>
|
||||
Additional flags for environment (not CC or CXX). Should be used when one
|
||||
wants Do-compile to propose proper CC and CXX flags.
|
||||
|
||||
--config-options <options>
|
||||
To add some extra options to configure (e.g. '--with-perl=yes')
|
||||
|
||||
--dbd-options <options>
|
||||
Options for Makefile.PL when configuring msql-mysql-modules.
|
||||
|
||||
--debug
|
||||
Print all shell commands on stdout.
|
||||
|
||||
--delete
|
||||
Delete the distribution file.
|
||||
|
||||
--distribution <distribution_file>
|
||||
Name of the MySQL source distribution file.
|
||||
|
||||
--enable-shared
|
||||
Compile with shared libraries
|
||||
|
||||
--fast-benchmark
|
||||
Run fast benchmark only to speed up testing
|
||||
|
||||
--help or --Information
|
||||
Show this help
|
||||
|
||||
--innodb
|
||||
Compile with support for Innodb tables
|
||||
|
||||
--libwrap
|
||||
Compile with TCP wrapper support
|
||||
|
||||
--local-perl
|
||||
Install Perl modules locally
|
||||
|
||||
--make-options <options>
|
||||
Options to make after configure. (Like 'CXXLD=gcc')
|
||||
|
||||
--no-crash-me
|
||||
Do not run the "crash-me" test
|
||||
|
||||
--no-strip
|
||||
Do not strip the binaries included in the binary distribution
|
||||
|
||||
--no-test
|
||||
Do not run any tests.
|
||||
|
||||
--no-benchmark
|
||||
Do not run the benchmark test (written in perl)
|
||||
|
||||
--no-mysqltest
|
||||
Do not run the mysql-test-run test (Same as 'make test')
|
||||
|
||||
--one-error
|
||||
Terminate the mysql-test-run test after the first difference (default: use '--force')
|
||||
|
||||
--perl-files=list of files
|
||||
Compile and install the given perl modules.
|
||||
|
||||
--perl-options <options>
|
||||
Build Perl modules with the additional options
|
||||
|
||||
--raid
|
||||
Compile with RAID support
|
||||
|
||||
--stage (1-6)
|
||||
Start script from some specific point.
|
||||
|
||||
--static-client
|
||||
Build statically linked client binaries
|
||||
|
||||
--static-perl
|
||||
Build statically linked Perl modules
|
||||
|
||||
--static-server
|
||||
Build statically linked server binary
|
||||
|
||||
--tcpip
|
||||
Connect to the server to be tested via TCP/IP instead of socket
|
||||
|
||||
--tmp <directory>
|
||||
Use a different temporary directory than /tmp
|
||||
|
||||
--use-old-distribution
|
||||
Do not clean up the build environment and extract a fresh source
|
||||
distribution, use an existing one instead.
|
||||
|
||||
--user <user_name>
|
||||
Mail 'user_name'\@mysql.com if something went wrong.
|
||||
If user is empty then no mail is sent.
|
||||
|
||||
--version-suffix suffix
|
||||
Set name suffix (e.g. 'com' or '-max') for a distribution
|
||||
|
||||
--with-debug
|
||||
Build binaries with debug information (implies "--no-strip")
|
||||
|
||||
--with-low-memory
|
||||
Use less memory when compiling.
|
||||
|
||||
--with-other-libc <path to libc>
|
||||
Link against libc and other standard libraries installed in the specified
|
||||
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;
|
||||
}
|
||||
|
||||
sub abort
|
||||
{
|
||||
my($message)=@_;
|
||||
my($mail_header_file);
|
||||
print LOG "\n$message\n";
|
||||
print "$host: $message\n" if ($opt_debug);
|
||||
print LOG "Aborting\n";
|
||||
close LOG;
|
||||
|
||||
if ($opt_user)
|
||||
{
|
||||
# Take the last 40 lines of the build log
|
||||
open(LOG, "$log") or die $!;
|
||||
my @log= <LOG>;
|
||||
close LOG;
|
||||
splice @log => 0, -40;
|
||||
my $mail_file="$opt_tmp/do-command.$$";
|
||||
open(TMP,">$mail_file") or die $!;
|
||||
print TMP "From: mysqldev\@$full_host_name\n";
|
||||
print TMP "To: $email\n";
|
||||
print TMP "Subject: $host($uname): $ver$opt_version_suffix compilation failed\n\n";
|
||||
print TMP @log;
|
||||
close TMP;
|
||||
system("$sendmail -t -f $email < $mail_file");
|
||||
unlink($mail_file);
|
||||
}
|
||||
exit 1;
|
||||
}
|
||||
|
||||
sub info
|
||||
{
|
||||
my($message)=@_;
|
||||
print LOG "$message\n";
|
||||
print "$host: $message\n";
|
||||
}
|
||||
|
||||
sub log_system
|
||||
{
|
||||
my($com)=@_;
|
||||
print "$host: $com\n" if ($opt_debug);
|
||||
if (defined($log))
|
||||
{
|
||||
print LOG "$com\n";
|
||||
system("$com >> $log 2>&1") &&
|
||||
print LOG ("Info: couldn't execute command, error: " . ($? / 256) ."\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
system($com) && print "$host: Couldn't execute command, error: " . ($? / 256) ."\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub safe_system
|
||||
{
|
||||
my($com,$res)=@_;
|
||||
print LOG "$com\n";
|
||||
print "$host: $com\n" if ($opt_debug);
|
||||
my $result= system("$com >> $log 2>&1");
|
||||
abort("error: Couldn't execute command, error: " . ($? / 256)) unless $result == 0;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
sub check_system
|
||||
{
|
||||
my($com,$res)=@_;
|
||||
my ($error,$found);
|
||||
print LOG "$com\n";
|
||||
print "$host: $com\n" if ($opt_debug);
|
||||
open (COM, "$com 2>&1 < /dev/null|") || abort("Got error " . ($?/256) ." opening pipe");
|
||||
$found=0;
|
||||
while (<COM>)
|
||||
{
|
||||
print LOG $_;
|
||||
if (index($_,$res) >= 0)
|
||||
{
|
||||
$found=1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
close COM;
|
||||
abort("Couldn't find '$res' in the command result") if (!$found);
|
||||
print "$host: Command ok\n" if ($opt_debug);
|
||||
}
|
||||
|
||||
sub safe_cd
|
||||
{
|
||||
my($dir)=@_;
|
||||
print LOG "cd $dir\n";
|
||||
print "$host: cd $dir\n" if ($opt_debug);
|
||||
chdir($dir) || abort("Can't cd to $dir");
|
||||
}
|
||||
|
||||
sub which
|
||||
{
|
||||
my(@progs)=@_;
|
||||
foreach $prog (@progs)
|
||||
{
|
||||
chomp($found=`which $prog | head -n 1`);
|
||||
if ($? == 0 && $found ne "" && index($found," ") == -1)
|
||||
{
|
||||
$found =~ s|/+|/|g; # Make nicer output
|
||||
return $found;
|
||||
}
|
||||
}
|
||||
return undef();
|
||||
}
|
||||
|
||||
sub find
|
||||
{
|
||||
my (@progs)=@_;
|
||||
foreach $prog (@progs)
|
||||
{
|
||||
return $prog if (-x $prog);
|
||||
}
|
||||
return undef();
|
||||
}
|
||||
|
||||
#
|
||||
# Remove recursively all from a directory
|
||||
# This is needed because problems with NFS and open files
|
||||
#
|
||||
|
||||
sub rm_all
|
||||
{
|
||||
my(@rm_files)=@_;
|
||||
my($dir,$current_dir,@files,@dirs,$removed);
|
||||
$current_dir = `pwd`; chomp($current_dir);
|
||||
|
||||
foreach $dir (@rm_files)
|
||||
{
|
||||
if (-d $dir)
|
||||
{
|
||||
chdir($dir) || abort("Can't cd to $dir");
|
||||
print "$host: Removing from $dir\n" if ($opt_debug);
|
||||
while (<* .*>)
|
||||
{
|
||||
next if ($_ eq "." x (length($_)));
|
||||
if (-d $_)
|
||||
{
|
||||
# die "Can't remove directory that starts with ." if ($_ =~ /^\./ && $_ ne ".libs"); # Safety
|
||||
push (@dirs,$_);
|
||||
}
|
||||
else
|
||||
{
|
||||
push (@files,$_);
|
||||
}
|
||||
}
|
||||
if ($#files >= 0)
|
||||
{
|
||||
$removed= unlink @files;
|
||||
print "rm_all : removed $removed files in $current_dir/$dir\n" if ($opt_debug);
|
||||
abort("Can't remove all $#files+1 from $current_dir/$dir, just $removed") if $removed != $#files+1;
|
||||
}
|
||||
foreach $dir (@dirs)
|
||||
{
|
||||
rm_all($dir);
|
||||
}
|
||||
chdir($current_dir) || abort("Can't cd to $current_dir");
|
||||
log_system("rmdir $dir");
|
||||
}
|
||||
else
|
||||
{
|
||||
system("rm -f $dir") && abort("Can't remove file $dir");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub kill_all
|
||||
{
|
||||
my ($pattern) = @_;
|
||||
my ($USER,$BSD,$LINUX, $pscmd, $user, $os, $pid);
|
||||
$user=$ENV{'USER'};
|
||||
$os=defined($ENV{'OS'}) ? $ENV{'OS'} : "unknown";
|
||||
$BSD = -f '/vmunix' || $os eq "SunOS4" || $^O eq 'darwin';
|
||||
$LINUX = $^O eq 'linux';
|
||||
$pscmd = $BSD ? "/bin/ps -auxww" : $LINUX ? "/bin/ps axuw" : "/bin/ps -ef";
|
||||
|
||||
if (!open(PS, "$pscmd|"))
|
||||
{
|
||||
print "Warning: Can't run $pscmd: $!\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Catch any errors with eval. A bad pattern, for instance.
|
||||
process:
|
||||
while ($cand = <PS>)
|
||||
{
|
||||
chop($cand);
|
||||
($pid_user, $pid) = split(' ', $cand);
|
||||
next if $pid eq $$;
|
||||
next process if (! ($cand =~ $pattern) || $pid_user ne $user);
|
||||
print LOG "Killing $_\n";
|
||||
&killpid($pid);
|
||||
}
|
||||
}
|
||||
|
||||
sub killpid
|
||||
{
|
||||
local($pid) = @_;
|
||||
kill 15, $pid;
|
||||
for (1..5)
|
||||
{
|
||||
sleep 2;
|
||||
return if kill(0, $pid) == 0;
|
||||
}
|
||||
kill 9, $pid;
|
||||
for (1..5) {
|
||||
sleep 2;
|
||||
return if kill(0, $pid) == 0;
|
||||
}
|
||||
print LOG "$pid will not die!\n";
|
||||
}
|
||||
|
||||
#
|
||||
# return the current date as a string (YYYY-MM-DD HH:MM:SS)
|
||||
#
|
||||
sub log_timestamp
|
||||
{
|
||||
my @ta=localtime(time());
|
||||
print LOG sprintf("%4d-%02d-%02d %02d:%02d:%02d\n",
|
||||
$ta[5]+1900, $ta[4]+1, $ta[3], $ta[2], $ta[1], $ta[0]);
|
||||
|
||||
}
|
|
@ -1,64 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
PM_FILES='Data-Dumper Data-ShowTable DBI Msql-Mysql-modules'
|
||||
FILE_EXT='tar.gz'
|
||||
ARCH=`uname -m | perl -p -e 's/^i[0-9]86$/i386/'`
|
||||
|
||||
# directories
|
||||
[ -d /usr/src/redhat ] && RPM_SRC=/usr/src/redhat
|
||||
[ -d /usr/src/packages ] && RPM_SRC=/usr/src/packages
|
||||
SRC_DIR=/home/matt/work/pm_rpm/tarballs # pristine tarballs
|
||||
DEST_DIR=${RPM_SRC}/SOURCES # RPM SOURCES (building area)
|
||||
RPM_DEPOSIT=/var/tmp/ftp/RPMS # RPM production deposit
|
||||
SRPM_DEPOSIT=/var/tmp/ftp/SRPMS # SRPM production deposit
|
||||
|
||||
# keyword replacement for SPEC templates
|
||||
REPLACE_KEY='REPLACE_VERSION'
|
||||
|
||||
# paths to beloved programs
|
||||
NEWEST=/home/matt/work/build_pm_rpms/newest
|
||||
REPLACE=/usr/local/bin/replace
|
||||
|
||||
|
||||
#++
|
||||
# Copy the source tarballs up to staging area for RPM building.
|
||||
#--
|
||||
cd $SRC_DIR
|
||||
for i in $PM_FILES
|
||||
do
|
||||
echo Copying $i...
|
||||
cp ${SRC_DIR}/`$NEWEST -s $SRC_DIR -b $i -t $FILE_EXT` $DEST_DIR
|
||||
done
|
||||
|
||||
|
||||
#++
|
||||
# Do keyword replacements on the SPEC templates, and build RPMS
|
||||
#--
|
||||
cd ${RPM_SRC}/SPECS
|
||||
for i in $PM_FILES
|
||||
do
|
||||
cat ${i}.spec.template | $REPLACE $REPLACE_KEY `$NEWEST -s $DEST_DIR -b $i -t $FILE_EXT -v` > ${i}.spec
|
||||
rpm -ba ${i}.spec
|
||||
rm ${i}.spec
|
||||
done
|
||||
|
||||
|
||||
#++
|
||||
# Copy new RPMS and SRPMS to production deposit
|
||||
#--
|
||||
cd $RPM_SRC
|
||||
|
||||
# kludge code
|
||||
PM_FILES=`echo $PM_FILES | $REPLACE Msql-Mysql-modules DBD-Mysql`
|
||||
tmpv=`$NEWEST -s $DEST_DIR -b Msql-Mysql-modules -t $FILE_EXT -v`
|
||||
mv SOURCES/Msql-Mysql-modules-${tmpv}.${FILE_EXT} SOURCES/DBD-Mysql-${tmpv}.${FILE_EXT}
|
||||
|
||||
|
||||
for i in $PM_FILES
|
||||
do
|
||||
cp RPMS/${ARCH}/${i}-`$NEWEST -s $DEST_DIR -b $i -t $FILE_EXT -v`-1.${ARCH}.rpm $RPM_DEPOSIT
|
||||
cp SRPMS/${i}-`$NEWEST -s $DEST_DIR -b $i -t $FILE_EXT -v`-1.src.rpm $SRPM_DEPOSIT
|
||||
rm SOURCES/`$NEWEST -s $DEST_DIR -b $i -t $FILE_EXT`
|
||||
done
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
#! /bin/sh
|
||||
|
||||
set -e -x
|
||||
|
||||
# Only use the "--with-other-libc" parameter, if another libc actually
|
||||
# exists, since this will also force static linking, which does not work
|
||||
# together with OpenSSL
|
||||
OTHER_LIBC_DIR=/usr/local/mysql-glibc
|
||||
OTHER_LIBC=""
|
||||
if [ -d OTHER_LIBC_DIR ] ; then
|
||||
OTHER_LIBC="--with-other-libc=$OTHER_LIBC_DIR"
|
||||
fi
|
||||
|
||||
BUILD/compile-pentium-max $OTHER_LIBC \
|
||||
--with-comment="Official MySQL Binary" \
|
||||
--prefix=/usr/local/mysql --with-extra-charset=complex \
|
||||
--enable-thread-safe-client --enable-local-infile \
|
||||
--with-server-suffix=-max
|
||||
nm -n sql/mysqld | gzip -9 -v 2>&1 > sql/mysqld.sym.gz
|
||||
scripts/make_binary_distribution
|
||||
make dist
|
||||
Build-tools/Do-rpm --local
|
||||
BUILD/compile-pentium --with-other-libc=$OTHER_LIBC_DIR \
|
||||
--with-comment="Official MySQL Binary" \
|
||||
--prefix=/usr/local/mysql --with-extra-charset=complex \
|
||||
--enable-thread-safe-client --enable-local-infile
|
||||
nm -n sql/mysqld | gzip -9 -v 2>&1 > sql/mysqld.sym.gz
|
||||
scripts/make_binary_distribution
|
|
@ -1,37 +0,0 @@
|
|||
#!/bin/sh
|
||||
# make a patch file of a mysql distribution
|
||||
# takes as argument the previous version
|
||||
|
||||
case $# in
|
||||
0) echo Usage: $0 previous_version; exit 1;;
|
||||
esac
|
||||
|
||||
PVER=$1;
|
||||
VER=`grep SERVER_VERSION include/mysql_version.h | cut -d'"' -f2`
|
||||
NEW="mysql-$VER.tar.gz"
|
||||
OLD="mysql-$PVER.tar.gz"
|
||||
RESULT="mysql-$PVER-$VER.patch.gz"
|
||||
PATCH_DIR=/my/data/tcxwww/html/Downloads/Patches
|
||||
RESULT_DIR=/my/data/tcxwww/html/Downloads/MySQL-3.22
|
||||
|
||||
if test ! -f $NEW
|
||||
then
|
||||
echo "$NEW doesn't exist";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if test ! -f $RESULT_DIR/$OLD
|
||||
then
|
||||
echo "$RESULT_DIR/$OLD doesn't exist";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
mkdir patch
|
||||
cd patch
|
||||
gtar xfz ../$NEW
|
||||
gtar xfz $RESULT_DIR/$OLD
|
||||
cd mysql-$PVER
|
||||
diff --context --new-file --recursive . ../mysql-$VER | gzip -9 > ../../$RESULT
|
||||
cd ../..
|
||||
/bin/rm -rf patch
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
#!/bin/sh
|
||||
# make a patch file of a mysql distribution
|
||||
# takes as argument the previous version
|
||||
|
||||
case $# in
|
||||
0) echo Usage: $0 previous_version; exit 1;;
|
||||
esac
|
||||
|
||||
PVER=$1;
|
||||
VER=`grep SERVER_VERSION /my/tmp/BUILD/include/mysql_version.h | cut -d'"' -f2`
|
||||
NEWDIR="binary"
|
||||
NEW="mysql-$VER.tar.gz"
|
||||
OLD="mysql-$PVER.tar.gz"
|
||||
RESULT="mysql-$PVER-$VER.patch.gz"
|
||||
PATCH_DIR=/my/web/Downloads-live/Patches
|
||||
RESULT_DIR=/my/web/Downloads-live/MySQL-4.0
|
||||
RESULT_DIR_MAX=/my/web/Downloads-live/MySQL-Max-4.0
|
||||
|
||||
if test ! -f $NEWDIR/$NEW
|
||||
then
|
||||
echo "$NEWDIR/$NEW doesn't exist";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if test ! -f $RESULT_DIR/$OLD
|
||||
then
|
||||
echo "$RESULT_DIR/$OLD doesn't exist";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
mkdir patch
|
||||
cd patch
|
||||
gtar xfz ../$NEWDIR/$NEW
|
||||
gtar xfz $RESULT_DIR/$OLD
|
||||
cd mysql-$PVER
|
||||
diff --unified --new-file --recursive . ../mysql-$VER | gzip -9 > ../../$RESULT
|
||||
cd ../..
|
||||
/bin/rm -rf patch
|
||||
chmod a+r,o-w $RESULT binary/*
|
||||
mv $RESULT $PATCH_DIR
|
||||
cp binary/mysqlcom-* binary/mysql*win* /net/web/home/production/data/nweb/customer/Downloads
|
||||
rm binary/mysqlcom-*
|
||||
mv binary/*Max* binary/*-max* $RESULT_DIR_MAX
|
||||
cp binary/* $RESULT_DIR
|
|
@ -1,313 +0,0 @@
|
|||
#!/usr/bin/perl -w
|
||||
#
|
||||
# Do-pkg - convert a binary distribution into a Mac OS X PKG and put it
|
||||
# inside a Disk Image (.dmg). Additionally, add a separate package,
|
||||
# including the required Startup Item to automatically start MySQL on
|
||||
# bootup.
|
||||
#
|
||||
# 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 binary distribution (*.tar.gz) in the directory
|
||||
# `hostname` of the current directory
|
||||
# - the extracted and compiled source tree should be located in the
|
||||
# `hostname` directory, too
|
||||
#
|
||||
# Use the "--help" option for more info!
|
||||
#
|
||||
# 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_dry_run= undef;
|
||||
$opt_help= undef;
|
||||
$opt_log= undef;
|
||||
$opt_mail= "";
|
||||
$opt_skip_dmg= undef;
|
||||
$opt_skip_si= undef;
|
||||
$opt_suffix= undef;
|
||||
$opt_verbose= undef;
|
||||
$opt_version= undef;
|
||||
|
||||
GetOptions(
|
||||
"dry-run",
|
||||
"help|h",
|
||||
"log|l:s",
|
||||
"mail|m=s",
|
||||
"skip-dmg|skip-disk-image|s",
|
||||
"skip-si|skip-startup-item",
|
||||
"suffix=s",
|
||||
"verbose|v",
|
||||
"version=s",
|
||||
) || &print_help;
|
||||
|
||||
# Include helper functions
|
||||
$PWD= cwd();
|
||||
$LOGGER= "$PWD/logger.pm";
|
||||
if (-f "$LOGGER")
|
||||
{
|
||||
do "$LOGGER";
|
||||
}
|
||||
else
|
||||
{
|
||||
die "ERROR: $LOGGER cannot be found!\n";
|
||||
}
|
||||
|
||||
$PM= "/Developer/Applications/PackageMaker.app/Contents/MacOS/PackageMaker";
|
||||
# Try another location on 10.3.3
|
||||
unless (-e "$PM")
|
||||
{
|
||||
$PM= "/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker";
|
||||
}
|
||||
|
||||
$TMP= $ENV{TMPDIR};
|
||||
$TMP eq "" ? $TMP= $TMP . "/PKGBUILD.$$": $TMP= "/tmp/PKGBUILD.$$";
|
||||
$PKGROOT= "$TMP/PMROOT";
|
||||
$PKGDEST= "$TMP/PKG";
|
||||
$RESOURCE_DIR= "$TMP/Resources";
|
||||
$SUFFIX= $opt_suffix;
|
||||
$VERSION= $opt_version;
|
||||
($MAJOR, $MINOR, $RELEASE)= split(/\./, $VERSION);
|
||||
$NAME= "mysql$SUFFIX-$VERSION";
|
||||
$HOST= hostname();
|
||||
$ID= getpwuid($>);
|
||||
$HOST=~ /^([^.-]*)/;
|
||||
$HOST= $1;
|
||||
$LOGFILE= "$PWD/Logs/$HOST-$MAJOR.$MINOR$SUFFIX.log";
|
||||
$BUILDDIR= "$PWD/$HOST";
|
||||
$SRCBASEDIR= <$BUILDDIR/mysql*-$VERSION>;
|
||||
$SUPFILEDIR= <$SRCBASEDIR/support-files/MacOSX>;
|
||||
$TAR= <$BUILDDIR/$NAME-apple-darwin*-powerpc*.tar.gz>;
|
||||
$TAR =~ /.*\/$NAME(.*)\.tar\.gz$/;
|
||||
$ARCH= $1;
|
||||
$NAME= $NAME . $ARCH;
|
||||
$INFO= <$SUPFILEDIR/Info.plist>;
|
||||
$DESC= <$SUPFILEDIR/Description.plist>;
|
||||
$SI_INFO= <$SUPFILEDIR/StartupItem.Info.plist>;
|
||||
$SI_DESC= <$SUPFILEDIR/StartupItem.Description.plist>;
|
||||
$SI_PARAMS= <$SUPFILEDIR/StartupParameters.plist>;
|
||||
$SI_POST= <$SUPFILEDIR/StartupItem.postinstall>;
|
||||
$SI_NAME= "MySQLStartupItem";
|
||||
$SI_SCRIPT= <$SUPFILEDIR/MySQL>;
|
||||
@RESOURCES= qw/ ReadMe.txt postinstall preinstall /;
|
||||
@LICENSES= ("$SRCBASEDIR/COPYING","$SRCBASEDIR/MySQLEULA.txt");
|
||||
|
||||
&print_help("") if ($opt_help || !$opt_suffix || !$opt_version);
|
||||
|
||||
#
|
||||
# Override predefined Log file name
|
||||
#
|
||||
if (defined $opt_log)
|
||||
{
|
||||
if ($opt_log ne "")
|
||||
{
|
||||
if ($opt_log =~ /^\/.*/)
|
||||
{
|
||||
$LOGFILE= $opt_log;
|
||||
}
|
||||
else
|
||||
{
|
||||
$LOGFILE= $PWD . "/" . $opt_log;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Creating the UFS disk image requires root privileges
|
||||
die("You must be root to run this script!") if ($ID ne "root" && !$opt_dry_run);
|
||||
|
||||
@files= ($TAR, $INFO, $DESC);
|
||||
@files= (@files, $SI_INFO, $SI_DESC, $SI_POST, $SI_SCRIPT) unless $opt_skip_si;
|
||||
foreach $file (@files)
|
||||
{
|
||||
&abort("Unable to find $file!") unless (-f "$file");
|
||||
}
|
||||
|
||||
# Remove old temporary build directories first
|
||||
&logger("Cleaning up temporary build directories");
|
||||
&run_command("rm -rf $TMP", "Could not clean up $TMP!");
|
||||
&logger("Creating temp directories");
|
||||
foreach $dir ($TMP, $PKGROOT, $PKGDEST, $RESOURCE_DIR)
|
||||
{
|
||||
if (!-d $dir)
|
||||
{
|
||||
&logger("Creating directory $dir!");
|
||||
unless($opt_dry_run)
|
||||
{
|
||||
mkdir($dir) or &abort("Could not make directory $dir!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach $resfile (@RESOURCES)
|
||||
{
|
||||
&logger("Copying $SUPFILEDIR/$resfile to $RESOURCE_DIR");
|
||||
unless($opt_dry_run)
|
||||
{
|
||||
copy("$SUPFILEDIR/$resfile", "$RESOURCE_DIR") or
|
||||
&abort("Error while copying $SUPFILEDIR/$resfile to $RESOURCE_DIR");
|
||||
}
|
||||
}
|
||||
|
||||
# Search for license file
|
||||
foreach $license (@LICENSES)
|
||||
{
|
||||
if (-f "$license")
|
||||
{
|
||||
&logger("Copy $license to $RESOURCE_DIR/License.txt");
|
||||
unless($opt_dry_run)
|
||||
{
|
||||
copy("$license", "$RESOURCE_DIR/License.txt") or
|
||||
&abort("Error while copying $license to $RESOURCE_DIR");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&abort("Could not find a license file!")
|
||||
unless (-f "$RESOURCE_DIR/License.txt");
|
||||
|
||||
# Extract the binary tarball and create the "mysql" symlink
|
||||
&logger("Extracting $TAR to $PKGROOT");
|
||||
&run_command("gnutar zxf $TAR -C $PKGROOT", "Unable to extract $TAR!");
|
||||
&run_command("cd $PKGROOT ; ln -s mysql* ./mysql", "Unable to create symlink!");
|
||||
&run_command("chown -R root:wheel $PKGROOT/*", "Cannot chown $PKGROOT!");
|
||||
|
||||
# Now build the PGK using PackageMaker
|
||||
# The "|| true" is a nasty hack to work around a problem with Package Maker
|
||||
# returning a non-zero value, even though the package was created correctly
|
||||
&logger("Running PackageMaker");
|
||||
$command= "$PM -build -p $PKGDEST/$NAME.pkg -f $PKGROOT -r $RESOURCE_DIR -i $INFO -d $DESC || true";
|
||||
&run_command($command, "Error while building package $NAME.pkg!");
|
||||
|
||||
#
|
||||
# Build the Startup Item PKG
|
||||
#
|
||||
unless ($opt_skip_si)
|
||||
{
|
||||
&logger("Cleaning up $PKGROOT");
|
||||
&run_command("rm -rf $PKGROOT/*", "Unable to clean up $PKGROOT!");
|
||||
&logger("Cleaning up $RESOURCE_DIR");
|
||||
&run_command("rm -rf $RESOURCE_DIR/*", "Unable to clean up $RESOURCE_DIR!");
|
||||
|
||||
&logger("Installing MySQL StartupItem files into $PKGROOT/MySQL");
|
||||
unless($opt_dry_run)
|
||||
{
|
||||
mkdir("$PKGROOT/MySQL") or &abort("Error creating $PKGROOT/MySQL");
|
||||
copy("$SI_SCRIPT", "$PKGROOT/MySQL/")
|
||||
or &abort("Error copying $SI_SCRIPT!");
|
||||
chmod(0755, "$PKGROOT/MySQL/" . basename("$SI_SCRIPT"));
|
||||
copy("$SI_PARAMS", "$PKGROOT/MySQL/")
|
||||
or &abort("Error copying $SI_PARAMS!");
|
||||
chmod(0644, "$PKGROOT/MySQL/" . basename("$SI_PARAMS"));
|
||||
&run_command("chown -R root:wheel $PKGROOT/*", "Cannot chown $PKGROOT!");
|
||||
copy("$SI_POST", "$RESOURCE_DIR/postinstall")
|
||||
or &abort("Error copying $SI_POST!");
|
||||
chmod(0644, "$RESOURCE_DIR/postinstall");
|
||||
}
|
||||
|
||||
&logger("Building $SI_NAME.pkg using PackageMaker");
|
||||
$command= "$PM -build -p $PKGDEST/$SI_NAME.pkg -f $PKGROOT -r $RESOURCE_DIR -i $SI_INFO -d $SI_DESC || true";
|
||||
&run_command($command, "Error while building package $SI_NAME.pkg!");
|
||||
}
|
||||
|
||||
if ($opt_skip_dmg)
|
||||
{
|
||||
&logger("SUCCESS: Package $PKGDEST/$NAME.pkg created");
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# Determine the size of the Disk image to be created and add a 5% safety
|
||||
# margin for filesystem overhead
|
||||
&logger("Determining required disk image size for $PKGDEST");
|
||||
unless($opt_dry_run)
|
||||
{
|
||||
chomp($_= `du -sk $PKGDEST`);
|
||||
@size= split();
|
||||
$size= int($size[0]+($size[0]*0.05));
|
||||
&logger("Disk image size: $size KB");
|
||||
}
|
||||
|
||||
unless($opt_dry_run)
|
||||
{
|
||||
&abort("Zero bytes? Something is wrong here!") if ($size == 0);
|
||||
}
|
||||
|
||||
# Now create and mount the disk image
|
||||
$TMPNAME= $NAME . ".tmp";
|
||||
&logger("Creating temporary Disk image $TMPNAME.dmg");
|
||||
$command= "hdiutil create $TMPNAME -size ${size}k -ov -fs UFS -volname $NAME";
|
||||
&run_command($command, "Unable to create disk image $TMPNAME.dmg!");
|
||||
&logger("Attaching Disk image $TMPNAME.dmg");
|
||||
&run_command("hdid $TMPNAME.dmg", "Unable to attach $TMPNAME.dmg!");
|
||||
|
||||
# Install the PKG into the .dmg
|
||||
chomp($mountpoint=`mount | grep "\/Volumes\/$NAME" | cut -f3 -d" "`) if (!$opt_dry_run);
|
||||
&logger("Copying $PKGDEST/$NAME.pkg to Disk image /Volumes/$NAME");
|
||||
&run_command("ditto $PKGDEST /Volumes/$NAME", "Could not copy $PKGDEST to /Volumes/$NAME!");
|
||||
&run_command("ditto $SUPFILEDIR/ReadMe.txt /Volumes/$NAME", "Could not copy $SPFILEDIR/ReadMe.txt to /Volumes/$NAME!");
|
||||
chomp($mountpoint=`mount | grep "\/Volumes\/$NAME" | cut -f1 -d" "`) if (!$opt_dry_run);
|
||||
&abort("/Volumes/$NAME not attached!") if (!$mountpoint && !$opt_dry_run);
|
||||
&logger("Unmounting $mountpoint");
|
||||
&run_command("hdiutil detach $mountpoint", "Unable to detach $mountpoint");
|
||||
&run_command("rm -f $NAME.dmg", "Unable to remove $NAME.dmg!") if (-f "$NAME.dmg");
|
||||
&logger("Compressing disk image");
|
||||
$command= "hdiutil convert $TMPNAME.dmg -format UDZO -imagekey zlib-level=9 -o $NAME.dmg";
|
||||
&run_command($command, "Unable to compress disk image!");
|
||||
|
||||
# Final cleanups
|
||||
&logger("Removing $TMPNAME.dmg");
|
||||
&run_command("rm -f $TMPNAME.dmg", "Unable to remove $TMPNAME.dmg!");
|
||||
&logger("Removing $TMP");
|
||||
&run_command("rm -rf $TMP", "Unable to remove $TMP!");
|
||||
|
||||
&logger("SUCCESS: $NAME.dmg 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-pkg <options> --suffix=<suffix> --version=<version>
|
||||
|
||||
Creates a Mac OS X installation package (PKG) and stores it inside
|
||||
a Disk Image (.dmg) file. You need to create a binary distribution
|
||||
tarball with scripts/make_binary_distribution first!
|
||||
|
||||
NOTE: You need to run this script with root privileges (required
|
||||
to create the disk image)
|
||||
|
||||
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
|
||||
-s, --skip-disk-image, --skip-dmg Just build the PKGs, don't put it into a
|
||||
disk image afterwards
|
||||
--skip-startup-item, --skip-si Skip the creation of the StartupItem PKG
|
||||
--suffix=<suffix> The package suffix
|
||||
(e.g. "-standard" or "-pro)
|
||||
--version=<version> The MySQL version number
|
||||
(e.g. 4.0.11-gamma)
|
||||
-v, --verbose Verbose execution
|
||||
|
||||
EOF
|
||||
exit 1;
|
||||
}
|
|
@ -1,332 +0,0 @@
|
|||
#!/usr/bin/perl -w
|
||||
#
|
||||
# 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:
|
||||
#
|
||||
# - there must be a source distribution (mysql-<version>.tar.gz)
|
||||
# in the current directory
|
||||
# - You must provide the name of an RPM spec file (mysql-<version>.spec)
|
||||
# as the argument
|
||||
#
|
||||
# Use the "--help" option for more info!
|
||||
#
|
||||
# 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_susebuild= undef;
|
||||
$opt_susebuildroot= undef;
|
||||
$opt_suserpms= undef;
|
||||
|
||||
# Set a dummy version until we know the correct one
|
||||
$VERSION= "x.y.z";
|
||||
$MAJOR= $MINOR= $RELEASE= 0;
|
||||
$SUFFIX= "";
|
||||
|
||||
GetOptions(
|
||||
"cc=s",
|
||||
"cflags=s",
|
||||
"clean|c",
|
||||
"cxx=s",
|
||||
"cxxflags=s",
|
||||
"dry-run|t",
|
||||
"help|h",
|
||||
"log|l:s",
|
||||
"mail|m=s",
|
||||
"susebuild|s",
|
||||
"susebuildroot|r=s",
|
||||
"suserpms=s",
|
||||
"verbose|v",
|
||||
) || &print_help;
|
||||
|
||||
&print_help("") if ($opt_help);
|
||||
|
||||
defined($SPECFILE=$ARGV[0]) || print_help("Please provide the spec file name!");
|
||||
|
||||
&print_help("Please define the location of the RPM repository!") if $opt_susebuild && !($opt_suserpms || $ENV{BUILD_RPMS});
|
||||
|
||||
unless ($opt_susebuildroot)
|
||||
{
|
||||
if ($ENV{BUILD_ROOT})
|
||||
{
|
||||
$opt_susebuildroot= $ENV{BUILD_ROOT};
|
||||
}
|
||||
else
|
||||
{
|
||||
$opt_susebuildroot="/var/tmp/build-root";
|
||||
}
|
||||
}
|
||||
|
||||
# Include helper functions
|
||||
$PWD= cwd();
|
||||
$LOGGER= "$PWD/logger.pm";
|
||||
if (-f "$LOGGER")
|
||||
{
|
||||
do "$LOGGER";
|
||||
}
|
||||
else
|
||||
{
|
||||
die "ERROR: $LOGGER cannot be found!\n";
|
||||
}
|
||||
|
||||
$subject= "RPM build for $SPECFILE failed" if $opt_mail;
|
||||
|
||||
# Open the spec file and extract the version number
|
||||
open(SPEC, $SPECFILE) or die "Unable to open \"$ARGV[0]\": $!";
|
||||
@spec= <SPEC>;
|
||||
close SPEC;
|
||||
|
||||
foreach (@spec)
|
||||
{
|
||||
if (m/^%define\s*mysql_version\s*(.*)/)
|
||||
{
|
||||
$VERSION= $1;
|
||||
$VERSION_SRPM=$VERSION;
|
||||
($MAJOR, $MINOR, $RELEASE)= split(/\./,$VERSION);
|
||||
$VERSION_SRPM= $MAJOR . '.' . $MINOR . '.' . $RELEASE;
|
||||
$VERSION_SRPM =~ s/\-\w+$//;
|
||||
($RELEASE, $SUFFIX)= split(/\-/,$RELEASE);
|
||||
$SUFFIX= "-" . $SUFFIX if ($SUFFIX);
|
||||
}
|
||||
}
|
||||
|
||||
$HOST= hostname();
|
||||
$HOST=~ /^([^.-]*)/;
|
||||
$HOST= $1;
|
||||
$LOGFILE= "$PWD/Logs/Do-rpm-$HOST-$MAJOR.$MINOR.log";
|
||||
&logger("Logging to $LOGFILE");
|
||||
|
||||
#
|
||||
# Override predefined Log file name
|
||||
#
|
||||
if (defined $opt_log)
|
||||
{
|
||||
if ($opt_log ne "")
|
||||
{
|
||||
if ($opt_log =~ /^\/.*/)
|
||||
{
|
||||
$LOGFILE= $opt_log;
|
||||
}
|
||||
else
|
||||
{
|
||||
$LOGFILE= $PWD . "/" . $opt_log;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&logger("Using spec file for version: $VERSION");
|
||||
|
||||
if ($opt_susebuild)
|
||||
{
|
||||
&susebuild;
|
||||
}
|
||||
else
|
||||
{
|
||||
&rpmbuild;
|
||||
}
|
||||
|
||||
&logger("SUCCESS: RPM files successfully created.") unless ($opt_dry_run);
|
||||
exit 0;
|
||||
|
||||
#
|
||||
# Build using SUSE's "build" script
|
||||
#
|
||||
sub susebuild
|
||||
{
|
||||
$BUILD= "/usr/bin/build";
|
||||
( -x $BUILD) ? &logger("$BUILD found, proceeding.") : &abort("$BUILD could not be found!");
|
||||
$command= "sudo $BUILD --clean";
|
||||
$command.= " --root=$opt_susebuildroot";
|
||||
$command.= " --rpms=$opt_suserpms" if $opt_suserpms;
|
||||
$command.= " $SPECFILE";
|
||||
&logger("Building RPMs using SUSE build.");
|
||||
&run_command($command, "Error while running the SUSE RPM build!");
|
||||
|
||||
#
|
||||
# Move the resulting RPMs into the pwd - we can use broad globs here
|
||||
# as the build root has been cleaned up before so there should not be
|
||||
# any residuals from previous build runs
|
||||
#
|
||||
$command= "cp";
|
||||
$command.= " -v " if ($opt_verbose);
|
||||
$command.= " $opt_susebuildroot/usr/src/packages/SRPMS/MySQL*.src.rpm $PWD";
|
||||
&logger("Copying source RPM to current dir.");
|
||||
&run_command($command, "Error moving source RPM!");
|
||||
|
||||
$command= "cp";
|
||||
$command.= " -v " if ($opt_verbose);
|
||||
$command.= " $opt_susebuildroot/usr/src/packages/RPMS/*/MySQL*.rpm $PWD";
|
||||
&logger("Copying binary RPMs to current dir.");
|
||||
&run_command($command, "Error moving binary RPMs!");
|
||||
}
|
||||
|
||||
#
|
||||
# Build using "plain" RPM
|
||||
#
|
||||
sub rpmbuild
|
||||
{
|
||||
|
||||
#
|
||||
# Newer RPM versions ship with a separate tool "rpmbuild" to build RPMs
|
||||
#
|
||||
if (-x "/usr/bin/rpmbuild")
|
||||
{
|
||||
$RPM= "/usr/bin/rpmbuild";
|
||||
$RMSOURCE= "--rmsource --rmspec";
|
||||
}
|
||||
else
|
||||
{
|
||||
$RPM= "/bin/rpm";
|
||||
$RMSOURCE= "--rmspec";
|
||||
}
|
||||
|
||||
if ($RPM)
|
||||
{
|
||||
&logger("Found rpm binary: $RPM");
|
||||
}
|
||||
else
|
||||
{
|
||||
&abort("Unable to find RPM binary!");
|
||||
}
|
||||
|
||||
#
|
||||
# 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`);
|
||||
|
||||
$SOURCEFILE= glob "mysql*-$VERSION.tar.gz";
|
||||
|
||||
&logger("Starting RPM build of MySQL-$VERSION on $HOST");
|
||||
|
||||
foreach $file ($SOURCEFILE, $SPECFILE)
|
||||
{
|
||||
&abort("Unable to find $file!") unless (-f "$file");
|
||||
}
|
||||
|
||||
#
|
||||
# Install source and spec file
|
||||
#
|
||||
&logger("Copying SOURCE and SPEC file to build directories.");
|
||||
unless ($opt_dry_run)
|
||||
{
|
||||
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";
|
||||
$command.= " --clean $RMSOURCE" 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_SRPM*.src.rpm $PWD";
|
||||
&logger("Moving source RPM to current dir.");
|
||||
&run_command($command, "Error moving source RPM!");
|
||||
|
||||
$command= "mv";
|
||||
$command.= " -v " if ($opt_verbose);
|
||||
$command.= " $RPMDIR/$RPMARCH/MySQL*$VERSION_SRPM*.$RPMARCH.rpm $PWD";
|
||||
&logger("Moving binary RPMs to current dir.");
|
||||
&run_command($command, "Error moving binary RPMs!");
|
||||
}
|
||||
|
||||
sub print_help
|
||||
{
|
||||
my $message= $_[0];
|
||||
if ($message ne "")
|
||||
{
|
||||
print "\n";
|
||||
print "ERROR: $message\n\n";
|
||||
}
|
||||
print <<EOF;
|
||||
|
||||
Usage: Do-rpm [options] <specfile>
|
||||
|
||||
Creates a binary RPM package out of a MySQL source distribution and moves
|
||||
the resulting RPMs into the current directory. <specfile> is the MySQL RPM
|
||||
spec file to use (e.g. mysql-4.0.17.spec).
|
||||
|
||||
This script expects to find the required MySQL source distribution
|
||||
(mysql-<version>.tar.gz) in the current directory.
|
||||
|
||||
Options:
|
||||
|
||||
--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>]
|
||||
-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
|
||||
-s, --susebuild Use the SUSE "build" script instead of RPM
|
||||
directly (requires sudo privileges to run the
|
||||
/usr/bin/build command)
|
||||
-r, --susebuildroot=<root> Use <root> as the build root directory for the
|
||||
SUSE "build" (default is /var/tmp/build-root
|
||||
or defined by the BUILD_ROOT environment
|
||||
variable)
|
||||
--suserpms=<path> Path to the SUSE RPM repository to build up
|
||||
the build root (mandatory option when using
|
||||
--susebuild and the BUILD_RPMS environment
|
||||
variable is not set.)
|
||||
-v, --verbose Verbose execution
|
||||
|
||||
Example:
|
||||
|
||||
Do-rpm -cv mysql-4.0.17.spec
|
||||
|
||||
EOF
|
||||
exit 1;
|
||||
}
|
|
@ -1,124 +0,0 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
use Getopt::Long;
|
||||
|
||||
$opt_help=0;
|
||||
$opt_tarball=$opt_builddir=$opt_suffix="";
|
||||
|
||||
GetOptions(
|
||||
"help",
|
||||
"tarball=s",
|
||||
"builddir=s",
|
||||
"suffix=s"
|
||||
) || print_help();
|
||||
|
||||
print_help() if ($opt_help);
|
||||
|
||||
chomp($MSDEV=`which msdev`);
|
||||
|
||||
if (!$opt_builddir) {
|
||||
$opt_builddir = "/cygdrive/c/mysql-win-build";
|
||||
}
|
||||
|
||||
$opt_tarball =~ /(mysql[^\/]*)-win-src\.tar/;
|
||||
$mysqlver=$1;
|
||||
$basedir = "$opt_builddir/$mysqlver";
|
||||
$scriptdir = `pwd`;
|
||||
|
||||
# Make sure build dir exists
|
||||
mkdir($opt_builddir);
|
||||
# Clean out any previous build
|
||||
system("rm -rf $basedir");
|
||||
|
||||
# Unpack in the script directory
|
||||
system("tar -zxvf $opt_tarball");
|
||||
# Move to the build directory
|
||||
system("mv $mysqlver $opt_builddir");
|
||||
|
||||
if (!chdir($basedir))
|
||||
{
|
||||
print "Do-win-build error: Could not change to $basedir";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# Check whether this is a classic edition build
|
||||
if ($opt_suffix =~ /-classic/)
|
||||
{
|
||||
# Blank out ha_innodb.cpp
|
||||
chmod 0644, 'sql/ha_innodb.cpp';
|
||||
open(OUT, '>', 'sql/ha_innodb.cpp');
|
||||
close(OUT);
|
||||
|
||||
# Remove HAVE_INNOBASE_DB from the requisite project files
|
||||
for $dspfile ('libmysqld/libmysqld.dsp', 'mysqldemb/mysqldemb.dsp', 'mysqlserver/mysqlserver.dsp', 'sql/mysqld.dsp', 'sql/mysqldmax.dsp')
|
||||
{
|
||||
open(IN, '<', $dspfile);
|
||||
open(OUT, '>', "$dspfile.tmp");
|
||||
while (readline IN)
|
||||
{
|
||||
s/\D \"HAVE_INNOBASE_DB\" //g;
|
||||
print OUT $_;
|
||||
}
|
||||
close(IN);
|
||||
close(OUT);
|
||||
unlink $dspfile;
|
||||
rename "$dspfile.tmp", $dspfile;
|
||||
}
|
||||
}
|
||||
|
||||
# Perform compilation
|
||||
system("\"$MSDEV\" mysql.dsw /MAKE \"ALL\" /OUT $mysqlver-build.log");
|
||||
|
||||
# Package binary
|
||||
system("./scripts/make_win_binary_distribution --suffix=$opt_suffix");
|
||||
|
||||
# Copy log back to script directory
|
||||
system("cp $mysqlver$suffix-build.log $scriptdir");
|
||||
|
||||
# Move binary package to script directory
|
||||
system("mv *.zip $scriptdir");
|
||||
|
||||
#
|
||||
# Print a help text message
|
||||
#
|
||||
sub print_help
|
||||
{
|
||||
print <<EOF;
|
||||
Usage: Do-compile-win [options] source-tarball
|
||||
|
||||
Unpacks a Windows source distribution on the local machine and
|
||||
compiles it using VC++ 6.0.
|
||||
|
||||
This script is intended for Cygwin Perl. You must have a working
|
||||
MSDEV.EXE in your path for compilation, as well as the following:
|
||||
|
||||
sed
|
||||
tar (GNU tar)
|
||||
which
|
||||
|
||||
|
||||
Options:
|
||||
|
||||
--help
|
||||
Print this text.
|
||||
|
||||
--builddir=<dir>
|
||||
Set the Cygwin path to build under; the tarball will actually
|
||||
be moved to <builddir>/mysql-<version>/tarball and extracted under
|
||||
<builddir>/mysql-<version>/build.
|
||||
Default: /cygdrive/c/mysql-win-build
|
||||
|
||||
--suffix=<suffix>
|
||||
If specified, the resulting binary will have the specified suffix
|
||||
in its name. If the suffix is "-classic", the project files will
|
||||
be stripped of all occurrences of HAVE_INNOBASE_DB and
|
||||
ha_innodb.cpp will be blanked out, to create classic edition
|
||||
server binaries.
|
||||
|
||||
--tarball=<file>
|
||||
Windows source tarball to use for this build. Must be of the form
|
||||
mysql[com]-x.x.x-win-src.tar.gz (REQUIRED)
|
||||
|
||||
EOF
|
||||
exit 1;
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
#! /bin/sh
|
||||
|
||||
CVSROOT=my@work.mysql.com:/home/cvs
|
||||
CVS_RSH=ssh
|
||||
TMPDIR=/tmp
|
||||
cd $TMPDIR
|
||||
[ -d mysql ] && rm -rf mysql
|
||||
CVSROOT=$CVSROOT CVS_RSH=$CVS_RSH cvs -z 9 co mysql && cd mysql && \
|
||||
chmod u+w -R * && BUILD/compile-pentium
|
||||
if test $? = 0
|
||||
then
|
||||
cd $TMPDIR && rm -rf mysql
|
||||
fi
|
||||
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
# Helper functions
|
||||
|
||||
#
|
||||
# Create a log entry
|
||||
#
|
||||
sub logger
|
||||
{
|
||||
my $message= $_[0];
|
||||
my $cmnd= $_[1];
|
||||
|
||||
print $message . "\n" if !$opt_quiet && !$opt_verbose && !$cmnd;
|
||||
print timestamp() . " " . $message . "\n" if $opt_verbose;
|
||||
if (defined $opt_log && !$opt_dry_run)
|
||||
{
|
||||
open LOG, ">>$LOGFILE" or die "Can't open logfile $LOGFILE!";
|
||||
print LOG timestamp() . " " . $message . "\n";
|
||||
close LOG;
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# run_command(<command>,<error message>)
|
||||
# Execute the given command or die with the respective error message
|
||||
# Just print out the command when doing a dry run
|
||||
#
|
||||
sub run_command
|
||||
{
|
||||
my $command= $_[0];
|
||||
my $errormsg= $_[1];
|
||||
if ($opt_dry_run)
|
||||
{
|
||||
print "$command\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
&logger($command, 1);
|
||||
|
||||
$command.= ';' unless ($command =~ m/^.*;$/);
|
||||
|
||||
$command =~ s/;/ >> $LOGFILE 2>&1;/g if defined $opt_log;
|
||||
$command =~ s/;/ > \/dev\/null;/g if (!$opt_verbose && !$opt_log);
|
||||
system($command) == 0 or &abort("$errormsg\n");
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# abort(<message>)
|
||||
# Exit with giving out the given error message or by sending
|
||||
# it via email to the given mail address (including a log file snippet,
|
||||
# if available)
|
||||
#
|
||||
sub abort
|
||||
{
|
||||
my $message= $_[0];
|
||||
my $messagefile;
|
||||
my $subject= "Bootstrap of $REPO failed" if $opt_mail;
|
||||
$message= "ERROR: " . $message;
|
||||
&logger($message);
|
||||
|
||||
if ($opt_mail && !$opt_dry_run)
|
||||
{
|
||||
$messagefile= "/tmp/message.$$";
|
||||
open(TMP,">$messagefile");
|
||||
print TMP "$message\n\n";
|
||||
close TMP;
|
||||
if (defined $opt_log)
|
||||
{
|
||||
system("tail -n 40 $LOGFILE >> $messagefile");
|
||||
}
|
||||
system("mail -s \"$subject\" $opt_mail < $messagefile");
|
||||
unlink($messagefile);
|
||||
}
|
||||
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# Create a time stamp for logging purposes
|
||||
sub timestamp
|
||||
{
|
||||
return &ymd() . " " . &hms();
|
||||
}
|
||||
|
||||
#
|
||||
# return the current time as a string (HH:MM:SS)
|
||||
#
|
||||
sub hms
|
||||
{
|
||||
my @ta= localtime(time());
|
||||
my $h= $ta[2];
|
||||
$h= "0" . "$h" if ($h <= 9);
|
||||
my $m= $ta[1];
|
||||
$m= "0" . "$m" if ($m <= 9);
|
||||
my $s= $ta[0];
|
||||
$s="0" . "$s" if ($s <= 9);
|
||||
|
||||
return "$h:$m:$s";
|
||||
}
|
||||
|
||||
#
|
||||
# return the current date as a string (YYYYMMDD)
|
||||
#
|
||||
sub ymd
|
||||
{
|
||||
my @ta=localtime(time());
|
||||
my $d=$ta[3];
|
||||
$d="0" . "$d" if ($d <= 9);
|
||||
my $m=$ta[4]+1;
|
||||
$m="0" . "$m" if ($m <= 9);
|
||||
my $y=1900+$ta[5];
|
||||
|
||||
return "$y$m$d";
|
||||
}
|
|
@ -1,141 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# my_md5sum
|
||||
#
|
||||
# Script to clone the 'md5sum' command found on modern systems, since that
|
||||
# command is not always found on all systems.
|
||||
#
|
||||
# Use the "--help" option for more info!
|
||||
#
|
||||
# Written by Matt Wagner <matt@mysql.com>
|
||||
#
|
||||
use strict;
|
||||
|
||||
#
|
||||
# Use local perl libraries first. 'unshift' adds to the front of @INC
|
||||
# The local perl library dir hidden is $HOME/.perllibs on each build host
|
||||
#
|
||||
BEGIN
|
||||
{
|
||||
my $homedir= $ENV{HOME};
|
||||
unshift (@INC, "$homedir/.perllibs");
|
||||
}
|
||||
|
||||
use Digest::MD5;
|
||||
use Getopt::Long;
|
||||
|
||||
my $VER= "1.3";
|
||||
my $EXIT= 0;
|
||||
|
||||
#
|
||||
# Strip the leading path info off the program name ($0). We want 'my_md5sum'
|
||||
# not './my_md5sum'.
|
||||
#
|
||||
$0=~ s/^.*\/(.+)$/$1/;
|
||||
|
||||
my ($opt_check, $opt_help)= undef;
|
||||
|
||||
GetOptions(
|
||||
"check|c" => \$opt_check,
|
||||
"help|h" => \$opt_help,
|
||||
) || usage();
|
||||
|
||||
#
|
||||
# Put all the [file1 file2 file3 ...]'s into an array
|
||||
#
|
||||
my @files = @ARGV;
|
||||
|
||||
#
|
||||
# Give the "--help" text if:
|
||||
# - "--help|-h" was specified
|
||||
# - The number of files given as arguments is nil
|
||||
# - The "--check|-c" option is used with more than one [file] argument
|
||||
#
|
||||
usage() if $opt_help || $#files == -1 || ($opt_check && $#files > 0);
|
||||
|
||||
# If "--check|-c", then go into checking
|
||||
if ($opt_check)
|
||||
{
|
||||
open (CHECKFILE, $files[0]) or die "$files[0]: $!";
|
||||
|
||||
while (<CHECKFILE>)
|
||||
{
|
||||
#
|
||||
# Goto the next line in the file if it does not match a typical
|
||||
# digest line like:
|
||||
#
|
||||
# f1007efa2c72daa693981ec764cdeaca Bootstrap
|
||||
#
|
||||
next if $_!~ m/^([a-z0-9]{32})\s+(.+)$/;
|
||||
|
||||
# Collect the trappings from the above regex
|
||||
my $checksum= $1;
|
||||
my $checkfile= $2;
|
||||
|
||||
# Generate a fresh MD5 for the file in question
|
||||
my $digest= &mkmd5($checkfile);
|
||||
|
||||
# Check the fresh MD5 against what is recorded in the file
|
||||
# Print an error message if they don't match, else print OK
|
||||
print "$checkfile: FAILED\n" if $digest ne $checksum;
|
||||
print "$checkfile: OK\n" if $digest eq $checksum;
|
||||
|
||||
# Set the exit() status to non-zero if FAILED
|
||||
$EXIT= 1 if $digest ne $checksum;
|
||||
}
|
||||
}
|
||||
# Else generate the MD5 digest to STDOUT
|
||||
else
|
||||
{
|
||||
foreach my $file (@files)
|
||||
{
|
||||
my $digest= &mkmd5($file);
|
||||
|
||||
print "$digest $file\n";
|
||||
}
|
||||
}
|
||||
|
||||
exit($EXIT);
|
||||
|
||||
|
||||
#
|
||||
# This routine generates the MD5 digest of a file
|
||||
#
|
||||
sub mkmd5
|
||||
{
|
||||
my $file= shift;
|
||||
|
||||
open (FILE, $file) or die "$file: $!";
|
||||
binmode(FILE);
|
||||
|
||||
my $digest= Digest::MD5->new->addfile(*FILE)->hexdigest;
|
||||
|
||||
close FILE;
|
||||
|
||||
return $digest;
|
||||
}
|
||||
|
||||
#
|
||||
# Print the help text
|
||||
#
|
||||
sub usage
|
||||
{
|
||||
print <<EOF;
|
||||
|
||||
$0 version $VER by Matt Wagner <matt\@mysql.com>
|
||||
|
||||
Usage:
|
||||
$0 [-c [file]] | [file1...]
|
||||
Generates or checks MD5 message digests.
|
||||
|
||||
Options:
|
||||
-c, --check Check message digests (default is generate)
|
||||
-h, --help Display this text and exit
|
||||
|
||||
The input for -c should be the list of message digests and file names that is
|
||||
printed on STDOUT by this program when it generates digests.
|
||||
|
||||
EOF
|
||||
|
||||
exit(0);
|
||||
}
|
|
@ -1,372 +0,0 @@
|
|||
#!/usr/bin/perl -wi
|
||||
|
||||
# Untar a MySQL distribution, change the copyright texts,
|
||||
# pack it up again to a given directory
|
||||
|
||||
$VER="1.5";
|
||||
|
||||
use Cwd;
|
||||
use File::Basename;
|
||||
use File::Copy;
|
||||
use Getopt::Long;
|
||||
|
||||
$opt_help = 0;
|
||||
$opt_version = 0;
|
||||
$opt_verbose = 0;
|
||||
$opt_target = "mysql-copyright-target-";
|
||||
$opt_target .= `date +%d%m%y-%H%M%S`;
|
||||
chop $opt_target;
|
||||
|
||||
GetOptions("help","version","target=s", "verbose") || error();
|
||||
|
||||
# fix the directory prefix for target dir
|
||||
|
||||
$WD= cwd();
|
||||
my $win_flag = 0;
|
||||
$opt_target= $WD . '/' . $opt_target;
|
||||
|
||||
&main();
|
||||
|
||||
####
|
||||
#### main
|
||||
####
|
||||
|
||||
sub main
|
||||
{
|
||||
my $REG_BASENAME = '[a-z0-9A-Z\-\_\+]+';
|
||||
my $REG_VERSION = '[0-9\.\-]+[a-z]?[0-9\.\-]+?(.alpha|.beta|.gamma|pre\d|[0-9\.\-a-z])?';
|
||||
my $target;
|
||||
|
||||
if ($opt_version)
|
||||
{
|
||||
print "$0 version $VER by Jani Tolonen\n";
|
||||
exit(0);
|
||||
}
|
||||
usage() if ($opt_help);
|
||||
print error() if ($#ARGV == -1);
|
||||
|
||||
`mkdir -p $opt_target`;
|
||||
$pec= $? >> 8;
|
||||
die "Couldn't make the target directory!\n" if ($pec);
|
||||
|
||||
for ($i=0; $ARGV[$i]; $i++)
|
||||
{
|
||||
my $distfile= $ARGV[$i];
|
||||
$win_flag = ($distfile =~ /win-src/) ? 1 : 0;
|
||||
my $dir;
|
||||
|
||||
$dir= "mysql-copyright-";
|
||||
$dir.= `date +%d%m%y-%H%M%S`;
|
||||
chop $dir;
|
||||
|
||||
if (!(mkdir "$dir", 0700))
|
||||
{
|
||||
die "Couldn't make directory $dir!";
|
||||
}
|
||||
if (!(chdir "$dir"))
|
||||
{
|
||||
abort($dir, "Couldn't cd to $dir!");
|
||||
}
|
||||
# if the distfile is mysql-3.22.22-alpha.tar.gz, then
|
||||
# distname is 'mysql-3.22.22-alpha' and suffix '.tar.gz'
|
||||
if ($distfile =~
|
||||
m/^($REG_BASENAME)([\-\_])($REG_VERSION){1}([\.\-\+]\w+\-\w+)?[\.\-\+](.*)?$/xo)
|
||||
{
|
||||
$distname= $1.$2.$3;
|
||||
$suffix= $5;
|
||||
$fileext = $6;
|
||||
$newdistname= $1."com".$2.$3;
|
||||
$newdistname .= $suffix if $win_flag;
|
||||
}
|
||||
# find out the extract path (should be same as distname!)
|
||||
chomp($destdir= `tar ztf ../$distfile | head -1`);
|
||||
# remove slash from the end
|
||||
$destdir= substr($destdir, 0, -1);
|
||||
|
||||
if ("$destdir" ne "$distname")
|
||||
{
|
||||
print "Destination directory (the directory that will be extracted\n";
|
||||
print "from the original distribution file) differs from the\n";
|
||||
print "distribution name! Are you sure you want to continue? (Y/N) [N]:";
|
||||
$ans= my_read(1);
|
||||
abort($dir, "Aborted!") if ("$ans" ne "Y" && "$ans" ne "y");
|
||||
}
|
||||
|
||||
# everything should be ok, continue with extracting..
|
||||
`tar xfz ../$distfile`;
|
||||
$pec= $? >> 8;
|
||||
abort($dir, "Extracting from tar failed!\n") if ($pec);
|
||||
|
||||
# remove the 'PUBLIC' file from distribution and copy MySQLEULA.txt
|
||||
# on the toplevel of the directory instead. file 'PUBLIC' shouldn't
|
||||
# exist in the new mysql distributions, but let's be sure..
|
||||
unlink("$destdir/PUBLIC", "$destdir/README");
|
||||
unlink("$destdir/COPYING", "$destdir/EXCEPTIONS-CLIENT");
|
||||
copy("$WD/Docs/MySQLEULA.txt", "$destdir");
|
||||
|
||||
# remove subdirectories 'bdb', 'cmd-line-utils/readline'
|
||||
my @extra_fat= ('bdb', 'cmd-line-utils/readline');
|
||||
|
||||
foreach my $fat (@extra_fat)
|
||||
{
|
||||
&trim_the_fat($fat);
|
||||
}
|
||||
|
||||
# fix file copyrights
|
||||
&fix_usage_copyright();
|
||||
&add_copyright();
|
||||
|
||||
# fix LICENSE tag in include/mysql_version.h
|
||||
&fix_mysql_version();
|
||||
|
||||
# apply "autotools" - must be last to ensure proper timestamps
|
||||
&run_autotools();
|
||||
|
||||
# rename the directory with new distribution name
|
||||
chdir("$WD/$dir");
|
||||
print "renaming $destdir $newdistname\n" if $opt_verbose;
|
||||
rename($destdir, $newdistname);
|
||||
|
||||
# tar the new distribution
|
||||
`tar cz -f $WD/$newdistname.tar.gz $newdistname`;
|
||||
$pec= $? >> 8;
|
||||
abort($dir, "Making new tar archive failed!\n") if ($pec);
|
||||
|
||||
# remove temporary directory
|
||||
chdir($WD) or print "$! Unable to move up one dir\n";
|
||||
my $cwd = getcwd();
|
||||
print "current dir is $cwd\n" if $opt_verbose ;
|
||||
if (-e $dir) {
|
||||
print "Trying to delete $dir\n" if $opt_verbose;
|
||||
if ( system("rm -rf $dir")){
|
||||
print "$! Unable to delete $dir!\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
####
|
||||
#### This function will s/GPL/Commercial/ in include/mysql_version.h for the
|
||||
#### LICENSE tag.
|
||||
####
|
||||
sub fix_mysql_version
|
||||
{
|
||||
my $cwd= getcwd();
|
||||
chdir("$destdir");
|
||||
my $header_file= (-f 'include/mysql_version.h.in')? 'include/mysql_version.h.in' : 'include/mysql_version.h';
|
||||
|
||||
open(MYSQL_VERSION,"<$header_file") or die "Unable to open $header_file for read: $!\n";
|
||||
undef $/;
|
||||
my $mysql_version= <MYSQL_VERSION>;
|
||||
close(MYSQL_VERSION);
|
||||
|
||||
$mysql_version=~ s/\#define LICENSE[\s\t]+GPL/#define LICENSE Commercial/;
|
||||
|
||||
open(MYSQL_VERSION,">$header_file") or die "Unable to open $header_file for write: $!\n";
|
||||
print MYSQL_VERSION $mysql_version;
|
||||
close(MYSQL_VERSION);
|
||||
chdir("$cwd");
|
||||
}
|
||||
|
||||
####
|
||||
#### This function will remove unwanted parts of a src tree for the mysqlcom
|
||||
#### distributions.
|
||||
####
|
||||
|
||||
sub trim_the_fat
|
||||
{
|
||||
my $the_fat= shift;
|
||||
my $cwd= getcwd();
|
||||
|
||||
chdir("$destdir");
|
||||
if ( -d "${the_fat}" )
|
||||
{
|
||||
system("rm -rf ${the_fat}");
|
||||
if (!$win_flag)
|
||||
{
|
||||
open(CONFIG_IN,"<configure.in") or die "Unable to open configure.in for read: $!\n";
|
||||
undef $/;
|
||||
my $config_in= <CONFIG_IN>;
|
||||
close(CONFIG_IN);
|
||||
|
||||
#
|
||||
# If $the_fat Makefile line closes the parenthesis, then
|
||||
# replace that line with just the closing parenthesis.
|
||||
#
|
||||
if ($config_in=~ m|${the_fat}/Makefile\)\n?|)
|
||||
{
|
||||
$config_in=~ s|${the_fat}/Makefile(\)\n?)|$1|;
|
||||
}
|
||||
#
|
||||
# Else just delete the line
|
||||
#
|
||||
else
|
||||
{
|
||||
$config_in=~ s|${the_fat}/Makefile dnl\n?||;
|
||||
}
|
||||
|
||||
open(CONFIG_IN,">configure.in") or die "Unable to open configure.in for write: $!\n";
|
||||
print CONFIG_IN $config_in;
|
||||
close(CONFIG_IN);
|
||||
}
|
||||
}
|
||||
chdir("$cwd");
|
||||
}
|
||||
|
||||
|
||||
####
|
||||
#### This function will run the autotools on the reduced source tree.
|
||||
####
|
||||
|
||||
sub run_autotools
|
||||
{
|
||||
my $cwd= getcwd();
|
||||
|
||||
if (!$win_flag)
|
||||
{
|
||||
chdir("$destdir");
|
||||
unlink ("configure") or die "Can't delete $destdir/configure: $!\n";
|
||||
|
||||
# File "configure.in" has already been modified by "trim_the_fat()"
|
||||
|
||||
# It must be ensured that the timestamps of the relevant files are really
|
||||
# ascending, for otherwise the Makefile may cause a re-run of these
|
||||
# autotools. Experience shows that deletion is the only safe way.
|
||||
unlink ("config.h.in") or die "Can't delete $destdir/config.h.in: $!\n";
|
||||
unlink ("aclocal.m4") or die "Can't delete $destdir/aclocal.m4: $!\n";
|
||||
|
||||
# These sleep commands also ensure the ascending order.
|
||||
`aclocal && sleep 2 && autoheader && sleep 2 && automake && sleep 2 && autoconf`;
|
||||
die "'./configure' was not produced!" unless (-f "configure");
|
||||
|
||||
if (-d "autom4te.cache") {
|
||||
print "Trying to delete autom4te.cache dir\n" if $opt_verbose;
|
||||
system("rm -rf autom4te.cache") or print "Unable to delete autom4te.cache dir: $!\n";
|
||||
}
|
||||
|
||||
chdir("$cwd");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
####
|
||||
#### mysqld and MySQL client programs have a usage printed with --help.
|
||||
#### This usage includes a copyright, which needs to be modified
|
||||
####
|
||||
sub fix_usage_copyright
|
||||
{
|
||||
my $findlist = `find . -type f -name \"*.c*\"`;
|
||||
my @files = split("\n", $findlist);
|
||||
my $cwd = getcwd();
|
||||
|
||||
foreach my $file (@files)
|
||||
{
|
||||
next if ! -f $file;
|
||||
print "processing file $file in cwd $cwd\n" if $opt_verbose;
|
||||
`replace "This is free software," "This is commercial software," "and you are welcome to modify and redistribute it under the GPL license" "please see the file MySQLEULA.txt for details" -- "$file"` ;
|
||||
}
|
||||
}
|
||||
|
||||
####
|
||||
#### change the copyright text in the beginning of the files
|
||||
####
|
||||
|
||||
sub add_copyright
|
||||
{
|
||||
my $findlist = `find . -type f -name "*"`;
|
||||
my @files = split("\n", $findlist);
|
||||
my $cwd = getcwd();
|
||||
|
||||
foreach my $file (@files)
|
||||
{
|
||||
next if ! -f $file;
|
||||
next if -B $file;
|
||||
print "processing file $file in cwd $cwd\n" if $opt_verbose;
|
||||
`$WD/Build-tools/mysql-copyright-2 "$file"`;
|
||||
}
|
||||
}
|
||||
|
||||
####
|
||||
#### read stdin
|
||||
####
|
||||
|
||||
sub my_read
|
||||
{
|
||||
($length)= @_; # Max allowed length for the string.
|
||||
|
||||
$input= getc(STDIN);
|
||||
if($input eq "\n")
|
||||
{
|
||||
return "\n";
|
||||
}
|
||||
for($new_input= getc(STDIN); $new_input ne "\n" ;)
|
||||
{
|
||||
if(length($input) < $length)
|
||||
{
|
||||
$input.= $new_input;
|
||||
}
|
||||
$new_input= getc(STDIN);
|
||||
}
|
||||
return $input;
|
||||
}
|
||||
|
||||
####
|
||||
#### abort
|
||||
####
|
||||
|
||||
sub abort
|
||||
{
|
||||
my ($dir, $errstr)= @_;
|
||||
# remove newly made directory and it's contents
|
||||
print "$errstr\n";
|
||||
chdir "..";
|
||||
print "Removing directory $dir...\n";
|
||||
`rm -rf $dir`;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
####
|
||||
#### usage
|
||||
####
|
||||
|
||||
sub usage
|
||||
{
|
||||
print <<EOF;
|
||||
$0 version $VER by Jani Tolonen
|
||||
|
||||
Description: The program takes one or more MySQL distributions as an
|
||||
argument(s), extracts them, changes the copyright text in the
|
||||
distribution files and makes a new distribution with suffix "com" in
|
||||
the basename to directory mysql-copyright-target-DATE, where the
|
||||
command was issued. For example: mysql-3.23.18-beta.tar.gz ->
|
||||
mysqlcom-3.23.18-beta.tar.gz. DATE is of form DDMMYY-HHMMSS. The
|
||||
target directory can be changed with option
|
||||
--target=... mysql-copyright consists of two perl programs, this one
|
||||
and another, mysql-copyright-2. Make sure the second part of the
|
||||
script is available to the main script.
|
||||
|
||||
Usage:
|
||||
$0 [options] file1 [file2 file3...]
|
||||
|
||||
Options:
|
||||
--help Show this help and exit.
|
||||
--target Target directory for new distribution files.
|
||||
'.' can be used for the current directory.
|
||||
(Default: $opt_target)
|
||||
EOF
|
||||
exit(0);
|
||||
}
|
||||
|
||||
####
|
||||
#### error
|
||||
####
|
||||
|
||||
sub error
|
||||
{
|
||||
if ($#ARGV == -1)
|
||||
{
|
||||
print "Too few arguments to $0!\n";
|
||||
}
|
||||
exit(1);
|
||||
}
|
|
@ -1,169 +0,0 @@
|
|||
#!/usr/bin/perl -i
|
||||
|
||||
# Add the header to all given files
|
||||
# This program asumes that after the copyright there is a empty line
|
||||
#
|
||||
|
||||
$opt_v= 0;
|
||||
require "getopts.pl";
|
||||
Getopts("v") || die "Aborted";
|
||||
|
||||
@copyright=
|
||||
(
|
||||
"Copyright (C) 2000 MySQL AB & MySQL Finland AB",
|
||||
"",
|
||||
"This software is distributed with NO WARRANTY OF ANY KIND. No author or",
|
||||
"distributor accepts any responsibility for the consequences of using it, or",
|
||||
"for whether it serves any particular purpose or works at all, unless he or",
|
||||
"she says so in writing. Refer to the MySQLEULA.txt file for details.",
|
||||
"",
|
||||
"Every copy of this file must include a copy of the License, normally in a",
|
||||
"plain ASCII text file named MySQLEULA.txt. The License grants you the right to",
|
||||
"copy, modify and redistribute this file, but only under certain conditions",
|
||||
"described in the License. Among other things, the License requires that",
|
||||
"the copyright notice and this notice be preserved on all copies"
|
||||
);
|
||||
|
||||
while (<>)
|
||||
{
|
||||
if (!$first++)
|
||||
{
|
||||
add_copyright($_);
|
||||
}
|
||||
if ($in_copyright)
|
||||
{
|
||||
$in_copyright=check_in_copyright($_);
|
||||
}
|
||||
print $_ if (!$in_copyright);
|
||||
if (eof)
|
||||
{
|
||||
$first=0; $in_copyright=1;
|
||||
}
|
||||
}
|
||||
|
||||
exit 0;
|
||||
|
||||
sub add_copyright
|
||||
{
|
||||
my ($line)=@_;
|
||||
my ($row);
|
||||
|
||||
$in_copyright= $line =~ /copyright/i;
|
||||
$found_end_copyright=$skip_this_line=0;
|
||||
|
||||
if (!($line =~ /Monty/ || $line =~ /MySQL AB/))
|
||||
{
|
||||
$in_copyright=0;
|
||||
print STDERR "File with unknown copyright ", $ARGV,"\n" if ($opt_v);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
print STDERR "To be Changed: ", $ARGV, "\n" if ($opt_v);
|
||||
}
|
||||
if ($ARGV =~ /Makefile/ ||
|
||||
$ARGV =~ /makefile/)
|
||||
{ # Makefile
|
||||
$start_copyright="# ";
|
||||
$line_copyright= "# ";
|
||||
$end_copyright= "";
|
||||
}
|
||||
elsif ($line =~ "^#!")
|
||||
{ # Shell script
|
||||
$start_copyright="# ";
|
||||
$line_copyright= "# ";
|
||||
$end_copyright= "";
|
||||
$skip_this_line=1;
|
||||
print $line;
|
||||
while ($line=<>) # Copy all until new line or copyright
|
||||
{
|
||||
if ($line =~ /copyright/i)
|
||||
{
|
||||
last;
|
||||
}
|
||||
print $line;
|
||||
last if ($line =~ /^(\s|\n)*$/);
|
||||
}
|
||||
$in_copyright=1;
|
||||
}
|
||||
elsif ($ARGV =~ /\.c$/ ||
|
||||
$ARGV =~ /\.cc$/ ||
|
||||
$ARGV =~ /\.h$/ ||
|
||||
$ARGV =~ /\.cpp$/ ||
|
||||
$ARGV =~ /\.txt$/ ||
|
||||
$ARGV =~ /\.yy$/)
|
||||
{
|
||||
$start_copyright="/* ";
|
||||
$line_copyright= " ";
|
||||
$end_copyright= "*/";
|
||||
}
|
||||
elsif ($ARGV =~ /-x86\.s$/)
|
||||
{
|
||||
$start_copyright="# ";
|
||||
$line_copyright= "# ";
|
||||
$end_copyright= "";
|
||||
}
|
||||
elsif ($ARGV =~ /\.s$/)
|
||||
{
|
||||
$start_copyright="! ";
|
||||
$line_copyright= "! ";
|
||||
$end_copyright= "";
|
||||
}
|
||||
elsif ($ARGV =~ /\.asm$/)
|
||||
{
|
||||
$start_copyright="; ";
|
||||
$line_copyright= "; ";
|
||||
$end_copyright= "";
|
||||
}
|
||||
else # Unknown file
|
||||
{
|
||||
$in_copyright=0;
|
||||
print STDERR "Unknown file type ", $ARGV,"\n" if ($opt_v);
|
||||
return;
|
||||
}
|
||||
$data=\@copyright;
|
||||
|
||||
for ($row=0 ; $row <= $#$data ; $row++)
|
||||
{
|
||||
print $row == 0 ? $start_copyright : $line_copyright;
|
||||
print $data->[$row];
|
||||
print $row != $#$data ? "\n" : $end_copyright . "\n";
|
||||
}
|
||||
print "\n";
|
||||
$end_copyright =~ /\s*([^\s]+)\s*(([^\s].*)|)$/; # Remove pre and post spaces
|
||||
}
|
||||
|
||||
#
|
||||
# Return 1 if in copyright
|
||||
#
|
||||
|
||||
sub check_in_copyright
|
||||
{
|
||||
my ($line)=@_;
|
||||
$line =~ /^(.*[^\s])(\s|\n|\r)*$/; # Remove end space and newline
|
||||
$line=$1;
|
||||
if (!$line)
|
||||
{
|
||||
$found_end_copyright=1 if (!length($end_copyright));
|
||||
return 1; # Skip empty lines
|
||||
}
|
||||
return 0 if ($found_end_copyright);
|
||||
if ($end_copyright)
|
||||
{
|
||||
if (index($line,$end_copyright) != -1)
|
||||
{
|
||||
$found_end_copyright=1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
if ($line =~ /copyright/i || index($line . " ",$line_copyright) == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if ($skip_this_line)
|
||||
{
|
||||
$skip_this_line=0;
|
||||
return 1;
|
||||
}
|
||||
return 0; # Can't trust the empty copyright line yet
|
||||
}
|
|
@ -1,116 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
package NEWEST;
|
||||
|
||||
use Getopt::Long;
|
||||
use File::Basename;
|
||||
|
||||
my $src_dir;
|
||||
my $basename;
|
||||
my $type = "tar.gz";
|
||||
my $versions;
|
||||
my $help;
|
||||
my %KEEPER;
|
||||
|
||||
|
||||
GetOptions(
|
||||
"src_dir=s" => \$src_dir,
|
||||
"basename=s" => \$basename,
|
||||
"type=s" => \$type,
|
||||
"versions!" => \$versions,
|
||||
"help!" => \$help
|
||||
);
|
||||
|
||||
if (!defined $src_dir || !defined $basename) {
|
||||
$help = 1;
|
||||
}
|
||||
|
||||
if ($help) {
|
||||
&help();
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
&extract_version(\$src_dir, \$basename, \$type, \%KEEPER);
|
||||
&print_max(\%KEEPER, \$type, \$versions, &find_max(\%KEEPER));
|
||||
|
||||
|
||||
|
||||
sub extract_version {
|
||||
my $src_dir = shift;
|
||||
my $basename = shift;
|
||||
my $type = shift;
|
||||
my $KEEPER = shift;
|
||||
|
||||
while (glob("$${src_dir}/$${basename}*")) {
|
||||
my $base = basename("$_",".$${type}");
|
||||
my @ver = split /-/, $base;
|
||||
my @nums = split /\./, $ver[$#ver];
|
||||
|
||||
my $new;
|
||||
for (my $i=0; $i<$#nums+1; $i++) {
|
||||
$new =~ s/^([0-9]*)([a-zA-Z]*)$/$1/;
|
||||
$new .= 10000+$nums[$i];
|
||||
$new .= $2;
|
||||
}
|
||||
$KEEPER->{"$new"} = [$base,$ver[$#ver]];
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub find_max {
|
||||
my $KEEPER = shift;
|
||||
|
||||
return reverse sort (keys %$KEEPER);
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub print_max {
|
||||
my $KEEPER = shift;
|
||||
my $type = shift;
|
||||
my $versions = shift;
|
||||
my $max_key = shift;
|
||||
|
||||
if ($${versions}) {
|
||||
print "$KEEPER->{$max_key}->[1]\n";
|
||||
}
|
||||
else {
|
||||
print "$KEEPER->{$max_key}->[0]" . ".$${type}\n";
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub help {
|
||||
|
||||
print qq("newest" finds the tarball in a given directory with the newest version number
|
||||
and returns it's filename. "newest" is meant to be embedded in UNIX shell
|
||||
scripts.
|
||||
|
||||
Usage:
|
||||
|
||||
newest -(src_dir | s) /path/to/dir/with/tarballs
|
||||
-(basename | b) BaseName (ex. BaseName-2.10.tar.gz)
|
||||
-(type | t) Type of file (default: tar.gz)
|
||||
-(versions | v) Print only version information
|
||||
-(help | h) Prints usage help
|
||||
|
||||
Ex: \$ /opt/bin/newest -s /opt/incoming/pm_modules -b Data-Dumper
|
||||
Data-Dumper-2.101.tar.gz
|
||||
|
||||
Both arguments, '-s' and '-b' are required; '-t' and '-v' are optional.
|
||||
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue