mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
BitKeeper/etc/logging_ok: auto-union Build-tools/mysql-copyright-2: Auto merged include/violite.h: Auto merged innobase/btr/btr0btr.c: Auto merged innobase/buf/buf0buf.c: Auto merged innobase/buf/buf0flu.c: Auto merged innobase/buf/buf0lru.c: Auto merged innobase/dict/dict0dict.c: Auto merged innobase/dict/dict0mem.c: Auto merged innobase/fsp/fsp0fsp.c: Auto merged innobase/fut/fut0lst.c: Auto merged innobase/ha/hash0hash.c: Auto merged innobase/include/buf0buf.ic: Auto merged innobase/include/buf0lru.h: Auto merged innobase/include/data0data.h: Auto merged innobase/include/dict0dict.h: Auto merged innobase/include/dict0mem.h: Auto merged innobase/include/fsp0fsp.h: Auto merged innobase/include/hash0hash.h: Auto merged innobase/include/lock0lock.h: Auto merged innobase/include/log0log.h: Auto merged innobase/include/log0log.ic: Auto merged innobase/include/mem0dbg.ic: Auto merged innobase/include/mem0pool.h: Auto merged innobase/include/mtr0mtr.h: Auto merged innobase/include/sync0rw.h: Auto merged innobase/include/sync0sync.h: Auto merged innobase/include/trx0roll.h: Auto merged innobase/include/trx0trx.h: Auto merged innobase/include/ut0mem.h: Auto merged innobase/lock/lock0lock.c: Auto merged innobase/log/log0log.c: Auto merged innobase/mem/mem0dbg.c: Auto merged innobase/mem/mem0pool.c: Auto merged innobase/mtr/mtr0mtr.c: Auto merged innobase/pars/lexyy.c: Auto merged innobase/pars/pars0opt.c: Auto merged innobase/que/que0que.c: Auto merged innobase/rem/rem0cmp.c: Auto merged innobase/row/row0ins.c: Auto merged innobase/row/row0mysql.c: Auto merged innobase/row/row0upd.c: Auto merged innobase/srv/srv0srv.c: Auto merged innobase/srv/srv0start.c: Auto merged innobase/sync/sync0rw.c: Auto merged innobase/sync/sync0sync.c: Auto merged innobase/thr/thr0loc.c: Auto merged innobase/trx/trx0purge.c: Auto merged innobase/trx/trx0roll.c: Auto merged innobase/trx/trx0sys.c: Auto merged innobase/trx/trx0trx.c: Auto merged innobase/usr/usr0sess.c: Auto merged innobase/ut/ut0mem.c: Auto merged mysql-test/r/func_if.result: Auto merged mysql-test/r/type_date.result: Auto merged mysql-test/t/type_date.test: Auto merged mysql-test/t/type_decimal.test: Auto merged mysys/mf_tempfile.c: Auto merged netware/BUILD/nwbootstrap: Auto merged netware/Makefile.am: Auto merged scripts/mysqld_safe.sh: Auto merged sql/item_cmpfunc.cc: Auto merged mysql-test/t/func_if.test: Auto merged sql/mysqld.cc: Auto merged sql/opt_range.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_parse.cc: Auto merged support-files/my-innodb-heavy-4G.cnf.sh: Auto merged Build-tools/Do-compile: Merge with 4.0 Build-tools/mysql-copyright: Merge with 4.0 client/mysqltest.c: Merge with 4.0 include/my_global.h: Merge with 4.0 innobase/buf/buf0rea.c: Merge with 4.0 innobase/data/data0type.c: Merge with 4.0 innobase/ibuf/ibuf0ibuf.c: Merge with 4.0 innobase/include/buf0buf.h: Merge with 4.0 innobase/include/data0type.h: Merge with 4.0 innobase/include/mem0mem.h: Merge with 4.0 innobase/include/mem0mem.ic: Merge with 4.0 innobase/log/log0recv.c: Merge with 4.0 libmysql/libmysql.c: Merge with 4.0 libmysqld/Makefile.am: Merge with 4.0 mysql-test/r/range.result: Merge with 4.0 mysql-test/r/type_decimal.result: Merge with 4.0 mysql-test/t/range.test: Merge with 4.0 netware/BUILD/mwenv: Merge with 4.0 netware/mysql_test_run.c: Merge with 4.0 scripts/mysql_install_db.sh: Merge with 4.0 sql/field.cc: Merge with 4.0 sql/field.h: Merge with 4.0 sql/item_cmpfunc.h: Merge with 4.0 support-files/my-huge.cnf.sh: Merge with 4.0 support-files/my-large.cnf.sh: Merge with 4.0 support-files/my-medium.cnf.sh: Merge with 4.0 support-files/my-small.cnf.sh: Merge with 4.0 support-files/mysql.spec.sh: Merge with 4.0
277 lines
7.0 KiB
Perl
Executable File
277 lines
7.0 KiB
Perl
Executable File
#!/usr/bin/perl -i
|
|
|
|
# Untar a MySQL distribution, change the copyright texts,
|
|
# pack it up again to a given directory
|
|
|
|
$VER="1.3";
|
|
|
|
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");
|
|
copy("$WD/Docs/MySQLEULA.txt", "$destdir");
|
|
|
|
# remove readline subdir and update configure accordingly
|
|
system("rm -rf $destdir/cmd-line-utils/readline");
|
|
if ($win_flag) {
|
|
chdir("$destdir") or (print "$! Unable to change directory to $desdir!\n" && exit(0));
|
|
} else {
|
|
chdir("$destdir");
|
|
unlink ("configure") or die "Can't delete $destdir/configure: $!\n";
|
|
open(CONFIGURE,"<configure.in") or die "$! Unable to open configure.in to read from!\n";
|
|
undef $/;
|
|
my $configure = <CONFIGURE>;
|
|
close(CONFIGURE);
|
|
$configure =~ s|cmd\-line\-utils/readline/Makefile dnl\n?||g;
|
|
open(CONFIGURE,">configure.in") or die "$! Unable to open configure.in to write to!\n";
|
|
print CONFIGURE $configure;
|
|
close(CONFIGURE);
|
|
`autoconf`;
|
|
if (! -f "configure") {
|
|
print "\"./configure\" was not produced, exiting!\n";
|
|
exit(0);
|
|
}
|
|
}
|
|
|
|
# fix file copyrights
|
|
&fix_usage_copyright();
|
|
&add_copyright();
|
|
|
|
# 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";
|
|
`cd $WD`;
|
|
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);
|
|
}
|
|
|
|
####
|
|
#### 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);
|
|
}
|