mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
c8908b8fd1
Build-tools/mysql-copyright: remove use of cp -a. sql-bench/Makefile.am: fix broken dist-hook target (brain-o) sql/share/Makefile.am: remove use of cp -a.
232 lines
5.3 KiB
Perl
Executable file
232 lines
5.3 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.2";
|
|
|
|
use Getopt::Long;
|
|
|
|
$opt_help = 0;
|
|
$opt_version = 0;
|
|
$opt_target = "mysql-copyright-target-";
|
|
$opt_target .= `date +%d%m%y-%H%M%S`;
|
|
chop $opt_target;
|
|
|
|
GetOptions("help","version","target=s") || error();
|
|
|
|
# fix the directory prefix for target dir
|
|
|
|
$WD= `pwd`;
|
|
chop $WD;
|
|
$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];
|
|
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}([\.\-\+])
|
|
(.*)?$/xo)
|
|
{
|
|
$distname= $1.$2.$3;
|
|
$suffix= $5.$6;
|
|
$newdistname= $1."com".$2.$3;
|
|
}
|
|
# find out the extract path (should be same as distname!)
|
|
$destdir= `tar tvzf ../$distfile | head -1`;
|
|
# remove leading crab
|
|
$destdir =~ s/.*\d+:\d+:\d+[ ]//;
|
|
# remove newline and slash from the end
|
|
$destdir= substr($destdir, 0, -2);
|
|
|
|
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..
|
|
`gtar xfz ../$distfile`;
|
|
$pec= $? >> 8;
|
|
abort($dir, "Extracting from tar failed!\n") if ($pec);
|
|
|
|
# remove the 'PUBLIC' file from distribution and copy LICENSE
|
|
# on the toplevel of the directory instead. file 'PUBLIC' shouldn't
|
|
# exist in the new mysql distributions, but let's be sure..
|
|
`rm -f $destdir/PUBLIC`;
|
|
`cp -p $WD/Docs/LICENSE $destdir/`;
|
|
|
|
# fix file copyrights
|
|
&fix_usage_copyright();
|
|
&add_copyright();
|
|
|
|
# rename the directory with new distribution name
|
|
`mv -f $destdir $newdistname`;
|
|
|
|
# tar the new distribution
|
|
`gtar cz -f $opt_target/$newdistname.tar.gz *`;
|
|
$pec= $? >> 8;
|
|
abort($dir, "Making new tar archive failed!\n") if ($pec);
|
|
|
|
# remove temporary directory
|
|
chdir "..";
|
|
`rm -rf $dir/`;
|
|
}
|
|
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 @Cfiles = `find . -type f -name \"*.c*\"`;
|
|
foreach my $Cfile (@Cfiles)
|
|
{
|
|
chop $Cfile;
|
|
`replace \"This is free software,\\\\\\nand you are welcome to modify and redistribute it under the GPL license\" \"This is commercial software,\\\\nplease see the file LICENSE for details\" -- $Cfile`;
|
|
}
|
|
}
|
|
|
|
####
|
|
#### change the copyright text in the beginning of the files
|
|
####
|
|
|
|
sub add_copyright
|
|
{
|
|
my @files = `find . -type f -name "*"`;
|
|
foreach my $file (@files)
|
|
{
|
|
chop $file;
|
|
`$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);
|
|
}
|