From: John David Duncan Date: October 4 2011 6:15am Subject: bzr push into mysql-5.5-cluster branch (john.duncan:3567 to 3568) List-Archive: http://lists.mysql.com/commits/141288 Message-Id: <201110040615.p946FcUf000550@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3568 John David Duncan 2011-10-03 [merge] Merge in mysql-5.5-cluster-rel modified: INSTALL-SOURCE INSTALL-WIN-SOURCE cmake/make_dist.cmake.in cmake/mysql_version.cmake cmake/package_name.cmake configure.cmake extra/innochecksum.c libmysqld/CMakeLists.txt mysql-test/collections/default.release storage/ndb/clusterj/clusterj-test/CMakeLists.txt storage/ndb/config/type_JAVA.cmake storage/ndb/memcache/CMakeLists.txt storage/ndb/memcache/extra/memcached/engines/default_engine/default_engine.c storage/ndb/memcache/src/schedulers/S_sched.cc storage/ndb/memcache/unit/test_workqueue.c storage/ndb/ndb_configure.cmake storage/ndb/test/include/HugoQueryBuilder.hpp support-files/CMakeLists.txt support-files/mysql.spec.sh 3567 John David Duncan 2011-10-03 Add line that somehow got deleted (!??) modified: storage/ndb/memcache/CMakeLists.txt === modified file 'INSTALL-SOURCE' --- a/INSTALL-SOURCE 2007-11-23 09:15:55 +0000 +++ b/INSTALL-SOURCE 2011-09-28 10:25:49 +0000 @@ -1,7 +1,7 @@ You can find information about how to install from a source distributions at - http://dev.mysql.com/doc/refman/5.1/en/installing-source.html + http://dev.mysql.com/doc/refman/5.5/en/source-installation.html The MySQL Reference Manual is also available in various formats on http://dev.mysql.com/doc; if you're interested in the DocBook XML === modified file 'INSTALL-WIN-SOURCE' --- a/INSTALL-WIN-SOURCE 2007-11-23 09:15:55 +0000 +++ b/INSTALL-WIN-SOURCE 2011-09-28 10:25:49 +0000 @@ -2,7 +2,7 @@ You can find information about how to install from a Windows source distributions at - http://dev.mysql.com/doc/refman/5.1/en/windows-source-build.html + http://dev.mysql.com/doc/refman/5.5/en/source-installation.html The MySQL Reference Manual is also available in various formats on http://dev.mysql.com/doc; if you're interested in the DocBook XML === modified file 'cmake/make_dist.cmake.in' --- a/cmake/make_dist.cmake.in 2011-06-10 07:12:10 +0000 +++ b/cmake/make_dist.cmake.in 2011-09-30 12:59:13 +0000 @@ -120,8 +120,13 @@ CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/s ${PACKAGE_DIR}/sql/sql_yacc.cc COPYONLY) # Copy spec files -CONFIGURE_FILE(${CMAKE_BINARY_DIR}/support-files/mysql.${VERSION}.spec - ${PACKAGE_DIR}/support-files/mysql.${VERSION}.spec COPYONLY) +SET(SPECFILENAME "mysql.${VERSION}.spec") +IF("${VERSION}" MATCHES "-ndb-") + STRING(REGEX REPLACE "^.*-ndb-" "" NDBVERSION "${VERSION}") + SET(SPECFILENAME "mysql-cluster-${NDBVERSION}.spec") +ENDIF() +CONFIGURE_FILE(${CMAKE_BINARY_DIR}/support-files/${SPECFILENAME} + ${PACKAGE_DIR}/support-files/${SPECFILENAME} COPYONLY) # Add documentation, if user has specified where to find them IF(MYSQL_DOCS_LOCATION) === modified file 'cmake/mysql_version.cmake' --- a/cmake/mysql_version.cmake 2011-08-31 10:39:08 +0000 +++ b/cmake/mysql_version.cmake 2011-09-30 12:59:13 +0000 @@ -57,7 +57,10 @@ MACRO(GET_MYSQL_VERSION) MESSAGE("-- MySQL ${VERSION}") SET(MYSQL_BASE_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}" CACHE INTERNAL "MySQL Base version") SET(MYSQL_NO_DASH_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}") - STRING(REPLACE "-" "_" MYSQL_RPM_VERSION "${VERSION}") + # Use NDBVERSION irregardless of whether this is Cluster or not, if not + # then the regex will be ignored anyway. + STRING(REGEX REPLACE "^.*-ndb-" "" NDBVERSION "${VERSION}") + STRING(REPLACE "-" "_" MYSQL_RPM_VERSION "${NDBVERSION}") MATH(EXPR MYSQL_VERSION_ID "10000*${MAJOR_VERSION} + 100*${MINOR_VERSION} + ${PATCH_VERSION}") MARK_AS_ADVANCED(VERSION MYSQL_VERSION_ID MYSQL_BASE_VERSION) SET(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION}) @@ -93,6 +96,10 @@ ENDIF() IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME) SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mysql-${VERSION}") + IF("${VERSION}" MATCHES "-ndb-") + STRING(REGEX REPLACE "^.*-ndb-" "" NDBVERSION "${VERSION}") + SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mysql-cluster-gpl-${NDBVERSION}") + ENDIF() ENDIF() SET(CPACK_PACKAGE_CONTACT "MySQL Build Team ") SET(CPACK_PACKAGE_VENDOR "Sun Microsystems, Inc") === modified file 'cmake/package_name.cmake' --- a/cmake/package_name.cmake 2011-06-30 15:46:53 +0000 +++ b/cmake/package_name.cmake 2011-09-26 12:38:19 +0000 @@ -116,8 +116,15 @@ IF(NOT VERSION) SET(PRODUCT_TAG) ENDIF() - SET(package_name "mysql${PRODUCT_TAG}-${VERSION}-${SYSTEM_NAME_AND_PROCESSOR}") - + IF("${VERSION}" MATCHES "-ndb-") + STRING(REGEX REPLACE "^.*-ndb-" "" NDBVERSION "${VERSION}") + SET(package_name "mysql-cluster${PRODUCT_TAG}-${NDBVERSION}-${SYSTEM_NAME_AND_PROCESSOR}") + ELSE() + SET(package_name "mysql${PRODUCT_TAG}-${VERSION}-${SYSTEM_NAME_AND_PROCESSOR}") + ENDIF() + + MESSAGE("-- Packaging as: ${package_name}") + # Sometimes package suffix is added (something like "-icc-glibc23") IF(PACKAGE_SUFFIX) SET(package_name "${package_name}${PACKAGE_SUFFIX}") === modified file 'configure.cmake' --- a/configure.cmake 2011-08-31 10:39:08 +0000 +++ b/configure.cmake 2011-09-27 12:30:20 +0000 @@ -24,6 +24,11 @@ INCLUDE (CheckCCompilerFlag) INCLUDE (CheckCSourceRuns) INCLUDE (CheckSymbolExists) +# Turn on c99 mode when compiling with Sun Studio +IF("${CMAKE_C_COMPILER_ID}" STREQUAL "SunPro") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -xc99") + MESSAGE("-- Running ${CMAKE_C_COMPILER_ID} in c99 mode") +ENDIF() # WITH_PIC options.Not of much use, PIC is taken care of on platforms # where it makes sense anyway. @@ -1010,6 +1015,45 @@ ELSEIF(NOT WITH_ATOMIC_OPS) return 0; }" HAVE_GCC_ATOMIC_BUILTINS) + IF(NOT HAVE_GCC_ATOMIC_BUILTINS) + # Try if atomics become available once we instruct gcc + # to generate pentium+ instructions. + SET(SAVE_C_FLAGS "${CMAKE_C_FLAGS}") + SET(SAVE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=pentium") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=pentium") + CHECK_CXX_SOURCE_COMPILES(" + int main() + { + int foo= -10; int bar= 10; + long long int foo64= -10; long long int bar64= 10; + if (!__sync_fetch_and_add(&foo, bar) || foo) + return -1; + bar= __sync_lock_test_and_set(&foo, bar); + if (bar || foo != 10) + return -1; + bar= __sync_val_compare_and_swap(&bar, foo, 15); + if (bar) + return -1; + if (!__sync_fetch_and_add(&foo64, bar64) || foo64) + return -1; + bar64= __sync_lock_test_and_set(&foo64, bar64); + if (bar64 || foo64 != 10) + return -1; + bar64= __sync_val_compare_and_swap(&bar64, foo, 15); + if (bar64) + return -1; + return 0; + }" + HAVE_GCC_ATOMIC_BUILTINS_WITH_MARCH_PENTIUM) + IF(HAVE_GCC_ATOMIC_BUILTINS_WITH_MARCH_PENTIUM) + SET(HAVE_GCC_ATOMIC_BUILTINS 1) + MESSAGE("-- Using -march=pentium to enable atomic builtins") + ELSE() + SET(CMAKE_C_FLAGS "${SAVE_C_FLAGS}") + SET(CMAKE_CXX_FLAGS "${SAVE_CXX_FLAGS}") + ENDIF() + ENDIF() ELSE() MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!") ENDIF() === modified file 'extra/innochecksum.c' --- a/extra/innochecksum.c 2011-08-31 10:39:08 +0000 +++ b/extra/innochecksum.c 2011-09-27 14:47:12 +0000 @@ -28,7 +28,7 @@ #define _LARGEFILE_SOURCE #define _LARGEFILE64_SOURCE -#define _XOPEN_SOURCE 500 /* needed to include getopt.h on some platforms. */ +#define _XOPEN_SOURCE 600 /* needed to include getopt.h on some platforms. */ #include #include === modified file 'libmysqld/CMakeLists.txt' --- a/libmysqld/CMakeLists.txt 2011-09-02 09:16:56 +0000 +++ b/libmysqld/CMakeLists.txt 2011-09-29 19:34:49 +0000 @@ -134,9 +134,14 @@ IF(MSVC) INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR}/debug) ENDIF() -IF(UNIX) - INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR} RENAME - ${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug) +# +# The debug version of the embedded server is big, and at present causes +# the Solaris SVR4 packages to be too big (>2GB) for the packaging tools +# to handle. So, for now, we just disable it for those builds. +# +IF(UNIX AND NOT INSTALL_LAYOUT MATCHES "SVR4") + INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR} RENAME + ${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug) ENDIF() IF(MSVC AND NOT DISABLE_SHARED) === modified file 'mysql-test/collections/default.release' --- a/mysql-test/collections/default.release 2011-02-09 19:41:12 +0000 +++ b/mysql-test/collections/default.release 2011-09-28 13:44:49 +0000 @@ -9,3 +9,5 @@ perl mysql-test-run.pl --force --timer - perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-embedded --embedded-server --skip-rpl --skip-ndbcluster perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=nist --vardir=var-nist --suite=nist perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=nist+ps --vardir=var-nist_ps --suite=nist --ps-protocol +perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=ndb --vardir=var-ndb --suite=ndb +perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=ndb_memcache --vardir=var-ndb_memcache --suite=ndb_memcache === modified file 'storage/ndb/clusterj/clusterj-test/CMakeLists.txt' --- a/storage/ndb/clusterj/clusterj-test/CMakeLists.txt 2011-09-16 12:58:08 +0000 +++ b/storage/ndb/clusterj/clusterj-test/CMakeLists.txt 2011-09-29 15:28:29 +0000 @@ -32,15 +32,15 @@ ENDFOREACH() SET ( CLASSPATH target/classes ${WITH_CLASSPATH} - ${CMAKE_SOURCE_DIR}/storage/ndb/clusterj/clusterj-api/target/classes - ${CMAKE_SOURCE_DIR}/storage/ndb/clusterj/clusterj-core/target/classes) + ${CMAKE_BINARY_DIR}/storage/ndb/clusterj/clusterj-api/target/classes + ${CMAKE_BINARY_DIR}/storage/ndb/clusterj/clusterj-core/target/classes) SET(CLUSTERJ_TEST_EXPORTS regression,testsuite.clusterj,testsuite.clusterj.model,testsuite.clusterj.domaintypehandler) CREATE_MANIFEST(manifest.mf ${CLUSTERJ_TEST_EXPORTS} clusterj-test) CREATE_JAR(clusterj-test ${JAVA_SOURCES} CLASSPATH ${CLASSPATH} - MANIFEST manifest.mf + MANIFEST ${CMAKE_CURRENT_SOURCE_DIR}/manifest.mf DEPENDENCIES clusterj.jar EXTRA_FILES src/main/resources/META-INF src/main/resources/schema.sql === modified file 'storage/ndb/config/type_JAVA.cmake' --- a/storage/ndb/config/type_JAVA.cmake 2011-09-16 07:51:29 +0000 +++ b/storage/ndb/config/type_JAVA.cmake 2011-09-29 15:28:29 +0000 @@ -131,7 +131,7 @@ MACRO(CREATE_JAR) IF(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${F}) ADD_CUSTOM_COMMAND( OUTPUT ${MARKER} - COMMAND ${CMAKE_COMMAND} -E copy_directory ${F} ${CLASS_DIR}/${N} + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${F} ${CLASS_DIR}/${N} COMMAND ${CMAKE_COMMAND} -E touch ${MARKER} DEPENDS ${F} ${OLD_MARKER} COMMENT "Adding directory ${N} to ${TARGET}.jar" @@ -139,7 +139,7 @@ MACRO(CREATE_JAR) ELSE() ADD_CUSTOM_COMMAND( OUTPUT ${MARKER} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${F} ${CLASS_DIR}/${N} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${F} ${CLASS_DIR}/${N} COMMAND ${CMAKE_COMMAND} -E touch ${MARKER} DEPENDS ${F} ${OLD_MARKER} COMMENT "Adding file ${N} to ${TARGET}.jar" === modified file 'storage/ndb/memcache/CMakeLists.txt' --- a/storage/ndb/memcache/CMakeLists.txt 2011-10-03 17:38:21 +0000 +++ b/storage/ndb/memcache/CMakeLists.txt 2011-10-04 05:05:04 +0000 @@ -39,6 +39,7 @@ endif() remove_definitions(-DNDEBUG) include("FindMemcached.cmake") +include(CheckLibraryExists) IF(MEMCACHED_FOUND) MESSAGE(STATUS "Building NDB Memcache using " ${MEMCACHED_ROOT_DIR}) @@ -118,6 +119,9 @@ IF(${CMAKE_COMPILER_IS_GNUCXX}) STRING(REPLACE "-fno-implicit-templates" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) ENDIF() +IF(${CMAKE_CXX_COMPILER_ID} STREQUAL "SunPro") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -features=extensions") # __func__ +ENDIF() ########## ENVIRONMENT TESTS ######### @@ -130,6 +134,11 @@ CHECK_FUNCTION_EXISTS(gethrtime HAVE_GE CHECK_FUNCTION_EXISTS(gethrvtime HAVE_GETHRVTIME) CHECK_FUNCTION_EXISTS(memset HAVE_MEMSET) # Also: log in libm, dlsym in libdl? +CHECK_LIBRARY_EXISTS(dl dlsym "" HAVE_LIBDL) +SET(LIBDL "") +if(${HAVE_LIBDL}) + set(LIBDL "dl") +endif() CHECK_CXX_SOURCE_RUNS(" main() { @@ -198,9 +207,9 @@ install(FILES ${CMAKE_CURRENT_SOURCE_DIR DESTINATION ${INSTALL_MYSQLSHAREDIR}) ### Install the memcache-api directory ################ -install(DIRECTORY DESTINATION memcache-api) -install(PROGRAMS sandbox.sh DESTINATION memcache-api) -install(FILES README DESTINATION memcache-api) +install(DIRECTORY DESTINATION "${INSTALL_MYSQLSHAREDIR}/memcache-api") +install(PROGRAMS sandbox.sh DESTINATION "${INSTALL_MYSQLSHAREDIR}/memcache-api") +install(FILES README DESTINATION "${INSTALL_MYSQLSHAREDIR}/memcache-api") install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/ndb_memcache_metadata.sql DESTINATION memcache-api) === modified file 'storage/ndb/memcache/extra/memcached/engines/default_engine/default_engine.c' --- a/storage/ndb/memcache/extra/memcached/engines/default_engine/default_engine.c 2011-09-20 05:13:01 +0000 +++ b/storage/ndb/memcache/extra/memcached/engines/default_engine/default_engine.c 2011-10-04 05:05:04 +0000 @@ -218,14 +218,10 @@ ENGINE_ERROR_CODE create_instance(uint64 .lock = PTHREAD_MUTEX_INITIALIZER, .size = 10, }, - .info.engine_info = { - .description = "Default engine v0.1", - .num_features = 1, - .features = { - [0].feature = ENGINE_FEATURE_LRU - } - } }; + default_engine.info.engine_info.description = "Default engine v0.1"; + default_engine.info.engine_info.num_features = 1; + default_engine.info.engine_info.features[0].feature = ENGINE_FEATURE_LRU; *engine = default_engine; engine->tap_connections.clients = calloc(default_engine.tap_connections.size, sizeof(void*)); === modified file 'storage/ndb/memcache/src/schedulers/S_sched.cc' --- a/storage/ndb/memcache/src/schedulers/S_sched.cc 2011-10-03 04:22:18 +0000 +++ b/storage/ndb/memcache/src/schedulers/S_sched.cc 2011-10-04 05:05:04 +0000 @@ -836,6 +836,7 @@ void * S::Connection::run_ndb_send_threa timeout_msec = timeout_min; /* we are now "busy" */ } } + return 0; /* not reached */ } @@ -922,6 +923,7 @@ void * S::Connection::run_ndb_poll_threa } } } + return 0; /* not reached */ } === modified file 'storage/ndb/memcache/unit/test_workqueue.c' --- a/storage/ndb/memcache/unit/test_workqueue.c 2011-10-02 23:25:02 +0000 +++ b/storage/ndb/memcache/unit/test_workqueue.c 2011-10-04 05:05:04 +0000 @@ -17,6 +17,12 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + +#ifdef __GNUC__ +/* Required for useconds_t */ +#define _XOPEN_SOURCE 500 +#endif + #include #include #include === modified file 'storage/ndb/ndb_configure.cmake' --- a/storage/ndb/ndb_configure.cmake 2011-10-03 16:45:51 +0000 +++ b/storage/ndb/ndb_configure.cmake 2011-10-04 05:05:04 +0000 @@ -207,6 +207,9 @@ IF(WITH_CLASSPATH) MESSAGE(STATUS "Using supplied classpath: ${WITH_CLASSPATH}") ELSE() SET(WITH_CLASSPATH "$ENV{CLASSPATH}") + IF(WIN32) + STRING(REPLACE "\\" "/" WITH_CLASSPATH ${WITH_CLASSPATH}) + ENDIF() IF(WITH_CLASSPATH) MESSAGE(STATUS "Using CLASSPATH from environment: ${WITH_CLASSPATH}") ENDIF() === modified file 'storage/ndb/test/include/HugoQueryBuilder.hpp' --- a/storage/ndb/test/include/HugoQueryBuilder.hpp 2011-09-02 09:16:56 +0000 +++ b/storage/ndb/test/include/HugoQueryBuilder.hpp 2011-09-29 10:42:10 +0000 @@ -65,9 +65,16 @@ public: /** * If not any options set, random query qill be created */ +#ifdef __SUNPRO_CC + }; + /* Sun Studio doesn't support 64 bit values in enums in 32 bit mode. */ + #define O_RANDOM_OPTIONS (OptionMask)((~(OptionMask)0) & \ + ~(OptionMask)(O_SCAN | O_LOOKUP)) +#else O_RANDOM_OPTIONS = (OptionMask)((~(OptionMask)0) & ~(OptionMask)(O_SCAN | O_LOOKUP)) }; +#endif static const OptionMask OM_RANDOM_OPTIONS = (OptionMask)O_RANDOM_OPTIONS; HugoQueryBuilder(Ndb* ndb, const NdbDictionary::Table**tabptr, === modified file 'support-files/CMakeLists.txt' --- a/support-files/CMakeLists.txt 2010-12-17 23:03:23 +0000 +++ b/support-files/CMakeLists.txt 2011-09-30 11:56:04 +0000 @@ -70,7 +70,14 @@ IF(UNIX) INSTALL(FILES mysql.m4 DESTINATION ${INSTALL_SHAREDIR}/aclocal COMPONENT Development) CONFIGURE_FILE(MySQL-shared-compat.spec.sh ${CMAKE_CURRENT_BINARY_DIR}/MySQL-shared-compat.spec @ONLY) CONFIGURE_FILE(mysql.spec.sh ${CMAKE_CURRENT_BINARY_DIR}/mysql.spec @ONLY) - CONFIGURE_FILE(mysql.spec.sh ${CMAKE_CURRENT_BINARY_DIR}/mysql.${VERSION}.spec @ONLY) + + SET(SPECFILENAME "mysql.${VERSION}.spec") + IF("${VERSION}" MATCHES "-ndb-") + STRING(REGEX REPLACE "^.*-ndb-" "" NDBVERSION "${VERSION}") + SET(SPECFILENAME "mysql-cluster-${NDBVERSION}.spec") + ENDIF() + CONFIGURE_FILE(mysql.spec.sh ${CMAKE_CURRENT_BINARY_DIR}/${SPECFILENAME} @ONLY) + CONFIGURE_FILE(MySQL-shared-compat.spec.sh ${CMAKE_CURRENT_BINARY_DIR}/MySQL-shared-compat.spec @ONLY) SET(bindir ${prefix}/${INSTALL_BINDIR}) === modified file 'support-files/mysql.spec.sh' --- a/support-files/mysql.spec.sh 2011-08-31 10:39:08 +0000 +++ b/support-files/mysql.spec.sh 2011-09-30 15:49:23 +0000 @@ -24,7 +24,7 @@ %define mysql_vendor_2 Sun Microsystems, Inc. %define mysql_vendor Oracle and/or its affiliates -%define mysql_version @VERSION@ +%define mysql_version @NDBVERSION@ %define mysqld_user mysql %define mysqld_group mysql @@ -127,55 +127,74 @@ %define distro_description Oracle Enterprise Linux 4 %define distro_releasetag oel4 %define distro_buildreq gcc-c++ gperf ncurses-devel perl readline-devel time zlib-devel - %define distro_requires chkconfig coreutils grep procps shadow-utils + %define distro_requires chkconfig coreutils grep procps shadow-utils net-tools %else %if "%oelver" == "5" %define distro_description Oracle Enterprise Linux 5 %define distro_releasetag oel5 %define distro_buildreq gcc-c++ gperf ncurses-devel perl readline-devel time zlib-devel - %define distro_requires chkconfig coreutils grep procps shadow-utils + %define distro_requires chkconfig coreutils grep procps shadow-utils net-tools %else %{error:Oracle Enterprise Linux %{oelver} is unsupported} %endif %endif %else - %if %(test -f /etc/redhat-release && echo 1 || echo 0) - %define rhelver %(rpm -qf --qf '%%{version}\\n' /etc/redhat-release | sed -e 's/^\\([0-9]*\\).*/\\1/g') - %if "%rhelver" == "4" - %define distro_description Red Hat Enterprise Linux 4 - %define distro_releasetag rhel4 - %define distro_buildreq gcc-c++ gperf ncurses-devel perl readline-devel time zlib-devel - %define distro_requires chkconfig coreutils grep procps shadow-utils + %if %(test -f /etc/oracle-release && echo 1 || echo 0) + %define elver %(rpm -qf --qf '%%{version}\\n' /etc/oracle-release | sed -e 's/^\\([0-9]*\\).*/\\1/g') + %if "%elver" == "6" + %define distro_description Oracle Linux 6 + %define distro_releasetag el6 + %define distro_buildreq gcc-c++ ncurses-devel perl readline-devel time zlib-devel + %define distro_requires chkconfig coreutils grep procps shadow-utils net-tools %else - %if "%rhelver" == "5" - %define distro_description Red Hat Enterprise Linux 5 - %define distro_releasetag rhel5 - %define distro_buildreq gcc-c++ gperf ncurses-devel perl readline-devel time zlib-devel - %define distro_requires chkconfig coreutils grep procps shadow-utils - %else - %{error:Red Hat Enterprise Linux %{rhelver} is unsupported} - %endif + %{error:Oracle Linux %{elver} is unsupported} %endif %else - %if %(test -f /etc/SuSE-release && echo 1 || echo 0) - %define susever %(rpm -qf --qf '%%{version}\\n' /etc/SuSE-release) - %if "%susever" == "10" - %define distro_description SUSE Linux Enterprise Server 10 - %define distro_releasetag sles10 - %define distro_buildreq gcc-c++ gdbm-devel gperf ncurses-devel openldap2-client readline-devel zlib-devel - %define distro_requires aaa_base coreutils grep procps pwdutils + %if %(test -f /etc/redhat-release && echo 1 || echo 0) + %define rhelver %(rpm -qf --qf '%%{version}\\n' /etc/redhat-release | sed -e 's/^\\([0-9]*\\).*/\\1/g') + %if "%rhelver" == "4" + %define distro_description Red Hat Enterprise Linux 4 + %define distro_releasetag rhel4 + %define distro_buildreq gcc-c++ gperf ncurses-devel perl readline-devel time zlib-devel + %define distro_requires chkconfig coreutils grep procps shadow-utils net-tools %else - %if "%susever" == "11" - %define distro_description SUSE Linux Enterprise Server 11 - %define distro_releasetag sles11 - %define distro_buildreq gcc-c++ gdbm-devel gperf ncurses-devel openldap2-client procps pwdutils readline-devel zlib-devel - %define distro_requires aaa_base coreutils grep procps pwdutils + %if "%rhelver" == "5" + %define distro_description Red Hat Enterprise Linux 5 + %define distro_releasetag rhel5 + %define distro_buildreq gcc-c++ gperf ncurses-devel perl readline-devel time zlib-devel + %define distro_requires chkconfig coreutils grep procps shadow-utils net-tools %else - %{error:SuSE %{susever} is unsupported} + %if "%rhelver" == "6" + %define distro_description Red Hat Enterprise Linux 6 + %define distro_releasetag rhel6 + %define distro_buildreq gcc-c++ ncurses-devel perl readline-devel time zlib-devel + %define distro_requires chkconfig coreutils grep procps shadow-utils net-tools + %else + %{error:Red Hat Enterprise Linux %{rhelver} is unsupported} + %endif %endif %endif %else - %{error:Unsupported distribution} + %if %(test -f /etc/SuSE-release && echo 1 || echo 0) + %define susever %(rpm -qf --qf '%%{version}\\n' /etc/SuSE-release) + %if "%susever" == "10" + %define distro_description SUSE Linux Enterprise Server 10 + %define distro_releasetag sles10 + %define distro_buildreq gcc-c++ gdbm-devel gperf ncurses-devel openldap2-client readline-devel zlib-devel + %define distro_requires aaa_base coreutils grep procps pwdutils + %else + %if "%susever" == "11" + %define distro_description SUSE Linux Enterprise Server 11 + %define distro_releasetag sles11 + %define distro_buildreq gcc-c++ gdbm-devel gperf ncurses-devel openldap2-client procps pwdutils readline-devel zlib-devel + %define distro_requires aaa_base coreutils grep procps pwdutils + %else + %{error:SuSE %{susever} is unsupported} + %endif + %endif + %else + %{error:Unsupported distribution} + %endif %endif %endif %endif @@ -219,18 +238,18 @@ # Main spec file section ############################################################################## -Name: MySQL%{product_suffix} -Summary: MySQL: a very fast and reliable SQL database server +Name: MySQL-Cluster%{product_suffix} +Summary: MySQL Cluster: a very fast and reliable SQL database server Group: Applications/Databases Version: @MYSQL_RPM_VERSION@ Release: %{release}%{?distro_releasetag:.%{distro_releasetag}} Distribution: %{distro_description} License: Copyright (c) 2000, @MYSQL_COPYRIGHT_YEAR@, %{mysql_vendor}. All rights reserved. Under %{license_type} license as shown in the Description field. -Source: http://www.mysql.com/Downloads/MySQL-@MYSQL_BASE_VERSION@/%{src_dir}.tar.gz +Source: %{src_dir}.tar.gz URL: http://www.mysql.com/ -Packager: MySQL Build Team +Packager: MySQL Release Engineering Vendor: %{mysql_vendor} -Provides: msqlormysql MySQL-server mysql +Conflicts: msqlormysql MySQL-server mysql BuildRequires: %{distro_buildreq} # Think about what you use here since the first step is to @@ -260,14 +279,15 @@ documentation and the manual for more in # Sub package definition ############################################################################## -%package -n MySQL-server%{product_suffix} +%package -n MySQL-Cluster-server%{product_suffix} Summary: MySQL: a very fast and reliable SQL database server Group: Applications/Databases Requires: %{distro_requires} -Provides: msqlormysql mysql-server mysql MySQL MySQL-server -Obsoletes: MySQL mysql mysql-server MySQL-server MySQL-server-community +Provides: MySQL-Cluster-server +Obsoletes: MySQL-Cluster-server +Conflicts: MySQL mysql mysql-server MySQL-server -%description -n MySQL-server%{product_suffix} +%description -n MySQL-Cluster-server%{product_suffix} The MySQL(TM) software delivers a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. MySQL Server is intended for mission-critical, heavy-load production systems as well @@ -289,66 +309,67 @@ This package includes the MySQL server b to run and administer a MySQL server. If you want to access and work with the database, you have to install -package "MySQL-client%{product_suffix}" as well! +package "MySQL-Cluster-client%{product_suffix}" as well! # ---------------------------------------------------------------------------- -%package -n MySQL-client%{product_suffix} -Summary: MySQL - Client +%package -n MySQL-Cluster-client%{product_suffix} +Summary: MySQL Cluster - Client Group: Applications/Databases -Obsoletes: mysql-client MySQL-client MySQL-client-community -Provides: mysql-client MySQL-client +Provides: MySQL-Cluster-client +Obsoletes: MySQL-Cluster-client -%description -n MySQL-client%{product_suffix} +%description -n MySQL-Cluster-client%{product_suffix} This package contains the standard MySQL clients and administration tools. For a description of MySQL see the base MySQL RPM or http://www.mysql.com/ # ---------------------------------------------------------------------------- -%package -n MySQL-test%{product_suffix} -Requires: MySQL-client%{product_suffix} perl -Summary: MySQL - Test suite +%package -n MySQL-Cluster-test%{product_suffix} +Requires: MySQL-Cluster-client%{product_suffix} perl +Summary: MySQL Cluster - Test suite Group: Applications/Databases -Provides: mysql-test -Obsoletes: mysql-bench mysql-test MySQL-test-community +Provides: MySQL-Cluster-test +Obsoletes: MySQL-Cluster-test AutoReqProv: no -%description -n MySQL-test%{product_suffix} +%description -n MySQL-Cluster-test%{product_suffix} This package contains the MySQL regression test suite. For a description of MySQL see the base MySQL RPM or http://www.mysql.com/ # ---------------------------------------------------------------------------- -%package -n MySQL-devel%{product_suffix} -Summary: MySQL - Development header files and libraries +%package -n MySQL-Cluster-devel%{product_suffix} +Summary: MySQL Cluster - Development header files and libraries Group: Applications/Databases -Provides: mysql-devel -Obsoletes: mysql-devel MySQL-devel-community +Provides: MySQL-Cluster-devel +Obsoletes: MySQL-Cluster-devel -%description -n MySQL-devel%{product_suffix} +%description -n MySQL-Cluster-devel%{product_suffix} This package contains the development header files and libraries necessary to develop MySQL client applications. For a description of MySQL see the base MySQL RPM or http://www.mysql.com/ # ---------------------------------------------------------------------------- -%package -n MySQL-shared%{product_suffix} -Summary: MySQL - Shared libraries +%package -n MySQL-Cluster-shared%{product_suffix} +Summary: MySQL Cluster - Shared libraries Group: Applications/Databases -Provides: mysql-shared -Obsoletes: MySQL-shared-community +Provides: MySQL-Cluster-shared +Obsoletes: MySQL-Cluster-shared -%description -n MySQL-shared%{product_suffix} +%description -n MySQL-Cluster-shared%{product_suffix} This package contains the shared libraries (*.so*) which certain languages and applications need to dynamically load and use MySQL. # ---------------------------------------------------------------------------- -%package -n MySQL-embedded%{product_suffix} -Summary: MySQL - embedded library +%package -n MySQL-Cluster-embedded%{product_suffix} +Summary: MySQL Cluster - embedded library Group: Applications/Databases -Requires: MySQL-devel%{product_suffix} -Obsoletes: mysql-embedded MySQL-embedded-community +Requires: MySQL-Cluster-devel%{product_suffix} +Provides: MySQL-Cluster-embedded +Obsoletes: MySQL-Cluster-embedded -%description -n MySQL-embedded%{product_suffix} +%description -n MySQL-Cluster-embedded%{product_suffix} This package contains the MySQL server as an embedded library. The embedded MySQL server library makes it possible to run a full-featured @@ -421,7 +442,7 @@ mkdir debug # XXX: install_layout so we can't just set it based on INSTALL_LAYOUT=RPM ${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM \ -DCMAKE_BUILD_TYPE=Debug \ - -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock" \ + -DMYSQL_UNIX_ADDR="%{mysqldatadir}/mysql.sock" \ -DFEATURE_SET="%{feature_set}" \ -DCOMPILATION_COMMENT="%{compilation_comment_debug}" \ -DMYSQL_SERVER_SUFFIX="%{server_suffix}" @@ -436,7 +457,7 @@ mkdir release # XXX: install_layout so we can't just set it based on INSTALL_LAYOUT=RPM ${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock" \ + -DMYSQL_UNIX_ADDR="%{mysqldatadir}/mysql.sock" \ -DFEATURE_SET="%{feature_set}" \ -DCOMPILATION_COMMENT="%{compilation_comment_release}" \ -DMYSQL_SERVER_SUFFIX="%{server_suffix}" @@ -444,25 +465,6 @@ mkdir release make ${MAKE_JFLAG} VERBOSE=1 ) -# Use the build root for temporary storage of the shared libraries. -RBR=$RPM_BUILD_ROOT - -# Clean up the BuildRoot first -[ "$RBR" != "/" ] && [ -d "$RBR" ] && rm -rf "$RBR"; - -# For gcc builds, include libgcc.a in the devel subpackage (BUG 4921). This -# needs to be during build phase as $CC is not set during install. -if "$CC" -v 2>&1 | grep '^gcc.version' >/dev/null 2>&1 -then - libgcc=`$CC $CFLAGS --print-libgcc-file` - if [ -f $libgcc ] - then - mkdir -p $RBR%{_libdir}/mysql - install -m 644 $libgcc $RBR%{_libdir}/mysql/libmygcc.a - echo "%{_libdir}/mysql/libmygcc.a" >>optional-files-devel - fi -fi - ############################################################################## %install @@ -485,6 +487,23 @@ install -d $RBR%{_sbindir} make DESTDIR=$RBR install ) +# For gcc builds, include libgcc.a in the devel subpackage (BUG 4921). Do +# this in a sub-shell to ensure we don't pollute the install environment +# with compiler bits. +( + PATH=${MYSQL_BUILD_PATH:-$PATH} + CC=${MYSQL_BUILD_CC:-${CC:-gcc}} + CFLAGS=${MYSQL_BUILD_CFLAGS:-${CFLAGS:-$RPM_OPT_FLAGS}} + if "${CC}" -v 2>&1 | grep '^gcc.version' >/dev/null 2>&1; then + libgcc=`${CC} ${CFLAGS} --print-libgcc-file` + if [ -f ${libgcc} ]; then + mkdir -p $RBR%{_libdir}/mysql + install -m 644 ${libgcc} $RBR%{_libdir}/mysql/libmygcc.a + echo "%{_libdir}/mysql/libmygcc.a" >>optional-files-devel + fi + fi +) + # FIXME: at some point we should stop doing this and just install everything # FIXME: directly into %{_libdir}/mysql - perhaps at the same time as renaming # FIXME: the shared libraries to use libmysql*-$major.$minor.so syntax @@ -516,13 +535,13 @@ install -m 644 "%{malloc_lib_source}" \ # Remove man pages we explicitly do not want to package, avoids 'unpackaged # files' warning. -rm -f $RBR%{_mandir}/man1/make_win_bin_dist.1* +# This has become obsolete: rm -f $RBR%{_mandir}/man1/make_win_bin_dist.1* ############################################################################## # Post processing actions, i.e. when installed ############################################################################## -%pre -n MySQL-server%{product_suffix} +%pre -n MySQL-Cluster-server%{product_suffix} # This is the code running at the beginning of a RPM upgrade action, # before replacing the old files with the new ones. @@ -547,7 +566,7 @@ fi # Check if we can safely upgrade. An upgrade is only safe if it's from one # of our RPMs in the same version family. -installed=`rpm -q --whatprovides mysql-server 2> /dev/null` +installed=`rpm -q --whatprovides MySQL-Cluster-server 2> /dev/null` if [ $? -eq 0 -a -n "$installed" ]; then vendor=`rpm -q --queryformat='%{VENDOR}' "$installed" 2>&1` version=`rpm -q --queryformat='%{VERSION}' "$installed" 2>&1` @@ -603,7 +622,7 @@ A manual upgrade is required. You may choose to use 'rpm --nodeps -ev ' to remove the package which contains the mysqlclient shared library. The - library will be reinstalled by the MySQL-shared-compat package. + library will be reinstalled by the MySQL-Cluster-shared-compat package. - Install the new MySQL packages supplied by $myvendor - Ensure that the MySQL server is started - Run the 'mysql_upgrade' program @@ -690,7 +709,7 @@ if [ -x %{_sysconfdir}/init.d/mysql ] ; sleep 5 fi -%post -n MySQL-server%{product_suffix} +%post -n MySQL-Cluster-server%{product_suffix} # This is the code running at the end of a RPM install or upgrade action, # after the (new) files have been written. @@ -844,7 +863,7 @@ mv -f $STATUS_FILE ${STATUS_FILE}-LAST #scheduled service packs and more. Visit www.mysql.com/enterprise for more #information." -%preun -n MySQL-server%{product_suffix} +%preun -n MySQL-Cluster-server%{product_suffix} # Which '$1' does this refer to? Fedora docs have info: # " ... a count of the number of versions of the package that are installed. @@ -873,7 +892,7 @@ fi # We do not remove the mysql user since it may still own a lot of # database files. -%triggerpostun -n MySQL-server%{product_suffix} --MySQL-server-community +%triggerpostun -n MySQL-Cluster-server%{product_suffix} -- MySQL-Cluster-server # Setup: We renamed this package, so any existing "server-community" # package will be removed when this "server" is installed. @@ -928,9 +947,9 @@ if [ "$SERVER_TO_START" = "true" ] ; the fi fi -echo "Trigger 'postun --community' finished at `date`" >> $STATUS_HISTORY -echo >> $STATUS_HISTORY -echo "=====" >> $STATUS_HISTORY +echo "Trigger 'postun -- MySQL-Server-cluster' finished at `date`" >> $STATUS_HISTORY +echo >> $STATUS_HISTORY +echo "=====" >> $STATUS_HISTORY # ---------------------------------------------------------------------- @@ -944,7 +963,7 @@ echo "=====" # Files section ############################################################################## -%files -n MySQL-server%{product_suffix} +%files -n MySQL-Cluster-server%{product_suffix} %defattr(-,root,root,0755) %if %{defined license_files_server} @@ -984,6 +1003,13 @@ echo "=====" %doc %attr(644, root, man) %{_mandir}/man1/replace.1* %doc %attr(644, root, man) %{_mandir}/man1/resolve_stack_dump.1* %doc %attr(644, root, man) %{_mandir}/man1/resolveip.1* +%doc %attr(644, root, man) %{_mandir}/man1/mysql_plugin.1* + +%if %(test "@MEMCACHED_ROOT_DIR@" '!=' "MEMCACHED_ROOT_DIR-NOTFOUND" && echo 1 || echo 0) +%doc %attr(644, root, root) %{_datadir}/mysql/memcache-api/README +%doc %attr(644, root, root) %{_datadir}/mysql/memcache-api/ndb_memcache_metadata.sql +%doc %attr(644, root, root) %{_datadir}/mysql/memcache-api/sandbox.sh +%endif %ghost %config(noreplace,missingok) %{_sysconfdir}/my.cnf @@ -1012,9 +1038,32 @@ echo "=====" %attr(755, root, root) %{_bindir}/resolve_stack_dump %attr(755, root, root) %{_bindir}/resolveip +%attr(755, root, root) %{_bindir}/ndb_config +%attr(755, root, root) %{_bindir}/ndb_delete_all +%attr(755, root, root) %{_bindir}/ndb_desc +%attr(755, root, root) %{_bindir}/ndb_drop_index +%attr(755, root, root) %{_bindir}/ndb_drop_table +%attr(755, root, root) %{_bindir}/ndb_index_stat +%attr(755, root, root) %{_bindir}/ndb_mgm +%attr(755, root, root) %{_bindir}/ndb_print_backup_file +%attr(755, root, root) %{_bindir}/ndb_print_file +%attr(755, root, root) %{_bindir}/ndb_print_schema_file +%attr(755, root, root) %{_bindir}/ndb_print_sys_file +%attr(755, root, root) %{_bindir}/ndb_redo_log_reader +%attr(755, root, root) %{_bindir}/ndb_restore +%attr(755, root, root) %{_bindir}/ndb_select_all +%attr(755, root, root) %{_bindir}/ndb_select_count +%attr(755, root, root) %{_bindir}/ndb_show_tables +%attr(755, root, root) %{_bindir}/ndb_waiter + %attr(755, root, root) %{_sbindir}/mysqld %attr(755, root, root) %{_sbindir}/mysqld-debug %attr(755, root, root) %{_sbindir}/rcmysql + +%attr(755, root, root) %{_sbindir}/ndbd +%attr(755, root, root) %{_sbindir}/ndb_mgmd +%attr(755, root, root) %{_sbindir}/ndbmtd + %attr(755, root, root) %{_libdir}/mysql/plugin/adt_null.so %attr(755, root, root) %{_libdir}/mysql/plugin/libdaemon_example.so %attr(755, root, root) %{_libdir}/mysql/plugin/mypluglib.so @@ -1042,13 +1091,19 @@ echo "=====" %attr(755, root, root) %{_libdir}/mysql/%{malloc_lib_target} %endif +%attr(755, root, root) %{_libdir}/mysql/libndbclient_static.a + +%if %(test "@MEMCACHED_ROOT_DIR@" '!=' "MEMCACHED_ROOT_DIR-NOTFOUND" && echo 1 || echo 0) +%attr(755, root, root) %{_libdir}/ndb_engine.so +%endif + %attr(644, root, root) %config(noreplace,missingok) %{_sysconfdir}/logrotate.d/mysql %attr(755, root, root) %{_sysconfdir}/init.d/mysql %attr(755, root, root) %{_datadir}/mysql/ # ---------------------------------------------------------------------------- -%files -n MySQL-client%{product_suffix} +%files -n MySQL-Cluster-client%{product_suffix} %defattr(-, root, root, 0755) %attr(755, root, root) %{_bindir}/msql2mysql @@ -1080,7 +1135,7 @@ echo "=====" %doc %attr(644, root, man) %{_mandir}/man1/mysqlslap.1* # ---------------------------------------------------------------------------- -%files -n MySQL-devel%{product_suffix} -f optional-files-devel +%files -n MySQL-Cluster-devel%{product_suffix} -f optional-files-devel %defattr(-, root, root, 0755) %doc %attr(644, root, man) %{_mandir}/man1/comp_err.1* %doc %attr(644, root, man) %{_mandir}/man1/mysql_config.1* @@ -1094,19 +1149,19 @@ echo "=====" %{_libdir}/mysql/libmysqlservices.a # ---------------------------------------------------------------------------- -%files -n MySQL-shared%{product_suffix} +%files -n MySQL-Cluster-shared%{product_suffix} %defattr(-, root, root, 0755) # Shared libraries (omit for architectures that don't support them) %{_libdir}/libmysql*.so* -%post -n MySQL-shared%{product_suffix} +%post -n MySQL-Cluster-shared%{product_suffix} /sbin/ldconfig -%postun -n MySQL-shared%{product_suffix} +%postun -n MySQL-Cluster-shared%{product_suffix} /sbin/ldconfig # ---------------------------------------------------------------------------- -%files -n MySQL-test%{product_suffix} +%files -n MySQL-Cluster-test%{product_suffix} %defattr(-, root, root, 0755) %attr(-, root, root) %{_datadir}/mysql-test %attr(755, root, root) %{_bindir}/mysql_client_test @@ -1119,7 +1174,7 @@ echo "=====" %doc %attr(644, root, man) %{_mandir}/man1/mysqltest_embedded.1* # ---------------------------------------------------------------------------- -%files -n MySQL-embedded%{product_suffix} +%files -n MySQL-Cluster-embedded%{product_suffix} %defattr(-, root, root, 0755) %attr(644, root, root) %{_libdir}/mysql/libmysqld.a %attr(644, root, root) %{_libdir}/mysql/libmysqld-debug.a @@ -1130,6 +1185,30 @@ echo "=====" # merging BK trees) ############################################################################## %changelog +* Thu Sep 29 2011 Jonathan Perkin + +- Bring over the most important bits from the previous Cluster spec files. + +* Tue Sep 27 2011 Daniel Fischer + +- Add Cluster files. + +* Tue Sep 13 2011 Jonathan Perkin + +- Add support for Oracle Linux 6 and Red Hat Enterprise Linux 6. Due to + changes in RPM behaviour ($RPM_BUILD_ROOT is removed prior to install) + this necessitated a move of the libmygcc.a installation to the install + phase, which is probably where it belonged in the first place. + +* Tue Sep 13 2011 Joerg Bruehe + +- "make_win_bin_dist" and its manual are dropped, cmake does it different. + +* Fri Aug 19 2011 Joerg Bruehe + +- Null-upmerge the fix of bug#37165: This spec file is not affected. +- Replace "/var/lib/mysql" by the spec file variable "%{mysqldatadir}". + * Thu Jul 07 2011 Joerg Bruehe - Fix bug#45415: "rpm upgrade recreates test database" No bundle (reason: useless for push emails).