From: magnus.blaudd Date: October 14 2011 7:57am Subject: bzr push into mysql-5.5-cluster branch (magnus.blaudd:3578 to 3579) List-Archive: http://lists.mysql.com/commits/141444 Message-Id: <201110140757.p9E7vkom018718@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3579 magnus.blaudd@stripped 2011-10-14 [merge] Merge modified: storage/ndb/compile-cluster 3578 jonas oreland 2011-10-13 [merge] ndb - merge 71 to 72 modified: mysql-test/suite/ndb/r/ndbinfo.result storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp storage/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp storage/ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp storage/ndb/src/kernel/vm/DLHashTable.hpp storage/ndb/src/kernel/vm/NdbinfoTables.cpp === modified file 'storage/ndb/compile-cluster' --- a/storage/ndb/compile-cluster 2011-10-11 12:31:20 +0000 +++ b/storage/ndb/compile-cluster 2011-10-14 07:43:50 +0000 @@ -33,26 +33,29 @@ use Getopt::Long; my $opt_debug; my $opt_build_type; my $opt_build = 1; +my $opt_just_print; Getopt::Long::Configure("pass_through"); GetOptions( # Build MySQL Server and NDB with debug - 'debug' => \$opt_debug, + 'debug!' => \$opt_debug, 'with-debug:s' => sub { $opt_debug = 1; }, 'build-type=s' => \$opt_build_type, 'build!' => \$opt_build, + 'c|just-configure' => sub { $opt_build = 0; }, + 'n|just-print' => \$opt_just_print, ) or exit(1); # Find source root directory, assume this script is # in /storage/ndb/ -my $srcdir = dirname(dirname(dirname(abs_path($0)))); -die unless -d $srcdir; # Sanity check that the srcdir exist +my $opt_srcdir = dirname(dirname(dirname(abs_path($0)))); +die unless -d $opt_srcdir; # Sanity check that the srcdir exist if ($^O eq "cygwin") { # Convert posix path to Windows mixed path since cmake # is most likely a windows binary - $srcdir= `cygpath -m $srcdir`; - chomp $srcdir; + $opt_srcdir= `cygpath -m $opt_srcdir`; + chomp $opt_srcdir; } # Check that cmake exists and figure out it's version @@ -65,7 +68,7 @@ my $cmake_version_id; { #print "1: $1 2: $2 3: $3\n"; $cmake_version_id= $1*10000 + $2*100 + $3; - print "cmake_version_id: $cmake_version_id\n"; + #print "cmake_version_id: $cmake_version_id\n"; } die "Could not parse cmake version" unless ($cmake_version_id); } @@ -75,29 +78,212 @@ my $cmake_version_id; # Configure # { + # Remove old CMakeCache.txt(ignore if not exists) to + # force fresh configure + unlink("CMakeCache.txt"); + my @args; - my @opt_build_type_arg; - push(@args, "$srcdir/cmake/configure.pl"); - - # MySQL Server options - push(@args, "--with-ssl"); + + # Hardcoded options controlling how to build MySQL Server + push(@args, "-DWITH_SSL=bundled"); if ($opt_debug) { - push(@args, "--with-debug"); - push(@args, "--disable-mysql-maintainer-mode"); + push(@args, "-DWITH_DEBUG=1"); + push(@args, "-DMYSQL_MAINTAINER_MODE=0"); } - # NDB options - push(@args, "--with-plugin-ndbcluster"); - push(@args, "--with-ndb-test"); + # Hardcoded options controlling how to build NDB + push(@args, "-DWITH_PLUGIN_NDBCLUSTER=1"); + push(@args, "-DWITH_NDB_TEST=1"); + # The cmake generator to use if ($opt_build_type) { - push(@opt_build_type_arg, "--cmake-args=\"-G " . $opt_build_type . "\""); + push(@args, "-G $opt_build_type"); } - cmd($^X, @args, @ARGV, @opt_build_type_arg); + # Sets installation directory, bindir, libdir, libexecdir etc. + # The equivalent CMake variables are given without prefix + # e.g if --prefix is /usr and --bindir is /usr/bin + # then cmake variable (INSTALL_BINDIR) must be just "bin" + my $opt_prefix; + sub set_installdir + { + my($path, $varname) = @_; + my $prefix_length = length($opt_prefix); + if (($prefix_length > 0) && (index($path,$opt_prefix) == 0)) + { + # path is under the prefix, remove the prefix and + # maybe following "/" + $path = substr($path, $prefix_length); + if(length($path) > 0) + { + my $char = substr($path, 0, 1); + if($char eq "/") + { + $path= substr($path, 1); + } + } + if(length($path) > 0) + { + push(@args, "-D$varname=$path"); + } + } + } + + # Process --configure style arguments which need special conversion + my $opt_bindir; + my $opt_libdir; + my $opt_libexecdir; + my $opt_includedir; + my $opt_with_zlib_dir; + my $opt_with_ssl; + my $opt_localstatedir; + my $opt_mysql_maintainer_mode; + my $opt_with_gcov; + my $opt_with_comment; + my $opt_with_plugins; + my $opt_without_plugin; + my $opt_extra_charsets; + my $opt_with_extra_charsets; + Getopt::Long::Configure("pass_through"); + GetOptions( + 'prefix=s' => \$opt_prefix, + 'srcdir=s' => \$opt_srcdir, + 'bindir=s' => \$opt_bindir, + 'libdir=s' => \$opt_libdir, + 'libexecdir=s' => \$opt_libexecdir, + 'includedir=s' => \$opt_includedir, + 'with-zlib-dir=s' => \$opt_with_zlib_dir, + 'with-ssl:s' => \$opt_with_ssl, + 'localstatedir=s' => \$opt_localstatedir, + 'mysql-maintainer-mode=s' => \$opt_mysql_maintainer_mode, + 'with-gcov' => \$opt_with_gcov, + 'with-comment=s' => \$opt_with_comment, + 'with-plugins=s' => \$opt_with_plugins, + 'without-plugin=s' => \$opt_without_plugin, + 'with-extra-charsets=s' => \$opt_with_extra_charsets, + 'extra-charsets=s' => \$opt_extra_charsets, + ) or exit(1); + + if($opt_prefix) + { + push(@args, "-DCMAKE_INSTALL_PREFIX=$opt_prefix"); + } + if($opt_bindir) + { + set_installdir($opt_bindir, "INSTALL_BINDIR"); + } + if($opt_libdir) + { + set_installdir($opt_libdir, "INSTALL_LIBDIR"); + } + if($opt_libexecdir) + { + set_installdir($opt_libexecdir, "INSTALL_SBINDIR"); + } + if($opt_includedir) + { + set_installdir($opt_includedir, "INSTALL_INCLUDEDIR"); + } + if($opt_with_zlib_dir) + { + $opt_with_zlib_dir = "system" + if ($opt_with_zlib_dir ne "bundled"); + push(@args, "-DWITH_ZLIB=$opt_with_zlib_dir"); + } + if($opt_with_ssl) + { + push(@args, "-DWITH_SSL=".($opt_with_ssl ? "yes" : "bundled")); + } + if ($opt_localstatedir) + { + push(@args, "-DMYSQL_DATADIR=$opt_localstatedir"); + } + if ($opt_mysql_maintainer_mode) + { + push(@args, "-DMYSQL_MAINTAINER_MODE=" . + ($opt_mysql_maintainer_mode =~ /enable/ ? "1" : "0")); + } + if ($opt_with_gcov) + { + push(@args, "-DENABLE_GCOV=ON"); + } + if ($opt_with_comment) + { + push(@args, "\"-DWITH_COMMENT=$opt_with_comment\""); + } + if($opt_with_plugins) + { + my @plugins= split(/,/, $opt_with_plugins); + foreach my $p (@plugins) + { + $p =~ s/-/_/g; + push(@args, "-DWITH_".uc($p)."=1"); + } + } + if($opt_without_plugin) + { + push(@args, "-DWITHOUT_".uc($opt_without_plugin)."=1"); + } + if ($opt_extra_charsets) + { + push(@args, "-DWITH_CHARSETS=$opt_extra_charsets"); + } + if($opt_with_extra_charsets) + { + push(@args, "-DWITH_EXTRA_CHARSETS=$opt_with_extra_charsets"); + } + + + # Default conversion of remaining args in ARGV from + # 1) --arg -> -DARG=1 + # 2) --arg=value -> -DARG=value + # 3) arg=value -> environment variable arg=value + foreach my $option (@ARGV) + { + if ($option =~ /^--/) + { + # Remove leading -- + $option = substr($option, 2); + + my @v = split('=', $option); + my $name = shift(@v); + $name = uc($name); + $name =~ s/-/_/g; + if (@v) + { + push(@args, "-D$name=".join('=', @v)); + } + else + { + push(@args, "-D$name=1"); + } + } + else + { + + # This must be environment variable + my @v = split('=', $option); + my $name = shift(@v); + if(@v) + { + $ENV{$name} = join('=', @v); + } + else + { + die "unhandled argument '$option' found"; + } + } + } + + # The source directory to build from + die "srcdir already contains CMakeCache.txt, this will not work!" + if (-f "$opt_srcdir/CMakeCache.txt"); + push(@args, $opt_srcdir); + + cmd("cmake", @args); } if (!$opt_build) @@ -117,7 +303,7 @@ if (!$opt_build) # which is available from cmake 2.8 and works on all platforms my @args; push(@args, "--build"); - push(@args, "$srcdir"); + push(@args, "$opt_srcdir"); if ($^O eq "cygwin" or $^O eq "MSWin32") { @@ -140,12 +326,18 @@ if (!$opt_build) die "You need to install cmake with version > 2.8" if ($^O eq "cygwin" or $^O eq "MSWin32"); - cmd("make -C $srcdir"); + cmd("make"); } } sub cmd { my ($cmd, @a)= @_; + + if ($opt_just_print){ + print "$cmd ", join(' ', @a), "\n"; + return; + } + print "compile-cluster: calling '$cmd ", join(' ', @a), "'\n"; system($cmd, @a) and print("command failed: $!\n") No bundle (reason: useless for push emails).