summaryrefslogtreecommitdiff
path: root/Build-tools/mysql-copyright
diff options
context:
space:
mode:
Diffstat (limited to 'Build-tools/mysql-copyright')
-rwxr-xr-xBuild-tools/mysql-copyright212
1 files changed, 212 insertions, 0 deletions
diff --git a/Build-tools/mysql-copyright b/Build-tools/mysql-copyright
new file mode 100755
index 00000000000..a4eac33ded8
--- /dev/null
+++ b/Build-tools/mysql-copyright
@@ -0,0 +1,212 @@
+#!/usr/bin/perl -i
+
+# Untar a MySQL distribution, change the copyright texts,
+# pack it up again to a given directory
+
+$VER="1.1";
+
+use Getopt::Long;
+
+$opt_help= 0;
+$opt_target= "mysql-copyright-target-";
+$opt_target.= `date +%d%m%y-%H%M%S`;
+chop $opt_target;
+
+GetOptions("help","target=s") || usage();
+
+# 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;
+
+ usage() if (!$ARGV[0] || $opt_help);
+
+ `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 -a $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);
+}