summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnel Husakovic <anel@mariadb.org>2019-04-10 03:35:01 -0700
committerAnel <an3l@users.noreply.github.com>2021-09-07 14:25:56 +0200
commit630d722902c97f035081178bc75ca19d8f19cd6c (patch)
tree8d7019bcebd1093c7f0a94813bb93b730de91aeb
parent528abc749e8a65674dd10f59a2d99d7841709939 (diff)
downloadmariadb-git-630d722902c97f035081178bc75ca19d8f19cd6c.tar.gz
MDEV-19227: mysql_plugin doesn't run bootstrap from source
Reviewed by: serg@mariadb.com daniel@mariadb.org
-rw-r--r--client/mysql_plugin.c63
1 files changed, 52 insertions, 11 deletions
diff --git a/client/mysql_plugin.c b/client/mysql_plugin.c
index a777bdbb482..35852188fac 100644
--- a/client/mysql_plugin.c
+++ b/client/mysql_plugin.c
@@ -34,7 +34,7 @@ static uint opt_no_defaults= 0;
static uint opt_print_defaults= 0;
static char *opt_datadir=0, *opt_basedir=0,
*opt_plugin_dir=0, *opt_plugin_ini=0,
- *opt_mysqld=0, *opt_my_print_defaults=0;
+ *opt_mysqld=0, *opt_my_print_defaults=0, *opt_lc_messages_dir;
static char bootstrap[FN_REFLEN];
@@ -70,6 +70,8 @@ static struct my_option my_long_options[] =
{"my-print-defaults", 'f', "Path to my_print_defaults executable. "
"Example: /source/temp11/extra",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"lc-messages-dir", 'l', "The error messages dir for the server. ",
+ 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"verbose", 'v',
"More verbose output; you can use this multiple times to get even more "
"verbose output.",
@@ -306,6 +308,7 @@ static char *add_quotes(const char *path)
--basedir
--plugin-dir
--plugin-ini
+ --lc-messages-dir
These values are used if the user has not specified a value.
@@ -377,14 +380,20 @@ static int get_default_values()
{
opt_basedir= my_strdup(value, MYF(MY_FAE));
}
- if ((opt_plugin_dir == 0) && ((value= get_value(line, "--plugin_dir"))))
+ if ((opt_plugin_dir == 0) && ((value= get_value(line, "--plugin_dir")) ||
+ (value= get_value(line, "--plugin-dir"))))
{
opt_plugin_dir= my_strdup(value, MYF(MY_FAE));
}
- if ((opt_plugin_ini == 0) && ((value= get_value(line, "--plugin_ini"))))
+ if ((opt_lc_messages_dir == 0) &&
+ ((value= get_value(line, "--lc_messages_dir")) ||
+ (value= get_value(line, "--lc_messages-dir")) ||
+ (value= get_value(line, "--lc-messages_dir")) ||
+ (value= get_value(line, "--lc-messages-dir"))))
{
- opt_plugin_ini= my_strdup(value, MYF(MY_FAE));
+ opt_lc_messages_dir= my_strdup(value, MYF(MY_FAE));
}
+
}
}
exit:
@@ -424,6 +433,7 @@ static void usage(void)
--basedir
--plugin-dir
--plugin-ini
+ --lc-messages-dir
*/
@@ -456,6 +466,10 @@ static void print_default_values(void)
{
printf("--my_print_defaults=%s ", opt_my_print_defaults);
}
+ if (opt_lc_messages_dir)
+ {
+ printf("--lc_messages_dir=%s ", opt_lc_messages_dir);
+ }
printf("\n");
}
@@ -510,6 +524,10 @@ get_one_option(int optid,
case 'f':
opt_my_print_defaults= my_strdup(argument, MYF(MY_FAE));
break;
+ case 'l':
+ opt_lc_messages_dir= my_strdup(argument, MYF(MY_FAE));
+ break;
+
}
return 0;
}
@@ -895,6 +913,8 @@ static int process_options(int argc, char *argv[], char *operation)
printf("# plugin_dir = %s\n", opt_plugin_dir);
printf("# datadir = %s\n", opt_datadir);
printf("# plugin_ini = %s\n", opt_plugin_ini);
+ if (opt_lc_messages_dir != 0)
+ printf("# lc_messages_dir = %s\n", opt_lc_messages_dir);
}
exit:
@@ -952,6 +972,12 @@ static int check_access()
opt_my_print_defaults);
goto exit;
}
+ if (opt_lc_messages_dir && (error= my_access(opt_lc_messages_dir, F_OK)))
+ {
+ fprintf(stderr, "ERROR: Cannot access lc-messages-dir path '%s'.\n",
+ opt_lc_messages_dir);
+ goto exit;
+ }
exit:
return error;
@@ -1181,18 +1207,33 @@ static int bootstrap_server(char *server_path, char *bootstrap_file)
verbose_str= "";
if (has_spaces(opt_datadir) || has_spaces(opt_basedir) ||
has_spaces(bootstrap_file))
- format_str= "\"%s %s --bootstrap --datadir=%s --basedir=%s < %s\"";
- else
- format_str= "%s %s --bootstrap --datadir=%s --basedir=%s < %s";
-
+ {
+ if (opt_lc_messages_dir != NULL)
+ format_str= "\"%s %s --bootstrap --datadir=%s --basedir=%s --lc-messages-dir=%s <%s\"";
+ else
+ format_str= "\"%s %s --bootstrap --datadir=%s --basedir=%s <%s\"";
+ }
+ else
+ {
+ if (opt_lc_messages_dir != NULL)
+ format_str= "\"%s %s --bootstrap --datadir=%s --basedir=%s --lc-messages-dir=%s <%s\"";
+ else
+ format_str= "%s %s --bootstrap --datadir=%s --basedir=%s <%s";
+ }
snprintf(bootstrap_cmd, sizeof(bootstrap_cmd), format_str,
add_quotes(convert_path(server_path)), verbose_str,
add_quotes(opt_datadir), add_quotes(opt_basedir),
add_quotes(bootstrap_file));
#else
- snprintf(bootstrap_cmd, sizeof(bootstrap_cmd),
- "%s --no-defaults --bootstrap --datadir=%s --basedir=%s"
- " < %s", server_path, opt_datadir, opt_basedir, bootstrap_file);
+ if (opt_lc_messages_dir != NULL)
+ snprintf(bootstrap_cmd, sizeof(bootstrap_cmd),
+ "%s --no-defaults --bootstrap --datadir=%s --basedir=%s --lc-messages-dir=%s"
+ " <%s", server_path, opt_datadir, opt_basedir, opt_lc_messages_dir, bootstrap_file);
+ else
+ snprintf(bootstrap_cmd, sizeof(bootstrap_cmd),
+ "%s --no-defaults --bootstrap --datadir=%s --basedir=%s"
+ " <%s", server_path, opt_datadir, opt_basedir, bootstrap_file);
+
#endif
/* Execute the command */