← Back to team overview

maria-developers team mailing list archive

bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2699)

 

#At lp:maria

 2699 knielsen@xxxxxxxxxxxxxxx	2009-05-11 [merge]
      Merge Toby Thain's Solaris fixes.
      modified:
        BUILD/SETUP.sh
        BUILD/compile-solaris-amd64
        BUILD/compile-solaris-amd64-debug*
        BUILD/compile-solaris-amd64-forte
        BUILD/compile-solaris-amd64-forte-debug*
        storage/innobase/include/univ.i
        storage/pbxt/src/Makefile.am
        storage/pbxt/src/lock_xt.h
        storage/pbxt/src/pbms.h

=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh	2009-05-06 12:03:24 +0000
+++ b/BUILD/SETUP.sh	2009-05-11 15:31:30 +0000
@@ -80,7 +80,13 @@ path=`dirname $0`
 . "$path/check-cpu"
 
 export AM_MAKEFLAGS
-AM_MAKEFLAGS="-j 6"
+# Default to a parallel build, but only if AM_MAKEFLAGS is not set.
+# (So buildbots can easily disable this behaviour if required.)
+if test -z "$AM_MAKEFLAGS"
+then
+  AM_MAKEFLAGS="-j 6"
+fi
+
 
 # SSL library to use.--with-ssl will select our bundled yaSSL
 # implementation of SSL. To use openSSl you will nee too point out

=== modified file 'BUILD/compile-solaris-amd64'
--- a/BUILD/compile-solaris-amd64	2007-04-12 11:20:38 +0000
+++ b/BUILD/compile-solaris-amd64	2009-05-09 04:01:53 +0000
@@ -1,55 +1,32 @@
-#!/usr/bin/bash
+#!/bin/sh
 
-function _find_mysql_root () (
-    while [ "x$PWD" != "x/" ]; do
-	# Check if some directories are present
-	if [ -d BUILD -a -d sql -a -d mysys ]; then
-	    echo "$PWD"
-	    return 0
-	fi
-	cd ..
-    done
-    return 1
-)
+# Build setup for Solaris 10
+
+# Make the Sun Freeware packages use the bundled Perl, instead of their own:
+#     ln -s `which perl` /usr/local/bin
+# Your $PATH needs to include (in this order):
+#     /usr/local/bin:/usr/sfw/bin:/usr/ccs/bin
+# (For Sun Freeware, bundled GNU utilities, Solaris ar, etc.)
+#
+# Required packages from http://sunfreeware.com/indexintel10.html :
+# (The GNU m4 bundled with Solaris is too old.)
+#     automake-1.10.2-sol10-x86-local.gz
+#     autoconf-2.63-sol10-x86-local.gz
+#     m4-1.4.12-sol10-x86-local.gz
+#     libsigsegv-2.6-sol10-x86-local.gz
+#     libtool-1.5.24-sol10-x86-local.gz
+# ( how to install these packages:
+      # wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/automake-1.10.2-sol10-x86-local.gz
+      # gunzip automake-1.10.2-sol10-x86-local.gz 
+      # pkgadd -d automake-1.10.2-sol10-x86-local 
+# )
 
-make -k clean || true
-/bin/rm -f */.deps/*.P config.cache
- 
 path=`dirname $0`
-. "$path/autorun.sh"
- 
-warning_flags="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused"
-compiler_flags="-g -O3 -fno-omit-frame-pointer"
+. "$path/SETUP.sh"
+extra_flags="$amd64_cflags -D__sun -m64 -mtune=athlon64"
+extra_configs="$amd64_configs $max_configs --with-libevent"
 
-export CC CXX CFLAGS CXXFLAGS LDFLAGS LIBS
-CC="gcc"
-CXX="gcc"
-CFLAGS="$warning_flags $compiler_flags"
-CXXFLAGS="" 
-LDFLAGS="-O3 -g -static-libgcc"
-LIBS=-lmtmalloc
-root=$(_find_mysql_root)
+LDFLAGS="-lmtmalloc -static-libgcc"
+export LDFLAGS
 
-$root/configure \
-    --prefix=/usr/local/mysql \
-    --localstatedir=/usr/local/mysql/data \
-    --libexecdir=/usr/local/mysql/bin \
-    --with-extra-charsets=complex \
-    --enable-thread-safe-client \
-    --enable-local-infile \
-    --with-zlib-dir=bundled \
-    --with-big-tables \
-    --with-readline \
-    --with-archive-storage-engine \
-    --with-named-curses=-lcurses \
-    --with-big-tables \
-    --with-innodb \
-    --with-berkeley-db \
-    --with-example-storage-engine \
-    --with-blackhole-storage-engine \
-    --with-ndbcluster \
-    --with-federated-storage-engine \
-    --with-csv-storage-engine \
-    --with-ssl \
-    --with-embedded-server \
-    --disable-shared
+. "$path/FINISH.sh"

=== modified file 'BUILD/compile-solaris-amd64-debug' (properties changed: -x to +x)
--- a/BUILD/compile-solaris-amd64-debug	2007-11-10 10:03:07 +0000
+++ b/BUILD/compile-solaris-amd64-debug	2009-05-09 04:01:53 +0000
@@ -1,10 +1,11 @@
-#! /bin/sh
+#!/bin/sh
+
 path=`dirname $0`
 . "$path/SETUP.sh"
-amd64_cflags="-m64 -mtune=athlon64"
-extra_flags="$amd64_cflags $debug_cflags $max_cflags"
-c_warnings="$c_warnings $debug_extra_warnings"
-cxx_warnings="$cxx_warnings $debug_extra_warnings"
-extra_configs="$amd64_configs $debug_configs $max_configs --enable-thread-safe-client"
+extra_flags="$amd64_cflags -D__sun -m64 -mtune=athlon64 $debug_cflags"
+extra_configs="$amd64_configs $debug_configs $max_configs --with-libevent"
+
+LDFLAGS="-lmtmalloc -static-libgcc"
+export LDFLAGS
 
 . "$path/FINISH.sh"

=== modified file 'BUILD/compile-solaris-amd64-forte'
--- a/BUILD/compile-solaris-amd64-forte	2008-09-30 20:57:48 +0000
+++ b/BUILD/compile-solaris-amd64-forte	2009-05-09 04:01:53 +0000
@@ -1,53 +1,29 @@
-#! /bin/sh
+#!/bin/sh
+
+# See file compile-solaris-amd64 for basic pre-requisites.
+
+# This build uses the Sun Studio compilers (cc, CC), available from:
+#     http://developers.sun.com/sunstudio/downloads/index.jsp
+# Note that you may want to apply current patches, as the downloaded version
+# is typically out of date. Download the PKG version if you intend to patch!
+
+# After installing, add /opt/SUNWspro/bin to your $PATH
+
 
-gmake -k clean || true
-/bin/rm -f */.deps/*.P config.cache
- 
 path=`dirname $0`
-. "$path/autorun.sh"
+. "$path/SETUP.sh"
 
-# For "optimal" code for this computer add -fast to EXTRA
-# To compile 64 bit, add -m64 to EXTRA_64_BIT
+extra_flags="-m64 -mt -D_FORTEC_ -xbuiltin=%all -xlibmil -xlibmopt -fns=no -xprefetch=auto -xprefetch_level=3"
+extra_configs="$max_configs --with-libevent"
 
-EXTRA_64_BIT="-m64"
-EXTRA="-fast"
+warnings=""
+c_warnings=""
+cxx_warnings=""
+base_cxxflags="-noex"
 
-#
-# The following should not need to be touched
-#
-
-export CC CXX CFLAGS CXXFLAGS LIBS
-STD="-g -mt -D_FORTEC_ $EXTRA $EXTRA_64_BIT"
-ASFLAGS="$EXTRA_64_BIT"
-CC=cc-5.0
-CFLAGS="-Xa -xstrconst $STD"
+CC=cc
+CFLAGS="-xstrconst"
 CXX=CC
-CXXFLAGS="-noex $STD"
-LIBS=-lmtmalloc
-./configure \
-    --prefix=/usr/local/mysql \
-    --localstatedir=/usr/local/mysql/data \
-    --libexecdir=/usr/local/mysql/bin \
-    --with-extra-charsets=complex \
-    --enable-thread-safe-client \
-    --enable-local-infile \
-    --with-zlib-dir=bundled \
-    --with-big-tables \
-    --with-readline \
-    --with-archive-storage-engine \
-    --with-named-curses=-lcurses \
-    --with-big-tables \
-    --with-innodb \
-    --with-example-storage-engine \
-    --with-blackhole-storage-engine \
-    --with-federated-storage-engine \
-    --with-csv-storage-engine \
-    --with-ssl \
-    --enable-assembler
-
-# Not including:
-#     --with-ndbcluster
-#     --with-berkeley-db
+LDFLAGS="-lmtmalloc"
 
-gmake -j4
-test $? = 0 && make test
+. "$path/FINISH.sh"

=== modified file 'BUILD/compile-solaris-amd64-forte-debug' (properties changed: -x to +x)
--- a/BUILD/compile-solaris-amd64-forte-debug	2008-09-30 20:57:48 +0000
+++ b/BUILD/compile-solaris-amd64-forte-debug	2009-05-09 04:01:53 +0000
@@ -1,54 +1,27 @@
-#! /bin/sh
+#!/bin/sh
 
-gmake -k clean || true
-/bin/rm -f */.deps/*.P config.cache
- 
 path=`dirname $0`
-. "$path/autorun.sh"
+. "$path/SETUP.sh"
 
-# To compile 64 bit, add -m64 to EXTRA_64_BIT
-EXTRA_64_BIT="-m64"
+# Take only #define options - the others are gcc specific.
+# (real fix is for SETUP.sh not to put gcc specific options in $debug_cflags)
+DEFS=""
+for F in $debug_cflags ; do
+	expr "$F" : "^-D" && DEFS="$DEFS $F"
+done
+debug_cflags="-O0 -g $DEFS"
+
+extra_flags="-m64 -mt -D_FORTEC_ -xlibmopt -fns=no $debug_cflags"
+extra_configs="$max_configs --with-libevent $debug_configs"
+
+warnings=""
+c_warnings=""
+cxx_warnings=""
+base_cxxflags="-noex"
 
-# For "optimal" code for this computer add -fast to EXTRA. Note that
-# this causes problem with debugging the program since -fast implies
-# -xO5.
-EXTRA=""
-
-#
-# The following should not need to be touched
-#
-
-export CC CXX CFLAGS CXXFLAGS
-STD="-g -mt -D_FORTEC_ $EXTRA $EXTRA_64_BIT $debug_cflags"
-ASFLAGS="$EXTRA_64_BIT"
-CC=cc-5.0
-CFLAGS="-Xa -xstrconst $STD"
+CC=cc
+CFLAGS="-xstrconst"
 CXX=CC
-CXXFLAGS="-noex $STD"
-./configure \
-    --prefix=/usr/local/mysql \
-    --localstatedir=/usr/local/mysql/data \
-    --libexecdir=/usr/local/mysql/bin \
-    --with-extra-charsets=complex \
-    --enable-thread-safe-client \
-    --enable-local-infile \
-    --with-zlib-dir=bundled \
-    --with-big-tables \
-    --with-readline \
-    --with-archive-storage-engine \
-    --with-named-curses=-lcurses \
-    --with-big-tables \
-    --with-innodb \
-    --with-example-storage-engine \
-    --with-blackhole-storage-engine \
-    --with-federated-storage-engine \
-    --with-csv-storage-engine \
-    --with-ssl \
-    --with-debug \
-    --enable-assembler
-
-# Not including:
-#     --with-ndbcluster
-#     --with-berkeley-db
+LDFLAGS="-lmtmalloc"
 
-gmake -j4
+. "$path/FINISH.sh"

=== modified file 'storage/innobase/include/univ.i'
--- a/storage/innobase/include/univ.i	2009-05-06 12:03:24 +0000
+++ b/storage/innobase/include/univ.i	2009-05-11 15:31:30 +0000
@@ -55,10 +55,10 @@ of the 32-bit x86 assembler in mutex ope
 #  define UNIV_CAN_USE_X86_ASSEMBLER
 # endif
 
-/* We only try to do explicit inlining of functions with gcc and
-Microsoft Visual C++ */
+/* Enable explicit inlining of functions only for compilers known to
+support it. */
 
-# if !defined(__GNUC__)
+# if !defined(__GNUC__) && !defined(__SUNPRO_C)
 #  undef  UNIV_MUST_NOT_INLINE			/* Remove compiler warning */
 #  define UNIV_MUST_NOT_INLINE
 # endif

=== modified file 'storage/pbxt/src/Makefile.am'
--- a/storage/pbxt/src/Makefile.am	2009-04-01 06:40:11 +0000
+++ b/storage/pbxt/src/Makefile.am	2009-05-09 04:01:53 +0000
@@ -46,7 +46,7 @@ libpbxt_la_CFLAGS =		$(AM_CFLAGS) -DMYSQ
 EXTRA_LIBRARIES =		libpbxt.a
 noinst_LIBRARIES = 		libpbxt.a
 libpbxt_a_SOURCES =		$(libpbxt_la_SOURCES)
-libpbxt_a_CXXFLAGS =	$(AM_CXXFLAGS) -Wno-long-long
+libpbxt_a_CXXFLAGS =	$(AM_CXXFLAGS)
 libpbxt_a_CFLAGS =		$(AM_CFLAGS) -std=c99
 
 EXTRA_DIST =			CMakeLists.txt

=== modified file 'storage/pbxt/src/lock_xt.h'
--- a/storage/pbxt/src/lock_xt.h	2009-04-02 10:03:14 +0000
+++ b/storage/pbxt/src/lock_xt.h	2009-05-09 04:01:53 +0000
@@ -208,9 +208,9 @@ inline void xt_atomic_dec2(volatile xtWo
 #elif defined(__GNUC__)
 	__sync_fetch_and_sub(mptr, 1);
 #elif defined(XT_SPL_SOLARIS_LIB)
-	val1 = atomic_dec_16_nv(mptr);
+	atomic_dec_16_nv(mptr);
 #else
-	val1 = --(*mptr);
+	--(*mptr);
 #endif
 }
 

=== modified file 'storage/pbxt/src/pbms.h'
--- a/storage/pbxt/src/pbms.h	2009-03-26 12:18:01 +0000
+++ b/storage/pbxt/src/pbms.h	2009-05-09 04:01:53 +0000
@@ -782,21 +782,28 @@ private:
 
 	void deleteTempFiles()
 	{
-		struct dirent	entry;
+		struct dirent *entry;
 		struct dirent	*result;
 		DIR				*odir;
 		int				err;
+		size_t				sz;
 		char			temp_file[100];
 
+#ifdef XT_SOLARIS
+		sz = sizeof(struct dirent) + pathconf("/tmp/", _PC_NAME_MAX); // Solaris, see readdir(3C)
+#else
+		sz = sizeof(struct dirent);
+#endif
+		entry = (struct dirent*)malloc(sz);
 		if (!(odir = opendir("/tmp/")))
 			return;
-		err = readdir_r(odir, &entry, &result);
+		err = readdir_r(odir, entry, &result);
 		while (!err && result) {
 			const char **prefix = temp_prefix;
 			
 			while (*prefix) {
-				if (startsWith(entry.d_name, *prefix)) {
-					int pid = atoi(entry.d_name + strlen(*prefix));
+				if (startsWith(entry->d_name, *prefix)) {
+					int pid = atoi(entry->d_name + strlen(*prefix));
 					
 					/* If the process does not exist: */
 					if (kill(pid, 0) == -1 && errno == ESRCH) {
@@ -807,9 +814,10 @@ private:
 				prefix++;
 			}
 			
-			err = readdir_r(odir, &entry, &result);
+			err = readdir_r(odir, entry, &result);
 		}
 		closedir(odir);
+		free(entry);
 	}
 };
 #endif // PBMS_API




Follow ups