Commit b432ceda authored by Michael Widenius's avatar Michael Widenius

Merge with 5.1

parents 9f219409 97d46a0c
...@@ -134,7 +134,6 @@ valgrind_configs="--with-valgrind" ...@@ -134,7 +134,6 @@ valgrind_configs="--with-valgrind"
# #
# Used in -debug builds # Used in -debug builds
debug_cflags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG" debug_cflags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG"
debug_cflags="$debug_cflags -DFORCE_INIT_OF_VARS -Wuninitialized"
debug_cflags="$debug_cflags -DSAFEMALLOC -DPEDANTIC_SAFEMALLOC" debug_cflags="$debug_cflags -DSAFEMALLOC -DPEDANTIC_SAFEMALLOC"
error_inject="--with-error-inject " error_inject="--with-error-inject "
# #
...@@ -209,6 +208,23 @@ if test -z "$CXX" ; then ...@@ -209,6 +208,23 @@ if test -z "$CXX" ; then
CXX=g++ CXX=g++
fi fi
#
# Set -Wuninitialized to debug flags for gcc 4.4 and above
# because it is allowed there without -O
#
if test `$CC -v 2>&1 | tail -1 | sed 's/ .*$//'` = 'gcc' ; then
GCCVERSION=`cc -v 2>&1 | tail -1 | sed 's/^\w\w* \w\w* //' | sed 's/ .*$//'`
GCCV1=`echo $GCCVERSION | sed 's/\..*$//'`
GCCV2=`echo $GCCVERSION | sed 's/[0-9][0-9]*\.//'|sed 's/\..*$//'`
if test '(' "$GCCV1" -gt '4' ')' -o \
'(' '(' "$GCCV1" -eq '4' ')' -a '(' "$GCCV2" -ge '4' ')' ')'
then
debug_cflags="$debug_cflags -DFORCE_INIT_OF_VARS -Wuninitialized"
fi
fi
# If ccache (a compiler cache which reduces build time) # If ccache (a compiler cache which reduces build time)
# (http://samba.org/ccache) is installed, use it. # (http://samba.org/ccache) is installed, use it.
# We use 'grep' and hope 'grep' will work as expected # We use 'grep' and hope 'grep' will work as expected
......
...@@ -64,16 +64,12 @@ sub fix_pidfile { ...@@ -64,16 +64,12 @@ sub fix_pidfile {
sub fix_port { sub fix_port {
my ($self, $config, $group_name, $group)= @_; my ($self, $config, $group_name, $group)= @_;
my $hostname= $group->value('#host'); return $self->{PORT}++;
return $self->{HOSTS}->{$hostname}++;
} }
sub fix_host { sub fix_host {
my ($self)= @_; my ($self)= @_;
# Get next host from HOSTS array 'localhost'
my @hosts= keys(%{$self->{HOSTS}});;
my $host_no= $self->{NEXT_HOST}++ % @hosts;
return $hosts[$host_no];
} }
sub is_unique { sub is_unique {
...@@ -237,7 +233,7 @@ if (IS_WINDOWS) ...@@ -237,7 +233,7 @@ if (IS_WINDOWS)
sub fix_ndb_mgmd_port { sub fix_ndb_mgmd_port {
my ($self, $config, $group_name, $group)= @_; my ($self, $config, $group_name, $group)= @_;
my $hostname= $group->value('HostName'); my $hostname= $group->value('HostName');
return $self->{HOSTS}->{$hostname}++; return $self->{PORT}++;
} }
...@@ -436,20 +432,24 @@ sub post_check_embedded_group { ...@@ -436,20 +432,24 @@ sub post_check_embedded_group {
sub resolve_at_variable { sub resolve_at_variable {
my ($self, $config, $group, $option)= @_; my ($self, $config, $group, $option)= @_;
local $_ = $option->value();
my ($res, $after);
# Split the options value on last . while (m/(.*?)\@((?:\w+\.)+)(#?[-\w]+)/g) {
my @parts= split(/\./, $option->value()); my ($before, $group_name, $option_name)= ($1, $2, $3);
my $option_name= pop(@parts); $after = $';
my $group_name= join('.', @parts); chop($group_name);
$group_name =~ s/^\@//; # Remove at
my $from_group= $config->group($group_name) my $from_group= $config->group($group_name)
or croak "There is no group named '$group_name' that ", or croak "There is no group named '$group_name' that ",
"can be used to resolve '$option_name' for test '$self->{testname}'"; "can be used to resolve '$option_name' for test '$self->{testname}'";
my $from= $from_group->value($option_name); my $value= $from_group->value($option_name);
$config->insert($group->name(), $option->name(), $from) $res .= $before.$value;
}
$res .= $after;
$config->insert($group->name(), $option->name(), $res)
} }
...@@ -461,7 +461,7 @@ sub post_fix_resolve_at_variables { ...@@ -461,7 +461,7 @@ sub post_fix_resolve_at_variables {
next unless defined $option->value(); next unless defined $option->value();
$self->resolve_at_variable($config, $group, $option) $self->resolve_at_variable($config, $group, $option)
if ($option->value() =~ /^\@/); if ($option->value() =~ /\@/);
} }
} }
} }
...@@ -603,31 +603,18 @@ sub new_config { ...@@ -603,31 +603,18 @@ sub new_config {
croak "you must pass '$required'" unless defined $args->{$required}; croak "you must pass '$required'" unless defined $args->{$required};
} }
# Fill in hosts/port hash
my $hosts= {};
my $baseport= $args->{baseport};
$args->{hosts}= [ 'localhost' ] unless exists($args->{hosts});
foreach my $host ( @{$args->{hosts}} ) {
$hosts->{$host}= $baseport;
}
# Open the config template # Open the config template
my $config= My::Config->new($args->{'template_path'}); my $config= My::Config->new($args->{'template_path'});
my $extra_template_path= $args->{'extra_template_path'};
if ($extra_template_path){
$config->append(My::Config->new($extra_template_path));
}
my $self= bless { my $self= bless {
CONFIG => $config, CONFIG => $config,
ARGS => $args, ARGS => $args,
HOSTS => $hosts, PORT => $args->{baseport},
NEXT_HOST => 0,
SERVER_ID => 1, SERVER_ID => 1,
testname => $args->{testname}, testname => $args->{testname},
}, $class; }, $class;
# add auto-options # add auto-options
# $config->insert('OPT', 'port' => sub { fix_port($self, $config) }); $config->insert('OPT', 'port' => sub { fix_port($self, $config) });
$config->insert('OPT', 'vardir' => sub { $self->{ARGS}->{vardir} }); $config->insert('OPT', 'vardir' => sub { $self->{ARGS}->{vardir} });
{ {
......
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