diff options
Diffstat (limited to 'mysql-test/mysql-test-run.pl')
-rwxr-xr-x | mysql-test/mysql-test-run.pl | 161 |
1 files changed, 95 insertions, 66 deletions
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index f76cb008c3c..9a9fa85aa79 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -94,6 +94,7 @@ $SIG{INT}= sub { mtr_error("Got ^C signal"); }; our $mysql_version_id; our $glob_mysql_test_dir; our $basedir; +our $bindir; our $path_charsetsdir; our $path_client_bindir; @@ -943,7 +944,11 @@ sub command_line_setup { { $basedir= dirname($basedir); } - + + # Respect MTR_BINDIR variable, which is typically set in to the + # build directory in out-of-source builds. + $bindir=$ENV{MTR_BINDIR}||$basedir; + # Look for the client binaries directory if ($path_client_bindir) { @@ -952,21 +957,21 @@ sub command_line_setup { } else { - $path_client_bindir= mtr_path_exists("$basedir/client_release", - "$basedir/client_debug", + $path_client_bindir= mtr_path_exists("$bindir/client_release", + "$bindir/client_debug", vs_config_dirs('client', ''), - "$basedir/client", - "$basedir/bin"); + "$bindir/client", + "$bindir/bin"); } # Look for language files and charsetsdir, use same share - $path_language= mtr_path_exists("$basedir/share/mysql", - "$basedir/sql/share", - "$basedir/share"); - - + $path_language= mtr_path_exists("$bindir/share/mysql", + "$bindir/sql/share", + "$bindir/share"); my $path_share= $path_language; - $path_charsetsdir= mtr_path_exists("$path_share/charsets"); + $path_charsetsdir = mtr_path_exists("$basedir/share/mysql/charsets", + "$basedir/sql/share/charsets", + "$basedir/share/charsets"); if (using_extern()) { @@ -1104,7 +1109,14 @@ sub command_line_setup { # -------------------------------------------------------------------------- # Set the "var/" directory, the base for everything else # -------------------------------------------------------------------------- - $default_vardir= "$glob_mysql_test_dir/var"; + if(defined $ENV{MTR_BINDIR}) + { + $default_vardir= "$ENV{MTR_BINDIR}/mysql-test/var"; + } + else + { + $default_vardir= "$glob_mysql_test_dir/var"; + } if ( ! $opt_vardir ) { $opt_vardir= $default_vardir; @@ -1558,7 +1570,8 @@ sub collect_mysqld_features_from_running_server () } sub find_mysqld { - my ($mysqld_basedir)= @_; + + my ($mysqld_basedir)= $ENV{MTR_BINDIR}|| @_; my @mysqld_names= ("mysqld", "mysqld-max-nt", "mysqld-max", "mysqld-nt"); @@ -1644,7 +1657,7 @@ sub client_debug_arg($$) { sub mysql_fix_arguments () { - return "" if ( IS_WINDOWS ); + return "" ; my $exe= mtr_script_exists("$basedir/scripts/mysql_fix_privilege_tables", @@ -1744,6 +1757,30 @@ sub mysql_client_test_arguments(){ # Set environment to be used by childs of this process for # things that are constant during the whole lifetime of mysql-test-run # + +sub find_plugin($$) +{ + my ($plugin, $location) = @_; + my $plugin_filename; + + if (IS_WINDOWS) + { + $plugin_filename = $plugin.".dll"; + } + else + { + $plugin_filename = $plugin.".so"; + } + + my $lib_example_plugin= + mtr_file_exists(vs_config_dirs($location,$plugin_filename), + "$basedir/lib/plugin/".$plugin_filename, + "$basedir/$location/.libs/".$plugin_filename, + "$basedir/lib/mysql/plugin/".$plugin_filename, + ); + return $lib_example_plugin; +} + sub environment_setup { umask(022); @@ -1782,9 +1819,18 @@ sub environment_setup { # -------------------------------------------------------------------------- # Add the path where mysqld will find udf_example.so # -------------------------------------------------------------------------- + my $udf_example_filename; + if (IS_WINDOWS) + { + $udf_example_filename = "udf_example.dll"; + } + else + { + $udf_example_filename = "udf_example.so"; + } my $lib_udf_example= - mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'), - "$basedir/sql/.libs/udf_example.so",); + mtr_file_exists(vs_config_dirs('sql', $udf_example_filename), + "$basedir/sql/.libs/$udf_example_filename",); if ( $lib_udf_example ) { @@ -1800,60 +1846,46 @@ sub environment_setup { # Add the path where mysqld will find ha_example.so # -------------------------------------------------------------------------- if ($mysql_version_id >= 50100) { - my $plugin_filename; - if (IS_WINDOWS) - { - $plugin_filename = "ha_example.dll"; + my ($lib_example_plugin) = find_plugin("ha_example", "storage/example"); + + if($lib_example_plugin) + { + $ENV{'EXAMPLE_PLUGIN'}= + ($lib_example_plugin ? basename($lib_example_plugin) : ""); + $ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=". + ($lib_example_plugin ? dirname($lib_example_plugin) : ""); + + $ENV{'HA_EXAMPLE_SO'}="'".basename($lib_example_plugin)."'"; + $ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=EXAMPLE=".basename($lib_example_plugin); } - else + else { - $plugin_filename = "ha_example.so"; + # Some ".opt" files use some of these variables, so they must be defined + $ENV{'EXAMPLE_PLUGIN'}= ""; + $ENV{'EXAMPLE_PLUGIN_OPT'}= ""; + $ENV{'HA_EXAMPLE_SO'}= ""; + $ENV{'EXAMPLE_PLUGIN_LOAD'}= ""; } - my $lib_example_plugin= - mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename), - "$basedir/storage/example/.libs/".$plugin_filename, - "$basedir/lib/mysql/plugin/".$plugin_filename); - $ENV{'EXAMPLE_PLUGIN'}= - ($lib_example_plugin ? basename($lib_example_plugin) : ""); - $ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=". - ($lib_example_plugin ? dirname($lib_example_plugin) : ""); - - $ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'"; - $ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=EXAMPLE=".$plugin_filename; - } - else - { - # Some ".opt" files use some of these variables, so they must be defined - $ENV{'EXAMPLE_PLUGIN'}= ""; - $ENV{'EXAMPLE_PLUGIN_OPT'}= ""; - $ENV{'HA_EXAMPLE_SO'}= ""; - $ENV{'EXAMPLE_PLUGIN_LOAD'}= ""; } + # -------------------------------------------------------------------------- # Add the path where mysqld will find semisync plugins # -------------------------------------------------------------------------- if (!$opt_embedded_server) { - my $semisync_master_filename; - my $semisync_slave_filename; + my $semisync_lib_prefix; if (IS_WINDOWS) { - $semisync_master_filename = "semisync_master.dll"; - $semisync_slave_filename = "semisync_slave.dll"; + $semisync_lib_prefix = ""; } else { - $semisync_master_filename = "libsemisync_master.so"; - $semisync_slave_filename = "libsemisync_slave.so"; + $semisync_lib_prefix= "lib"; } - my $lib_semisync_master_plugin= - mtr_file_exists(vs_config_dirs('plugin/semisync',$semisync_master_filename), - "$basedir/plugin/semisync/.libs/" . $semisync_master_filename, - "$basedir/lib/mysql/plugin/" . $semisync_master_filename); - my $lib_semisync_slave_plugin= - mtr_file_exists(vs_config_dirs('plugin/semisync',$semisync_slave_filename), - "$basedir/plugin/semisync/.libs/" . $semisync_slave_filename, - "$basedir/lib/mysql/plugin/" . $semisync_slave_filename); + + my ($lib_semisync_master_plugin) = find_plugin($semisync_lib_prefix."semisync_master", "plugin/semisync"); + my ($lib_semisync_slave_plugin) = find_plugin($semisync_lib_prefix."semisync_slave", "plugin/semisync"); + if ($lib_semisync_master_plugin && $lib_semisync_slave_plugin) { $ENV{'SEMISYNC_MASTER_PLUGIN'}= basename($lib_semisync_master_plugin); @@ -1871,10 +1903,10 @@ sub environment_setup { # ---------------------------------------------------- # Add the path where mysqld will find mypluglib.so # ---------------------------------------------------- - my $lib_simple_parser= - mtr_file_exists(vs_config_dirs('plugin/fulltext', 'mypluglib.dll'), - "$basedir/plugin/fulltext/.libs/mypluglib.so",); + my ($lib_simple_parser) = find_plugin("mypluglib", "plugin/fulltext"); + + $ENV{'MYPLUGLIB_SO'}="'".basename($lib_simple_parser)."'"; $ENV{'SIMPLE_PARSER'}= ($lib_simple_parser ? basename($lib_simple_parser) : ""); $ENV{'SIMPLE_PARSER_OPT'}= "--plugin-dir=". @@ -2303,18 +2335,15 @@ sub vs_config_dirs ($$) { my ($path_part, $exe) = @_; $exe = "" if not defined $exe; - - # Don't look in these dirs when not on windows - return () unless IS_WINDOWS; - if ($opt_vs_config) { - return ("$basedir/$path_part/$opt_vs_config/$exe"); + return ("$bindir/$path_part/$opt_vs_config/$exe"); } - return ("$basedir/$path_part/release/$exe", - "$basedir/$path_part/relwithdebinfo/$exe", - "$basedir/$path_part/debug/$exe"); + return ("$bindir/$path_part/Release/$exe", + "$bindir/$path_part/RelWithDebinfo/$exe", + "$bindir/$path_part/Debug/$exe", + "$bindir/$path_part/$exe"); } |