php-src/ext/mysql/libmysql/update_sources
MySQL Team e8cbbc0637 Upgrade ext/mysql/libmysql to version 3.23.39. No major changes -
portability fixes.

Also add configure test for HAVE_INT_8_16_32 which should solve
compilation problems on AIX.
2001-06-01 20:07:26 +00:00

104 lines
2.2 KiB
Perl
Executable File

#! /usr/bin/perl -w
# Maybe I should have used PHP instead? ;)
use strict;
$| = 1;
-f "libmysql.c" or die "$0 must be run from the libmysql directory\n";
my $command = shift || usage();
$command =~ /^--(?:update|huh|restore)$/ or usage();
my $from = shift || '/my/mysql';
my @source_dirs = qw/dbug strings mysys libmysql include/;
my $source_re = qr/\.(?:cc?|h)$/;
my %skip = (
'ctype_autoconf.c' => 1, # PHP uses a pre-made one
'ctype_extra_sources.c' => 1, # same here
'my_config.h' => 1, # we use php_config.h
);
opendir D, "."
or die "can't opendir .: $!\n";
my @files = grep { /$source_re/ and !$skip{$_} } readdir D;
closedir D;
if ($command eq '--restore')
{
foreach (@files)
{
-f "$_.orig" and
system("mv -f $_.orig $_") and die "can't restore $_: $!\n";
}
exit 0;
}
if ($command eq '--huh')
{
diff_files();
exit 0;
}
my %sources;
foreach my $d (@source_dirs)
{
opendir D, "$from/$d" or die "opendir $from/$d: $!\n";
foreach (grep { /$source_re/ } readdir D)
{
$sources{$_} ||= "$d/$_";
}
closedir D;
}
foreach my $f (@files)
{
my $s = $sources{$f} or die "can't find source file for $f\n";
unlink "$f.orig";
system("mv $f $f.orig") and die "can't move $f: $!\n";
#print ">> ", scalar(`ls -l $from/$s`), "\n";
print ">> $s\n";
system("cp $from/$s $f") and die "can't copy $from/$s: $!\n";
#print "]] ", scalar(`ls -l $f`), "\n";
}
system("chmod u+w @files") and die "can't set perms on files: $!\n";
system("./fix_copyright @files") and die "can't fix copyright: $!\n";
diff_files();
exit 0;
sub usage
{
die <<"EOF";
usage: $0 --update [mysql-source-dir]
$0 --huh
$0 --restore
Typical use is:
\$ $0 --update 2>&1 > /tmp/php-update.diff
\$ @{[$ENV{EDITOR}||'vi']} /tmp/php-update.diff #does it look okay?
\$ Monkey around a bit
\$ cvs diff -u | less # does this look okay?
\$ rm *.orig
EOF
}
sub diff_files {
foreach my $f (@files)
{
if (!-f "$f.orig" or !system("diff -u $f.orig $f"))
{
print STDERR "SAME: $f\n";
unlink "$f.orig";
}
else
{
print STDERR "DIFF: $f\n";
$f eq 'config-win.h' and
print STDERR "/n/nDon't forget to undefine HAVE_COMPRESS in $f/n/n/n";
}
}
}