make_win_bin_dist CMakeLists.txt resolveip.c Makefile.am:

  Better Windows support in the scripts directory
mysql_config.pl.in, mysql_install_db.pl.in:
  New Perl version of Unix shell script, mainly for Windows
Many files in scripts directory:
  Use default Perl location "#!/usr/bin/perl" instead of the build host path
parent bf1ba3d4
......@@ -44,6 +44,9 @@ TARGET_LINK_LIBRARIES(my_print_defaults strings mysys debug dbug taocrypt wsock3
ADD_EXECUTABLE(perror perror.c)
TARGET_LINK_LIBRARIES(perror strings mysys debug dbug wsock32)
ADD_EXECUTABLE(resolveip resolveip.c)
TARGET_LINK_LIBRARIES(resolveip strings mysys debug dbug wsock32)
ADD_EXECUTABLE(replace replace.c)
TARGET_LINK_LIBRARIES(replace strings mysys debug dbug wsock32)
......
......@@ -21,13 +21,15 @@
#include <m_ctype.h>
#include <my_sys.h>
#include <m_string.h>
#include <sys/types.h>
#include <sys/socket.h>
#ifndef HAVE_BROKEN_NETINET_INCLUDES
#include <netinet/in.h>
#ifndef WIN32
# include <sys/types.h>
# include <sys/socket.h>
# ifndef HAVE_BROKEN_NETINET_INCLUDES
# include <netinet/in.h>
# endif
# include <arpa/inet.h>
# include <netdb.h>
#endif
#include <arpa/inet.h>
#include <netdb.h>
#include <my_net.h>
#include <my_getopt.h>
......
......@@ -40,3 +40,44 @@ ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tabl
ADD_CUSTOM_TARGET(GenFixPrivs
ALL
DEPENDS ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables_sql.c)
# ----------------------------------------------------------------------
# Replace some variables @foo@ in the .in/.sh file, and write the new script
# ----------------------------------------------------------------------
SET(CFLAGS "-D_WINDOWS ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
SET(prefix "${CMAKE_INSTALL_PREFIX}/MySQL Server ${MYSQL_BASE_VERSION}")
SET(sysconfdir ${prefix})
SET(bindir ${prefix}/bin)
SET(libexecdir ${prefix}/bin)
SET(scriptdir ${prefix}/bin)
SET(datadir ${prefix}/share)
SET(pkgdatadir ${prefix}/share)
SET(localstatedir ${prefix}/data)
CONFIGURE_FILE(mysql_config.pl.in
scripts/mysql_config.pl ESCAPE_QUOTES @ONLY)
CONFIGURE_FILE(mysql_convert_table_format.sh
scripts/mysql_convert_table_format.pl ESCAPE_QUOTES @ONLY)
CONFIGURE_FILE(mysql_explain_log.sh
scripts/mysql_explain_log.pl ESCAPE_QUOTES @ONLY)
CONFIGURE_FILE(mysql_install_db.pl.in
scripts/mysql_install_db.pl ESCAPE_QUOTES @ONLY)
CONFIGURE_FILE(mysql_secure_installation.sh
scripts/mysql_secure_installation.pl ESCAPE_QUOTES @ONLY)
CONFIGURE_FILE(mysql_tableinfo.sh
scripts/mysql_tableinfo.pl ESCAPE_QUOTES @ONLY)
CONFIGURE_FILE(mysqld_multi.sh
scripts/mysqld_multi.pl ESCAPE_QUOTES @ONLY)
CONFIGURE_FILE(mysqldumpslow.sh
scripts/mysqldumpslow.pl ESCAPE_QUOTES @ONLY)
CONFIGURE_FILE(mysqlhotcopy.sh
scripts/mysqlhotcopy.pl ESCAPE_QUOTES @ONLY)
......@@ -48,9 +48,11 @@ EXTRA_SCRIPTS = make_binary_distribution.sh \
make_win_src_distribution_old.sh \
msql2mysql.sh \
mysql_config.sh \
mysql_config.pl.in \
mysql_fix_privilege_tables.sh \
mysql_fix_extensions.sh \
mysql_install_db.sh \
mysql_install_db.pl.in \
mysql_setpermission.sh \
mysql_secure_installation.sh \
mysql_zap.sh \
......
......@@ -327,27 +327,26 @@ if [ -d mysql-test/extra ] ; then
fi
# ----------------------------------------------------------------------
# Copy what could be usable in the "scripts" directory. Currently
# only SQL files, others are Bourne shell scripts or Perl scripts
# not really usable on Windows.
#
# But to be nice to the few Cygwin users we might have in 5.0 we
# continue to copy the stuff, but don't include it in the WiX install.
# Copy what could be usable in the "scripts" directory
# ----------------------------------------------------------------------
mysql_scripts="\
mysql_config.pl \
mysql_convert_table_format.pl \
mysql_explain_log.pl \
mysql_install_db.pl \
mysql_secure_installation.pl \
mysql_tableinfo.pl \
mysqld_multi.pl \
mysqldumpslow.pl \
mysqlhotcopy.pl \
"
mkdir -p $DESTDIR/scripts
# Uncomment and remove the for loop in 5.1
#cp scripts/*.sql $DESTDIR/scripts/
for i in `cd scripts && ls`; do \
if echo $i | grep -q '\.sh'; then \
cp scripts/$i $DESTDIR/scripts/`echo $i | sed -e 's/\.sh$//'`; \
elif [ -d scripts/$i -o $i = Makefile.am -o $i = Makefile.in -o -e scripts/$i.sh ] ; then \
: ; \
else \
cp scripts/$i $DESTDIR/scripts/$i; \
fi; \
for i in $mysql_scripts
do
cp scripts/$i $DESTDIR/scripts/$i
done
cp -pR sql/share $DESTDIR/
......@@ -355,7 +354,7 @@ cp -pR sql-bench $DESTDIR/
rm -f $DESTDIR/sql-bench/*.sh $DESTDIR/sql-bench/Makefile*
# The SQL initialisation code is really expected to be in "share"
mv $DESTDIR/scripts/*.sql $DESTDIR/share/ || true
mv $DESTDIR/scripts/*.sql $DESTDIR/share/
# ----------------------------------------------------------------------
# Clean up from possibly copied SCCS directories
......
#!/usr/bin/perl
# -*- cperl -*-
#
# Copyright (C) 2007 MySQL AB
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
#
# This script reports various configuration settings that may be needed
# when using the MySQL client library.
#
# This script try to match the shell script version as close as possible,
# but in addition being compatible with ActiveState Perl on Windows.
#
# All unrecognized arguments to this script are passed to mysqld.
#
# NOTE: This script will only be used on Windows until solved how to
# handle @LIBS@ and other strings inserted that might contain
# several arguments, possibly with spaces in them.
#
# NOTE: This script was deliberately written to be as close to the shell
# script as possible, to make the maintenance of both in parallel
# easier.
#
##############################################################################
use File::Basename;
use Getopt::Long;
use Cwd;
use strict;
my @exclude_cflags =
qw/DDBUG_OFF DSAFEMALLOC USAFEMALLOC DSAFE_MUTEX
DPEDANTIC_SAFEMALLOC DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS
DEXTRA_DEBUG DHAVE_purify O O[0-9] xO[0-9] W[-A-Za-z]*
Xa xstrconst xc99=none
unroll2 ip mp restrict/;
my @exclude_libs = qw/lmtmalloc static-libcxa i-static static-intel/;
my $cwd = cwd();
my $basedir;
my $socket = '@MYSQL_UNIX_ADDR@';
my $version = '@VERSION@';
sub which
{
my $file = shift;
my $IFS = $^O eq "MSWin32" ? ";" : ":";
foreach my $dir ( split($IFS, $ENV{PATH}) )
{
if ( -f "$dir/$file" or -f "$dir/$file.exe" )
{
return "$dir/$file";
}
}
print STDERR "which: no $file in ($ENV{PATH})\n";
exit 1;
}
# ----------------------------------------------------------------------
# If we can find the given directory relatively to where mysql_config is
# we should use this instead of the incompiled one.
# This is to ensure that this script also works with the binary MySQL
# version
# ----------------------------------------------------------------------
sub fix_path
{
my $default = shift;
my @dirs = @_;
foreach my $dirname ( @dirs )
{
my $path = "$basedir/$dirname";
if ( -d $path )
{
return $path;
}
}
return $default;
}
sub get_full_path
{
my $file = shift;
# if the file is a symlink, try to resolve it
if ( $^O ne "MSWin32" and -l $file )
{
$file = readlink($file);
}
if ( $file =~ m,^/, )
{
# Do nothing, absolute path
}
elsif ( $file =~ m,/, )
{
# Make absolute, and remove "/./" in path
$file = "$cwd/$file";
$file =~ s,/\./,/,g;
}
else
{
# Find in PATH
$file = which($file);
}
return $file;
}
##############################################################################
#
# Form a command line that can handle spaces in paths and arguments
#
##############################################################################
sub quote_options {
my @cmd;
foreach my $opt ( @_ )
{
next unless $opt; # If undefined or empty, just skip
push(@cmd, "\"$opt\""); # Quote argument
}
return join(" ", @cmd);
}
##############################################################################
#
# Main program
#
##############################################################################
my $me = get_full_path($0);
$basedir = dirname(dirname($me)); # Remove "/bin/mysql_config" part
my $ldata = '@localstatedir@';
my $execdir = '@libexecdir@';
my $bindir = '@bindir@';
# ----------------------------------------------------------------------
# If installed, search for the compiled in directory first (might be "lib64")
# ----------------------------------------------------------------------
my $pkglibdir = fix_path('@pkglibdir@',"libmysql/relwithdebinfo",
"libmysql/release","libmysql/debug","lib/mysql","lib");
my $pkgincludedir = fix_path('@pkgincludedir@', "include/mysql", "include");
# Assume no argument with space in it
my @ldflags = split(" ",'@LDFLAGS@');
my $port;
if ( '@MYSQL_TCP_PORT_DEFAULT@' == 0 ) {
$port = 0;
} else {
$port = '@MYSQL_TCP_PORT@';
}
# ----------------------------------------------------------------------
# Create options
# We intentionally add a space to the beginning and end of lib strings, simplifies replace later
# ----------------------------------------------------------------------
my (@lib_opts,@lib_r_opts,@lib_e_opts);
if ( $^O eq "MSWin32" )
{
my $linkpath = "$pkglibdir";
# user32 is only needed for debug or embedded
my @winlibs = ("wsock32.lib","advapi32.lib","user32.lib");
@lib_opts = ("$linkpath/mysqlclient.lib",@winlibs);
@lib_r_opts = @lib_opts;
@lib_e_opts = ("$linkpath/mysqlserver.lib",@winlibs);
}
else
{
my $linkpath = "-L$pkglibdir";
@lib_opts = ($linkpath,"-lmysqlclient");
@lib_r_opts = ($linkpath,"-lmysqlclient_r");
@lib_e_opts = ($linkpath,"-lmysqld");
}
my $flags;
$flags->{libs} =
[@ldflags,@lib_opts,'@ZLIB_DEPS@','@NON_THREADED_LIBS@','@openssl_libs@','@STATIC_NSS_FLAGS@'];
$flags->{libs_r} =
[@ldflags,@lib_r_opts,'@ZLIB_DEPS@','@LIBS@','@openssl_libs@'];
$flags->{embedded_libs} =
[@ldflags,@lib_e_opts,'@ZLIB_DEPS@','@LIBS@','@WRAPLIBS@','@innodb_system_libs@','@openssl_libs@'];
$flags->{include} = ["-I$pkgincludedir"];
$flags->{cflags} = [@{$flags->{include}},split(" ",'@CFLAGS@')];
# ----------------------------------------------------------------------
# Remove some options that a client doesn't have to care about
# FIXME until we have a --cxxflags, we need to remove -Xa
# and -xstrconst to make --cflags usable for Sun Forte C++
# ----------------------------------------------------------------------
my $filter = join("|", @exclude_cflags);
my @tmp = @{$flags->{cflags}}; # Copy the flag list
$flags->{cflags} = []; # Clear it
foreach my $cflag ( @tmp )
{
push(@{$flags->{cflags}}, $cflag) unless $cflag =~ m/^($filter)$/o;
}
# Same for --libs(_r)
$filter = join("|", @exclude_libs);
foreach my $lib_type ( "libs","libs_r","embedded_libs" )
{
my @tmp = @{$flags->{$lib_type}}; # Copy the flag list
$flags->{$lib_type} = []; # Clear it
foreach my $lib ( @tmp )
{
push(@{$flags->{$lib_type}}, $lib) unless $lib =~ m/^($filter)$/o;
}
}
my $include = quote_options(@{$flags->{include}});
my $cflags = quote_options(@{$flags->{cflags}});
my $libs = quote_options(@{$flags->{libs}});
my $libs_r = quote_options(@{$flags->{libs_r}});
my $embedded_libs = quote_options(@{$flags->{embedded_libs}});
##############################################################################
#
# Usage information, output if no option is given
#
##############################################################################
sub usage
{
print <<EOF;
Usage: $0 [OPTIONS]
Options:
--cflags [$cflags]
--include [$include]
--libs [$libs]
--libs_r [$libs_r]
--socket [$socket]
--port [$port]
--version [$version]
--libmysqld-libs [$embedded_libs]
EOF
exit 1;
}
@ARGV or usage();
##############################################################################
#
# Get options and output the values
#
##############################################################################
GetOptions(
"cflags" => sub { print "$cflags\n" },
"include" => sub { print "$include\n" },
"libs" => sub { print "$libs\n" },
"libs_r" => sub { print "$libs_r\n" },
"socket" => sub { print "$socket\n" },
"port" => sub { print "$port\n" },
"version" => sub { print "$version\n" },
"embedded-libs|embedded|libmysqld-libs" =>
sub { print "$embedded_libs\n" },
) or usage();
exit 0
#!@PERL@
#!/usr/bin/perl
# Copyright (C) 2000-2002 MySQL AB
#
# This program is free software; you can redistribute it and/or modify
......
#!@PERL@
#!/usr/bin/perl
# Copyright (C) 2001-2003, 2006 MySQL AB
#
# This program is free software; you can redistribute it and/or modify
......
This diff is collapsed.
#!@PERL@ -w
#!/usr/bin/perl
use strict;
use Getopt::Long;
......
#!@PERL@
#!/usr/bin/perl
use Getopt::Long;
use POSIX qw(strftime);
......
#!@PERL@
#!/usr/bin/perl
# mysqldumpslow - parse and summarize the MySQL slow query log
# Original version by Tim Bunce, sometime in 2000.
......
#!@PERL@ -w
#!/usr/bin/perl
use strict;
use Getopt::Long;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment