From 890c52d889231c7854c52d7b649d2be24e509e69 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Wed, 10 Feb 2010 20:23:24 +0100 Subject: [PATCH 001/126] Add components to INSTALL, some eraly Wix support --- CMakeLists.txt | 20 ++-- client/CMakeLists.txt | 2 +- cmake/install_macros.cmake | 96 +++++++++++++++-- cmake/libutils.cmake | 7 +- cmake/mysql_add_executable.cmake | 13 ++- cmake/package_name.cmake | 5 +- cmake/plugin.cmake | 2 +- extra/CMakeLists.txt | 2 + include/CMakeLists.txt | 4 +- libmysql/CMakeLists.txt | 8 +- libmysqld/CMakeLists.txt | 5 +- mysql-test/CMakeLists.txt | 1 + mysql-test/lib/My/SafeProcess/CMakeLists.txt | 19 ++-- packaging/WiX/AdminBackground.jpg | Bin 0 -> 20557 bytes packaging/WiX/AdminHeader.jpg | Bin 0 -> 3469 bytes packaging/WiX/CMakeLists.txt | 28 +++++ packaging/WiX/create_fragments.cmake | 86 ++++++++++++++++ packaging/WiX/create_msi.cmake.in | 103 +++++++++++++++++++ packaging/WiX/mysql_server.wxs.in | 40 +++++++ scripts/CMakeLists.txt | 46 +++------ scripts/make_win_bin_dist | 2 +- sql/CMakeLists.txt | 2 +- sql/share/CMakeLists.txt | 6 +- support-files/CMakeLists.txt | 2 +- 24 files changed, 422 insertions(+), 77 deletions(-) create mode 100644 packaging/WiX/AdminBackground.jpg create mode 100644 packaging/WiX/AdminHeader.jpg create mode 100644 packaging/WiX/CMakeLists.txt create mode 100644 packaging/WiX/create_fragments.cmake create mode 100644 packaging/WiX/create_msi.cmake.in create mode 100644 packaging/WiX/mysql_server.wxs.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 369e03bf988..f1185e65028 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -261,14 +261,10 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in ${CMAKE_BINARY_DIR}/sql/sql_builtin.cc) -# Packaging -IF(WIN32) - SET(CPACK_GENERATOR "ZIP") -ELSE() - SET(CPACK_GENERATOR "TGZ") -ENDIF() -INCLUDE(CPack) -INSTALL(FILES COPYING EXCEPTIONS-CLIENT README DESTINATION ${INSTALL_DOCREADMEDIR}) +INSTALL(FILES EXCEPTIONS-CLIENT DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT + Development) + +INSTALL(FILES COPYING README DESTINATION ${INSTALL_DOCREADMEDIR}) IF(UNIX) INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR}) ENDIF() @@ -276,3 +272,11 @@ ENDIF() SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied") MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION) INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR}) +# Packaging +IF(WIN32) + SET(CPACK_GENERATOR "ZIP") +ELSE() + SET(CPACK_GENERATOR "TGZ") +ENDIF() +ADD_SUBDIRECTORY(packaging/WiX) +INCLUDE(CPack) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index f4e223c9c72..d0bb8d43edd 100755 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -33,7 +33,7 @@ IF(UNIX) TARGET_LINK_LIBRARIES(mysql ${READLINE_LIBRARY}) ENDIF(UNIX) -MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc) +MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc COMPONENT Test) SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS") TARGET_LINK_LIBRARIES(mysqltest mysqlclient regex) diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 8a201cbb026..5b20c1966be 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -40,10 +40,74 @@ MACRO (INSTALL_DEBUG_SYMBOLS targets) ENDIF() ENDMACRO() +# Installs manpage for given file (either script or executable) +# +FUNCTION(INSTALL_MANPAGE file) + IF(NOT UNIX) + RETURN() + ENDIF() + GET_FILENAME_COMPONENT(file_name "${file}" NAME) + SET(GLOB_EXPR + ${CMAKE_SOURCE_DIR}/man/*${file}man.1* + ${CMAKE_SOURCE_DIR}/man/*${file}man.8* + ${CMAKE_BINARY_DIR}/man/*${file}man.1* + ${CMAKE_BINARY_DIR}/man/*${file}man.8* + ) + IF(MYSQL_DOC_DIR) + SET(GLOB_EXPR + ${MYSQL_DOC_DIR}/man/*${file}man.1* + ${MYSQL_DOC_DIR}/man/*${file}man.8* + ${MYSQL_DOC_DIR}/man/*${file}.1* + ${MYSQL_DOC_DIR}/man/*${file}.8* + ${GLOB_EXPR} + ) + ENDIF() + + FILE(GLOB_RECURSE MANPAGES ${GLOB_EXPR}) + IF(MANPAGES) + LIST(GET MANPAGES 0 MANPAGE) + STRING(REPLACE "${file}man.1" "${file}.1" MANPAGE "${MANPAGE}") + STRING(REPLACE "${file}man.8" "${file}.8" MANPAGE "${MANPAGE}") + IF(MANPAGE MATCHES "${file}.1") + SET(SECTION man1) + ELSE() + SET(SECTION man8) + ENDIF() + INSTALL(FILES "${MANPAGE}" DESTINATION "${INSTALL_MANDIR}/${SECTION}") + ENDIF() +ENDFUNCTION() + +FUNCTION(INSTALL_SCRIPT) + CMAKE_PARSE_ARGUMENTS(ARG + "DESTINATION;COMPONENT" + "" + ${ARGN} + ) + + SET(script ${ARG_DEFAULT_ARGS}) + IF(NOT ARG_DESTINATION) + SET(ARG_DESTINATION ${INSTALL_BINDIR}) + ENDIF() + IF(ARG_COMPONENT) + SET(COMP COMPONENT ${ARG_COMPONENT}) + ELSE() + SET(COMP) + ENDIF() + + INSTALL(FILES + ${script} + DESTINATION ${ARG_DESTINATION} + PERMISSIONS OWNER_READ OWNER_WRITE + OWNER_EXECUTE GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE ${COMP} + ) + INSTALL_MANPAGE(${script}) +ENDFUNCTION() + # Install symbolic link to CMake target. # the link is created in the same directory as target # and extension will be the same as for target file. -MACRO(INSTALL_SYMLINK linkbasename target destination) +MACRO(INSTALL_SYMLINK linkbasename target destination component) IF(UNIX) GET_TARGET_PROPERTY(location ${target} LOCATION) GET_FILENAME_COMPONENT(path ${location} PATH) @@ -69,7 +133,12 @@ IF(UNIX) STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" output ${output}) ENDIF() - INSTALL(FILES ${output} DESTINATION ${destination}) + IF(component) + SET(COMP COMPONENT ${component}) + ELSE() + SET(COMP) + ENDIF() + INSTALL(FILES ${output} DESTINATION ${destination} ${COMP}) ENDIF() ENDMACRO() @@ -129,13 +198,11 @@ ENDMACRO() # Installs targets, also installs pdbs on Windows. # -# More stuff can be added later, e.g signing -# or pre-link custom targets (one example is creating -# version resource for windows executables) +# FUNCTION(MYSQL_INSTALL_TARGETS) CMAKE_PARSE_ARGUMENTS(ARG - "DESTINATION" + "DESTINATION;COMPONENT" "" ${ARGN} ) @@ -147,15 +214,24 @@ FUNCTION(MYSQL_INSTALL_TARGETS) MESSAGE(FATAL_ERROR "Need DESTINATION parameter for MYSQL_INSTALL_TARGETS") ENDIF() - # If signing is required, sign executables before installing + FOREACH(target ${TARGETS}) - IF(SIGNCODE AND SIGNCODE_ENABLED) + # If signing is required, sign executables before installing + IF(SIGNCODE AND SIGNCODE_ENABLED) SIGN_TARGET(${target}) ENDIF() + # For Windows, add version info to executables ADD_VERSION_INFO(${target}) + # Install man pages on Unix + IF(UNIX) + GET_TARGET_PROPERTY(target_location ${target} LOCATION) + INSTALL_MANPAGE(${target_location}) + ENDIF() ENDFOREACH() - - INSTALL(TARGETS ${TARGETS} DESTINATION ${ARG_DESTINATION}) + IF(ARG_COMPONENT) + SET(COMP COMPONENT ${ARG_COMPONENT}) + ENDIF() + INSTALL(TARGETS ${TARGETS} DESTINATION ${ARG_DESTINATION} ${COMP}) SET(INSTALL_LOCATION ${ARG_DESTINATION} ) INSTALL_DEBUG_SYMBOLS("${TARGETS}") SET(INSTALL_LOCATION) diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake index 2263b146ed6..ba63df71428 100644 --- a/cmake/libutils.cmake +++ b/cmake/libutils.cmake @@ -214,7 +214,7 @@ ENDMACRO() #) MACRO(MERGE_LIBRARIES) CMAKE_PARSE_ARGUMENTS(ARG - "EXPORTS;OUTPUT_NAME" + "EXPORTS;OUTPUT_NAME;COMPONENT" "STATIC;SHARED;MODULE;NOINSTALL" ${ARGN} ) @@ -259,7 +259,10 @@ MACRO(MERGE_LIBRARIES) MESSAGE(FATAL_ERROR "Unknown library type") ENDIF() IF(NOT ARG_NOINSTALL) - MYSQL_INSTALL_TARGETS(${TARGET} DESTINATION "${INSTALL_LIBDIR}") + IF(ARG_COMPONENT) + SET(COMP COMPONENT ${ARG_COMPONENT}) + ENDIF() + MYSQL_INSTALL_TARGETS(${TARGET} DESTINATION "${INSTALL_LIBDIR}" ${COMP}) ENDIF() SET_TARGET_PROPERTIES(${TARGET} PROPERTIES LINK_INTERFACE_LIBRARIES "") ENDMACRO() diff --git a/cmake/mysql_add_executable.cmake b/cmake/mysql_add_executable.cmake index 2157d03e6d1..86301c2eec8 100644 --- a/cmake/mysql_add_executable.cmake +++ b/cmake/mysql_add_executable.cmake @@ -29,7 +29,7 @@ INCLUDE(cmake_parse_arguments) FUNCTION (MYSQL_ADD_EXECUTABLE) # Pass-through arguments for ADD_EXECUTABLE CMAKE_PARSE_ARGUMENTS(ARG - "WIN32;MACOSX_BUNDLE;EXCLUDE_FROM_ALL;DESTINATION" + "WIN32;MACOSX_BUNDLE;EXCLUDE_FROM_ALL;DESTINATION;COMPONENT" "" ${ARGN} ) @@ -43,7 +43,14 @@ FUNCTION (MYSQL_ADD_EXECUTABLE) IF(NOT ARG_EXCLUDE_FROM_ALL) IF(NOT ARG_DESTINATION) SET(ARG_DESTINATION ${INSTALL_BINDIR}) + ENDIF() + IF(ARG_COMPONENT) + SET(COMP COMPONENT ${ARG_COMPONENT}) + ELSEIF(MYSQL_INSTALL_COMPONENT) + SET(COMP COMPONENT ${MYSQL_INSTALL_COMPONENT}) + ELSE() + SET(COMP COMPONENT Client) ENDIF() - MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION}) + MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} ${COMP}) ENDIF() -ENDFUNCTION() \ No newline at end of file +ENDFUNCTION() diff --git a/cmake/package_name.cmake b/cmake/package_name.cmake index d2998cfd795..6e6fe89e8b3 100644 --- a/cmake/package_name.cmake +++ b/cmake/package_name.cmake @@ -15,6 +15,8 @@ # Produce meaningful package name for the binary package # The logic is rather involved with special cases for different OSes +INCLUDE(CheckTypeSize) +CHECK_TYPE_SIZE("void *" SIZEOF_VOIDP) MACRO(GET_PACKAGE_FILE_NAME Var) IF(NOT VERSION) MESSAGE(FATAL_ERROR @@ -24,7 +26,8 @@ IF(NOT VERSION) SET(NEED_DASH_BETWEEN_PLATFORM_AND_MACHINE 1) SET(DEFAULT_PLATFORM ${CMAKE_SYSTEM_NAME}) SET(DEFAULT_MACHINE ${CMAKE_SYSTEM_PROCESSOR}) - IF(CMAKE_SIZEOF_VOID_P EQUAL 8) + MESSAGE("SIZEOF_VOIDP=${SIZEOF_VOIDP}") + IF(SIZEOF_VOIDP EQUAL 8) SET(64BIT 1) ENDIF() diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index d6411641192..585883a7ca3 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -168,7 +168,7 @@ MACRO(MYSQL_ADD_PLUGIN) SET_TARGET_PROPERTIES(${target} PROPERTIES OUTPUT_NAME "${ARG_MODULE_OUTPUT_NAME}") # Install dynamic library - MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR}) + MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR} COMPONENT Server) ENDIF() ENDMACRO() diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt index 479fb8cbd71..ee575685655 100755 --- a/extra/CMakeLists.txt +++ b/extra/CMakeLists.txt @@ -24,6 +24,8 @@ ${CMAKE_SOURCE_DIR}/storage/ndb/include/ndbapi ${CMAKE_SOURCE_DIR}/storage/ndb/include/portlib ${CMAKE_SOURCE_DIR}/storage/ndb/include/mgmapi) +# Default install component for the files is Server here +SET(MYSQL_INSTALL_COMPONENT Server) IF(NOT CMAKE_CROSSCOMPILING) ADD_EXECUTABLE(comp_err comp_err.c) diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index e2ef01b3b4c..c3922231047 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -57,7 +57,7 @@ SET(HEADERS ${HEADERS_GEN_CONFIGURE} ) -INSTALL(FILES ${HEADERS} DESTINATION ${INSTALL_INCLUDEDIR}) -INSTALL(DIRECTORY mysql/ DESTINATION ${INSTALL_INCLUDEDIR} FILES_MATCHING PATTERN "*.h") +INSTALL(FILES ${HEADERS} DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development) +INSTALL(DIRECTORY mysql/ DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development FILES_MATCHING PATTERN "*.h" ) diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index acdff87f4a0..2206f74c528 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -152,13 +152,13 @@ SET(LIBS clientlib dbug strings vio mysys ${ZLIB_LIBRARY} ${SSL_LIBRARIES}) # Merge several convenience libraries into one big mysqlclient # and link them together into shared library. -MERGE_LIBRARIES(mysqlclient STATIC ${LIBS}) +MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development) IF(UNIX) - INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r mysqlclient ${INSTALL_LIBDIR}) + INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r mysqlclient ${INSTALL_LIBDIR} COMPONENT SharedLibraries) ENDIF() IF(NOT DISABLE_SHARED) - MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}) + MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS} COMPONENT SharedLibraries) IF(UNIX) # Name of shared library is mysqlclient on Unix SET_TARGET_PROPERTIES(libmysql PROPERTIES @@ -177,6 +177,6 @@ IF(NOT DISABLE_SHARED) #(mysqlclient in this case) SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1) - INSTALL_SYMLINK(${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r libmysql ${INSTALL_LIBDIR}) + INSTALL_SYMLINK(${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r libmysql ${INSTALL_LIBDIR} SharedLibraries) ENDIF() ENDIF() diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 5c83db5f87c..b02510bda46 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -123,8 +123,9 @@ FOREACH(LIB ${LIBS}) ENDFOREACH() MERGE_LIBRARIES(mysqlserver STATIC ${EMBEDDED_LIBS} - OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME}) + OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME} COMPONENT Embedded) IF(MSVC AND NOT DISABLE_SHARED) - MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}) + MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS} + COMPONENT Embedded) ENDIF() diff --git a/mysql-test/CMakeLists.txt b/mysql-test/CMakeLists.txt index 75e7502751c..c00d5153d3e 100644 --- a/mysql-test/CMakeLists.txt +++ b/mysql-test/CMakeLists.txt @@ -16,6 +16,7 @@ INSTALL( DIRECTORY . DESTINATION ${INSTALL_MYSQLTESTDIR} + COMPONENT Test PATTERN "var/" EXCLUDE PATTERN "lib/My/SafeProcess" EXCLUDE PATTERN "CPack" EXCLUDE diff --git a/mysql-test/lib/My/SafeProcess/CMakeLists.txt b/mysql-test/lib/My/SafeProcess/CMakeLists.txt index ec2a13b910c..f133528a44b 100644 --- a/mysql-test/lib/My/SafeProcess/CMakeLists.txt +++ b/mysql-test/lib/My/SafeProcess/CMakeLists.txt @@ -13,15 +13,18 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +SET(INSTALL_ARGS + DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" + COMPONENT Test +) + IF (WIN32) - ADD_EXECUTABLE(my_safe_process safe_process_win.cc) - ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc) + MYSQL_ADD_EXECUTABLE(my_safe_process safe_process_win.cc ${INSTALL_ARGS}) + MYSQL_ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc ${INSTALL_ARGS}) ELSE() - ADD_EXECUTABLE(my_safe_process safe_process.cc) + MYSQL_ADD_EXECUTABLE(my_safe_process safe_process.cc ${INSTALL_ARGS}) ENDIF() -INSTALL(TARGETS my_safe_process DESTINATION "mysql-test/lib/My/SafeProcess") -IF(WIN32) - INSTALL(TARGETS my_safe_kill DESTINATION "mysql-test/lib/My/SafeProcess") -ENDIF() -INSTALL(FILES safe_process.pl Base.pm DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess") + +INSTALL(FILES safe_process.pl Base.pm DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" +COMPONENT Test) diff --git a/packaging/WiX/AdminBackground.jpg b/packaging/WiX/AdminBackground.jpg new file mode 100644 index 0000000000000000000000000000000000000000..847dc6cdbede91dbbd4049492de464d095585e08 GIT binary patch literal 20557 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 Tra}LqcTbp?{S4JJ*M$E8j%h+9 literal 0 HcmV?d00001 diff --git a/packaging/WiX/AdminHeader.jpg b/packaging/WiX/AdminHeader.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e2e33d404f0d954ba6a852422d4f4721740e989 GIT binary patch literal 3469 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\n") + ELSE() + FILE(APPEND ${file} "\n") + ENDIF() + + FOREACH(f ${all_files}) + IF(NOT IS_DIRECTORY ${f}) + FILE(RELATIVE_PATH rel ${topdir} ${f}) + MAKE_WIX_IDENTIFIER("${rel}" id) + FILE(TO_NATIVE_PATH ${f} f_native) + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file_comp} " \n") + ENDIF() + ENDFOREACH() + FILE(APPEND ${file} "\n") + FOREACH(f ${all_files}) + IF(IS_DIRECTORY ${f}) + TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${dir_root}) + ENDIF() + ENDFOREACH() +ENDFUNCTION() + +FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix) + FILE(RELATIVE_PATH rel ${topdir} ${dir}) + IF(rel) + MAKE_WIX_IDENTIFIER("${rel}" id) + GET_FILENAME_COMPONENT(name ${dir} NAME) + FILE(APPEND ${file} "${prefix}\n") + ENDIF() + FILE(GLOB all_files ${dir}/*) + FOREACH(f ${all_files}) + IF(IS_DIRECTORY ${f}) + TRAVERSE_DIRECTORIES(${f} ${topdir} ${file} "${prefix} ") + ENDIF() + ENDFOREACH() + IF(rel) + FILE(APPEND ${file} "\n") + ENDIF() +ENDFUNCTION() + + +GET_FILENAME_COMPONENT(abs . ABSOLUTE) +FOREACH(d ${DIRS}) + GET_FILENAME_COMPONENT(d ${d} ABSOLUTE) + GET_FILENAME_COMPONENT(d_name ${d} NAME) + FILE(WRITE + ${abs}/${d_name}.wxs "\n\n") + FILE(WRITE + ${abs}/${d_name}_component_group.wxs "\n\n\n") + TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs") + FILE(APPEND ${abs}/${d_name}.wxs " \n") + FILE(APPEND ${abs}/${d_name}_component_group.wxs "\n\n") +ENDFOREACH() +FILE(WRITE directories.wxs "\n\n\n") +TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "") +FILE(APPEND directories.wxs "\n\n\n") + diff --git a/packaging/WiX/create_msi.cmake.in b/packaging/WiX/create_msi.cmake.in new file mode 100644 index 00000000000..13836d6d35f --- /dev/null +++ b/packaging/WiX/create_msi.cmake.in @@ -0,0 +1,103 @@ +SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@") +SET(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@") +SET(CANDLE_EXECUTABLE "@CANDLE_EXECUTABLE@") +SET(LIGHT_EXECUTABLE "@LIGHT_EXECUTABLE@") +SET(CMAKE_COMMAND "@CMAKE_COMMAND@") +SET(CMAKE_CFG_INTDIR "@CMAKE_CFG_INTDIR@") +SET(ENV{VS_UNICODE_OUTPUT}) +INCLUDE(${CMAKE_BINARY_DIR}/CPackConfig.cmake) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in + ${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs) + +IF(CMAKE_INSTALL_CONFIG_NAME) + SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_INSTALL_CONFIG_NAME}") +ENDIF() + +FOREACH(comp ${CPACK_COMPONENTS_ALL}) + SET(ENV{DESTDIR} testinstall/${comp}) + SET(DIRS ${DIRS} testinstall/${comp}) + EXECUTE_PROCESS( + COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -DCMAKE_INSTALL_COMPONENT=${comp} + -DCMAKE_INSTALL_PREFIX= -P ${CMAKE_BINARY_DIR}/cmake_install.cmake + ) +ENDFOREACH() + +MACRO(MAKE_WIX_IDENTIFIER str varname) + STRING(REPLACE "/" "." ${varname} "${str}") + STRING(REPLACE "-" "_" ${varname} "${${varname}}") +ENDMACRO() + +FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) + FILE(GLOB all_files ${dir}/*) + IF(NOT all_files) + RETURN() + ENDIF() + FILE(RELATIVE_PATH dir_rel ${topdir} ${dir}) + IF(dir_rel) + MAKE_DIRECTORY(${dir_root}/${dir_rel}) + MAKE_WIX_IDENTIFIER("${dir_rel}" id) + FILE(APPEND ${file} "\n") + ELSE() + FILE(APPEND ${file} "\n") + ENDIF() + + FOREACH(f ${all_files}) + IF(NOT IS_DIRECTORY ${f}) + FILE(RELATIVE_PATH rel ${topdir} ${f}) + MAKE_WIX_IDENTIFIER("${rel}" id) + FILE(TO_NATIVE_PATH ${f} f_native) + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file_comp} " \n") + ENDIF() + ENDFOREACH() + FILE(APPEND ${file} "\n") + FOREACH(f ${all_files}) + IF(IS_DIRECTORY ${f}) + TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${dir_root}) + ENDIF() + ENDFOREACH() +ENDFUNCTION() + +FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix) + FILE(RELATIVE_PATH rel ${topdir} ${dir}) + IF(rel AND IS_DIRECTORY "${f}") + MAKE_WIX_IDENTIFIER("${rel}" id) + GET_FILENAME_COMPONENT(name ${dir} NAME) + FILE(APPEND ${file} "${prefix}\n") + ENDIF() + FILE(GLOB all_files ${dir}/*) + FOREACH(f ${all_files}) + IF(IS_DIRECTORY ${f}) + TRAVERSE_DIRECTORIES(${f} ${topdir} ${file} "${prefix} ") + ENDIF() + ENDFOREACH() + IF(rel AND IS_DIRECTORY "${f}") + FILE(APPEND ${file} "\n") + ENDIF() +ENDFUNCTION() + + +GET_FILENAME_COMPONENT(abs . ABSOLUTE) +FOREACH(d ${DIRS}) + GET_FILENAME_COMPONENT(d ${d} ABSOLUTE) + GET_FILENAME_COMPONENT(d_name ${d} NAME) + FILE(WRITE + ${abs}/${d_name}.wxs "\n\n") + FILE(WRITE + ${abs}/${d_name}_component_group.wxs "\n\n\n") + TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs") + FILE(APPEND ${abs}/${d_name}.wxs " \n") + FILE(APPEND ${abs}/${d_name}_component_group.wxs "\n\n") +ENDFOREACH() +FILE(WRITE directories.wxs "\n\n\n") +TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "") +FILE(APPEND directories.wxs "\n\n\n") + +EXECUTE_PROCESS( + COMMAND ${CANDLE_EXECUTABLE} *.wxs + COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension *.wixobj -out ${CPACK_PACKAGE_FILE_NAME}.msi +) + diff --git a/packaging/WiX/mysql_server.wxs.in b/packaging/WiX/mysql_server.wxs.in new file mode 100644 index 00000000000..21f2a6256f3 --- /dev/null +++ b/packaging/WiX/mysql_server.wxs.in @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index dd9c5785dcb..28b14661265 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -66,7 +66,7 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_data.sql ${CMAKE_CURRENT_SOURCE_DIR}/fill_help_tables.sql ${CMAKE_CURRENT_SOURCE_DIR}/mysql_test_data_timezone.sql - DESTINATION ${INSTALL_MYSQLSHAREDIR} + DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server ) # TCMalloc hacks @@ -166,12 +166,10 @@ ELSE() SET(EXT ".pl") ENDIF() -INSTALL(FILES +INSTALL_SCRIPT( "${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db${EXT}" - DESTINATION ${DEST} - PERMISSIONS OWNER_READ OWNER_WRITE - OWNER_EXECUTE GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE + DESTINATION ${INSTALL_BINDIR} + COMPONENT Server ) @@ -260,29 +258,17 @@ IF(WIN32) FOREACH(file ${PLIN_FILES}) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.pl.in ${CMAKE_CURRENT_BINARY_DIR}/${file}.pl ESCAPE_QUOTES @ONLY) - - INSTALL(FILES - ${CMAKE_CURRENT_BINARY_DIR}/${file}.pl - DESTINATION scripts - PERMISSIONS OWNER_READ OWNER_WRITE - OWNER_EXECUTE GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE - ) + INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/${file}.pl) ENDFOREACH() FOREACH(file ${SH_FILES}) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh ${CMAKE_CURRENT_BINARY_DIR}/${file}.pl ESCAPE_QUOTES @ONLY) - INSTALL(FILES - ${CMAKE_CURRENT_BINARY_DIR}/${file}.pl - DESTINATION scripts - PERMISSIONS OWNER_READ OWNER_WRITE - OWNER_EXECUTE GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE - ) + INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/${file}.pl) ENDFOREACH() ELSE() # On Unix, most of the files end up in the bin directory + SET(mysql_config_COMPONENT COMPONENT Development) SET(BIN_SCRIPTS msql2mysql mysql_config @@ -312,13 +298,14 @@ ELSE() MESSAGE(FATAL_ERROR "Can not find ${file}.sh or ${file} in " "${CMAKE_CURRENT_SOURCE_DIR}" ) ENDIF() - INSTALL(FILES - ${CMAKE_CURRENT_BINARY_DIR}/${file} - DESTINATION ${INSTALL_BINDIR} - PERMISSIONS OWNER_READ OWNER_WRITE - OWNER_EXECUTE GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE - ) + IF(NOT ${file}_COMPONENT) + SET(${file}_COMPONENT Server) + ENDIF() + INSTALL_SCRIPT( + ${CMAKE_CURRENT_BINARY_DIR}/${file} + DESTINATION ${INSTALL_BINDIR} + COMPONENT ${${file}_COMPONENT} + ) ENDFOREACH() ENDIF() @@ -333,7 +320,8 @@ IF(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_FLAGS MATCHES "-static") ERROR_QUIET ) IF(${RESULT} EQUAL 0 AND EXISTS ${LIBGCC_LOCATION}) - INSTALL(FILES "${LIBGCC_LOCATION}" DESTINATION ${INSTALL_LIBDIR}) + INSTALL(FILES "${LIBGCC_LOCATION}" DESTINATION ${INSTALL_LIBDIR} + COMPONENT Development) ENDIF() ENDIF() diff --git a/scripts/make_win_bin_dist b/scripts/make_win_bin_dist index 51271a3dad0..0cbbd5db283 100755 --- a/scripts/make_win_bin_dist +++ b/scripts/make_win_bin_dist @@ -158,7 +158,7 @@ cp tests/$TARGET/*.exe $DESTDIR/bin/ cp libmysql/$TARGET/libmysql.dll $DESTDIR/bin/ cp sql/$TARGET/mysqld.exe $DESTDIR/bin/mysqld$EXE_SUFFIX.exe -cp sql/$TARGET/mysqld.map $DESTDIR/bin/mysqld$EXE_SUFFIX.map +cp sql/$TARGET/mysqld.map $DESTDIR/bin/mysqld$EXE_SUFFIX.map || /bin/true if [ x"$TARGET" != x"release" ] ; then cp sql/$TARGET/mysqld.pdb $DESTDIR/bin/mysqld$EXE_SUFFIX.pdb fi diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 85970ff5c0a..0c727626138 100755 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -100,7 +100,7 @@ ELSE() SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL}) ENDIF() -MYSQL_ADD_EXECUTABLE(mysqld ${MYSQLD_SOURCE} DESTINATION ${INSTALL_SBINDIR}) +MYSQL_ADD_EXECUTABLE(mysqld ${MYSQLD_SOURCE} DESTINATION ${INSTALL_SBINDIR} COMPONENT Server) IF(NOT WITHOUT_DYNAMIC_PLUGINS) SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE) diff --git a/sql/share/CMakeLists.txt b/sql/share/CMakeLists.txt index 944120cfc24..0d241928208 100644 --- a/sql/share/CMakeLists.txt +++ b/sql/share/CMakeLists.txt @@ -45,8 +45,8 @@ SET(files FOREACH (dir ${dirs}) INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dir} - DESTINATION ${INSTALL_MYSQLSHAREDIR}) + DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server) ENDFOREACH() -INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/charsets DESTINATION ${INSTALL_MYSQLSHAREDIR}) +INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/charsets DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server) -INSTALL(FILES ${files} DESTINATION ${INSTALL_MYSQLSHAREDIR}) +INSTALL(FILES ${files} DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server) diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index ff98a7dd885..906f516eac2 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -62,7 +62,7 @@ IF(UNIX) INSTALL(FILES magic DESTINATION ${inst_location}) ENDIF() - INSTALL(FILES mysql.m4 DESTINATION ${INSTALL_SHAREDIR}/aclocal) + 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) From ab6f78734175005dfcc32c2f1855d076fe465cec Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Thu, 11 Feb 2010 03:28:12 +0100 Subject: [PATCH 002/126] Fix XML error in compiling MSI --- packaging/WiX/create_msi.cmake.in | 38 ++++++++++++++++++++++++------- packaging/WiX/mysql_server.wxs.in | 11 +-------- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/packaging/WiX/create_msi.cmake.in b/packaging/WiX/create_msi.cmake.in index 13836d6d35f..34aa53fdc91 100644 --- a/packaging/WiX/create_msi.cmake.in +++ b/packaging/WiX/create_msi.cmake.in @@ -4,6 +4,10 @@ SET(CANDLE_EXECUTABLE "@CANDLE_EXECUTABLE@") SET(LIGHT_EXECUTABLE "@LIGHT_EXECUTABLE@") SET(CMAKE_COMMAND "@CMAKE_COMMAND@") SET(CMAKE_CFG_INTDIR "@CMAKE_CFG_INTDIR@") +SET(MAJOR_VERSION "@MAJOR_VERSION@") +SET(MINOR_VERSION "@MINOR_VERSION@") +SET(PATCH "@PATCH@") + SET(ENV{VS_UNICODE_OUTPUT}) INCLUDE(${CMAKE_BINARY_DIR}/CPackConfig.cmake) @@ -25,7 +29,16 @@ ENDFOREACH() MACRO(MAKE_WIX_IDENTIFIER str varname) STRING(REPLACE "/" "." ${varname} "${str}") - STRING(REPLACE "-" "_" ${varname} "${${varname}}") + STRING(REGEX REPLACE "[^a-zA-Z_0-9.]" "_" ${varname} "${${varname}}") + STRING(LENGTH "${${varname}}" len) + # Identifier should be smaller than 72 character + # We have to cut down the length to 70 chars, since we add 2 char prefix + # pretty often + IF(len GREATER 70) + STRING(RANDOM r) + STRING(SUBSTRING "${${varname}}" 0 65 shortstr) + SET(${varname} "${shortstr}${r}") + ENDIF() ENDMACRO() FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) @@ -37,7 +50,7 @@ FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) IF(dir_rel) MAKE_DIRECTORY(${dir_root}/${dir_rel}) MAKE_WIX_IDENTIFIER("${dir_rel}" id) - FILE(APPEND ${file} "\n") + FILE(APPEND ${file} "\n") ELSE() FILE(APPEND ${file} "\n") ENDIF() @@ -47,10 +60,10 @@ FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) FILE(RELATIVE_PATH rel ${topdir} ${f}) MAKE_WIX_IDENTIFIER("${rel}" id) FILE(TO_NATIVE_PATH ${f} f_native) - FILE(APPEND ${file} " \n") - FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") FILE(APPEND ${file} " \n") - FILE(APPEND ${file_comp} " \n") + FILE(APPEND ${file_comp} " \n") ENDIF() ENDFOREACH() FILE(APPEND ${file} "\n") @@ -66,7 +79,7 @@ FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix) IF(rel AND IS_DIRECTORY "${f}") MAKE_WIX_IDENTIFIER("${rel}" id) GET_FILENAME_COMPONENT(name ${dir} NAME) - FILE(APPEND ${file} "${prefix}\n") + FILE(APPEND ${file} "${prefix}\n") ENDIF() FILE(GLOB all_files ${dir}/*) FOREACH(f ${all_files}) @@ -96,8 +109,17 @@ FILE(WRITE directories.wxs " - + Date: Thu, 11 Feb 2010 19:23:11 +0100 Subject: [PATCH 003/126] Fix CMake 2.6 errors --- packaging/WiX/CMakeLists.txt | 16 ++++++++++++---- packaging/WiX/create_msi.cmake.in | 8 +++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packaging/WiX/CMakeLists.txt b/packaging/WiX/CMakeLists.txt index 1d1a82f7b1c..81852697fb8 100644 --- a/packaging/WiX/CMakeLists.txt +++ b/packaging/WiX/CMakeLists.txt @@ -1,18 +1,26 @@ + +IF(NOT WIN32) + RETURN() +ENDIF() + FIND_PATH(WIX_DIR heat.exe $ENV{WIX_DIR}/bin $ENV{ProgramFiles}/wix/bin - "$ENV{ProgramFiles}/Windows Installer XML v3.0/bin" + "$ENV{ProgramFiles}/Windows Installer XML v3/bin" "$ENV{ProgramFiles}/Windows Installer XML v3.5/bin" ) IF(NOT WIX_DIR) - MESSAGE(FATAL_ERROR "Cannot find wix") + IF(NOT _WIX_DIR_CHECKED) + SET(_WIX_DIR_CHECKED 1 CACHE INTERNAL "") + MESSAGE(STATUS "Cannot find wix 3, installer project will not be generated") + ENDIF() + RETURN() ENDIF() FIND_PROGRAM(HEAT_EXECUTABLE heat ${WIX_DIR}) FIND_PROGRAM(CANDLE_EXECUTABLE candle ${WIX_DIR}) FIND_PROGRAM(LIGHT_EXECUTABLE light ${WIX_DIR}) - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake @@ -21,7 +29,7 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio") SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR}") ENDIF() ADD_CUSTOM_TARGET( - WIX_Installer + MSI COMMAND set VS_UNICODE_OUTPUT= COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake ) diff --git a/packaging/WiX/create_msi.cmake.in b/packaging/WiX/create_msi.cmake.in index 34aa53fdc91..15cdc3e4315 100644 --- a/packaging/WiX/create_msi.cmake.in +++ b/packaging/WiX/create_msi.cmake.in @@ -24,9 +24,11 @@ FOREACH(comp ${CPACK_COMPONENTS_ALL}) EXECUTE_PROCESS( COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -DCMAKE_INSTALL_COMPONENT=${comp} -DCMAKE_INSTALL_PREFIX= -P ${CMAKE_BINARY_DIR}/cmake_install.cmake + OUTPUT_QUIET ) ENDFOREACH() +SET(INC_VAR 0) MACRO(MAKE_WIX_IDENTIFIER str varname) STRING(REPLACE "/" "." ${varname} "${str}") STRING(REGEX REPLACE "[^a-zA-Z_0-9.]" "_" ${varname} "${${varname}}") @@ -35,9 +37,9 @@ MACRO(MAKE_WIX_IDENTIFIER str varname) # We have to cut down the length to 70 chars, since we add 2 char prefix # pretty often IF(len GREATER 70) - STRING(RANDOM r) - STRING(SUBSTRING "${${varname}}" 0 65 shortstr) - SET(${varname} "${shortstr}${r}") + STRING(SUBSTRING "${${varname}}" 0 67 shortstr) + MATH(EXPR INC_VAR ${INC_VAR}+1) + SET(${varname} "${shortstr}${INC_VAR}") ENDIF() ENDMACRO() From 7e01172ce3737d5ab621c3f4ffd06af00b416df8 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Tue, 16 Feb 2010 16:06:57 +0100 Subject: [PATCH 004/126] Fix a couple fo things replated to MSI --- CMakeLists.txt | 8 +- cmake/install_macros.cmake | 7 +- packaging/WiX/CMakeLists.txt | 16 ++- packaging/WiX/create_fragments.cmake | 45 +++++-- packaging/WiX/create_msi.cmake.in | 181 +++++++++++++++++++++++++-- packaging/WiX/mysql_server.wxs.in | 21 ++-- scripts/CMakeLists.txt | 8 +- sql/CMakeLists.txt | 4 +- support-files/CMakeLists.txt | 3 +- tests/CMakeLists.txt | 2 +- 10 files changed, 245 insertions(+), 50 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f1185e65028..814d2ebaf7c 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -264,14 +264,16 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in INSTALL(FILES EXCEPTIONS-CLIENT DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Development) -INSTALL(FILES COPYING README DESTINATION ${INSTALL_DOCREADMEDIR}) + +INSTALL(FILES COPYING DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme OPTIONAL) +INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme) IF(UNIX) - INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR}) + INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Documentation) ENDIF() # MYSQL_DOCS_LOCATON is used in "make dist", points to the documentation directory SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied") MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION) -INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR}) +INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR} COMPONENT Documentation) # Packaging IF(WIN32) SET(CPACK_GENERATOR "ZIP") diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 5b20c1966be..26e0d9581ac 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -35,7 +35,12 @@ MACRO (INSTALL_DEBUG_SYMBOLS targets) IF(CMAKE_GENERATOR MATCHES "Visual Studio") STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" pdb_location ${pdb_location}) ENDIF() - INSTALL(FILES ${pdb_location} DESTINATION ${INSTALL_LOCATION}) + IF(target STREQUAL "mysqld") + SET(comp Server) + ELSE() + SET(comp Debuginfo) + ENDIF() + INSTALL(FILES ${pdb_location} DESTINATION ${INSTALL_LOCATION} COMPONENT ${comp}) ENDFOREACH() ENDIF() ENDMACRO() diff --git a/packaging/WiX/CMakeLists.txt b/packaging/WiX/CMakeLists.txt index 81852697fb8..f083c79e1df 100644 --- a/packaging/WiX/CMakeLists.txt +++ b/packaging/WiX/CMakeLists.txt @@ -4,10 +4,10 @@ IF(NOT WIN32) ENDIF() FIND_PATH(WIX_DIR heat.exe - $ENV{WIX_DIR}/bin - $ENV{ProgramFiles}/wix/bin - "$ENV{ProgramFiles}/Windows Installer XML v3/bin" - "$ENV{ProgramFiles}/Windows Installer XML v3.5/bin" + $ENV{WIX_DIR}/bin + $ENV{ProgramFiles}/wix/bin + "$ENV{ProgramFiles}/Windows Installer XML v3/bin" + "$ENV{ProgramFiles}/Windows Installer XML v3.5/bin" ) IF(NOT WIX_DIR) @@ -31,6 +31,12 @@ ENDIF() ADD_CUSTOM_TARGET( MSI COMMAND set VS_UNICODE_OUTPUT= - COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake + COMMAND ${CMAKE_COMMAND} -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake ${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake +) + +ADD_CUSTOM_TARGET( + MSI_ESSENTIALS + COMMAND set VS_UNICODE_OUTPUT= + COMMAND ${CMAKE_COMMAND} -DESSENTIALS=1 -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake ${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake ) diff --git a/packaging/WiX/create_fragments.cmake b/packaging/WiX/create_fragments.cmake index 01e8a11c0cf..9b7eecdc47d 100644 --- a/packaging/WiX/create_fragments.cmake +++ b/packaging/WiX/create_fragments.cmake @@ -11,9 +11,21 @@ FOREACH(comp ${COMPS}) ) ENDFOREACH() +SET(INC 0) MACRO(MAKE_WIX_IDENTIFIER str varname) - STRING(REPLACE "/" "." ${varname} "${str}") - STRING(REPLACE "-" "_" ${varname} "${${varname}}") + STRING(REPLACE "/" "." ret "${str}") + STRING(REPLACE "-" "_" ret "${ret}}") + STRING(LENGTH l "${ret}") + IF(l GREATER 65) + STRING(SUBSTRING "${ret}" 0 64 ret) + MATH(EXPR INC ${INC}+1) + SET(ret "${ret}${INC}) + ENDIF() + SET(${varname} ${ret}) +ENDMACRO() + +MACRO(GENERATE_GUID VarName) + EXECUTE_PROCESS(COMMAND uuidgen -c OUTPUT_VARIABLE ${VarName} OUTPUT_STRIP_TRAILING_WHITESPACE) ENDMACRO() FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) @@ -24,23 +36,34 @@ FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) FILE(RELATIVE_PATH dir_rel ${topdir} ${dir}) IF(dir_rel) MAKE_DIRECTORY(${dir_root}/${dir_rel}) - MAKE_WIX_IDENTIFIER("${dir_rel}" id) - FILE(APPEND ${file} "\n") + MAKE_WIX_IDENTIFIER("${dir_rel}" dir_id) ELSE() FILE(APPEND ${file} "\n") ENDIF() + FILE(APPEND ${file} "\n") + SET(NONEXEFILES) FOREACH(f ${all_files}) IF(NOT IS_DIRECTORY ${f}) - FILE(RELATIVE_PATH rel ${topdir} ${f}) + GET_FILENAME_COMPONENT(ext "${f}" EXT) + FILE(TO_NATIVE_PATH ${f} f_native) + FILE(RELATIVE_PATH rel ${topdir} ${f}) MAKE_WIX_IDENTIFIER("${rel}" id) - FILE(TO_NATIVE_PATH ${f} f_native) - FILE(APPEND ${file} " \n") - FILE(APPEND ${file} " \n") - FILE(APPEND ${file} " \n") - FILE(APPEND ${file_comp} " \n") + IF(ext MATCHES ".dll" OR ext MATCHES ".exe") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file_comp} " \n") + ELSE() + # Collect nonexe files into a single component to reduce number of components + SET(NONEXEFILES "${NONEXEFILES} \n") + ENDIF() ENDIF() ENDFOREACH() + IF(NONEXEFILES) + GENERATE_GUID(guid) + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} "${prefix}\n") ENDIF() FILE(GLOB all_files ${dir}/*) FOREACH(f ${all_files}) diff --git a/packaging/WiX/create_msi.cmake.in b/packaging/WiX/create_msi.cmake.in index 15cdc3e4315..d932e064237 100644 --- a/packaging/WiX/create_msi.cmake.in +++ b/packaging/WiX/create_msi.cmake.in @@ -7,12 +7,143 @@ SET(CMAKE_CFG_INTDIR "@CMAKE_CFG_INTDIR@") SET(MAJOR_VERSION "@MAJOR_VERSION@") SET(MINOR_VERSION "@MINOR_VERSION@") SET(PATCH "@PATCH@") +SET(CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@) + +IF(CMAKE_SIZEOF_VOID_P EQUAL 8) + SET(Win64 " Win64='yes'") + SET(Platform x64) + SET(PlatformProgramFilesFolder ProgramFiles64Folder) +ELSE() + SET(Platform x86) + SET(PlatformProgramFilesFolder ProgramFilesFolder) + SET(Win64) +ENDIF() SET(ENV{VS_UNICODE_OUTPUT}) + INCLUDE(${CMAKE_BINARY_DIR}/CPackConfig.cmake) +IF(CPACK_WIX_CONFIG) + INCLUDE(${CPACK_WIX_CONFIG}) +ENDIF() + +IF(NOT CPACK_WIX_UI) + SET(CPACK_WIX_UI "WixUI_Mondo") +ENDIF() + +SET(WIX_FEATURES) +FOREACH(comp ${CPACK_COMPONENTS_ALL}) + STRING(TOUPPER "${comp}" comp_upper) + IF(NOT CPACK_COMPONENT_${comp_upper}_GROUP) + SET(WIX_FEATURE_${comp_upper}_COMPONENTS "${comp}") + SET(CPACK_COMPONENT_${comp_upper}_HIDDEN 1) + SET(CPACK_COMPONENT_GROUP_${comp_upper}_DISPLAY_NAME ${CPACK_COMPONENT_${comp_upper}_DISPLAY_NAME}) + SET(CPACK_COMPONENT_GROUP_${comp_upper}_DESCRIPTION ${CPACK_COMPONENT_${comp_upper}_DESCRIPTION}) + SET(CPACK_COMPONENT_GROUP_${comp_upper}_WIX_LEVEL ${CPACK_COMPONENT_${comp_upper}_WIX_LEVEL}) + SET(WIX_FEATURES ${WIX_FEATURES} WIX_FEATURE_${comp_upper}) + ELSE() + SET(FEATURE_NAME WIX_FEATURE_${CPACK_COMPONENT_${comp_upper}_GROUP}) + SET(WIX_FEATURES ${WIX_FEATURES} ${FEATURE_NAME}) + LIST(APPEND ${FEATURE_NAME}_COMPONENTS ${comp}) + ENDIF() +ENDFOREACH() + +LIST(REMOVE_DUPLICATES WIX_FEATURES) + +SET(CPACK_WIX_FEATURES) + +FOREACH(f ${WIX_FEATURES}) + STRING(TOUPPER "${f}" f_upper) + STRING(REPLACE "WIX_FEATURE_" "" f_upper ${f_upper}) + IF (CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME) + SET(TITLE ${CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME}) + ELSE() + SET(TITLE CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME) + ENDIF() + + IF (CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION) + SET(DESCRIPTION ${CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION}) + ELSE() + SET(DESCRIPTION CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION) + ENDIF() + IF(CPACK_COMPONENT_${f_upper}_WIX_LEVEL) + SET(Level ${CPACK_COMPONENT_${f_upper}_WIX_LEVEL}) + ELSE() + SET(Level 1) + ENDIF() + IF(CPACK_COMPONENT_GROUP_${f_upper}_HIDDEN) + SET(DISPLAY "Display='hidden'") + SET(TITLE ${f_upper}) + SET(DESCRIPTION ${f_upper}) + ELSE() + SET(DISPLAY) + IF(CPACK_COMPONENT_GROUP_${f_upper}_EXPANDED) + SET(DISPLAY "Display='expand'") + ENDIF() + IF (CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME) + SET(TITLE ${CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME}) + ELSE() + SET(TITLE CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME) + ENDIF() + IF (CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION) + SET(DESCRIPTION ${CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION}) + ELSE() + SET(DESCRIPTION CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION) + ENDIF() + ENDIF() + + SET(CPACK_WIX_FEATURES + "${CPACK_WIX_FEATURES} + " + ) + FOREACH(c ${${f}_COMPONENTS}) + STRING(TOUPPER "${c}" c_upper) + IF (CPACK_COMPONENT_${c_upper}_DISPLAY_NAME) + SET(TITLE ${CPACK_COMPONENT_${c_upper}_DISPLAY_NAME}) + ELSE() + SET(TITLE CPACK_COMPONENT_${c_upper}_DISPLAY_NAME) + ENDIF() + + IF (CPACK_COMPONENT_${c_upper}_DESCRIPTION) + SET(DESCRIPTION ${CPACK_COMPONENT_${c_upper}_DESCRIPTION}) + ELSE() + SET(DESCRIPTION CPACK_COMPONENT_${c_upper}_DESCRIPTION) + ENDIF() + IF(CPACK_COMPONENT_${c_upper}_WIX_LEVEL) + SET(Level ${CPACK_COMPONENT_${c_upper}_WIX_LEVEL}) + ELSE() + SET(Level 1) + ENDIF() + IF(CPACK_COMPONENT_${c_upper}_HIDDEN) + SET(CPACK_WIX_FEATURES + "${CPACK_WIX_FEATURES} + ") + ELSE() + SET(CPACK_WIX_FEATURES + "${CPACK_WIX_FEATURES} + + + ") + ENDIF() + + ENDFOREACH() + SET(CPACK_WIX_FEATURES + "${CPACK_WIX_FEATURES} + + ") +ENDFOREACH() + + + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in ${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs) + IF(CMAKE_INSTALL_CONFIG_NAME) SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_INSTALL_CONFIG_NAME}") @@ -28,6 +159,12 @@ FOREACH(comp ${CPACK_COMPONENTS_ALL}) ) ENDFOREACH() +MACRO(GENERATE_GUID VarName) + EXECUTE_PROCESS(COMMAND uuidgen -c + OUTPUT_VARIABLE ${VarName} + OUTPUT_STRIP_TRAILING_WHITESPACE) +ENDMACRO() + SET(INC_VAR 0) MACRO(MAKE_WIX_IDENTIFIER str varname) STRING(REPLACE "/" "." ${varname} "${str}") @@ -43,7 +180,8 @@ MACRO(MAKE_WIX_IDENTIFIER str varname) ENDIF() ENDMACRO() -FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) + +FUNCTION(TRAVERSE_FILES dir topdir file file_comp file_default_component dir_root) FILE(GLOB all_files ${dir}/*) IF(NOT all_files) RETURN() @@ -52,26 +190,42 @@ FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) IF(dir_rel) MAKE_DIRECTORY(${dir_root}/${dir_rel}) MAKE_WIX_IDENTIFIER("${dir_rel}" id) - FILE(APPEND ${file} "\n") + SET(DirectoryRefId "D.${id}") ELSE() - FILE(APPEND ${file} "\n") + SET(DirectoryRefId "INSTALLDIR") ENDIF() - + FILE(APPEND ${file} "\n") + + SET(NONEXEFILES) FOREACH(f ${all_files}) IF(NOT IS_DIRECTORY ${f}) FILE(RELATIVE_PATH rel ${topdir} ${f}) MAKE_WIX_IDENTIFIER("${rel}" id) FILE(TO_NATIVE_PATH ${f} f_native) - FILE(APPEND ${file} " \n") - FILE(APPEND ${file} " \n") - FILE(APPEND ${file} " \n") - FILE(APPEND ${file_comp} " \n") + GET_FILENAME_COMPONENT(f_ext "${f}" EXT) + # According to MSDN each DLL or EXE should be in the own component + IF(f_ext MATCHES ".exe" OR f_ext MATCHES ".dll") + + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file_comp} " \n") + ELSE() + SET(NONEXEFILES "${NONEXEFILES}\n" ) + ENDIF() ENDIF() ENDFOREACH() FILE(APPEND ${file} "\n") + IF(NONEXEFILES) + GENERATE_GUID(guid) + SET(ComponentId "C._files_${COMP_NAME}.${DirectoryRefId}") + FILE(APPEND ${file_default_component} + "\n${NONEXEFILES}\n\n") + FILE(APPEND ${file_comp} " \n") + ENDIF() FOREACH(f ${all_files}) IF(IS_DIRECTORY ${f}) - TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${dir_root}) + TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${file_default_component} ${dir_root}) ENDIF() ENDFOREACH() ENDFUNCTION() @@ -101,9 +255,14 @@ FOREACH(d ${DIRS}) GET_FILENAME_COMPONENT(d_name ${d} NAME) FILE(WRITE ${abs}/${d_name}.wxs "\n\n") + FILE(WRITE + ${abs}/${d_name}_default_component.wxs "") FILE(WRITE - ${abs}/${d_name}_component_group.wxs "\n\n\n") - TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs") + ${abs}/${d_name}_component_group.wxs " + \n") + SET(COMP_NAME ${d_name}) + TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs ${abs}/${d_name}_default_component.wxs "${abs}/dirs") + FILE(APPEND ${abs}/${d_name}_default_component.wxs "\n\n") FILE(APPEND ${abs}/${d_name}.wxs " \n") FILE(APPEND ${abs}/${d_name}_component_group.wxs "\n\n") ENDFOREACH() diff --git a/packaging/WiX/mysql_server.wxs.in b/packaging/WiX/mysql_server.wxs.in index a4289195d47..2e1443e0153 100644 --- a/packaging/WiX/mysql_server.wxs.in +++ b/packaging/WiX/mysql_server.wxs.in @@ -3,27 +3,22 @@ Name="MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@" Version="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH@" Language="1033" Manufacturer="MySQL AB"> + InstallerVersion='200' Languages='1033' Compressed='yes' SummaryCodepage='1252' + Platform='@Platform@'/> - + - - - - - - - - - - + + @CPACK_WIX_FEATURES@ + + + diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index 28b14661265..58412a9140e 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -244,6 +244,7 @@ IF(MSVC) ENDIF() SET(NON_THREADED_LIBS ${CLIENT_LIBS}) +SET(mysql_config_COMPONENT COMPONENT Development) IF(WIN32) # On Windows, some .sh and some .pl.in files are configured @@ -256,15 +257,18 @@ IF(WIN32) SET(SH_FILES mysql_convert_table_format mysqld_multi) FOREACH(file ${PLIN_FILES}) + IF(NOT ${file}_COMPONENT) + SET(${file}_COMPONENT Server_Scripts) + ENDIF() CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.pl.in ${CMAKE_CURRENT_BINARY_DIR}/${file}.pl ESCAPE_QUOTES @ONLY) - INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/${file}.pl) + INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/${file}.pl COMPONENT ${${file}_COMPONENT}) ENDFOREACH() FOREACH(file ${SH_FILES}) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh ${CMAKE_CURRENT_BINARY_DIR}/${file}.pl ESCAPE_QUOTES @ONLY) - INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/${file}.pl) + INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/${file}.pl COMPONENT ${${file}_COMPONENT}) ENDFOREACH() ELSE() # On Unix, most of the files end up in the bin directory diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 0c727626138..7373d82c827 100755 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -241,7 +241,7 @@ IF(INSTALL_LAYOUT STREQUAL "STANDALONE") # Avoid completely empty directories and install dummy file instead. SET(DUMMY_FILE ${CMAKE_CURRENT_BINARY_DIR}/.empty ) FILE(WRITE ${DUMMY_FILE} "") -INSTALL(FILES ${DUMMY_FILE} DESTINATION data/test) +INSTALL(FILES ${DUMMY_FILE} DESTINATION data/test COMPONENT DataFiles) # Install initial database on windows IF(NOT CMAKE_CROSSCOMPILING) @@ -269,7 +269,7 @@ IF(WIN32 AND MYSQLD_EXECUTABLE) ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/data/mysql/user.frm ) - INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data/mysql DESTINATION data) + INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data/mysql DESTINATION data COMPONENT DataFiles) ELSE() # Not windows or cross compiling, just install an empty directory INSTALL(FILES ${DUMMY_FILE} DESTINATION data/mysql) diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index 906f516eac2..194ddaf3ca4 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -34,7 +34,8 @@ ENDIF() FOREACH(inifile my-huge my-innodb-heavy-4G my-large my-medium my-small) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${inifile}.cnf.sh ${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension} @ONLY) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension} DESTINATION ${INSTALL_DOCREADMEDIR}) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension} DESTINATION + ${INSTALL_DOCREADMEDIR} COMPONENT IniFiles) ENDFOREACH() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ea2f41abb73..b0e3342b1bc 100755 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -27,4 +27,4 @@ IF(WITH_UNIT_TESTS) SET_TARGET_PROPERTIES(bug25714 PROPERTIES LINKER_LANGUAGE CXX) ENDIF() -INSTALL(TARGETS mysql_client_test DESTINATION bin) +INSTALL(TARGETS mysql_client_test DESTINATION ${INSTALL_BINDIR} COMPONENT Test) From df312a95a06919faa4523f142661c05f3a30a5c3 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Tue, 16 Feb 2010 16:17:10 +0100 Subject: [PATCH 005/126] adding CPackWixConfig --- packaging/WiX/CPackWixConfig.cmake | 95 +++++++++++++++++++++++ packaging/WiX/create_fragments.cmake | 109 --------------------------- 2 files changed, 95 insertions(+), 109 deletions(-) create mode 100644 packaging/WiX/CPackWixConfig.cmake delete mode 100644 packaging/WiX/create_fragments.cmake diff --git a/packaging/WiX/CPackWixConfig.cmake b/packaging/WiX/CPackWixConfig.cmake new file mode 100644 index 00000000000..9577574bbaf --- /dev/null +++ b/packaging/WiX/CPackWixConfig.cmake @@ -0,0 +1,95 @@ + +IF(ESSENTIALS) + MESSAGE("Essentials!") + SET(CPACK_COMPONENTS_USED "Server;Client;DataFiles") + SET(CPACK_WIX_UI "WixUI_InstallDir") + MATH(EXPR bits ${CMAKE_SIZEOF_VOID_P}*8) + SET(CPACK_PACKAGE_FILE_NAME "mysql-essentials-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH}-win${bits}") +ELSE() + SET(CPACK_COMPONENTS_USED + "Server;Client;DataFiles;Development;SharedLibraries;Embedded;Debuginfo;Documentation;IniFiles;Readme;Server_Scripts") +ENDIF() + + +# Some components like Embedded are optional +# We will build MSI without embedded if it was not selected for build +#(need to modify CPACK_COMPONENTS_ALL for that) +SET(CPACK_ALL) +FOREACH(comp1 ${CPACK_COMPONENTS_USED}) + SET(found) + FOREACH(comp2 ${CPACK_COMPONENTS_ALL}) + IF(comp1 STREQUAL comp2) + SET(found 1) + BREAK() + ENDIF() + ENDFOREACH() + IF(found) + SET(CPACK_ALL ${CPACK_ALL} ${comp1}) + ENDIF() +ENDFOREACH() +SET(CPACK_COMPONENTS_ALL ${CPACK_ALL}) + +# Always install (hidden), includes Readme files +SET(CPACK_COMPONENT_GROUP_ALWAYSINSTALL_HIDDEN 1) +SET(CPACK_COMPONENT_README_GROUP "AlwaysInstall") + +# Feature MySQL Server +SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_DISPLAY_NAME "MySQL Server") +SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_EXPANDED "1") +SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_DESCRIPTION "Install MySQL Server") + # Subfeature "Server" (hidden) + SET(CPACK_COMPONENT_SERVER_GROUP "MySQLServer") + SET(CPACK_COMPONENT_SERVER_HIDDEN 1) + # Subfeature "Client" + SET(CPACK_COMPONENT_CLIENT_GROUP "MySQLServer") + SET(CPACK_COMPONENT_CLIENT_DISPLAY_NAME "Client Programs") + SET(CPACK_COMPONENT_CLIENT_DESCRIPTION + "Various helpful (commandline) tools including the mysql command line client" ) + + #Subfeature "Data Files" + SET(CPACK_COMPONENT_DATAFILES_GROUP "MySQLServer") + SET(CPACK_COMPONENT_DATAFILES_DISPLAY_NAME "Server data files") + SET(CPACK_COMPONENT_DATAFILES_DESCRIPTION "Server data files" ) + + +#Feature "Devel" +SET(CPACK_COMPONENT_GROUP_DEVEL_DISPLAY_NAME "Development Components") +SET(CPACK_COMPONENT_GROUP_DEVEL_DESCRIPTION "Installs C/C++ header files and libraries") + #Subfeature "Development" + SET(CPACK_COMPONENT_DEVELOPMENT_GROUP "Devel") + SET(CPACK_COMPONENT_DEVELOPMENT_HIDDEN 1) + + #Subfeature "Shared libraries" + SET(CPACK_COMPONENT_SHAREDLIBRARIES_GROUP "Devel") + SET(CPACK_COMPONENT_SHAREDLIBRARIES_DISPLAY_NAME "Client C API library (shared)") + SET(CPACK_COMPONENT_SHAREDLIBRARIES_DESCRIPTION "Installs shared client library") + + #Subfeature "Embedded" + SET(CPACK_COMPONENT_EMBEDDED_GROUP "Devel") + SET(CPACK_COMPONENT_EMBEDDED_DISPLAY_NAME "Embedded server library") + SET(CPACK_COMPONENT_EMBEDDED_DESCRIPTION "Installs embedded server library") + SET(CPACK_COMPONENT_EMBEDDED_WIX_LEVEL 2) + +#Feature Debug Symbols +SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_DISPLAY_NAME "Debug Symbols") +SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_DESCRIPTION "Installs Debug Symbols") +SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_WIX_LEVEL 2) + SET(CPACK_COMPONENT_DEBUGINFO_GROUP "DebugSymbols") + SET(CPACK_COMPONENT_DEBUGINFO_HIDDEN 1) + +#Feature Documentation +SET(CPACK_COMPONENT_DOCUMENTATION_DISPLAY_NAME "Documentation") +SET(CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION "Installs documentation") +SET(CPACK_COMPONENT_DOCUMENTATION_WIX_LEVEL 2) + +#Feature tests +SET(CPACK_COMPONENT_TEST_DISPLAY_NAME "Tests") +SET(CPACK_COMPONENT_TEST_DESCRIPTION "Installs unittests (requires Perl to run)") +SET(CPACK_COMPONENT_TEST_WIX_LEVEL 2) + + +#Feature Misc (hidden, installs only if everything is installed) +SET(CPACK_COMPONENT_GROUP_MISC_HIDDEN 1) +SET(CPACK_COMPONENT_GROUP_MISC_WIX_LEVEL 100) + SET(CPACK_COMPONENT_INIFILES_GROUP "Misc") + SET(CPACK_COMPONENT_SERVER_SCRIPTS_GROUP "Misc") diff --git a/packaging/WiX/create_fragments.cmake b/packaging/WiX/create_fragments.cmake deleted file mode 100644 index 9b7eecdc47d..00000000000 --- a/packaging/WiX/create_fragments.cmake +++ /dev/null @@ -1,109 +0,0 @@ -INCLUDE(${CMAKE_BINARY_DIR}/CPackConfig) - -FOREACH(comp ${COMPS}) - SET(CMDS ${CMDS} - COMMAND set DESTDIR=testinstall/${comp} - COMMAND ${CMAKE_COMMAND} - -DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR} - -DCMAKE_INSTALL_COMPONENT=${comp} - -DCMAKE_INSTALL_PREFIX= - -P ${CMAKE_BINARY_DIR}/cmake_install.cmake - ) -ENDFOREACH() - -SET(INC 0) -MACRO(MAKE_WIX_IDENTIFIER str varname) - STRING(REPLACE "/" "." ret "${str}") - STRING(REPLACE "-" "_" ret "${ret}}") - STRING(LENGTH l "${ret}") - IF(l GREATER 65) - STRING(SUBSTRING "${ret}" 0 64 ret) - MATH(EXPR INC ${INC}+1) - SET(ret "${ret}${INC}) - ENDIF() - SET(${varname} ${ret}) -ENDMACRO() - -MACRO(GENERATE_GUID VarName) - EXECUTE_PROCESS(COMMAND uuidgen -c OUTPUT_VARIABLE ${VarName} OUTPUT_STRIP_TRAILING_WHITESPACE) -ENDMACRO() - -FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) - FILE(GLOB all_files ${dir}/*) - IF(NOT all_files) - RETURN() - ENDIF() - FILE(RELATIVE_PATH dir_rel ${topdir} ${dir}) - IF(dir_rel) - MAKE_DIRECTORY(${dir_root}/${dir_rel}) - MAKE_WIX_IDENTIFIER("${dir_rel}" dir_id) - ELSE() - FILE(APPEND ${file} "\n") - ENDIF() - FILE(APPEND ${file} "\n") - - SET(NONEXEFILES) - FOREACH(f ${all_files}) - IF(NOT IS_DIRECTORY ${f}) - GET_FILENAME_COMPONENT(ext "${f}" EXT) - FILE(TO_NATIVE_PATH ${f} f_native) - FILE(RELATIVE_PATH rel ${topdir} ${f}) - MAKE_WIX_IDENTIFIER("${rel}" id) - IF(ext MATCHES ".dll" OR ext MATCHES ".exe") - FILE(APPEND ${file} " \n") - FILE(APPEND ${file} " \n") - FILE(APPEND ${file} " \n") - FILE(APPEND ${file_comp} " \n") - ELSE() - # Collect nonexe files into a single component to reduce number of components - SET(NONEXEFILES "${NONEXEFILES} \n") - ENDIF() - ENDIF() - ENDFOREACH() - IF(NONEXEFILES) - GENERATE_GUID(guid) - FILE(APPEND ${file} " \n") - ENDIF() - FILE(GLOB all_files ${dir}/*) - FOREACH(f ${all_files}) - IF(IS_DIRECTORY ${f}) - TRAVERSE_DIRECTORIES(${f} ${topdir} ${file} "${prefix} ") - ENDIF() - ENDFOREACH() - IF(rel) - FILE(APPEND ${file} "\n") - ENDIF() -ENDFUNCTION() - - -GET_FILENAME_COMPONENT(abs . ABSOLUTE) -FOREACH(d ${DIRS}) - GET_FILENAME_COMPONENT(d ${d} ABSOLUTE) - GET_FILENAME_COMPONENT(d_name ${d} NAME) - FILE(WRITE - ${abs}/${d_name}.wxs "\n\n") - FILE(WRITE - ${abs}/${d_name}_component_group.wxs "\n\n\n") - TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs") - FILE(APPEND ${abs}/${d_name}.wxs " \n") - FILE(APPEND ${abs}/${d_name}_component_group.wxs "\n\n") -ENDFOREACH() -FILE(WRITE directories.wxs "\n\n\n") -TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "") -FILE(APPEND directories.wxs "\n\n\n") - From 7fcf60b80e66b6a7c037d89e3b266b7a9d68bc48 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Thu, 18 Feb 2010 23:52:35 +0100 Subject: [PATCH 006/126] Refactor some stuff --- packaging/WiX/CMakeLists.txt | 18 ++++++- packaging/WiX/create_msi.cmake.in | 48 ++++++++++-------- packaging/WiX/extra.wxs.in | 32 ++++++++++++ packaging/WiX/mysql_server.wxs.in | 82 ++++++++++++++++++++++++++----- 4 files changed, 145 insertions(+), 35 deletions(-) create mode 100644 packaging/WiX/extra.wxs.in diff --git a/packaging/WiX/CMakeLists.txt b/packaging/WiX/CMakeLists.txt index f083c79e1df..9cd043e001b 100644 --- a/packaging/WiX/CMakeLists.txt +++ b/packaging/WiX/CMakeLists.txt @@ -25,18 +25,32 @@ FIND_PROGRAM(LIGHT_EXECUTABLE light ${WIX_DIR}) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake @ONLY) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/extra.wxs.in + ${CMAKE_CURRENT_BINARY_DIR}/extra.wxs + @ONLY@ + ) + IF(CMAKE_GENERATOR MATCHES "Visual Studio") SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR}") ENDIF() + ADD_CUSTOM_TARGET( MSI COMMAND set VS_UNICODE_OUTPUT= - COMMAND ${CMAKE_COMMAND} -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake ${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake + COMMAND ${CMAKE_COMMAND} + -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake + -DCPACK_WIX_EXTRA_SOURCE=${CMAKE_CURRENT_BINARY_DIR}/extra.wxs + ${CONFIG_PARAM} + -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake ) ADD_CUSTOM_TARGET( MSI_ESSENTIALS COMMAND set VS_UNICODE_OUTPUT= - COMMAND ${CMAKE_COMMAND} -DESSENTIALS=1 -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake ${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake + COMMAND ${CMAKE_COMMAND} -DESSENTIALS=1 + -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake + -DCPACK_WIX_EXTRA_SOURCE=${CMAKE_CURRENT_BINARY_DIR}/extra.wxs + ${CONFIG_PARAM} + -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake ) diff --git a/packaging/WiX/create_msi.cmake.in b/packaging/WiX/create_msi.cmake.in index d932e064237..92bba7d34e9 100644 --- a/packaging/WiX/create_msi.cmake.in +++ b/packaging/WiX/create_msi.cmake.in @@ -181,7 +181,7 @@ MACRO(MAKE_WIX_IDENTIFIER str varname) ENDMACRO() -FUNCTION(TRAVERSE_FILES dir topdir file file_comp file_default_component dir_root) +FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) FILE(GLOB all_files ${dir}/*) IF(NOT all_files) RETURN() @@ -219,13 +219,13 @@ FUNCTION(TRAVERSE_FILES dir topdir file file_comp file_default_component dir_roo IF(NONEXEFILES) GENERATE_GUID(guid) SET(ComponentId "C._files_${COMP_NAME}.${DirectoryRefId}") - FILE(APPEND ${file_default_component} + FILE(APPEND ${file} "\n${NONEXEFILES}\n\n") FILE(APPEND ${file_comp} " \n") ENDIF() FOREACH(f ${all_files}) IF(IS_DIRECTORY ${f}) - TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${file_default_component} ${dir_root}) + TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${dir_root}) ENDIF() ENDFOREACH() ENDFUNCTION() @@ -244,33 +244,41 @@ FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix) ENDIF() ENDFOREACH() IF(rel AND IS_DIRECTORY "${f}") - FILE(APPEND ${file} "\n") + FILE(APPEND ${file} "${prefix}\n") ENDIF() ENDFUNCTION() - +SET(CPACK_WIX_COMPONENTS) +SET(CPACK_WIX_COMPONENT_GROUPS) GET_FILENAME_COMPONENT(abs . ABSOLUTE) FOREACH(d ${DIRS}) GET_FILENAME_COMPONENT(d ${d} ABSOLUTE) GET_FILENAME_COMPONENT(d_name ${d} NAME) - FILE(WRITE - ${abs}/${d_name}.wxs "\n\n") - FILE(WRITE - ${abs}/${d_name}_default_component.wxs "") - FILE(WRITE - ${abs}/${d_name}_component_group.wxs " - \n") + FILE(WRITE ${abs}/${d_name}_component_group.wxs "") SET(COMP_NAME ${d_name}) - TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs ${abs}/${d_name}_default_component.wxs "${abs}/dirs") - FILE(APPEND ${abs}/${d_name}_default_component.wxs "\n\n") - FILE(APPEND ${abs}/${d_name}.wxs " \n") - FILE(APPEND ${abs}/${d_name}_component_group.wxs "\n\n") + TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs") + FILE(APPEND ${abs}/${d_name}_component_group.wxs "") + FILE(READ ${d_name}.wxs WIX_TMP) + SET(CPACK_WIX_COMPONENTS "${CPACK_WIX_COMPONENTS}\n${WIX_TMP}") + FILE(REMOVE ${d_name}.wxs) + FILE(READ ${d_name}_component_group.wxs WIX_TMP) + + SET(CPACK_WIX_COMPONENT_GROUPS "${CPACK_WIX_COMPONENT_GROUPS}\n${WIX_TMP}") + FILE(REMOVE ${d_name}_component_group.wxs) ENDFOREACH() -FILE(WRITE directories.wxs "\n\n\n") -TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "") -FILE(APPEND directories.wxs "\n\n\n") -FILE(GLOB WXS_FILES *.wxs) +FILE(WRITE directories.wxs "\n") +TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "") +FILE(APPEND directories.wxs "\n") + +FILE(READ directories.wxs CPACK_WIX_DIRECTORIES) +FILE(REMOVE directories.wxs) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in + ${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs) + + +SET(WXS_FILES ${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs ${CPACK_WIX_EXTRA_SOURCE}) SET(WIXOBJ_NATIVE_FILES) SET(WXS_NATIVE_FILES) FOREACH(f "${WXS_FILES}") diff --git a/packaging/WiX/extra.wxs.in b/packaging/WiX/extra.wxs.in new file mode 100644 index 00000000000..b1286bfba61 --- /dev/null +++ b/packaging/WiX/extra.wxs.in @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packaging/WiX/mysql_server.wxs.in b/packaging/WiX/mysql_server.wxs.in index 2e1443e0153..30baefbf64b 100644 --- a/packaging/WiX/mysql_server.wxs.in +++ b/packaging/WiX/mysql_server.wxs.in @@ -1,11 +1,62 @@ - - + + + InstallerVersion='200' + Languages='1033' + Compressed='yes' + SummaryCodepage='1252' + Platform='@Platform@'/> + + + + + + + + + NOT NEWERVERSIONDETECTED OR Installed + + + + + + + + + + + + + + + + @@ -14,13 +65,18 @@ - - @CPACK_WIX_FEATURES@ - - - - - - + + + @CPACK_WIX_FEATURES@ + + + @CPACK_WIX_DIRECTORIES@ + + + @CPACK_WIX_COMPONENTS@ + + + @CPACK_WIX_COMPONENT_GROUPS@ + From 7e852519d7eaabdac442b5ab5679de280f1c24ae Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 18 Mar 2010 21:06:12 +0100 Subject: [PATCH 007/126] Fixes from wlad --- .bzr-mysql/default.conf | 4 ++-- cmake/build_configurations/mysql_release.cmake | 8 ++++++-- mysys/my_init.c | 8 ++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf index fcb3cab2de6..ac654d5cf71 100644 --- a/.bzr-mysql/default.conf +++ b/.bzr-mysql/default.conf @@ -1,4 +1,4 @@ [MYSQL] -post_commit_to = "commits@lists.mysql.com" -post_push_to = "commits@lists.mysql.com" +#post_commit_to = "commits@lists.mysql.com" +#post_push_to = "commits@lists.mysql.com" tree_name = "mysql-trunk" diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index b329a09d56e..9b3db827ab3 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -122,8 +122,12 @@ IF(UNIX) IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX") IF(CMAKE_C_COMPILER_ID MATCHES "HP") IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g +O2 +DD64 +DSitanium2 -mt -AC99") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g +O2 +DD64 +DSitanium2 -mt -Aa") + SET(CMAKE_C_FLAGS + "${CMAKE_C_FLAGS} +DD64 +DSitanium2 -mt -AC99") + SET(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} +DD64 +DSitanium2 -mt -Aa") + SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} +O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} +O2") ENDIF() ENDIF() SET(WITH_SSL) diff --git a/mysys/my_init.c b/mysys/my_init.c index a3e53fdaae1..e68a8b7a194 100644 --- a/mysys/my_init.c +++ b/mysys/my_init.c @@ -93,10 +93,6 @@ my_bool my_basic_init(void) my_umask_dir= (int) (atoi_octal(str) | 0700); #endif - /* $HOME is needed early to parse configuration files located in ~/ */ - if ((home_dir= getenv("HOME")) != 0) - home_dir= intern_filename(home_dir_buff, home_dir); - init_glob_errs(); instrumented_stdin.m_file= stdin; @@ -122,6 +118,10 @@ my_bool my_basic_init(void) return 1; #endif + /* $HOME is needed early to parse configuration files located in ~/ */ + if ((home_dir= getenv("HOME")) != 0) + home_dir= intern_filename(home_dir_buff, home_dir); + return 0; } From 9a8986637ac7840a99196c49596e389300ef4e98 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Fri, 19 Mar 2010 15:34:42 +0100 Subject: [PATCH 008/126] First cut at SVR4 layout. --- cmake/install_layout.cmake | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 92eebebd4e2..cd886a00c3a 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -53,13 +53,17 @@ CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip IF(NOT INSTALL_LAYOUT MATCHES "STANDALONE") IF(NOT INSTALL_LAYOUT MATCHES "UNIX") - SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}") + # XXX not keen on this, how many more will we need? prefer to just bail... + IF(NOT INSTALL_LAYOUT MATCHES "SVR4") + SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}") ENDIF() ENDIF() IF(UNIX) IF(INSTALL_LAYOUT MATCHES "UNIX") SET(default_prefix "/usr") + ELSEIF(INSTALL_LAYOUT MATCHES "SVR4") + SET(default_prefix "/opt/mysql/mysql") ELSE() SET(default_prefix "/usr/local/mysql") ENDIF() @@ -91,6 +95,23 @@ ENDIF() SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") SET(INSTALL_MYSQLDATADIR_STANDALONE "data") + # SVR4 layout + SET(INSTALL_BINDIR_SVR4 "bin") + SET(INSTALL_SBINDIR_SVR4 "bin") + SET(INSTALL_LIBDIR_SVR4 "lib") + SET(INSTALL_INCLUDEDIR_SVR4 "include") + SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") + SET(INSTALL_DOCDIR_SVR4 "docs") + SET(INSTALL_MANDIR_SVR4 "man") + SET(INSTALL_MYSQLSHAREDIR_SVR4 "share") + SET(INSTALL_SHAREDIR_SVR4 "share") + SET(INSTALL_SCRIPTDIR_SVR4 "scripts") + SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") + SET(INSTALL_SQLBENCHROOTDIR_SVR4 ".") + SET(INSTALL_DOCREADMEDIR_SVR4 ".") + SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") + SET(MYSQL_DATADIR "/var/lib/mysql") + # UNIX layout SET(INSTALL_BINDIR_UNIX "bin") SET(INSTALL_SBINDIR_UNIX "sbin") From 486c06e29a4a9cbfb56c3f3b38a992ba547367ef Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Fri, 19 Mar 2010 16:26:33 +0100 Subject: [PATCH 009/126] Fix syntax. --- cmake/install_layout.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index cd886a00c3a..6b873762ece 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -56,6 +56,7 @@ IF(NOT INSTALL_LAYOUT MATCHES "STANDALONE") # XXX not keen on this, how many more will we need? prefer to just bail... IF(NOT INSTALL_LAYOUT MATCHES "SVR4") SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}") + ENDIF() ENDIF() ENDIF() From 6ca0c6f52898dcb26a1cb55dd99742b365c48071 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 22 Mar 2010 15:16:52 +0100 Subject: [PATCH 010/126] Try to fix SVR4 packages. --- support-files/CMakeLists.txt | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index 85be470e21b..9cd373c6e9c 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -31,14 +31,12 @@ ELSE() SET(ini_file_extension "cnf") ENDIF() -IF(UNIX) - IF(INSTALL_LAYOUT MATCHES "STANDALONE") - SET(inst_location ${INSTALL_SUPPORTFILESDIR}) - ELSE() - SET(inst_location ${INSTALL_DOCREADMEDIR}) - ENDIF() -ELSE() +# XXX: shouldn't we just have variables for all this stuff and centralise +# XXX: their configuration in install_layout.cmake? +IF(WIN32) SET(inst_location ${INSTALL_DOCREADMEDIR}) +ELSE() + SET(inst_location ${INSTALL_SUPPORTFILESDIR}) ENDIF() FOREACH(inifile my-huge my-innodb-heavy-4G my-large my-medium my-small) @@ -48,14 +46,13 @@ FOREACH(inifile my-huge my-innodb-heavy-4G my-large my-medium my-small) ENDFOREACH() IF(UNIX) + # XXX: again, used elsewhere (scripts/), should be standardised in + # XXX: install_layout.cmake IF(INSTALL_LAYOUT MATCHES "STANDALONE") SET(prefix ".") - SET(inst_location ${INSTALL_SUPPORTFILESDIR}) ELSE() SET(prefix ${CMAKE_INSTALL_PREFIX}) - SET(inst_location ${INSTALL_MYSQLSHAREDIR}) ENDIF() - FOREACH(script mysqld_multi.server mysql-log-rotate binary-configure config.medium.ini config.small.ini config.huge.ini ndb-config-2-node.ini) From 31cc7f2eb041358d8ceeecaefb3de82bbedd46c8 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 22 Mar 2010 16:00:37 +0100 Subject: [PATCH 011/126] Tidy. --- cmake/install_layout.cmake | 199 +++++++++++++++++++------------------ 1 file changed, 101 insertions(+), 98 deletions(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 6b873762ece..3a0a3fa6bca 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -14,54 +14,60 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # The purpose of this file is to set the default installation layout. -# Currently, there are 2 different installation layouts , -# one is used in tar.gz packages (Windows zip is about the same), another one -# in RPMs. - -# There are currently 2 layouts defines, named STANDALONE (tar.gz layout) -# and UNIX (rpm layout). To force a directory layout when invoking cmake use -# -DINSTALL_LAYOUT=[STANDALONE|UNIX]. -# This wil use a predefined layout. There is a possibility to further fine-tune -# installation directories. Several variables are can be overwritten # -# - INSTALL_BINDIR (directory with client executables and Unix shell scripts) -# - INSTALL_SBINDIR (directory with mysqld) -# - INSTALL_LIBDIR (directory with client end embedded libraries) -# - INSTALL_PLUGINDIR (directory for plugins) -# - INSTALL_INCLUDEDIR (directory for MySQL headers) -# - INSTALL_DOCDIR (documentation) -# - INSTALL_MANDIR (man pages) -# - INSTALL_SCRIPTDIR (several scripts, rarely used) -# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages) -# - INSTALL_SHAREDIR (location of aclocal/mysql.m4) -# - INSTALL_SQLBENCHDIR (sql-bench) -# - INSTALL_MYSQLTESTDIR (mysql-test) -# - INSTALL_DOCREADMEDIR (readme and similar) +# The current choices of installation layout are: +# +# STANDALONE +# Build with prefix=/usr/local/mysql, create tarball with install prefix="." +# and relative links. Windows zip uses the same tarball layout but without +# the build prefix. +# +# RPM +# Build as per default RPM layout, with prefix=/usr +# +# SVR4 +# Solaris package layout suitable for pkg* tools, prefix=/opt/mysql/mysql +# +# To force a directory layout, use -DINSTALL_LAYOUT=. +# +# The default is STANDALONE. +# +# There is the possibility to further fine-tune installation directories. +# Several variables can be overwritten: +# +# - INSTALL_BINDIR (directory with client executables and scripts) +# - INSTALL_SBINDIR (directory with mysqld) +# - INSTALL_LIBDIR (directory with client end embedded libraries) +# - INSTALL_PLUGINDIR (directory for plugins) +# - INSTALL_INCLUDEDIR (directory for MySQL headers) +# - INSTALL_DOCDIR (documentation) +# - INSTALL_MANDIR (man pages) +# - INSTALL_SCRIPTDIR (several scripts, rarely used) +# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages) +# - INSTALL_SHAREDIR (location of aclocal/mysql.m4) +# - INSTALL_SQLBENCHDIR (sql-bench) +# - INSTALL_MYSQLTESTDIR (mysql-test) +# - INSTALL_DOCREADMEDIR (readme and similar) # - INSTALL_SUPPORTFILESDIR (used only in standalone installer) -# Default installation layout on Unix is UNIX (kent wants it so) IF(NOT INSTALL_LAYOUT) - IF(WIN32) - SET(DEFAULT_INSTALL_LAYOUT "STANDALONE") - ELSE() - SET(DEFAULT_INSTALL_LAYOUT "UNIX") - ENDIF() + SET(DEFAULT_INSTALL_LAYOUT "STANDALONE") ENDIF() -SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}" -CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) or UNIX") +SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}" +CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) or UNIX") -IF(NOT INSTALL_LAYOUT MATCHES "STANDALONE") - IF(NOT INSTALL_LAYOUT MATCHES "UNIX") - # XXX not keen on this, how many more will we need? prefer to just bail... - IF(NOT INSTALL_LAYOUT MATCHES "SVR4") - SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}") - ENDIF() - ENDIF() -ENDIF() +#IF(NOT INSTALL_LAYOUT MATCHES "STANDALONE") +# IF(NOT INSTALL_LAYOUT MATCHES "UNIX") +# # XXX not keen on this, how many more will we need? prefer to just bail... +# IF(NOT INSTALL_LAYOUT MATCHES "SVR4") +# SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}") +# ENDIF() +# ENDIF() +#ENDIF() IF(UNIX) - IF(INSTALL_LAYOUT MATCHES "UNIX") + IF(INSTALL_LAYOUT MATCHES "UNIX") SET(default_prefix "/usr") ELSEIF(INSTALL_LAYOUT MATCHES "SVR4") SET(default_prefix "/opt/mysql/mysql") @@ -69,67 +75,64 @@ IF(UNIX) SET(default_prefix "/usr/local/mysql") ENDIF() IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - SET(CMAKE_INSTALL_PREFIX ${default_prefix} + SET(CMAKE_INSTALL_PREFIX ${default_prefix} CACHE PATH "install prefix" FORCE) ENDIF() - SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" + SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" CACHE PATH "config directory (for my.cnf)") MARK_AS_ADVANCED(SYSCONFDIR) ENDIF() - - - # STANDALONE layout - SET(INSTALL_BINDIR_STANDALONE "bin") - SET(INSTALL_SBINDIR_STANDALONE "bin") - SET(INSTALL_LIBDIR_STANDALONE "lib") - SET(INSTALL_INCLUDEDIR_STANDALONE "include") - SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") - SET(INSTALL_DOCDIR_STANDALONE "docs") - SET(INSTALL_MANDIR_STANDALONE "man") - SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") - SET(INSTALL_SHAREDIR_STANDALONE "share") - SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") - SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test") - SET(INSTALL_SQLBENCHROOTDIR_STANDALONE ".") - SET(INSTALL_DOCREADMEDIR_STANDALONE ".") - SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") - SET(INSTALL_MYSQLDATADIR_STANDALONE "data") - - # SVR4 layout - SET(INSTALL_BINDIR_SVR4 "bin") - SET(INSTALL_SBINDIR_SVR4 "bin") - SET(INSTALL_LIBDIR_SVR4 "lib") - SET(INSTALL_INCLUDEDIR_SVR4 "include") - SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") - SET(INSTALL_DOCDIR_SVR4 "docs") - SET(INSTALL_MANDIR_SVR4 "man") - SET(INSTALL_MYSQLSHAREDIR_SVR4 "share") - SET(INSTALL_SHAREDIR_SVR4 "share") - SET(INSTALL_SCRIPTDIR_SVR4 "scripts") - SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") - SET(INSTALL_SQLBENCHROOTDIR_SVR4 ".") - SET(INSTALL_DOCREADMEDIR_SVR4 ".") - SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") - SET(MYSQL_DATADIR "/var/lib/mysql") - - # UNIX layout - SET(INSTALL_BINDIR_UNIX "bin") - SET(INSTALL_SBINDIR_UNIX "sbin") - SET(INSTALL_LIBDIR_UNIX "lib/mysql") - SET(INSTALL_PLUGINDIR_UNIX "lib/mysql/plugin") - SET(INSTALL_DOCDIR_UNIX "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") - SET(INSTALL_MANDIR_UNIX "share/mysql/man") - SET(INSTALL_INCLUDEDIR_UNIX "include/mysql") - SET(INSTALL_MYSQLSHAREDIR_UNIX "share/mysql") - SET(INSTALL_SHAREDIR_UNIX "share") - SET(INSTALL_SCRIPTDIR_UNIX "bin") - SET(INSTALL_MYSQLTESTDIR_UNIX "mysql-test") - SET(INSTALL_SQLBENCHROOTDIR_UNIX "") - SET(INSTALL_DOCREADMEDIR_UNIX "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") - SET(INSTALL_SUPPORTFILESDIR_UNIX "") - SET(INSTALL_MYSQLDATADIR_UNIX "var") +# STANDALONE layout +SET(INSTALL_BINDIR_STANDALONE "bin") +SET(INSTALL_SBINDIR_STANDALONE "bin") +SET(INSTALL_LIBDIR_STANDALONE "lib") +SET(INSTALL_INCLUDEDIR_STANDALONE "include") +SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") +SET(INSTALL_DOCDIR_STANDALONE "docs") +SET(INSTALL_MANDIR_STANDALONE "man") +SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") +SET(INSTALL_SHAREDIR_STANDALONE "share") +SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") +SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test") +SET(INSTALL_SQLBENCHROOTDIR_STANDALONE ".") +SET(INSTALL_DOCREADMEDIR_STANDALONE ".") +SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") +SET(INSTALL_MYSQLDATADIR_STANDALONE "data") +# RPM layout +SET(INSTALL_BINDIR_RPM "bin") +SET(INSTALL_SBINDIR_RPM "sbin") +SET(INSTALL_LIBDIR_RPM "lib/mysql") +SET(INSTALL_PLUGINDIR_RPM "lib/mysql/plugin") +SET(INSTALL_DOCDIR_RPM "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") +SET(INSTALL_MANDIR_RPM "share/mysql/man") +SET(INSTALL_INCLUDEDIR_RPM "include/mysql") +SET(INSTALL_MYSQLSHAREDIR_RPM "share/mysql") +SET(INSTALL_SHAREDIR_RPM "share") +SET(INSTALL_SCRIPTDIR_RPM "bin") +SET(INSTALL_MYSQLTESTDIR_RPM "mysql-test") +SET(INSTALL_SQLBENCHROOTDIR_RPM "") +SET(INSTALL_DOCREADMEDIR_RPM "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") +SET(INSTALL_SUPPORTFILESDIR_RPM "") +SET(INSTALL_MYSQLDATADIR_RPM "var") + +# SVR4 layout +SET(INSTALL_BINDIR_SVR4 "bin") +SET(INSTALL_SBINDIR_SVR4 "bin") +SET(INSTALL_LIBDIR_SVR4 "lib") +SET(INSTALL_INCLUDEDIR_SVR4 "include") +SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") +SET(INSTALL_DOCDIR_SVR4 "docs") +SET(INSTALL_MANDIR_SVR4 "man") +SET(INSTALL_MYSQLSHAREDIR_SVR4 "share") +SET(INSTALL_SHAREDIR_SVR4 "share") +SET(INSTALL_SCRIPTDIR_SVR4 "scripts") +SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") +SET(INSTALL_SQLBENCHROOTDIR_SVR4 ".") +SET(INSTALL_DOCREADMEDIR_SVR4 ".") +SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") +SET(MYSQL_DATADIR "/var/lib/mysql") # Clear cached variables if install layout was changed IF(OLD_INSTALL_LAYOUT) @@ -139,12 +142,12 @@ IF(OLD_INSTALL_LAYOUT) ENDIF() SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "") -# Set INSTALL_FOODIR variables for chosen layout -# (for example, INSTALL_BINDIR will be defined as -# ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE layout is chosen) -FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN +# Set INSTALL_FOODIR variables for chosen layout (for example, INSTALL_BINDIR +# will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE +# layout is chosen) +FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN MYSQLTEST SQLBENCHROOT DOCREADME SUPPORTFILES MYSQLDATA) - SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}} + SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}} CACHE STRING "${var} installation directory" ${FORCE}) MARK_AS_ADVANCED(INSTALL_${var}DIR) ENDFOREACH() From c41240939b978b0995b612c9be0f0c29f191d8dd Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 22 Mar 2010 18:33:20 +0100 Subject: [PATCH 012/126] Attempt to fix RPM support-files directory. --- cmake/install_layout.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 3a0a3fa6bca..ad857058ca4 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -114,7 +114,7 @@ SET(INSTALL_SCRIPTDIR_RPM "bin") SET(INSTALL_MYSQLTESTDIR_RPM "mysql-test") SET(INSTALL_SQLBENCHROOTDIR_RPM "") SET(INSTALL_DOCREADMEDIR_RPM "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") -SET(INSTALL_SUPPORTFILESDIR_RPM "") +SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql") SET(INSTALL_MYSQLDATADIR_RPM "var") # SVR4 layout From bb0d53752484f8680b8ee71171f73946eb59cd65 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 22 Mar 2010 23:15:28 +0100 Subject: [PATCH 013/126] Set CPACK_PACKAGE_CONTACT, required for .deb --- cmake/mysql_version.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/mysql_version.cmake b/cmake/mysql_version.cmake index 3a61bcf40ab..a935643380c 100644 --- a/cmake/mysql_version.cmake +++ b/cmake/mysql_version.cmake @@ -106,6 +106,7 @@ ENDIF() IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME) SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mysql-${VERSION}") ENDIF() +SET(CPACK_PACKAGE_CONTACT "MySQL Build Team ") SET(CPACK_PACKAGE_VENDOR "Sun Microsystems, Inc") SET(CPACK_SOURCE_GENERATOR "TGZ") INCLUDE(cpack_source_ignore_files) From 3fbdf9b838540d1d12c187c783e1a66005d75924 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 22 Mar 2010 23:23:18 +0100 Subject: [PATCH 014/126] Fix RPM prefix. --- cmake/install_layout.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index ad857058ca4..250bd3cff5b 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -67,7 +67,7 @@ CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip #ENDIF() IF(UNIX) - IF(INSTALL_LAYOUT MATCHES "UNIX") + IF(INSTALL_LAYOUT MATCHES "RPM") SET(default_prefix "/usr") ELSEIF(INSTALL_LAYOUT MATCHES "SVR4") SET(default_prefix "/opt/mysql/mysql") From 2dcbad90ba2d29d121f8ec034e0809a9dd9543da Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 23 Mar 2010 12:28:13 +0100 Subject: [PATCH 015/126] Try some more RPM fixes. --- cmake/install_layout.cmake | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 250bd3cff5b..680fa5ff863 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -103,10 +103,14 @@ SET(INSTALL_MYSQLDATADIR_STANDALONE "data") # RPM layout SET(INSTALL_BINDIR_RPM "bin") SET(INSTALL_SBINDIR_RPM "sbin") -SET(INSTALL_LIBDIR_RPM "lib/mysql") -SET(INSTALL_PLUGINDIR_RPM "lib/mysql/plugin") +IF(64BIT) + SET(INSTALL_LIBDIR_RPM "lib64/mysql") +ELSE() + SET(INSTALL_LIBDIR_RPM "lib/mysql") +ENDIF() +SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/plugin") SET(INSTALL_DOCDIR_RPM "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") -SET(INSTALL_MANDIR_RPM "share/mysql/man") +SET(INSTALL_MANDIR_RPM "share/man") SET(INSTALL_INCLUDEDIR_RPM "include/mysql") SET(INSTALL_MYSQLSHAREDIR_RPM "share/mysql") SET(INSTALL_SHAREDIR_RPM "share") From 146a47ee1271466cc775da1ac86f4af12d022ca9 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 23 Mar 2010 13:56:28 +0100 Subject: [PATCH 016/126] Install libs directly into %{_libdir} --- cmake/install_layout.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 680fa5ff863..67d90309b12 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -104,11 +104,11 @@ SET(INSTALL_MYSQLDATADIR_STANDALONE "data") SET(INSTALL_BINDIR_RPM "bin") SET(INSTALL_SBINDIR_RPM "sbin") IF(64BIT) - SET(INSTALL_LIBDIR_RPM "lib64/mysql") + SET(INSTALL_LIBDIR_RPM "lib64") ELSE() - SET(INSTALL_LIBDIR_RPM "lib/mysql") + SET(INSTALL_LIBDIR_RPM "lib") ENDIF() -SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/plugin") +SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/mysql/plugin") SET(INSTALL_DOCDIR_RPM "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") SET(INSTALL_MANDIR_RPM "share/man") SET(INSTALL_INCLUDEDIR_RPM "include/mysql") From b960456150e37cb6aae2c055c2b11a3f46cd9f7a Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 23 Mar 2010 15:33:35 +0100 Subject: [PATCH 017/126] First cut at -DINSTALL_LAYOUT=DEB support. --- cmake/install_layout.cmake | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 67d90309b12..26801627811 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -25,6 +25,9 @@ # RPM # Build as per default RPM layout, with prefix=/usr # +# DEB +# Build as per STANDALONE, prefix=/opt/mysql-$major.$minor +# # SVR4 # Solaris package layout suitable for pkg* tools, prefix=/opt/mysql/mysql # @@ -69,6 +72,10 @@ CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip IF(UNIX) IF(INSTALL_LAYOUT MATCHES "RPM") SET(default_prefix "/usr") + ELSEIF(INSTALL_LAYOUT MATCHES "DEB") + SET(default_prefix "/opt/${MYSQL_BASE_VERSION}") + # This is required to avoid "cpack -GDEB" default of prefix=/usr + SET(CPACK_SET_DESTDIR ON) ELSEIF(INSTALL_LAYOUT MATCHES "SVR4") SET(default_prefix "/opt/mysql/mysql") ELSE() @@ -121,6 +128,23 @@ SET(INSTALL_DOCREADMEDIR_RPM "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSI SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql") SET(INSTALL_MYSQLDATADIR_RPM "var") +# DEB layout +SET(INSTALL_BINDIR_DEB "bin") +SET(INSTALL_SBINDIR_DEB "bin") +SET(INSTALL_LIBDIR_DEB "lib") +SET(INSTALL_INCLUDEDIR_DEB "include") +SET(INSTALL_PLUGINDIR_DEB "lib/plugin") +SET(INSTALL_DOCDIR_DEB "docs") +SET(INSTALL_MANDIR_DEB "man") +SET(INSTALL_MYSQLSHAREDIR_DEB "share") +SET(INSTALL_SHAREDIR_DEB "share") +SET(INSTALL_SCRIPTDIR_DEB "scripts") +SET(INSTALL_MYSQLTESTDIR_DEB "mysql-test") +SET(INSTALL_SQLBENCHROOTDIR_DEB ".") +SET(INSTALL_DOCREADMEDIR_DEB ".") +SET(INSTALL_SUPPORTFILESDIR_DEB "support-files") +SET(INSTALL_MYSQLDATADIR_DEB "data") + # SVR4 layout SET(INSTALL_BINDIR_SVR4 "bin") SET(INSTALL_SBINDIR_SVR4 "bin") From aa917229b999ab1a340037999279ff3cd0fac754 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 23 Mar 2010 16:53:11 +0100 Subject: [PATCH 018/126] Fix mysql-test directory in RPMs. While here: - split INSTALL_*DIR variables into two sections, first set the major variables, then second set the minor ones, using the major where appropriate. - format the settings for easier parsing (at least with a wide terminal) --- cmake/install_layout.cmake | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 26801627811..74720dfe5ad 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -107,26 +107,29 @@ SET(INSTALL_DOCREADMEDIR_STANDALONE ".") SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") SET(INSTALL_MYSQLDATADIR_STANDALONE "data") +# # RPM layout -SET(INSTALL_BINDIR_RPM "bin") -SET(INSTALL_SBINDIR_RPM "sbin") +# +SET(INSTALL_BINDIR_RPM "bin") +SET(INSTALL_INCLUDEDIR_RPM "include/mysql") IF(64BIT) - SET(INSTALL_LIBDIR_RPM "lib64") + SET(INSTALL_LIBDIR_RPM "lib64") ELSE() - SET(INSTALL_LIBDIR_RPM "lib") + SET(INSTALL_LIBDIR_RPM "lib") ENDIF() -SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/mysql/plugin") -SET(INSTALL_DOCDIR_RPM "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") -SET(INSTALL_MANDIR_RPM "share/man") -SET(INSTALL_INCLUDEDIR_RPM "include/mysql") -SET(INSTALL_MYSQLSHAREDIR_RPM "share/mysql") -SET(INSTALL_SHAREDIR_RPM "share") -SET(INSTALL_SCRIPTDIR_RPM "bin") -SET(INSTALL_MYSQLTESTDIR_RPM "mysql-test") -SET(INSTALL_SQLBENCHROOTDIR_RPM "") -SET(INSTALL_DOCREADMEDIR_RPM "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") -SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql") -SET(INSTALL_MYSQLDATADIR_RPM "var") +SET(INSTALL_SBINDIR_RPM "sbin") +SET(INSTALL_SHAREDIR_RPM "share") +# +SET(INSTALL_DOCDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") +SET(INSTALL_DOCREADMEDIR_RPM "${INSTALL_DOCDIR_RPM}") +SET(INSTALL_MANDIR_RPM "${INSTALL_SHAREDIR_RPM}/man") +SET(INSTALL_MYSQLDATADIR_RPM "var") +SET(INSTALL_MYSQLSHAREDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql") +SET(INSTALL_MYSQLTESTDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql-test") +SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/mysql/plugin") +SET(INSTALL_SCRIPTDIR_RPM "${INSTALL_BINDIR_RPM}") +SET(INSTALL_SQLBENCHROOTDIR_RPM "") +SET(INSTALL_SUPPORTFILESDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql") # DEB layout SET(INSTALL_BINDIR_DEB "bin") From 03bb7032e2e1bfe80ae878769113ebda238ef027 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 24 Mar 2010 17:52:47 +0100 Subject: [PATCH 019/126] Try to add support for MYSQL_U_SCORE_VERSION and MYSQL_COPYRIGHT_YEAR. --- cmake/mysql_version.cmake | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cmake/mysql_version.cmake b/cmake/mysql_version.cmake index a935643380c..cc9d2b38b8e 100644 --- a/cmake/mysql_version.cmake +++ b/cmake/mysql_version.cmake @@ -55,6 +55,7 @@ MACRO(GET_MYSQL_VERSION) ENDIF() SET(VERSION ${VERSION_STRING}) + STRING(REPLACE "-" "_" MYSQL_U_SCORE_VERSION "${VERSION_STRING}") # Remove trailing (non-numeric) part of the version string STRING(REGEX REPLACE "[^\\.0-9].*" "" VERSION_STRING ${VERSION_STRING}) @@ -115,6 +116,16 @@ INCLUDE(cpack_source_ignore_files) SET(PRODUCTNAME "MySQL Server") SET(COMPANYNAME ${CPACK_PACKAGE_VENDOR}) +# Windows 'date' command has unpredictable output, so cannot rely on it to +# set MYSQL_COPYRIGHT_YEAR - if someone finds a portable way to do so then +# it might be useful +#IF (WIN32) +# EXECUTE_PROCESS(COMMAND "date" "/T" OUTPUT_VARIABLE TMP_DATE) +# STRING(REGEX REPLACE "(..)/(..)/..(..).*" "\\3\\2\\1" MYSQL_COPYRIGHT_YEAR ${TMP_DATE}) +IF(UNIX) + EXECUTE_PROCESS(COMMAND "date" "+%Y" OUTPUT_VARIABLE MYSQL_COPYRIGHT_YEAR) +ENDIF() + # Add version information to the exe and dll files # Refer to http://msdn.microsoft.com/en-us/library/aa381058(VS.85).aspx # for more info. From d5d30d435a9d951ec2ab5c02e5b1fcc4d57b2a03 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 24 Mar 2010 20:17:41 +0100 Subject: [PATCH 020/126] Avoid newline in date output. --- cmake/mysql_version.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/mysql_version.cmake b/cmake/mysql_version.cmake index cc9d2b38b8e..6adca2ccc2f 100644 --- a/cmake/mysql_version.cmake +++ b/cmake/mysql_version.cmake @@ -123,7 +123,7 @@ SET(COMPANYNAME ${CPACK_PACKAGE_VENDOR}) # EXECUTE_PROCESS(COMMAND "date" "/T" OUTPUT_VARIABLE TMP_DATE) # STRING(REGEX REPLACE "(..)/(..)/..(..).*" "\\3\\2\\1" MYSQL_COPYRIGHT_YEAR ${TMP_DATE}) IF(UNIX) - EXECUTE_PROCESS(COMMAND "date" "+%Y" OUTPUT_VARIABLE MYSQL_COPYRIGHT_YEAR) + EXECUTE_PROCESS(COMMAND "date" "+%Y" OUTPUT_VARIABLE MYSQL_COPYRIGHT_YEAR OUTPUT_STRIP_TRAILING_WHITESPACE) ENDIF() # Add version information to the exe and dll files From e7711a372a37c788e10380ae115922b69f435899 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 24 Mar 2010 21:17:13 +0100 Subject: [PATCH 021/126] Initial attempt at CMake support. --- support-files/mysql.spec.sh | 285 +++++++++--------------------------- 1 file changed, 71 insertions(+), 214 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index f02773e73b9..68935eed9e4 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc. +# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -131,10 +131,10 @@ Summary: MySQL: a very fast and reliable SQL database server Group: Applications/Databases Version: @MYSQL_U_SCORE_VERSION@ Release: %{release} -License: Copyright 2000-2008 MySQL AB, @MYSQL_COPYRIGHT_YEAR@ %{mysql_vendor} All rights reserved. Use is subject to license terms. Under %{mysql_license} license as shown in the Description field. +License: Copyright (c) 2000, @MYSQL_COPYRIGHT_YEAR@, %{mysql_vendor}. All rights reserved. Use is subject to license terms. Under %{mysql_license} license as shown in the Description field. Source: http://www.mysql.com/Downloads/MySQL-@MYSQL_BASE_VERSION@/%{src_dir}.tar.gz URL: http://www.mysql.com/ -Packager: %{mysql_vendor} Product Engineering Team +Packager: MySQL Build Team Vendor: %{mysql_vendor} Provides: msqlormysql MySQL-server mysql BuildRequires: ncurses-devel @@ -152,7 +152,7 @@ is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software. MySQL is a trademark of %{mysql_vendor} -Copyright 2000-2008 MySQL AB, @MYSQL_COPYRIGHT_YEAR@ %{mysql_vendor} All rights reserved. +Copyright (c) 2000, @MYSQL_COPYRIGHT_YEAR@, %{mysql_vendor}. All rights reserved. Use is subject to license terms. This software comes with ABSOLUTELY NO WARRANTY. This is free software, @@ -180,7 +180,7 @@ is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software. MySQL is a trademark of %{mysql_vendor} -Copyright 2000-2008 MySQL AB, @MYSQL_COPYRIGHT_YEAR@ %{mysql_vendor} All rights reserved. +Copyright (c) 2000, @MYSQL_COPYRIGHT_YEAR@, %{mysql_vendor}. All rights reserved. Use is subject to license terms. This software comes with ABSOLUTELY NO WARRANTY. This is free software, @@ -328,9 +328,6 @@ client/server version. %endif ############################################################################## -# -############################################################################## - %prep # We unpack the source two times, for 'debug' and 'release' build. %setup -T -a 0 -c -n mysql-%{mysql_version} @@ -339,197 +336,72 @@ mv mysql-%{mysql_version} mysql-debug-%{mysql_version} mv mysql-%{mysql_version} mysql-release-%{mysql_version} ############################################################################## -# The actual build -############################################################################## - %build -BuildMySQL() { -# Let "MYSQL_BUILD_*FLAGS" take precedence. -CFLAGS=${MYSQL_BUILD_CFLAGS:-$CFLAGS} -CXXFLAGS=${MYSQL_BUILD_CXXFLAGS:-$CXXFLAGS} -LDFLAGS=${MYSQL_BUILD_LDFLAGS:-$LDFLAGS} -# Fall back on RPM_OPT_FLAGS (part of RPM environment) if no flags are given. -CFLAGS=${CFLAGS:-$RPM_OPT_FLAGS} -CXXFLAGS=${CXXFLAGS:-$RPM_OPT_FLAGS -felide-constructors -fno-exceptions -fno-rtti } -# Evaluate current setting of $DEBUG -if [ $DEBUG -gt 0 ] ; then - OPT_COMMENT='--with-comment="%{debug_comment}"' - OPT_DEBUG='--with-debug' - CFLAGS=`echo " $CFLAGS " | \ - sed -e 's/ -O[0-9]* / /' -e 's/ -unroll2 / /' -e 's/ -ip / /' \ - -e 's/^ //' -e 's/ $//'` - CXXFLAGS=`echo " $CXXFLAGS " | \ - sed -e 's/ -O[0-9]* / /' -e 's/ -unroll2 / /' -e 's/ -ip / /' \ - -e 's/^ //' -e 's/ $//'` -else - OPT_COMMENT='--with-comment="%{ndbug_comment}"' - OPT_DEBUG='' -fi -# The --enable-assembler simply does nothing on systems that does not -# support assembler speedups. -sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH}\" \ - CC=\"${MYSQL_BUILD_CC:-$CC}\" \ - CXX=\"${MYSQL_BUILD_CXX:-$CXX}\" \ - CFLAGS=\"$CFLAGS\" \ - CXXFLAGS=\"$CXXFLAGS\" \ - LDFLAGS=\"$LDFLAGS\" \ - ./configure \ - $* \ - --with-mysqld-ldflags='-static' \ - --with-client-ldflags='-static' \ - --enable-assembler \ - --enable-local-infile \ - --with-fast-mutexes \ - --with-mysqld-user=%{mysqld_user} \ - --with-unix-socket-path=/var/lib/mysql/mysql.sock \ - --with-pic \ - --prefix=/ \ -%if %{CLUSTER_BUILD} - --with-extra-charsets=all \ -%else - --with-extra-charsets=complex \ -%endif -%if %{YASSL_BUILD} - --with-ssl \ -%else - --without-ssl \ -%endif - --exec-prefix=%{_exec_prefix} \ - --libexecdir=%{_sbindir} \ - --libdir=%{_libdir} \ - --sysconfdir=%{_sysconfdir} \ - --datadir=%{_datadir} \ - --localstatedir=%{mysqldatadir} \ - --infodir=%{_infodir} \ - --includedir=%{_includedir} \ - --mandir=%{_mandir} \ - --enable-thread-safe-client \ - $OPT_COMMENT \ - $OPT_DEBUG \ - --with-readline \ -%if %{WITH_BUNDLED_ZLIB} - --with-zlib-dir=bundled \ -%endif -%if %{CLUSTER_BUILD} - --with-plugin-ndbcluster \ -%else - --without-plugin-ndbcluster \ -%endif -%if %{INNODB_BUILD} - --with-plugin-innobase \ -%else - --without-plugin-innobase \ -%endif -%if %{PARTITION_BUILD} - --with-plugin-partition \ -%else - --without-plugin-partition \ -%endif - --with-plugin-csv \ - --with-plugin-archive \ - --with-plugin-blackhole \ - --with-plugin-federated \ - --without-plugin-daemon_example \ - --without-plugin-ftexample \ -%if %{EMBEDDED_BUILD} - --with-embedded-server \ -%else - --without-embedded-server \ -%endif - --with-big-tables \ - --enable-shared \ - " - make -} -# end of function definition "BuildMySQL" +# Be strict about variables, bail at earliest opportunity, etc. +set -eu -# Use our own copy of glibc +# Use specific MYSQL_BUILD_* setup if requested +${MYSQL_BUILD_PATH:+PATH="${MYSQL_BUILD_PATH}"} +${MYSQL_BUILD_CC:+CC="${MYSQL_BUILD_CC}"} +${MYSQL_BUILD_CC:+CC="${MYSQL_BUILD_CC}"} +${MYSQL_BUILD_CXX:+CXX="${MYSQL_BUILD_CXX}"} +${MYSQL_BUILD_CFLAGS:+CFLAGS="${MYSQL_BUILD_CFLAGS}"} +${MYSQL_BUILD_CXXFLAGS:+CXXFLAGS="${MYSQL_BUILD_CXXFLAGS}"} +${MYSQL_BUILD_LDFLAGS:+LDFLAGS="${MYSQL_BUILD_LDFLAGS}"} +${MYSQL_BUILD_CMAKE:+CMAKE="${MYSQL_BUILD_CMAKE}"} -OTHER_LIBC_DIR=/usr/local/mysql-glibc -USE_OTHER_LIBC_DIR="" -if test -d "$OTHER_LIBC_DIR" -then - USE_OTHER_LIBC_DIR="--with-other-libc=$OTHER_LIBC_DIR" -fi +# Set defaults. $RPM_OPT_FLAGS should be part of RPM environment +: ${CC:="gcc"} +: ${CXX:="g++"} +: ${CFLAGS:="${RPM_OPT_FLAGS}"} +: ${CXXFLAGS:="${RPM_OPT_FLAGS} -felide-constructors -fno-exceptions -fno-rtti"} +: ${LDFLAGS:=""} +: ${CMAKE:="cmake"} + +# Build debug mysqld and libmysqld.a +mkdir debug +( + cd debug + # Attempt to remove any optimisation flags from the debug build + CFLAGS=`echo " ${CFLAGS} " | \ + sed -e 's/ -O[0-9]* / /' \ + -e 's/ -unroll2 / /' \ + -e 's/ -ip / /' \ + -e 's/^ //' \ + -e 's/ $//'` + CXXFLAGS=`echo " ${CXXFLAGS} " | \ + sed -e 's/ -O[0-9]* / /' \ + -e 's/ -unroll2 / /' \ + -e 's/ -ip / /' \ + -e 's/^ //' \ + -e 's/ $//'` + ${CMAKE} .. -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM \ + -DCMAKE_BUILD_TYPE=Debug + make VERBOSE=1 mysqld mysqlserver +) +# Build full release +mkdir release +( + cd release + ${CMAKE} .. -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM + make 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; +[ "$RBR" != "/" ] && [ -d "$RBR" ] && rm -rf "$RBR"; mkdir -p $RBR%{_libdir}/mysql -# -# Use MYSQL_BUILD_PATH so that we can use a dedicated version of gcc -# -PATH=${MYSQL_BUILD_PATH:-/bin:/usr/bin} -export PATH - -# Build the Debug binary. - -# Use gcc for C and C++ code (to avoid a dependency on libstdc++ and -# including exceptions into the code -if [ -z "$CXX" -a -z "$CC" ] ; then - export CC="gcc" CXX="gcc" -fi - - -############################################################################## -# -# Build the debug version -# -############################################################################## - -( -# We are in a subshell, so we can modify variables just for one run. - -# Add -g and --with-debug. -DEBUG=1 -cd mysql-debug-%{mysql_version} && -CFLAGS="$CFLAGS" \ -CXXFLAGS="$CXXFLAGS" \ -BuildMySQL -) - -# We might want to save the config log file -if test -n "$MYSQL_DEBUGCONFLOG_DEST" -then - cp -fp mysql-debug-%{mysql_version}/config.log "$MYSQL_DEBUGCONFLOG_DEST" -fi - -(cd mysql-debug-%{mysql_version} ; make test-bt-debug) - -############################################################################## -# -# Build the release binary -# -############################################################################## - -DEBUG=0 -(cd mysql-release-%{mysql_version} && -CFLAGS="$CFLAGS" \ -CXXFLAGS="$CXXFLAGS" \ -BuildMySQL -) -# We might want to save the config log file -if test -n "$MYSQL_CONFLOG_DEST" -then - cp -fp mysql-release-%{mysql_version}/config.log "$MYSQL_CONFLOG_DEST" -fi - -(cd mysql-release-%{mysql_version} ; make test-bt) - -############################################################################## - # For gcc builds, include libgcc.a in the devel subpackage (BUG 4921) # Some "icc" calls may have "gcc" in the argument string, so we should first # check for "icc". (If we don't check, the "--print-libgcc-file" call will fail.) if expr "$CC" : ".*icc.*" > /dev/null ; then - %define WITH_LIBGCC 0 - : + %define WITH_LIBGCC 0 + : elif expr "$CC" : ".*gcc.*" > /dev/null ; then libgcc=`$CC $CFLAGS --print-libgcc-file` @@ -542,15 +414,15 @@ then : fi else - %define WITH_LIBGCC 0 - : + %define WITH_LIBGCC 0 + : fi ############################################################################## - %install + RBR=$RPM_BUILD_ROOT -MBD=$RPM_BUILD_DIR/mysql-%{mysql_version}/mysql-release-%{mysql_version} +MBD=$RPM_BUILD_DIR/%{src_dir} # Ensure that needed directories exists install -d $RBR%{_sysconfdir}/{logrotate.d,init.d} @@ -561,41 +433,26 @@ install -d $RBR%{_libdir} install -d $RBR%{_mandir} install -d $RBR%{_sbindir} -# Get the plugin files from the debug build -mkdir $RBR/tmp-debug-plugin $MBD/plugin/debug -( cd $RPM_BUILD_DIR/mysql-%{mysql_version}/mysql-debug-%{mysql_version}/plugin - make install DESTDIR=$RBR/tmp-debug-plugin - mv $RBR/tmp-debug-plugin/usr/local/mysql/lib/mysql/plugin/* $MBD/plugin/debug/ - # From here, the install hook in "plugin/Makefile.am" will do the rest. -) -rmdir -p $RBR/tmp-debug-plugin/usr/local/mysql/lib/mysql/plugin - # Install all binaries -(cd $MBD && make install DESTDIR=$RBR testroot=%{_datadir}) -# Old packages put shared libs in %{_libdir}/ (not %{_libdir}/mysql), so do -# the same here. -mv $RBR/%{_libdir}/mysql/*.so* $RBR/%{_libdir}/ +( + cd $MBD/release + make DESTDIR=$RBR install +) -# install "mysqld-debug" -$MBD/libtool --mode=execute install -m 755 \ - $RPM_BUILD_DIR/mysql-%{mysql_version}/mysql-debug-%{mysql_version}/sql/mysqld \ - $RBR%{_sbindir}/mysqld-debug +# FIXME: kent attempted to have debug libmysqld.a installed automatically but +# FIXME: could not get it working, so do it manually for now +install -m 644 $MBD/debug/libmysqld/libmysqld.a \ + $RBR%{_libdir}/mysql/libmysqld-debug.a -# install saved perror binary with NDB support (BUG#13740) -install -m 755 $MBD/extra/perror $RBR%{_bindir}/perror +# 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 +mv -v $RBR/%{_libdir}/*.a $RBR/%{_libdir}/mysql/ # Install logrotate and autostart install -m 644 $MBD/support-files/mysql-log-rotate $RBR%{_sysconfdir}/logrotate.d/mysql install -m 755 $MBD/support-files/mysql.server $RBR%{_sysconfdir}/init.d/mysql -%if %{EMBEDDED_BUILD} -# Install embedded server library in the build root -install -m 644 $MBD/libmysqld/libmysqld.a $RBR%{_libdir}/mysql/ -%endif - -# in RPMs, it is unlikely that anybody should use "sql-bench" -rm -fr $RBR%{_datadir}/sql-bench - # Create a symlink "rcmysql", pointing to the init.script. SuSE users # will appreciate that, as all services usually offer this. ln -s %{_sysconfdir}/init.d/mysql $RBR%{_sbindir}/rcmysql From 29fd67ff4e1a67ad401b2a84d965796400ebbd31 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 24 Mar 2010 22:30:39 +0100 Subject: [PATCH 022/126] Fix source layout. --- support-files/mysql.spec.sh | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 68935eed9e4..e9bb79dbe9d 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -329,11 +329,7 @@ client/server version. ############################################################################## %prep -# We unpack the source two times, for 'debug' and 'release' build. -%setup -T -a 0 -c -n mysql-%{mysql_version} -mv mysql-%{mysql_version} mysql-debug-%{mysql_version} -%setup -D -T -a 0 -n mysql-%{mysql_version} -mv mysql-%{mysql_version} mysql-release-%{mysql_version} +%setup -T -a 0 -c -n %{src_dir} ############################################################################## %build @@ -376,7 +372,7 @@ mkdir debug -e 's/ -ip / /' \ -e 's/^ //' \ -e 's/ $//'` - ${CMAKE} .. -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM \ + ${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM \ -DCMAKE_BUILD_TYPE=Debug make VERBOSE=1 mysqld mysqlserver ) @@ -384,7 +380,7 @@ mkdir debug mkdir release ( cd release - ${CMAKE} .. -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM + ${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM make VERBOSE=1 ) From 5fd878c3f0df927f9f7dbb2ffffd1697061eb177 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 25 Mar 2010 11:43:11 +0100 Subject: [PATCH 023/126] Add INSTALL_INFODIR and use it to install mysql.info into the correct location. --- CMakeLists.txt | 9 +++++---- cmake/install_layout.cmake | 4 ++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d20939f33ac..0445e2a3d5b 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -277,8 +277,8 @@ INCLUDE(CPack) INSTALL(FILES COPYING EXCEPTIONS-CLIENT LICENSE.mysql DESTINATION ${INSTALL_DOCREADMEDIR} OPTIONAL) INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR}) IF(UNIX) - INSTALL(FILES Docs/INSTALL-BINARY DESTINATION - ${INSTALL_DOCREADMEDIR}) + INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR}) + INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR}) ENDIF() # MYSQL_DOCS_LOCATON is used in "make dist", points to the documentation directory SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied") @@ -286,8 +286,9 @@ MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION) INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR} PATTERN "INSTALL-BINARY" EXCLUDE PATTERN "Makefile.*" EXCLUDE - PATTERN "myisam.txt" EXCLUDE PATTERN "glibc*" EXCLUDE - PATTERN "sp-imp-spec.txt" EXCLUDE PATTERN "linuxthreads.txt" EXCLUDE + PATTERN "myisam.txt" EXCLUDE + PATTERN "mysql.info" EXCLUDE + PATTERN "sp-imp-spec.txt" EXCLUDE ) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 74720dfe5ad..1919aacfe43 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -98,6 +98,7 @@ SET(INSTALL_INCLUDEDIR_STANDALONE "include") SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") SET(INSTALL_DOCDIR_STANDALONE "docs") SET(INSTALL_MANDIR_STANDALONE "man") +SET(INSTALL_INFODIR_STANDALONE "docs") SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") SET(INSTALL_SHAREDIR_STANDALONE "share") SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") @@ -122,6 +123,7 @@ SET(INSTALL_SHAREDIR_RPM "share") # SET(INSTALL_DOCDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") SET(INSTALL_DOCREADMEDIR_RPM "${INSTALL_DOCDIR_RPM}") +SET(INSTALL_INFODIR_RPM "${INSTALL_SHAREDIR_RPM}/info") SET(INSTALL_MANDIR_RPM "${INSTALL_SHAREDIR_RPM}/man") SET(INSTALL_MYSQLDATADIR_RPM "var") SET(INSTALL_MYSQLSHAREDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql") @@ -139,6 +141,7 @@ SET(INSTALL_INCLUDEDIR_DEB "include") SET(INSTALL_PLUGINDIR_DEB "lib/plugin") SET(INSTALL_DOCDIR_DEB "docs") SET(INSTALL_MANDIR_DEB "man") +SET(INSTALL_INFODIR_DEB "docs") SET(INSTALL_MYSQLSHAREDIR_DEB "share") SET(INSTALL_SHAREDIR_DEB "share") SET(INSTALL_SCRIPTDIR_DEB "scripts") @@ -156,6 +159,7 @@ SET(INSTALL_INCLUDEDIR_SVR4 "include") SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") SET(INSTALL_DOCDIR_SVR4 "docs") SET(INSTALL_MANDIR_SVR4 "man") +SET(INSTALL_INFODIR_SVR4 "docs") SET(INSTALL_MYSQLSHAREDIR_SVR4 "share") SET(INSTALL_SHAREDIR_SVR4 "share") SET(INSTALL_SCRIPTDIR_SVR4 "scripts") From 127bdb6eda8ea594d31802409d635b37fe60ae96 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 25 Mar 2010 13:16:13 +0100 Subject: [PATCH 024/126] Don't install documentation when INSTALL_LAYOUT=RPM, as the spec file prefers to take docs directly from the source tree. --- CMakeLists.txt | 37 ++++++++++++++++++++++--------------- cmake/install_layout.cmake | 4 ++-- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0445e2a3d5b..c23733d039f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -274,21 +274,28 @@ ELSE() SET(CPACK_GENERATOR "TGZ") ENDIF() INCLUDE(CPack) -INSTALL(FILES COPYING EXCEPTIONS-CLIENT LICENSE.mysql DESTINATION ${INSTALL_DOCREADMEDIR} OPTIONAL) -INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR}) IF(UNIX) INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR}) - INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR}) ENDIF() -# MYSQL_DOCS_LOCATON is used in "make dist", points to the documentation directory -SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied") -MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION) -INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR} - PATTERN "INSTALL-BINARY" EXCLUDE - PATTERN "Makefile.*" EXCLUDE - PATTERN "glibc*" EXCLUDE - PATTERN "linuxthreads.txt" EXCLUDE - PATTERN "myisam.txt" EXCLUDE - PATTERN "mysql.info" EXCLUDE - PATTERN "sp-imp-spec.txt" EXCLUDE -) +# +# RPM installs documentation directly from the source tree +# +IF(NOT INSTALL_LAYOUT MATCHES "RPM") + INSTALL(FILES COPYING EXCEPTIONS-CLIENT LICENSE.mysql DESTINATION ${INSTALL_DOCREADMEDIR} OPTIONAL) + INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR}) + IF(UNIX) + INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR}) + ENDIF() + # MYSQL_DOCS_LOCATON is used in "make dist", points to the documentation directory + SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied") + MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION) + INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR} + PATTERN "INSTALL-BINARY" EXCLUDE + PATTERN "Makefile.*" EXCLUDE + PATTERN "glibc*" EXCLUDE + PATTERN "linuxthreads.txt" EXCLUDE + PATTERN "myisam.txt" EXCLUDE + PATTERN "mysql.info" EXCLUDE + PATTERN "sp-imp-spec.txt" EXCLUDE + ) +ENDIF() diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 1919aacfe43..8640d8ec315 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -121,8 +121,8 @@ ENDIF() SET(INSTALL_SBINDIR_RPM "sbin") SET(INSTALL_SHAREDIR_RPM "share") # -SET(INSTALL_DOCDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") -SET(INSTALL_DOCREADMEDIR_RPM "${INSTALL_DOCDIR_RPM}") +#SET(INSTALL_DOCDIR_RPM "XXXunset") +#SET(INSTALL_DOCREADMEDIR_RPM "${INSTALL_DOCDIR_RPM}") SET(INSTALL_INFODIR_RPM "${INSTALL_SHAREDIR_RPM}/info") SET(INSTALL_MANDIR_RPM "${INSTALL_SHAREDIR_RPM}/man") SET(INSTALL_MYSQLDATADIR_RPM "var") From ebaccc5fb0b6d1ab4cff23499fe5ca17c3d1ae17 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 25 Mar 2010 13:29:02 +0100 Subject: [PATCH 025/126] Current iteration of spec file cleanup. --- support-files/mysql.spec.sh | 47 +++++++++---------------------------- 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index e9bb79dbe9d..0a9d1a655a4 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -446,8 +446,8 @@ install -m 644 $MBD/debug/libmysqld/libmysqld.a \ mv -v $RBR/%{_libdir}/*.a $RBR/%{_libdir}/mysql/ # Install logrotate and autostart -install -m 644 $MBD/support-files/mysql-log-rotate $RBR%{_sysconfdir}/logrotate.d/mysql -install -m 755 $MBD/support-files/mysql.server $RBR%{_sysconfdir}/init.d/mysql +install -m 644 $MBD/release/support-files/mysql-log-rotate $RBR%{_sysconfdir}/logrotate.d/mysql +install -m 755 $MBD/release/support-files/mysql.server $RBR%{_sysconfdir}/init.d/mysql # Create a symlink "rcmysql", pointing to the init.script. SuSE users # will appreciate that, as all services usually offer this. @@ -652,10 +652,11 @@ fi %files server %defattr(-,root,root,0755) -%doc mysql-release-%{mysql_version}/COPYING mysql-release-%{mysql_version}/README -%doc mysql-release-%{mysql_version}/support-files/my-*.cnf +%doc COPYING +%doc README +%doc support-files/my-*.cnf %if %{CLUSTER_BUILD} -%doc mysql-release-%{mysql_version}/support-files/ndb-*.ini +%doc support-files/ndb-*.ini %endif %doc %attr(644, root, root) %{_infodir}/mysql.info* @@ -727,12 +728,12 @@ fi %attr(755, root, root) %{_sbindir}/mysqld %attr(755, root, root) %{_sbindir}/mysqld-debug %attr(755, root, root) %{_sbindir}/rcmysql -%attr(755, root, root) %{_libdir}/mysql/plugin/ha_example.so* +#%attr(755, root, root) %{_libdir}/mysql/plugin/ha_example.so* %attr(755, root, root) %{_libdir}/mysql/plugin/semisync_master.so* %attr(755, root, root) %{_libdir}/mysql/plugin/semisync_slave.so* -%attr(755, root, root) %{_libdir}/mysql/plugin/debug/ha_example.so* -%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_master.so* -%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_slave.so* +#%attr(755, root, root) %{_libdir}/mysql/plugin/debug/ha_example.so* +#%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_master.so* +#%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_slave.so* %if %{WITH_TCMALLOC} %attr(755, root, root) %{_libdir}/mysql/%{malloc_lib_target} @@ -832,7 +833,7 @@ fi %files devel %defattr(-, root, root, 0755) -%doc mysql-release-%{mysql_version}/EXCEPTIONS-CLIENT +%doc EXCEPTIONS-CLIENT %doc %attr(644, root, man) %{_mandir}/man1/comp_err.1* %doc %attr(644, root, man) %{_mandir}/man1/mysql_config.1* %attr(755, root, root) %{_bindir}/mysql_config @@ -840,39 +841,13 @@ fi %dir %attr(755, root, root) %{_libdir}/mysql %{_includedir}/mysql/* %{_datadir}/aclocal/mysql.m4 -%{_libdir}/mysql/libdbug.a -%{_libdir}/mysql/libheap.a %if %{WITH_LIBGCC} %{_libdir}/mysql/libmygcc.a %endif -%{_libdir}/mysql/libmyisam.a -%{_libdir}/mysql/libmyisammrg.a -%{_libdir}/mysql/libmysqlclient.a -%{_libdir}/mysql/libmysqlclient.la -%{_libdir}/mysql/libmysqlclient_r.a -%{_libdir}/mysql/libmysqlclient_r.la -%{_libdir}/mysql/libmysqlservices.a -%{_libdir}/mysql/libmystrings.a -%{_libdir}/mysql/libmysys.a %if %{CLUSTER_BUILD} %{_libdir}/mysql/libndbclient.a %{_libdir}/mysql/libndbclient.la %endif -%{_libdir}/mysql/libvio.a -%{_libdir}/mysql/libz.a -%{_libdir}/mysql/libz.la -%{_libdir}/mysql/plugin/ha_example.a -%{_libdir}/mysql/plugin/ha_example.la -%{_libdir}/mysql/plugin/semisync_master.a -%{_libdir}/mysql/plugin/semisync_master.la -%{_libdir}/mysql/plugin/semisync_slave.a -%{_libdir}/mysql/plugin/semisync_slave.la -%{_libdir}/mysql/plugin/debug/ha_example.a -%{_libdir}/mysql/plugin/debug/ha_example.la -%{_libdir}/mysql/plugin/debug/semisync_master.a -%{_libdir}/mysql/plugin/debug/semisync_master.la -%{_libdir}/mysql/plugin/debug/semisync_slave.a -%{_libdir}/mysql/plugin/debug/semisync_slave.la %files shared %defattr(-, root, root, 0755) From 48f61d94f74afe2dd8c06cc2b1bfcda48bc20960 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 25 Mar 2010 15:04:39 +0100 Subject: [PATCH 026/126] Expand INSTALL_INFODIR correctly. Make mysql.info optional. --- CMakeLists.txt | 2 +- cmake/install_layout.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c23733d039f..dd4f4a80516 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -275,7 +275,7 @@ ELSE() ENDIF() INCLUDE(CPack) IF(UNIX) - INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR}) + INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR} OPTIONAL) ENDIF() # # RPM installs documentation directly from the source tree diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 8640d8ec315..5258da6f40f 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -181,7 +181,7 @@ SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "") # will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE # layout is chosen) FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN - MYSQLTEST SQLBENCHROOT DOCREADME SUPPORTFILES MYSQLDATA) + INFO MYSQLTEST SQLBENCHROOT DOCREADME SUPPORTFILES MYSQLDATA) SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}} CACHE STRING "${var} installation directory" ${FORCE}) MARK_AS_ADVANCED(INSTALL_${var}DIR) From 0612d16a56808240bef4933c400901a3fb5e2295 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 25 Mar 2010 17:15:34 +0100 Subject: [PATCH 027/126] Fix some paths. --- support-files/mysql.spec.sh | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 0a9d1a655a4..a162c6a03e9 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -652,11 +652,11 @@ fi %files server %defattr(-,root,root,0755) -%doc COPYING -%doc README -%doc support-files/my-*.cnf +%doc %{src_dir}/COPYING +%doc %{src_dir}/README +%doc release/support-files/my-*.cnf %if %{CLUSTER_BUILD} -%doc support-files/ndb-*.ini +%doc release/support-files/ndb-*.ini %endif %doc %attr(644, root, root) %{_infodir}/mysql.info* @@ -703,7 +703,6 @@ fi %attr(755, root, root) %{_bindir}/myisampack %attr(755, root, root) %{_bindir}/mysql_convert_table_format %attr(755, root, root) %{_bindir}/mysql_fix_extensions -%attr(755, root, root) %{_bindir}/mysql_fix_privilege_tables %attr(755, root, root) %{_bindir}/mysql_install_db %attr(755, root, root) %{_bindir}/mysql_secure_installation %attr(755, root, root) %{_bindir}/mysql_setpermission @@ -833,7 +832,7 @@ fi %files devel %defattr(-, root, root, 0755) -%doc EXCEPTIONS-CLIENT +%doc %{src_dir}/EXCEPTIONS-CLIENT %doc %attr(644, root, man) %{_mandir}/man1/comp_err.1* %doc %attr(644, root, man) %{_mandir}/man1/mysql_config.1* %attr(755, root, root) %{_bindir}/mysql_config From cda94abe8deda9a13f7d0e9d63fc499bbdf69974 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 25 Mar 2010 19:54:47 +0100 Subject: [PATCH 028/126] Put back libmysqlclient*.a Add ChangeLog. --- support-files/mysql.spec.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 79f7f867f60..823ca2dae08 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -464,6 +464,9 @@ touch $RBR%{_sysconfdir}/my.cnf install -m 644 "%{malloc_lib_source}" "$RBR%{_libdir}/mysql/%{malloc_lib_target}" %endif +# ChangeLog file is optional, create an empty one if it doesn't exist +[ -f $MBD/%{src_dir}/Docs/ChangeLog ] || >$MBD/%{src_dir}/Docs/ChangeLog + ############################################################################## # Post processing actions, i.e. when installed ############################################################################## @@ -654,6 +657,7 @@ fi %doc %{src_dir}/COPYING %doc %{src_dir}/README +%doc %{src_dir}/Docs/ChangeLog %doc release/support-files/my-*.cnf %if %{CLUSTER_BUILD} %doc release/support-files/ndb-*.ini @@ -838,6 +842,8 @@ fi %{_datadir}/aclocal/mysql.m4 %if %{WITH_LIBGCC} %{_libdir}/mysql/libmygcc.a +%{_libdir}/mysql/libmysqlclient.a +%{_libdir}/mysql/libmysqlclient_r.a %endif %if %{CLUSTER_BUILD} %{_libdir}/mysql/libndbclient.a From dec6ab7b3a9f655ed57b260d7f37aeda3f7f8cb1 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Fri, 26 Mar 2010 11:25:02 +0100 Subject: [PATCH 029/126] Move libmysqlclient*.a out of the WITH_LIBGCC section. --- support-files/mysql.spec.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 823ca2dae08..0aa2fb29f23 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -842,9 +842,9 @@ fi %{_datadir}/aclocal/mysql.m4 %if %{WITH_LIBGCC} %{_libdir}/mysql/libmygcc.a +%endif %{_libdir}/mysql/libmysqlclient.a %{_libdir}/mysql/libmysqlclient_r.a -%endif %if %{CLUSTER_BUILD} %{_libdir}/mysql/libndbclient.a %{_libdir}/mysql/libndbclient.la From ddf5d0517a7bc16225e58b6a0190b499a3aceec0 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Fri, 26 Mar 2010 16:11:56 +0100 Subject: [PATCH 030/126] Install mtr, mysql-test-run and my_safe_process into the correct locations. --- mysql-test/CMakeLists.txt | 3 ++- mysql-test/lib/My/SafeProcess/CMakeLists.txt | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mysql-test/CMakeLists.txt b/mysql-test/CMakeLists.txt index 2cc65a9c82f..ce3b684295b 100644 --- a/mysql-test/CMakeLists.txt +++ b/mysql-test/CMakeLists.txt @@ -46,7 +46,8 @@ IF(UNIX) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr - ${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run DESTINATION mysql-test) + ${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run + DESTINATION ${INSTALL_MYSQLTESTDIR}) ENDIF() IF(CMAKE_GENERATOR MATCHES "Visual Studio") diff --git a/mysql-test/lib/My/SafeProcess/CMakeLists.txt b/mysql-test/lib/My/SafeProcess/CMakeLists.txt index ec2a13b910c..893e6d896be 100644 --- a/mysql-test/lib/My/SafeProcess/CMakeLists.txt +++ b/mysql-test/lib/My/SafeProcess/CMakeLists.txt @@ -20,8 +20,8 @@ ELSE() ADD_EXECUTABLE(my_safe_process safe_process.cc) ENDIF() -INSTALL(TARGETS my_safe_process DESTINATION "mysql-test/lib/My/SafeProcess") +INSTALL(TARGETS my_safe_process DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess") IF(WIN32) - INSTALL(TARGETS my_safe_kill DESTINATION "mysql-test/lib/My/SafeProcess") + INSTALL(TARGETS my_safe_kill DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess") ENDIF() INSTALL(FILES safe_process.pl Base.pm DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess") From 71785753b67ca0ba4af001bc6406a0902d4e61fc Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Fri, 26 Mar 2010 17:28:06 +0100 Subject: [PATCH 031/126] Install debug plugins, from wlad. --- cmake/plugin.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index 30a7932a0d7..896624996d3 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -174,6 +174,7 @@ MACRO(MYSQL_ADD_PLUGIN) OUTPUT_NAME "${ARG_MODULE_OUTPUT_NAME}") # Install dynamic library MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR}) + INSTALL_DEBUG_TARGET(${target} DESTINATION ${INSTALL_PLUGINDIR}/debug) ENDIF() ENDMACRO() From af315a60fa002fee6543df09c514c3813f1e0adf Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 29 Mar 2010 17:01:15 +0200 Subject: [PATCH 032/126] Fix environment setup. Don't create empty ChangeLog. --- support-files/mysql.spec.sh | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 0aa2fb29f23..6ff92e17a17 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -337,23 +337,18 @@ client/server version. # Be strict about variables, bail at earliest opportunity, etc. set -eu -# Use specific MYSQL_BUILD_* setup if requested -${MYSQL_BUILD_PATH:+PATH="${MYSQL_BUILD_PATH}"} -${MYSQL_BUILD_CC:+CC="${MYSQL_BUILD_CC}"} -${MYSQL_BUILD_CC:+CC="${MYSQL_BUILD_CC}"} -${MYSQL_BUILD_CXX:+CXX="${MYSQL_BUILD_CXX}"} -${MYSQL_BUILD_CFLAGS:+CFLAGS="${MYSQL_BUILD_CFLAGS}"} -${MYSQL_BUILD_CXXFLAGS:+CXXFLAGS="${MYSQL_BUILD_CXXFLAGS}"} -${MYSQL_BUILD_LDFLAGS:+LDFLAGS="${MYSQL_BUILD_LDFLAGS}"} -${MYSQL_BUILD_CMAKE:+CMAKE="${MYSQL_BUILD_CMAKE}"} - -# Set defaults. $RPM_OPT_FLAGS should be part of RPM environment -: ${CC:="gcc"} -: ${CXX:="g++"} -: ${CFLAGS:="${RPM_OPT_FLAGS}"} -: ${CXXFLAGS:="${RPM_OPT_FLAGS} -felide-constructors -fno-exceptions -fno-rtti"} -: ${LDFLAGS:=""} -: ${CMAKE:="cmake"} +# +# Set environment in order of preference, MYSQL_BUILD_* first, then +# variable name, finally a default. RPM_OPT_FLAGS is assumed to be +# a part of the default rpm build environment. +# +PATH=${MYSQL_BUILD_PATH:-$PATH} +CC=${MYSQL_BUILD_CC:-${CC:-gcc}} +CXX=${MYSQL_BUILD_CXX:-${CXX:-g++}} +CFLAGS=${MYSQL_BUILD_CFLAGS:-${CFLAGS:-$RPM_OPT_FLAGS}} +CXXFLAGS=${MYSQL_BUILD_CXXFLAGS:-${CXXFLAGS:-$RPM_OPT_FLAGS -felide-constructors -fno-exceptions -fno-rtti}} +LDFLAGS=${MYSQL_BUILD_LDFLAGS:-${LDFLAGS:-}} +CMAKE=${MYSQL_BUILD_CMAKE:-${CMAKE:-cmake}} # Build debug mysqld and libmysqld.a mkdir debug @@ -464,9 +459,6 @@ touch $RBR%{_sysconfdir}/my.cnf install -m 644 "%{malloc_lib_source}" "$RBR%{_libdir}/mysql/%{malloc_lib_target}" %endif -# ChangeLog file is optional, create an empty one if it doesn't exist -[ -f $MBD/%{src_dir}/Docs/ChangeLog ] || >$MBD/%{src_dir}/Docs/ChangeLog - ############################################################################## # Post processing actions, i.e. when installed ############################################################################## From 483a5b249adb9748de35abf16e6ba82d70e1f259 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 29 Mar 2010 17:54:08 +0200 Subject: [PATCH 033/126] Variables need to be exported so cmake can pick them up. --- support-files/mysql.spec.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 6ff92e17a17..b9adab7ed6d 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -342,13 +342,13 @@ set -eu # variable name, finally a default. RPM_OPT_FLAGS is assumed to be # a part of the default rpm build environment. # -PATH=${MYSQL_BUILD_PATH:-$PATH} -CC=${MYSQL_BUILD_CC:-${CC:-gcc}} -CXX=${MYSQL_BUILD_CXX:-${CXX:-g++}} -CFLAGS=${MYSQL_BUILD_CFLAGS:-${CFLAGS:-$RPM_OPT_FLAGS}} -CXXFLAGS=${MYSQL_BUILD_CXXFLAGS:-${CXXFLAGS:-$RPM_OPT_FLAGS -felide-constructors -fno-exceptions -fno-rtti}} -LDFLAGS=${MYSQL_BUILD_LDFLAGS:-${LDFLAGS:-}} -CMAKE=${MYSQL_BUILD_CMAKE:-${CMAKE:-cmake}} +export PATH=${MYSQL_BUILD_PATH:-$PATH} +export CC=${MYSQL_BUILD_CC:-${CC:-gcc}} +export CXX=${MYSQL_BUILD_CXX:-${CXX:-g++}} +export CFLAGS=${MYSQL_BUILD_CFLAGS:-${CFLAGS:-$RPM_OPT_FLAGS}} +export CXXFLAGS=${MYSQL_BUILD_CXXFLAGS:-${CXXFLAGS:-$RPM_OPT_FLAGS -felide-constructors -fno-exceptions -fno-rtti}} +export LDFLAGS=${MYSQL_BUILD_LDFLAGS:-${LDFLAGS:-}} +export CMAKE=${MYSQL_BUILD_CMAKE:-${CMAKE:-cmake}} # Build debug mysqld and libmysqld.a mkdir debug From 0145b00834024c8ceb9c10b39609cdd61b2816c6 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 11:54:25 +0200 Subject: [PATCH 034/126] Must specify -DDCMAKE_BUILD_TYPE=RelWithDebInfo now that compiler flags are being used correctly. --- support-files/mysql.spec.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index b9adab7ed6d..501355497b9 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -368,14 +368,15 @@ mkdir debug -e 's/^ //' \ -e 's/ $//'` ${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM \ - -DCMAKE_BUILD_TYPE=Debug + -DCMAKE_BUILD_TYPE=Debug make VERBOSE=1 mysqld mysqlserver ) # Build full release mkdir release ( cd release - ${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM + ${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo make VERBOSE=1 ) From d2b8d2487f4afff75e0541bfb8983fe770bfcd6f Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 12:01:30 +0200 Subject: [PATCH 035/126] Default to CXX=gcc --- support-files/mysql.spec.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 501355497b9..8c51cff0929 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -338,13 +338,18 @@ client/server version. set -eu # -# Set environment in order of preference, MYSQL_BUILD_* first, then -# variable name, finally a default. RPM_OPT_FLAGS is assumed to be -# a part of the default rpm build environment. +# Set environment in order of preference, MYSQL_BUILD_* first, then variable +# name, finally a default. RPM_OPT_FLAGS is assumed to be a part of the +# default RPM build environment. +# +# We set CXX=gcc by default to support so-called 'generic' binaries, where we +# do not have a dependancy on libgcc/libstdc++. This only works while we do +# not require C++ features such as exceptions, and may need to be removed at +# a later date. # export PATH=${MYSQL_BUILD_PATH:-$PATH} export CC=${MYSQL_BUILD_CC:-${CC:-gcc}} -export CXX=${MYSQL_BUILD_CXX:-${CXX:-g++}} +export CXX=${MYSQL_BUILD_CXX:-${CXX:-gcc}} export CFLAGS=${MYSQL_BUILD_CFLAGS:-${CFLAGS:-$RPM_OPT_FLAGS}} export CXXFLAGS=${MYSQL_BUILD_CXXFLAGS:-${CXXFLAGS:-$RPM_OPT_FLAGS -felide-constructors -fno-exceptions -fno-rtti}} export LDFLAGS=${MYSQL_BUILD_LDFLAGS:-${LDFLAGS:-}} From 6740352b92a442415d56f85bd0354dad35e464e3 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 12:32:38 +0200 Subject: [PATCH 036/126] Try to fix the debug permissions stuff. --- cmake/install_macros.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 1dcf8b5ca21..a070c316bf2 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -174,7 +174,8 @@ FUNCTION(INSTALL_DEBUG_TARGET target) "" ${ARGN} ) - GET_TARGET_PROPERTY(target_type ${target} TYPE) + GET_TARGET_PROPERTY(target_type ${target} TYPE) + GET_TARGET_PROPERTY(target_permissions ${target} PERMISSIONS) IF(ARG_RENAME) SET(RENAME_PARAM RENAME ${ARG_RENAME}${CMAKE_${target_type}_SUFFIX}) ELSE() @@ -193,6 +194,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target) INSTALL(FILES ${debug_target_location} DESTINATION ${ARG_DESTINATION} ${RENAME_PARAM} + PERMISSIONS ${target_permissions} CONFIGURATIONS Release RelWithDebInfo OPTIONAL) From 2e160175c4552c5cae04af717a7b7a15887fa44d Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 13:37:17 +0200 Subject: [PATCH 037/126] Try again.. --- cmake/install_macros.cmake | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index a070c316bf2..da935b71a18 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -175,7 +175,6 @@ FUNCTION(INSTALL_DEBUG_TARGET target) ${ARGN} ) GET_TARGET_PROPERTY(target_type ${target} TYPE) - GET_TARGET_PROPERTY(target_permissions ${target} PERMISSIONS) IF(ARG_RENAME) SET(RENAME_PARAM RENAME ${ARG_RENAME}${CMAKE_${target_type}_SUFFIX}) ELSE() @@ -184,6 +183,11 @@ FUNCTION(INSTALL_DEBUG_TARGET target) IF(NOT ARG_DESTINATION) MESSAGE(FATAL_ERROR "Need DESTINATION parameter for INSTALL_DEBUG_TARGET") ENDIF() + IF(target_type MATCHES "EXECUTABLE") + SET(INSTALL_TYPE TARGETS) + ELSE() + SET(INSTALL_TYPE FILES) + ENDIF() GET_TARGET_PROPERTY(target_location ${target} LOCATION) IF(CMAKE_GENERATOR MATCHES "Makefiles") STRING(REPLACE "${CMAKE_BINARY_DIR}" "${DEBUGBUILDDIR}" debug_target_location "${target_location}") @@ -191,10 +195,9 @@ FUNCTION(INSTALL_DEBUG_TARGET target) STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" ) ENDIF() - INSTALL(FILES ${debug_target_location} + INSTALL(${INSTALL_TYPE} ${debug_target_location} DESTINATION ${ARG_DESTINATION} ${RENAME_PARAM} - PERMISSIONS ${target_permissions} CONFIGURATIONS Release RelWithDebInfo OPTIONAL) From 98e33d14fac33c0052243930ded85df255304c18 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 17:13:07 +0200 Subject: [PATCH 038/126] Fix from wlad. --- cmake/install_macros.cmake | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index da935b71a18..3350373a2b6 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -195,9 +195,40 @@ FUNCTION(INSTALL_DEBUG_TARGET target) STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" ) ENDIF() + # Define permissions + # For executable files + SET(PERMISSIONS_EXECUTABLE + PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + + # Permissions for shared library (honors CMAKE_INSTALL_NO_EXE which is + # typically set on Debian) + IF(CMAKE_INSTALL_SO_NO_EXE) + SET(PERMISSIONS_SHARED_LIBRARY + PERMISSIONS + OWNER_READ OWNER_WRITE + GROUP_READ + WORLD_READ) + ELSE() + SET(PERMISSIONS_SHARED_LIBRARY ${PERMISSIONS_EXECUTABLE}) + ENDIF() + + # Shared modules get the same permissions as shared libraries + SET(PERMISSIONS_MODULE_LIBRARY ${PERMISSIONS_SHARED_LIBRARY}) + + # Define permissions for static library + SET(PERMISSIONS_STATIC_LIBRARY + PERMISSIONS + OWNER_READ OWNER_WRITE + GROUP_READ + WORLD_READ) + INSTALL(${INSTALL_TYPE} ${debug_target_location} DESTINATION ${ARG_DESTINATION} ${RENAME_PARAM} + ${PERMISSIONS_${target_type}} CONFIGURATIONS Release RelWithDebInfo OPTIONAL) From e28ea740ad5956e2d427e0e8a164a384f9c6c8bd Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 17:24:44 +0200 Subject: [PATCH 039/126] Back out remains of previous attempt. --- cmake/install_macros.cmake | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 3350373a2b6..5be9149b92f 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -183,11 +183,6 @@ FUNCTION(INSTALL_DEBUG_TARGET target) IF(NOT ARG_DESTINATION) MESSAGE(FATAL_ERROR "Need DESTINATION parameter for INSTALL_DEBUG_TARGET") ENDIF() - IF(target_type MATCHES "EXECUTABLE") - SET(INSTALL_TYPE TARGETS) - ELSE() - SET(INSTALL_TYPE FILES) - ENDIF() GET_TARGET_PROPERTY(target_location ${target} LOCATION) IF(CMAKE_GENERATOR MATCHES "Makefiles") STRING(REPLACE "${CMAKE_BINARY_DIR}" "${DEBUGBUILDDIR}" debug_target_location "${target_location}") @@ -225,7 +220,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target) GROUP_READ WORLD_READ) - INSTALL(${INSTALL_TYPE} ${debug_target_location} + INSTALL(FILES ${debug_target_location} DESTINATION ${ARG_DESTINATION} ${RENAME_PARAM} ${PERMISSIONS_${target_type}} From 80fd4bef18258c45abf98ee60c2ad1862d123670 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 31 Mar 2010 11:40:02 +0200 Subject: [PATCH 040/126] Apply wlad fixes from mysql-next-mr-bugfixing --- cmake/install_layout.cmake | 2 +- cmake/install_macros.cmake | 15 +++++++-------- libmysql/CMakeLists.txt | 29 +++++++++++++++++++++++++---- libmysqld/CMakeLists.txt | 5 +++++ libservices/CMakeLists.txt | 1 + 5 files changed, 39 insertions(+), 13 deletions(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 5258da6f40f..cb7314d5085 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -171,7 +171,7 @@ SET(MYSQL_DATADIR "/var/lib/mysql") # Clear cached variables if install layout was changed IF(OLD_INSTALL_LAYOUT) - IF(NOT OLD_INSTALL_LAYOUT STREQUAL INSTALL_LAYOUR) + IF(NOT OLD_INSTALL_LAYOUT STREQUAL INSTALL_LAYOUT) SET(FORCE FORCE) ENDIF() ENDIF() diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 5be9149b92f..f049776b8f4 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -43,27 +43,26 @@ ENDMACRO() # Install symbolic link to CMake target. # the link is created in the same directory as target # and extension will be the same as for target file. -MACRO(INSTALL_SYMLINK linkbasename target destination) +MACRO(INSTALL_SYMLINK linkname target destination) IF(UNIX) GET_TARGET_PROPERTY(location ${target} LOCATION) GET_FILENAME_COMPONENT(path ${location} PATH) - GET_FILENAME_COMPONENT(name_we ${location} NAME_WE) - GET_FILENAME_COMPONENT(ext ${location} EXT) - SET(output ${path}/${linkbasename}${ext}) + GET_FILENAME_COMPONENT(name ${location} NAME) + SET(output ${path}/${linkname}) ADD_CUSTOM_COMMAND( OUTPUT ${output} COMMAND ${CMAKE_COMMAND} ARGS -E remove -f ${output} COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink - ${name_we}${ext} - ${linkbasename}${ext} + ${name} + ${linkname} WORKING_DIRECTORY ${path} DEPENDS ${target} ) - ADD_CUSTOM_TARGET(symlink_${linkbasename}${ext} + ADD_CUSTOM_TARGET(symlink_${linkname} ALL DEPENDS ${output}) - SET_TARGET_PROPERTIES(symlink_${linkbasename}${ext} PROPERTIES CLEAN_DIRECT_OUTPUT 1) + SET_TARGET_PROPERTIES(symlink_${linkname} PROPERTIES CLEAN_DIRECT_OUTPUT 1) IF(CMAKE_GENERATOR MATCHES "Xcode") # For Xcode, replace project config with install config STRING(REPLACE "${CMAKE_CFG_INTDIR}" diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index f9fc5355641..26af9c80a2b 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -153,15 +153,26 @@ SET(LIBS clientlib dbug strings vio mysys ${ZLIB_LIBRARY} ${SSL_LIBRARIES}) # Merge several convenience libraries into one big mysqlclient # and link them together into shared library. MERGE_LIBRARIES(mysqlclient STATIC ${LIBS}) -IF(UNIX) - INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r mysqlclient ${INSTALL_LIBDIR}) -ENDIF() # Visual Studio users need debug static library for debug projects IF(MSVC) INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug) ENDIF() +IF(UNIX) + MACRO(GET_VERSIONED_LIBNAME LIBNAME EXTENSION VERSION OUTNAME) + SET(DOT_VERSION ".${VERSION}") + IF(DOT_VERSION STREQUAL ".") + SET(DOT_VERSION "") + ENDIF() + IF(APPLE) + SET(${OUTNAME} ${LIBNAME}${DOT_VERSION}${EXTENSION}) + ELSE() + SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION}) + ENDIF() + ENDMACRO() +ENDIF() + IF(NOT DISABLE_SHARED) MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}) IF(UNIX) @@ -182,6 +193,16 @@ IF(NOT DISABLE_SHARED) #(mysqlclient in this case) SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1) - INSTALL_SYMLINK(${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r libmysql ${INSTALL_LIBDIR}) + + # Install 3 links to libmysqlclient.so (client_r) + FOREACH(ver "" "${SHARED_LIB_MAJOR_VERSION}" + "${SHARED_LIB_MAJOR_VERSION}.0.0") + GET_VERSIONED_LIBNAME( + "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" + "${CMAKE_SHARED_LIBRARY_SUFFIX}" + "${ver}" + linkname) + INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR}) + ENDFOREACH() ENDIF() ENDIF() diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index e5f2a8b56f9..26332cab61b 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -131,6 +131,11 @@ 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) +ENDIF() + IF(MSVC AND NOT DISABLE_SHARED) MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}) ENDIF() diff --git a/libservices/CMakeLists.txt b/libservices/CMakeLists.txt index ddfa2495ade..da84368b46c 100644 --- a/libservices/CMakeLists.txt +++ b/libservices/CMakeLists.txt @@ -18,3 +18,4 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) SET(MYSQLSERVICES_SOURCES my_snprintf_service.c thd_alloc_service.c) ADD_LIBRARY(mysqlservices ${MYSQLSERVICES_SOURCES}) +INSTALL(TARGETS mysqlservices DESTINATION ${INSTALL_LIBDIR}) From 719d62a3dd3e77857d373366311cb5449e492573 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 31 Mar 2010 12:04:21 +0200 Subject: [PATCH 041/126] Fix socket path in RPMs. XXX should be put into cmake/* somewhere. --- support-files/mysql.spec.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 8c51cff0929..b31c7551951 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -372,16 +372,20 @@ mkdir debug -e 's/ -ip / /' \ -e 's/^ //' \ -e 's/ $//'` + # XXX: MYSQL_UNIX_ADDR should be in cmake/* but mysql_version is included before + # 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" -DCMAKE_BUILD_TYPE=Debug make VERBOSE=1 mysqld mysqlserver ) # Build full release mkdir release ( cd release + # XXX: MYSQL_UNIX_ADDR should be in cmake/* but mysql_version is included before + # 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" -DCMAKE_BUILD_TYPE=RelWithDebInfo make VERBOSE=1 ) From 2f71bf43efb719cbcf835a752b613c4c847601af Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 31 Mar 2010 19:04:22 +0200 Subject: [PATCH 042/126] Put back libmysqlclient_r.a, not sure it was supposed to be removed. Remove libmysqld-debug.a, it doesn't exist in current packages? --- libmysql/CMakeLists.txt | 1 + support-files/mysql.spec.sh | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index 26af9c80a2b..d448f72b0c2 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -171,6 +171,7 @@ IF(UNIX) SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION}) ENDIF() ENDMACRO() + INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r mysqlclient ${INSTALL_LIBDIR}) ENDIF() IF(NOT DISABLE_SHARED) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index b31c7551951..c44181c2597 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -440,11 +440,6 @@ install -d $RBR%{_sbindir} make DESTDIR=$RBR install ) -# FIXME: kent attempted to have debug libmysqld.a installed automatically but -# FIXME: could not get it working, so do it manually for now -install -m 644 $MBD/debug/libmysqld/libmysqld.a \ - $RBR%{_libdir}/mysql/libmysqld-debug.a - # 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 From e3cda8a342671a8c7e97f7880eada204733db6e4 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 31 Mar 2010 20:33:28 +0200 Subject: [PATCH 043/126] Need to add .a extension now. --- libmysql/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index d448f72b0c2..1193b9d7e27 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -171,7 +171,7 @@ IF(UNIX) SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION}) ENDIF() ENDMACRO() - INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r mysqlclient ${INSTALL_LIBDIR}) + INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR}) ENDIF() IF(NOT DISABLE_SHARED) From f0856cc114a198a8cb269989db439c9f33a46532 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 31 Mar 2010 23:52:49 +0200 Subject: [PATCH 044/126] Try a bunch of fixes. --- libmysqld/CMakeLists.txt | 2 +- scripts/CMakeLists.txt | 3 +-- support-files/mysql.spec.sh | 14 ++++++++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 26332cab61b..08f9dcbb92a 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -133,7 +133,7 @@ ENDIF() IF(UNIX) INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR} RENAME - ${CMAKE_STATIC_LIBRARY_PREFIX}/mysqld-debug) + ${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug) ENDIF() IF(MSVC AND NOT DISABLE_SHARED) diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index e6ce5717d95..e85928a5c42 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -298,14 +298,13 @@ ELSE() mysql_secure_installation mysql_zap mysqlaccess + mysqlaccess.conf mysqlbug mysql_convert_table_format mysql_find_rows mysqlhotcopy mysqldumpslow mysqld_multi - mysqlaccess - mysqlaccess.conf mysqld_safe ) FOREACH(file ${BIN_SCRIPTS}) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index c44181c2597..1960a187931 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -401,21 +401,21 @@ mkdir -p $RBR%{_libdir}/mysql # check for "icc". (If we don't check, the "--print-libgcc-file" call will fail.) if expr "$CC" : ".*icc.*" > /dev/null ; then - %define WITH_LIBGCC 0 + %global WITH_LIBGCC 0 : elif expr "$CC" : ".*gcc.*" > /dev/null ; then libgcc=`$CC $CFLAGS --print-libgcc-file` if [ -f $libgcc ] then - %define WITH_LIBGCC 1 + %global WITH_LIBGCC 1 install -m 644 $libgcc $RBR%{_libdir}/mysql/libmygcc.a else - %define WITH_LIBGCC 0 + %global WITH_LIBGCC 0 : fi else - %define WITH_LIBGCC 0 + %global WITH_LIBGCC 0 : fi @@ -728,6 +728,7 @@ fi %attr(755, root, root) %{_sbindir}/mysqld %attr(755, root, root) %{_sbindir}/mysqld-debug %attr(755, root, root) %{_sbindir}/rcmysql +%attr(755, root, root) %{_libdir}/mysql/plugin/mypluglib.so %attr(755, root, root) %{_libdir}/mysql/plugin/semisync_master.so* %attr(755, root, root) %{_libdir}/mysql/plugin/semisync_slave.so* @@ -747,6 +748,8 @@ fi %attr(755, root, root) %{_bindir}/mysql_find_rows %attr(755, root, root) %{_bindir}/mysql_waitpid %attr(755, root, root) %{_bindir}/mysqlaccess +# XXX: Silly place to put this script +%attr(644, root, root) %{_bindir}/mysqlaccess.conf %attr(755, root, root) %{_bindir}/mysqladmin %attr(755, root, root) %{_bindir}/mysqlbinlog %attr(755, root, root) %{_bindir}/mysqlcheck @@ -842,6 +845,7 @@ fi %endif %{_libdir}/mysql/libmysqlclient.a %{_libdir}/mysql/libmysqlclient_r.a +%{_libdir}/mysql/libmysqlservices.a %if %{CLUSTER_BUILD} %{_libdir}/mysql/libndbclient.a %{_libdir}/mysql/libndbclient.la @@ -872,7 +876,9 @@ fi %if %{EMBEDDED_BUILD} %files embedded %defattr(-, root, root, 0755) +%attr(755, root, root) %{_bindir}/mysql_embedded %attr(644, root, root) %{_libdir}/mysql/libmysqld.a +%attr(644, root, root) %{_libdir}/mysql/libmysqld-debug.a %endif ############################################################################## From 515de61347a603219789d15b8ab1b8f55b5b5254 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 1 Apr 2010 02:20:41 +0200 Subject: [PATCH 045/126] Try some more fixes. --- support-files/mysql.spec.sh | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 1960a187931..f74fb894cf0 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -68,6 +68,9 @@ %undefine __perl_provides %undefine __perl_requires +# Set default +%global WITH_LIBGCC 0 + ############################################################################## # Command line handling ############################################################################## @@ -397,26 +400,14 @@ RBR=$RPM_BUILD_ROOT mkdir -p $RBR%{_libdir}/mysql # For gcc builds, include libgcc.a in the devel subpackage (BUG 4921) -# Some "icc" calls may have "gcc" in the argument string, so we should first -# check for "icc". (If we don't check, the "--print-libgcc-file" call will fail.) -if expr "$CC" : ".*icc.*" > /dev/null ; -then - %global WITH_LIBGCC 0 - : -elif expr "$CC" : ".*gcc.*" > /dev/null ; +if "$CC" --version | grep '(GCC)' >/dev/null 2>&1 then libgcc=`$CC $CFLAGS --print-libgcc-file` if [ -f $libgcc ] then - %global WITH_LIBGCC 1 + %define WITH_LIBGCC 1 install -m 644 $libgcc $RBR%{_libdir}/mysql/libmygcc.a - else - %global WITH_LIBGCC 0 - : fi -else - %global WITH_LIBGCC 0 - : fi ############################################################################## @@ -464,6 +455,10 @@ touch $RBR%{_sysconfdir}/my.cnf install -m 644 "%{malloc_lib_source}" "$RBR%{_libdir}/mysql/%{malloc_lib_target}" %endif +# Remove man pages we explicitly do not want to package, avoids 'unpackaged +# files' warning. +rm -f $RBR%{_mandir}/man1/make_win_bin_dist.1* + ############################################################################## # Post processing actions, i.e. when installed ############################################################################## From 8c750455fce32cec5885823b3cb1e8df854c3321 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 1 Apr 2010 10:32:29 +0200 Subject: [PATCH 046/126] Just put libs in %{_libdir}. Can't see how mysqld_safe can work with current setup, so make it look in $pkglibdir/mysql too. Other cleanups. --- scripts/mysqld_safe.sh | 2 +- support-files/mysql.spec.sh | 32 +++++++++++--------------------- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index 5420ebd908e..019706467b0 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -306,7 +306,7 @@ set_malloc_lib() { malloc_lib= # This list is kept intentionally simple. Simply set --malloc-lib # to a full path if another location is desired. - for libdir in /usr/lib "$pkglibdir"; do + for libdir in /usr/lib "$pkglibdir" "$pkglibdir/mysql"; do for flavor in _minimal '' _and_profiler _debug; do tmp="$libdir/libtcmalloc$flavor.so" #log_notice "DEBUG: Checking for malloc lib '$tmp'" diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index f74fb894cf0..d1623d13e8b 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -68,7 +68,7 @@ %undefine __perl_provides %undefine __perl_requires -# Set default +# Variables which need to be global so they can be changed during phases. %global WITH_LIBGCC 0 ############################################################################## @@ -397,7 +397,6 @@ RBR=$RPM_BUILD_ROOT # Clean up the BuildRoot first [ "$RBR" != "/" ] && [ -d "$RBR" ] && rm -rf "$RBR"; -mkdir -p $RBR%{_libdir}/mysql # For gcc builds, include libgcc.a in the devel subpackage (BUG 4921) if "$CC" --version | grep '(GCC)' >/dev/null 2>&1 @@ -406,7 +405,7 @@ then if [ -f $libgcc ] then %define WITH_LIBGCC 1 - install -m 644 $libgcc $RBR%{_libdir}/mysql/libmygcc.a + install -m 644 $libgcc $RBR%{_libdir}/libmygcc.a fi fi @@ -431,11 +430,6 @@ install -d $RBR%{_sbindir} make DESTDIR=$RBR install ) -# 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 -mv -v $RBR/%{_libdir}/*.a $RBR/%{_libdir}/mysql/ - # Install logrotate and autostart install -m 644 $MBD/release/support-files/mysql-log-rotate $RBR%{_sysconfdir}/logrotate.d/mysql install -m 755 $MBD/release/support-files/mysql.server $RBR%{_sysconfdir}/init.d/mysql @@ -716,10 +710,6 @@ fi %attr(755, root, root) %{_bindir}/resolve_stack_dump %attr(755, root, root) %{_bindir}/resolveip -%if %{WITH_TCMALLOC} -%attr(755, root, root) %{_libdir}/mysql/%{malloc_lib_target} -%endif - %attr(755, root, root) %{_sbindir}/mysqld %attr(755, root, root) %{_sbindir}/mysqld-debug %attr(755, root, root) %{_sbindir}/rcmysql @@ -743,7 +733,7 @@ fi %attr(755, root, root) %{_bindir}/mysql_find_rows %attr(755, root, root) %{_bindir}/mysql_waitpid %attr(755, root, root) %{_bindir}/mysqlaccess -# XXX: Silly place to put this script +# XXX: This should be moved to %{_sysconfdir} %attr(644, root, root) %{_bindir}/mysqlaccess.conf %attr(755, root, root) %{_bindir}/mysqladmin %attr(755, root, root) %{_bindir}/mysqlbinlog @@ -836,14 +826,14 @@ fi %{_includedir}/mysql/* %{_datadir}/aclocal/mysql.m4 %if %{WITH_LIBGCC} -%{_libdir}/mysql/libmygcc.a +%{_libdir}/libmygcc.a %endif -%{_libdir}/mysql/libmysqlclient.a -%{_libdir}/mysql/libmysqlclient_r.a -%{_libdir}/mysql/libmysqlservices.a +%{_libdir}/libmysqlclient.a +%{_libdir}/libmysqlclient_r.a +%{_libdir}/libmysqlservices.a %if %{CLUSTER_BUILD} -%{_libdir}/mysql/libndbclient.a -%{_libdir}/mysql/libndbclient.la +%{_libdir}/libndbclient.a +%{_libdir}/libndbclient.la %endif %files shared @@ -872,8 +862,8 @@ fi %files embedded %defattr(-, root, root, 0755) %attr(755, root, root) %{_bindir}/mysql_embedded -%attr(644, root, root) %{_libdir}/mysql/libmysqld.a -%attr(644, root, root) %{_libdir}/mysql/libmysqld-debug.a +%attr(644, root, root) %{_libdir}/libmysqld.a +%attr(644, root, root) %{_libdir}/libmysqld-debug.a %endif ############################################################################## From 346c2b7afaa1e085c390fb1decddbc36b29cb929 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 1 Apr 2010 12:18:51 +0200 Subject: [PATCH 047/126] We do need the mkdir. --- support-files/mysql.spec.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index d1623d13e8b..b92db0e7912 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -405,6 +405,7 @@ then if [ -f $libgcc ] then %define WITH_LIBGCC 1 + mkdir -p $RBR%{_libdir} install -m 644 $libgcc $RBR%{_libdir}/libmygcc.a fi fi From 2785be2d708c17dc9138b9f58f288cbe4f660ee3 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 1 Apr 2010 12:24:00 +0200 Subject: [PATCH 048/126] Actually, move the libgcc stuff to %install where it belongs. --- support-files/mysql.spec.sh | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index b92db0e7912..57ea4b344b7 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -398,18 +398,6 @@ 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) -if "$CC" --version | grep '(GCC)' >/dev/null 2>&1 -then - libgcc=`$CC $CFLAGS --print-libgcc-file` - if [ -f $libgcc ] - then - %define WITH_LIBGCC 1 - mkdir -p $RBR%{_libdir} - install -m 644 $libgcc $RBR%{_libdir}/libmygcc.a - fi -fi - ############################################################################## %install @@ -431,6 +419,17 @@ install -d $RBR%{_sbindir} make DESTDIR=$RBR install ) +# For gcc builds, include libgcc.a in the devel subpackage (BUG 4921) +if "$CC" --version | grep '(GCC)' >/dev/null 2>&1 +then + libgcc=`$CC $CFLAGS --print-libgcc-file` + if [ -f $libgcc ] + then + %define WITH_LIBGCC 1 + install -m 644 $libgcc $RBR%{_libdir}/libmygcc.a + fi +fi + # Install logrotate and autostart install -m 644 $MBD/release/support-files/mysql-log-rotate $RBR%{_sysconfdir}/logrotate.d/mysql install -m 755 $MBD/release/support-files/mysql.server $RBR%{_sysconfdir}/init.d/mysql From f037ad4fbf1ed87254d36e94f4368cfb348d8248 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 1 Apr 2010 13:35:16 +0200 Subject: [PATCH 049/126] Try to fix datadir --- CMakeLists.txt | 7 +++++-- cmake/install_layout.cmake | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dd4f4a80516..889dc463769 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -189,8 +189,11 @@ ELSE() ENDIF() SET(DEFAULT_BASEDIR "${DEFAULT_MYSQL_HOME}") -SET(MYSQL_DATADIR "${DEFAULT_MYSQL_HOME}/${INSTALL_MYSQLDATADIR}" CACHE PATH - "default MySQL data directory") +IF(INSTALL_MYSQLDATADIR MATCHES "^/.*") + SET(MYSQL_DATADIR ${INSTALL_MYSQLDATADIR} CACHE PATH "default MySQL data directory") +ELSE() + SET(MYSQL_DATADIR "${DEFAULT_MYSQL_HOME}/${INSTALL_MYSQLDATADIR}" CACHE PATH "default MySQL data directory") +ENDIF() SET(DEFAULT_CHARSET_HOME "${DEFAULT_MYSQL_HOME}") SET(PLUGINDIR "${DEFAULT_MYSQL_HOME}/${INSTALL_PLUGINDIR}") IF(SYSCONFDIR) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index cb7314d5085..619f40c5774 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -125,7 +125,7 @@ SET(INSTALL_SHAREDIR_RPM "share") #SET(INSTALL_DOCREADMEDIR_RPM "${INSTALL_DOCDIR_RPM}") SET(INSTALL_INFODIR_RPM "${INSTALL_SHAREDIR_RPM}/info") SET(INSTALL_MANDIR_RPM "${INSTALL_SHAREDIR_RPM}/man") -SET(INSTALL_MYSQLDATADIR_RPM "var") +SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql") SET(INSTALL_MYSQLSHAREDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql") SET(INSTALL_MYSQLTESTDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql-test") SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/mysql/plugin") @@ -167,7 +167,7 @@ SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") SET(INSTALL_SQLBENCHROOTDIR_SVR4 ".") SET(INSTALL_DOCREADMEDIR_SVR4 ".") SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") -SET(MYSQL_DATADIR "/var/lib/mysql") +SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql") # Clear cached variables if install layout was changed IF(OLD_INSTALL_LAYOUT) From 5f1e75d58459048aceaa869709e0da52122472f7 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 1 Apr 2010 13:48:44 +0200 Subject: [PATCH 050/126] Put libmygcc back in %build, needs $CC etc of course... --- support-files/mysql.spec.sh | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 57ea4b344b7..1b6ca25234f 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -398,6 +398,19 @@ 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 in %build as $CC is not set in %install. +if "$CC" --version | grep '(GCC)' >/dev/null 2>&1 +then + libgcc=`$CC $CFLAGS --print-libgcc-file` + if [ -f $libgcc ] + then + %define WITH_LIBGCC 1 + mkdir -p $RBR%{_libdir} + install -m 644 $libgcc $RBR%{_libdir}/libmygcc.a + fi +fi + ############################################################################## %install @@ -419,17 +432,6 @@ install -d $RBR%{_sbindir} make DESTDIR=$RBR install ) -# For gcc builds, include libgcc.a in the devel subpackage (BUG 4921) -if "$CC" --version | grep '(GCC)' >/dev/null 2>&1 -then - libgcc=`$CC $CFLAGS --print-libgcc-file` - if [ -f $libgcc ] - then - %define WITH_LIBGCC 1 - install -m 644 $libgcc $RBR%{_libdir}/libmygcc.a - fi -fi - # Install logrotate and autostart install -m 644 $MBD/release/support-files/mysql-log-rotate $RBR%{_sysconfdir}/logrotate.d/mysql install -m 755 $MBD/release/support-files/mysql.server $RBR%{_sysconfdir}/init.d/mysql From 5593e29304b08652f5249bcee223655cb98e896b Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 1 Apr 2010 14:56:25 +0200 Subject: [PATCH 051/126] Fix SVR4 datadir --- cmake/install_layout.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 619f40c5774..79eec502995 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -167,7 +167,7 @@ SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") SET(INSTALL_SQLBENCHROOTDIR_SVR4 ".") SET(INSTALL_DOCREADMEDIR_SVR4 ".") SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") -SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql") +SET(INSTALL_MYSQLDATADIR_SVR4 "/var/lib/mysql") # Clear cached variables if install layout was changed IF(OLD_INSTALL_LAYOUT) From 8148145929113d554ee06a3040cbc445361877eb Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 1 Apr 2010 15:10:05 +0200 Subject: [PATCH 052/126] RPM doesn't like %install in comments, doh --- support-files/mysql.spec.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 1b6ca25234f..a7bd6fe8234 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -399,7 +399,7 @@ RBR=$RPM_BUILD_ROOT [ "$RBR" != "/" ] && [ -d "$RBR" ] && rm -rf "$RBR"; # For gcc builds, include libgcc.a in the devel subpackage (BUG 4921). This -# needs to be in %build as $CC is not set in %install. +# needs to be during build phase as $CC is not set during install. if "$CC" --version | grep '(GCC)' >/dev/null 2>&1 then libgcc=`$CC $CFLAGS --print-libgcc-file` From bbe86d08ba83425423c70b29d1ca757bf57a5e34 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 1 Apr 2010 20:47:19 +0200 Subject: [PATCH 053/126] Expand @HOSTNAME@. --- scripts/CMakeLists.txt | 5 ++--- support-files/CMakeLists.txt | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index e85928a5c42..bfe65a0acd8 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -134,11 +134,10 @@ ELSE() SET(CHECK_PID "kill -s SIGCONT $PID > /dev/null 2> /dev/null") ENDIF() +SET(HOSTNAME "hostname") + ENDIF(UNIX) - - - # Really ugly, one script, "mysql_install_db", needs prefix set to ".", # i.e. makes access relative the current directory. This matches # the documentation, so better not change this. diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index 9cd373c6e9c..d748b4b195c 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -29,6 +29,7 @@ ELSE() SET(CXXFLAGS ${CMAKE_CXX_FLAGS}) SET(MYSQLD_USER "mysql") SET(ini_file_extension "cnf") + SET(HOSTNAME "hostname") ENDIF() # XXX: shouldn't we just have variables for all this stuff and centralise From 478c27599a74ab393bb769f9a8ec4b236c5cb8d9 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 8 Apr 2010 12:30:04 +0200 Subject: [PATCH 054/126] Revert library changes, let's just stick with keeping to existing setup for now, leave large changes to later. --- support-files/mysql.spec.sh | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index a7bd6fe8234..8dba4fb4277 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -406,8 +406,8 @@ then if [ -f $libgcc ] then %define WITH_LIBGCC 1 - mkdir -p $RBR%{_libdir} - install -m 644 $libgcc $RBR%{_libdir}/libmygcc.a + mkdir -p $RBR%{_libdir}/mysql + install -m 644 $libgcc $RBR%{_libdir}/mysql/libmygcc.a fi fi @@ -432,6 +432,11 @@ install -d $RBR%{_sbindir} make DESTDIR=$RBR install ) +# 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 +mv -v $RBR/%{_libdir}/*.a $RBR/%{_libdir}/mysql/ + # Install logrotate and autostart install -m 644 $MBD/release/support-files/mysql-log-rotate $RBR%{_sysconfdir}/logrotate.d/mysql install -m 755 $MBD/release/support-files/mysql.server $RBR%{_sysconfdir}/init.d/mysql @@ -828,14 +833,14 @@ fi %{_includedir}/mysql/* %{_datadir}/aclocal/mysql.m4 %if %{WITH_LIBGCC} -%{_libdir}/libmygcc.a +%{_libdir}/mysql/libmygcc.a %endif -%{_libdir}/libmysqlclient.a -%{_libdir}/libmysqlclient_r.a -%{_libdir}/libmysqlservices.a +%{_libdir}/mysql/libmysqlclient.a +%{_libdir}/mysql/libmysqlclient_r.a +%{_libdir}/mysql/libmysqlservices.a %if %{CLUSTER_BUILD} -%{_libdir}/libndbclient.a -%{_libdir}/libndbclient.la +%{_libdir}/mysql/libndbclient.a +%{_libdir}/mysql/libndbclient.la %endif %files shared @@ -864,8 +869,8 @@ fi %files embedded %defattr(-, root, root, 0755) %attr(755, root, root) %{_bindir}/mysql_embedded -%attr(644, root, root) %{_libdir}/libmysqld.a -%attr(644, root, root) %{_libdir}/libmysqld-debug.a +%attr(644, root, root) %{_libdir}/mysql/libmysqld.a +%attr(644, root, root) %{_libdir}/mysql/libmysqld-debug.a %endif ############################################################################## From fe1030303a05e0c743222a34ae773e6090e81ff5 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 8 Apr 2010 15:21:31 +0200 Subject: [PATCH 055/126] Fix gcc check, SuSE doesn't print (GCC) anywhere. Get rid of WITH_LIBGCC %define, it isn't subject to shell rules and is parsed anyway. Instead create a file with optional files to include. --- support-files/mysql.spec.sh | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 8dba4fb4277..f7fe9f598b4 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -68,9 +68,6 @@ %undefine __perl_provides %undefine __perl_requires -# Variables which need to be global so they can be changed during phases. -%global WITH_LIBGCC 0 - ############################################################################## # Command line handling ############################################################################## @@ -340,6 +337,9 @@ client/server version. # Be strict about variables, bail at earliest opportunity, etc. set -eu +# Optional files to include +touch optional-server-files + # # Set environment in order of preference, MYSQL_BUILD_* first, then variable # name, finally a default. RPM_OPT_FLAGS is assumed to be a part of the @@ -400,14 +400,14 @@ RBR=$RPM_BUILD_ROOT # 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" --version | grep '(GCC)' >/dev/null 2>&1 +if "$CC" -v | grep '^gcc.version' >/dev/null 2>&1 then libgcc=`$CC $CFLAGS --print-libgcc-file` if [ -f $libgcc ] then - %define WITH_LIBGCC 1 mkdir -p $RBR%{_libdir}/mysql install -m 644 $libgcc $RBR%{_libdir}/mysql/libmygcc.a + echo "%{_libdir}/mysql/libmygcc.a" >>optional-server-files fi fi @@ -645,7 +645,7 @@ fi # Files section ############################################################################## -%files server +%files server -f optional-server-files %defattr(-,root,root,0755) %doc %{src_dir}/COPYING @@ -832,9 +832,6 @@ fi %dir %attr(755, root, root) %{_libdir}/mysql %{_includedir}/mysql/* %{_datadir}/aclocal/mysql.m4 -%if %{WITH_LIBGCC} -%{_libdir}/mysql/libmygcc.a -%endif %{_libdir}/mysql/libmysqlclient.a %{_libdir}/mysql/libmysqlclient_r.a %{_libdir}/mysql/libmysqlservices.a From bdcac621104819fd1fd6e250fe9cb5f2e5e421cc Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 8 Apr 2010 15:32:15 +0200 Subject: [PATCH 056/126] Remove _unpackaged_files_terminate_build=0, we should not ignore errors. --- support-files/mysql.spec.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index f7fe9f598b4..663b9bf15e4 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -49,12 +49,6 @@ # ------------------------------------------------------------------------------ %define __os_install_post /usr/lib/rpm/brp-compress -# ------------------------------------------------------------------------------ -# We don't package all files installed into the build root by intention - -# See BUG#998 for details. -# ------------------------------------------------------------------------------ -%define _unpackaged_files_terminate_build 0 - # ------------------------------------------------------------------------------ # RPM build tools now automatically detects Perl module dependencies. This # detection gives problems as it is broken in some versions, and it also From 7d9c661c05ee6e4a437e96316e9a0c092e454209 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Fri, 9 Apr 2010 17:22:31 +0200 Subject: [PATCH 057/126] Combined spec file. --- support-files/mysql.spec.sh | 466 ++++++++++++++++++++---------------- 1 file changed, 257 insertions(+), 209 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 663b9bf15e4..b6106783a71 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -10,7 +10,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to the +# along with this program; see the file COPYING. If not, write to the # Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston # MA 02110-1301 USA. @@ -20,119 +20,177 @@ # NOTE: "vendor" is used in upgrade/downgrade check, so you can't # change these, has to be exactly as is. -%define mysql_old_vendor MySQL AB -%define mysql_vendor_2 Sun Microsystems, Inc. -%define mysql_vendor Oracle and/or its affiliates +%define mysql_old_vendor MySQL AB +%define mysql_vendor_2 Sun Microsystems, Inc. +%define mysql_vendor Oracle and/or its affiliates -%define mysql_version @VERSION@ +%define mysql_license GPL +%define mysql_version @VERSION@ -%define mysqld_user mysql -%define mysqld_group mysql -%define mysqldatadir /var/lib/mysql -%define see_base For a description of MySQL see the base MySQL RPM or http://www.mysql.com +%define mysqld_user mysql +%define mysqld_group mysql +%define mysqldatadir /var/lib/mysql -# ------------------------------------------------------------------------------ -# On SuSE 9 no separate "debuginfo" package is built. To enable basic -# debugging on that platform, we don't strip binaries on SuSE 9. We -# disable the strip of binaries by redefining the RPM macro -# "__os_install_post" leaving out the script calls that normally does -# this. We do this in all cases, as on platforms where "debuginfo" is -# created, a script "find-debuginfo.sh" will be called that will do -# the strip anyway, part of separating the executable and debug -# information into separate files put into separate packages. -# -# Some references (shows more advanced conditional usage): -# http://www.redhat.com/archives/rpm-list/2001-November/msg00257.html -# http://www.redhat.com/archives/rpm-list/2003-February/msg00275.html -# http://www.redhat.com/archives/rhl-devel-list/2004-January/msg01546.html -# http://lists.opensuse.org/archive/opensuse-commit/2006-May/1171.html -# ------------------------------------------------------------------------------ -%define __os_install_post /usr/lib/rpm/brp-compress +%define release 1 -# ------------------------------------------------------------------------------ -# RPM build tools now automatically detects Perl module dependencies. This -# detection gives problems as it is broken in some versions, and it also -# give unwanted dependencies from mandatory scripts in our package. -# Might not be possible to disable in all RPM tool versions, but here we -# try. We keep the "AutoReqProv: no" for the "test" sub package, as disabling -# here might fail, and that package has the most problems. -# See http://fedoraproject.org/wiki/Packaging/Perl#Filtering_Requires:_and_Provides -# http://www.wideopen.com/archives/rpm-list/2002-October/msg00343.html -# ------------------------------------------------------------------------------ +# ---------------------------------------------------------------------------- +# RPM build tools now automatically detect Perl module dependencies. This +# detection causes problems as it is broken in some versions, and it also +# provides unwanted dependencies from mandatory scripts in our package. +# It might not be possible to disable this in all versions of RPM, but here we +# try anyway. We keep the "AutoReqProv: no" for the "test" sub package, as +# disabling here might fail, and that package has the most problems. +# See: +# http://fedoraproject.org/wiki/Packaging/Perl#Filtering_Requires:_and_Provides +# http://www.wideopen.com/archives/rpm-list/2002-October/msg00343.html +# ---------------------------------------------------------------------------- %undefine __perl_provides %undefine __perl_requires ############################################################################## # Command line handling ############################################################################## +# +# To enable the following options: +# +# $ rpmbuild --with \n") FILE(READ directories.wxs CPACK_WIX_DIRECTORIES) FILE(REMOVE directories.wxs) -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in - ${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs) - - -SET(WXS_FILES ${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs ${CPACK_WIX_EXTRA_SOURCE}) -SET(WIXOBJ_NATIVE_FILES) -SET(WXS_NATIVE_FILES) -FOREACH(f "${WXS_FILES}") - FILE(TO_NATIVE_PATH "${f}" f) - EXECUTE_PROCESS(COMMAND ${CANDLE_EXECUTABLE} ${f}) - STRING(REPLACE ".wxs" ".wixobj" f "${f}") - LIST(APPEND WIXOBJ_NATIVE_FILES ${f}) + +FOREACH(src ${CPACK_WIX_INCLUDE}) +SET(CPACK_WIX_INCLUDES +"${CPACK_WIX_INCLUDES} + " +) ENDFOREACH() + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in + ${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs) + +FILE(REMOVE mysql_server.wixobj) EXECUTE_PROCESS( - COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension ${WIXOBJ_NATIVE_FILES} -out ${CPACK_PACKAGE_FILE_NAME}.msi + COMMAND ${CANDLE_EXECUTABLE} -ext WixUtilExtension mysql_server.wxs +) +EXECUTE_PROCESS( + COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension -ext WixUtilExtension + mysql_server.wixobj -out ${CPACK_PACKAGE_FILE_NAME}.msi ) diff --git a/packaging/WiX/extra.wxs.in b/packaging/WiX/extra.wxs.in index b1286bfba61..78e6f96dbcc 100644 --- a/packaging/WiX/extra.wxs.in +++ b/packaging/WiX/extra.wxs.in @@ -1,32 +1,85 @@ - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @DATADIR_MYSQL_FILES@ + + + + + @DATADIR_PERFORMANCE_SCHEMA_FILES@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/WiX/mysql_server.wxs.in b/packaging/WiX/mysql_server.wxs.in index 30baefbf64b..8c2b839c6e7 100644 --- a/packaging/WiX/mysql_server.wxs.in +++ b/packaging/WiX/mysql_server.wxs.in @@ -1,4 +1,5 @@ - + @CPACK_WIX_COMPONENT_GROUPS@ + + @CPACK_WIX_INCLUDES@ - + + \ No newline at end of file From 23ab4ab1d011ae5a5652987631c354a796f09d34 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 26 Apr 2010 13:32:54 +0200 Subject: [PATCH 087/126] Try to fix libmysqlclient symlinks on per-OS basis. --- libmysql/CMakeLists.txt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index 1193b9d7e27..0690211f981 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -177,10 +177,18 @@ ENDIF() IF(NOT DISABLE_SHARED) MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}) IF(UNIX) + # libtool compatability + IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE) + SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}") + ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX") + SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0") + ELSE() + SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0") + ENDIF() # Name of shared library is mysqlclient on Unix SET_TARGET_PROPERTIES(libmysql PROPERTIES OUTPUT_NAME mysqlclient - VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0" + VERSION "${OS_SHARED_LIB_VERSION}" SOVERSION "${SHARED_LIB_MAJOR_VERSION}") IF(LINK_FLAG_NO_UNDEFINED) GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS) @@ -196,8 +204,7 @@ IF(NOT DISABLE_SHARED) SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1) # Install 3 links to libmysqlclient.so (client_r) - FOREACH(ver "" "${SHARED_LIB_MAJOR_VERSION}" - "${SHARED_LIB_MAJOR_VERSION}.0.0") + FOREACH(ver "" "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}") GET_VERSIONED_LIBNAME( "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" "${CMAKE_SHARED_LIBRARY_SUFFIX}" From ce5cd7bc8ec237f04550a41f30cf98fd6832b3ff Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 26 Apr 2010 14:51:01 +0200 Subject: [PATCH 088/126] Remove duplicates. --- libmysql/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index 0690211f981..7eb42b3367c 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -203,8 +203,10 @@ IF(NOT DISABLE_SHARED) SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1) - # Install 3 links to libmysqlclient.so (client_r) - FOREACH(ver "" "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}") + # Install links to libmysqlclient.so (client_r) + SET(OS_SHARED_LIB_SYMLINKS "" "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}") + LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS) + FOREACH(ver ${OS_SHARED_LIB_SYMLINKS}) GET_VERSIONED_LIBNAME( "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" "${CMAKE_SHARED_LIBRARY_SUFFIX}" From 4542bc32406f09b9733233a06bd9c5c37165d0b3 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 26 Apr 2010 18:06:59 +0200 Subject: [PATCH 089/126] Try new RPM layout. Fix libmysqlclient_r symlinks. --- libmysql/CMakeLists.txt | 18 +++++++---- support-files/mysql.spec.sh | 61 +++++++++++++++++++++---------------- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index 7eb42b3367c..cd23f825b9e 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -204,14 +204,20 @@ IF(NOT DISABLE_SHARED) SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1) # Install links to libmysqlclient.so (client_r) - SET(OS_SHARED_LIB_SYMLINKS "" "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}") + GET_VERSIONED_LIBNAME( + "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" + "${CMAKE_SHARED_LIBRARY_SUFFIX}" + "" + linkname) + INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR}) + SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}") LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS) FOREACH(ver ${OS_SHARED_LIB_SYMLINKS}) - GET_VERSIONED_LIBNAME( - "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" - "${CMAKE_SHARED_LIBRARY_SUFFIX}" - "${ver}" - linkname) + GET_VERSIONED_LIBNAME( + "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" + "${CMAKE_SHARED_LIBRARY_SUFFIX}" + "${ver}" + linkname) INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR}) ENDFOREACH() ENDIF() diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index b1fbc90d829..8520057b71a 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -168,6 +168,14 @@ %define distro_requires coreutils grep procps /sbin/chkconfig /usr/sbin/useradd /usr/sbin/groupadd %endif +# Turn on debuginfo RPMs for SuSE >= 10 +%define debugrpm 0 +%if %{defined suse_version} + %if %suse_version >= 1000 + %define debugrpm 1 + %endif +%endif + # ---------------------------------------------------------------------------- # Support optional "tcmalloc" library (experimental) # ---------------------------------------------------------------------------- @@ -235,14 +243,14 @@ documentation and the manual for more information. # Sub package definition ############################################################################## -%package -n MySQL-server%{product_suffix} +%package -n %{name}-server 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 -%description -n MySQL-server%{product_suffix} +%description -n %{name}-server 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 @@ -264,64 +272,64 @@ This package includes the MySQL server binary as well as related utilities 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 "%{name}-client" as well! # ---------------------------------------------------------------------------- -%package -n MySQL-client%{product_suffix} +%package -n %{name}-client Summary: MySQL - Client Group: Applications/Databases Obsoletes: mysql-client MySQL-client Provides: mysql-client MySQL-client -%description -n MySQL-client%{product_suffix} +%description -n %{name}-client 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 +%package -n %{name}-test +Requires: %{name}-client perl Summary: MySQL - Test suite Group: Applications/Databases Provides: mysql-test Obsoletes: mysql-bench mysql-test AutoReqProv: no -%description -n MySQL-test%{product_suffix} +%description -n %{name}-test 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} +%package -n %{name}-devel Summary: MySQL - Development header files and libraries Group: Applications/Databases Provides: mysql-devel Obsoletes: mysql-devel -%description -n MySQL-devel%{product_suffix} +%description -n %{name}-devel 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} +%package -n %{name}-shared Summary: MySQL - Shared libraries Group: Applications/Databases -%description -n MySQL-shared%{product_suffix} +%description -n %{name}-shared 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} +%package -n %{name}-embedded Summary: MySQL - embedded library Group: Applications/Databases -Requires: MySQL-devel%{product_suffix} +Requires: %{name}-devel Obsoletes: mysql-embedded -%description -n MySQL-embedded%{product_suffix} +%description -n %{name}-embedded This package contains the MySQL server as an embedded library. The embedded MySQL server library makes it possible to run a full-featured @@ -334,6 +342,7 @@ client/server version. For a description of MySQL see the base MySQL RPM or http://www.mysql.com/ ############################################################################## +%{?debugrpm:%debug_package} %prep %setup -T -a 0 -c -n %{src_dir} @@ -478,7 +487,7 @@ 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 %{name}-server # Check if we can safely upgrade. An upgrade is only safe if it's from one # of our RPMs in the same version family. @@ -554,7 +563,7 @@ if [ -x %{_sysconfdir}/init.d/mysql ] ; then sleep 5 fi -%post -n MySQL-server%{product_suffix} +%post -n %{name}-server mysql_datadir=%{mysqldatadir} # ---------------------------------------------------------------------- @@ -622,7 +631,7 @@ sleep 2 #scheduled service packs and more. Visit www.mysql.com/enterprise for more #information." -%preun -n MySQL-server%{product_suffix} +%preun -n %{name}-server if [ $1 = 0 ] ; then # Stop MySQL before uninstalling it if [ -x %{_sysconfdir}/init.d/mysql ] ; then @@ -651,7 +660,7 @@ fi # Files section ############################################################################## -%files -n MySQL-server%{product_suffix} +%files -n %{name}-server %defattr(-,root,root,0755) %if %{defined license_files_server} @@ -734,7 +743,7 @@ fi %attr(755, root, root) %{_datadir}/mysql/ # ---------------------------------------------------------------------------- -%files -n MySQL-client%{product_suffix} +%files -n %{name}-client %defattr(-, root, root, 0755) %attr(755, root, root) %{_bindir}/msql2mysql @@ -766,7 +775,7 @@ fi %doc %attr(644, root, man) %{_mandir}/man1/mysqlslap.1* # ---------------------------------------------------------------------------- -%files -n MySQL-devel%{product_suffix} -f optional-files-devel +%files -n %{name}-devel -f optional-files-devel %defattr(-, root, root, 0755) %if %{defined license_files_devel} %doc %{license_files_devel} @@ -783,19 +792,19 @@ fi %{_libdir}/mysql/libmysqlservices.a # ---------------------------------------------------------------------------- -%files -n MySQL-shared%{product_suffix} +%files -n %{name}-shared %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 %{name}-shared /sbin/ldconfig -%postun -n MySQL-shared%{product_suffix} +%postun -n %{name}-shared /sbin/ldconfig # ---------------------------------------------------------------------------- -%files -n MySQL-test%{product_suffix} +%files -n %{name}-test %defattr(-, root, root, 0755) %attr(-, root, root) %{_datadir}/mysql-test %attr(755, root, root) %{_bindir}/mysql_client_test @@ -808,7 +817,7 @@ fi %doc %attr(644, root, man) %{_mandir}/man1/mysqltest_embedded.1* # ---------------------------------------------------------------------------- -%files -n MySQL-embedded%{product_suffix} +%files -n %{name}-embedded %defattr(-, root, root, 0755) %attr(755, root, root) %{_bindir}/mysql_embedded %attr(644, root, root) %{_libdir}/mysql/libmysqld.a From 036343c3eab737899d22b412d29841f7677dc584 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Mon, 26 Apr 2010 19:25:58 +0200 Subject: [PATCH 090/126] Try removing debuginfo altogether. --- support-files/mysql.spec.sh | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 8520057b71a..b96dc64332a 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -168,13 +168,8 @@ %define distro_requires coreutils grep procps /sbin/chkconfig /usr/sbin/useradd /usr/sbin/groupadd %endif -# Turn on debuginfo RPMs for SuSE >= 10 -%define debugrpm 0 -%if %{defined suse_version} - %if %suse_version >= 1000 - %define debugrpm 1 - %endif -%endif +# Avoid debuginfo RPMs, leaves binaries unstripped +%define debug_package %{nil} # ---------------------------------------------------------------------------- # Support optional "tcmalloc" library (experimental) @@ -342,7 +337,6 @@ client/server version. For a description of MySQL see the base MySQL RPM or http://www.mysql.com/ ############################################################################## -%{?debugrpm:%debug_package} %prep %setup -T -a 0 -c -n %{src_dir} From b2c44afba95f37e872bb7b247560ec70e4444598 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 27 Apr 2010 12:09:55 +0200 Subject: [PATCH 091/126] Avoid __os_install_post RHEL5 bug by redefining __strip. --- support-files/mysql.spec.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index b96dc64332a..0a100fd919c 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -171,6 +171,10 @@ # Avoid debuginfo RPMs, leaves binaries unstripped %define debug_package %{nil} +# Hack to work around bug in RHEL5 __os_install_post macro, wrong inverted +# test for __debug_package +%define __strip /bin/true + # ---------------------------------------------------------------------------- # Support optional "tcmalloc" library (experimental) # ---------------------------------------------------------------------------- From 58aec8118548f9c6f9ced93b090106d651d9ce60 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 27 Apr 2010 17:10:06 +0200 Subject: [PATCH 092/126] Try to exclude make_win_bin_dist.1 Build full debug release in RPMs so we can include bits we need. --- man/CMakeLists.txt | 4 +++- support-files/mysql.spec.sh | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index 29de4432c0c..aeee5824047 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -17,7 +17,9 @@ FILE(GLOB MAN1_FILES *.1) FILE(GLOB MAN8_FILES *.8) IF(MAN1_FILES) - INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1) + INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1 + PATTERN "make_win_bin_dist.1" EXCLUDE + ) ENDIF() IF(MAN8_FILES) INSTALL(FILES ${MAN8_FILES} DESTINATION ${INSTALL_MANDIR}/man8) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 0a100fd919c..1803ce9f8e8 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -396,7 +396,7 @@ mkdir debug -DFEATURE_SET="%{feature_set}" \ -DCOMPILATION_COMMENT="%{compilation_comment_debug}" \ -DMYSQL_SERVER_SUFFIX="%{server_suffix}" - make VERBOSE=1 mysqld mysqlserver + make VERBOSE=1 ) # Build full release mkdir release @@ -730,6 +730,9 @@ fi %attr(755, root, root) %{_libdir}/mysql/plugin/mypluglib.so %attr(755, root, root) %{_libdir}/mysql/plugin/semisync_master.so* %attr(755, root, root) %{_libdir}/mysql/plugin/semisync_slave.so* +%attr(755, root, root) %{_libdir}/mysql/plugin/debug/mypluglib.so +%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_master.so* +%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_slave.so* %if %{WITH_TCMALLOC} %attr(755, root, root) %{_libdir}/mysql/%{malloc_lib_target} From 159852698b601686443903367f78644db3a0f60d Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 27 Apr 2010 20:12:13 +0200 Subject: [PATCH 093/126] Try again --- man/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index aeee5824047..31603f64334 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -17,9 +17,8 @@ FILE(GLOB MAN1_FILES *.1) FILE(GLOB MAN8_FILES *.8) IF(MAN1_FILES) - INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1 - PATTERN "make_win_bin_dist.1" EXCLUDE - ) + LIST(REMOVE_ITEM MAN1_FILES "make_win_bin_dist.1" + INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1) ENDIF() IF(MAN8_FILES) INSTALL(FILES ${MAN8_FILES} DESTINATION ${INSTALL_MANDIR}/man8) From 83de7f640a7c50a0bd05d1a19c5bdd887c5e8147 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 27 Apr 2010 20:12:43 +0200 Subject: [PATCH 094/126] syntax --- man/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index 31603f64334..d437e9a0c76 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -17,7 +17,7 @@ FILE(GLOB MAN1_FILES *.1) FILE(GLOB MAN8_FILES *.8) IF(MAN1_FILES) - LIST(REMOVE_ITEM MAN1_FILES "make_win_bin_dist.1" + LIST(REMOVE_ITEM MAN1_FILES "make_win_bin_dist.1") INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1) ENDIF() IF(MAN8_FILES) From b9303c87e3841cd75a8f95fc752497eca14a7c2c Mon Sep 17 00:00:00 2001 From: Kent Boortz Date: Tue, 27 Apr 2010 22:21:48 +0200 Subject: [PATCH 095/126] On Mac OS X, add the "-arch" option to the 'mysql_config' output --- scripts/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index bfe65a0acd8..7f7baecc6c1 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -93,6 +93,10 @@ IF(CMAKE_GENERATOR MATCHES "Makefiles") # No multiconfig build - use CMAKE_C_FLAGS SET(CFLAGS "@CMAKE_C_FLAGS@") SET(CXXFLAGS "@CMAKE_CXX_FLAGS@") + FOREACH(ARCH ${CMAKE_OSX_ARCHITECTURES}) + SET(CFLAGS "${CFLAGS} -arch ${ARCH}") + SET(CXXFLAGS "${CXXFLAGS} -arch ${ARCH}") + ENDFOREACH() ELSE() # Multiconfig build - use CMAKE_C_FLAGS_RELWITHDEBINFO SET(CFLAGS "@CMAKE_C_FLAGS_RELWITHDEBINFO@") From d110132ffce95352755604ef19abd9545fe78f89 Mon Sep 17 00:00:00 2001 From: Kent Boortz Date: Wed, 28 Apr 2010 11:25:11 +0200 Subject: [PATCH 096/126] Exclude "mysql_embedded" from being installed or part of a binary package, is more of a linktest of the embedded library. --- libmysqld/examples/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libmysqld/examples/CMakeLists.txt b/libmysqld/examples/CMakeLists.txt index f8adae9c931..f98470a2047 100644 --- a/libmysqld/examples/CMakeLists.txt +++ b/libmysqld/examples/CMakeLists.txt @@ -23,7 +23,9 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ADD_DEFINITIONS(-DEMBEDDED_LIBRARY -UMYSQL_CLIENT) -MYSQL_ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc +# We never use "mysql_embedded", is more of a linktest, so we don't +# use MYSQL_ADD_EXECUTABLE as that would install it and package it +ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc ../../client/mysql.cc ../../client/readline.cc) TARGET_LINK_LIBRARIES(mysql_embedded mysqlserver) IF(UNIX) From 9eefdcfd1ae5a3f9ff477c57362e94ed64446d8a Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 28 Apr 2010 11:52:26 +0200 Subject: [PATCH 097/126] Try to fix the manual again, and a kent change --- man/CMakeLists.txt | 3 ++- support-files/mysql.spec.sh | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index d437e9a0c76..beae58bc2c2 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -15,9 +15,10 @@ # Copy man pages FILE(GLOB MAN1_FILES *.1) +FILE(GLOB MAN1_EXCLUDE make_win_bin_dist.1) FILE(GLOB MAN8_FILES *.8) IF(MAN1_FILES) - LIST(REMOVE_ITEM MAN1_FILES "make_win_bin_dist.1") + LIST(REMOVE_ITEM MAN1_FILES ${MAN1_EXCLUDE}) INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1) ENDIF() IF(MAN8_FILES) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 1803ce9f8e8..3f5f4282310 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -820,7 +820,6 @@ fi # ---------------------------------------------------------------------------- %files -n %{name}-embedded %defattr(-, root, root, 0755) -%attr(755, root, root) %{_bindir}/mysql_embedded %attr(644, root, root) %{_libdir}/mysql/libmysqld.a %attr(644, root, root) %{_libdir}/mysql/libmysqld-debug.a From 3b8334f9d32b4e0f23f125b9b6696e74d9f57f78 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 28 Apr 2010 12:48:44 +0200 Subject: [PATCH 098/126] fix man bootstrap --- man/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index beae58bc2c2..1113b73fd8d 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -18,7 +18,9 @@ FILE(GLOB MAN1_FILES *.1) FILE(GLOB MAN1_EXCLUDE make_win_bin_dist.1) FILE(GLOB MAN8_FILES *.8) IF(MAN1_FILES) - LIST(REMOVE_ITEM MAN1_FILES ${MAN1_EXCLUDE}) + IF(MAN1_EXCLUDE) + LIST(REMOVE_ITEM MAN1_FILES ${MAN1_EXCLUDE}) + ENDIF() INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1) ENDIF() IF(MAN8_FILES) From 5492202344c1d2ebaecbbb2873f1b50ce932ee26 Mon Sep 17 00:00:00 2001 From: Bjorn Munch Date: Wed, 28 Apr 2010 14:56:38 +0200 Subject: [PATCH 099/126] Do not install mysql-test/lib/t --- mysql-test/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/CMakeLists.txt b/mysql-test/CMakeLists.txt index ce3b684295b..0755af5e7db 100644 --- a/mysql-test/CMakeLists.txt +++ b/mysql-test/CMakeLists.txt @@ -18,6 +18,7 @@ INSTALL( DESTINATION ${INSTALL_MYSQLTESTDIR} PATTERN "var/" EXCLUDE PATTERN "lib/My/SafeProcess" EXCLUDE + PATTERN "lib/t*" EXCLUDE PATTERN "CPack" EXCLUDE PATTERN "CMake*" EXCLUDE PATTERN "mtr.out*" EXCLUDE From 32a4de454f95d0752bd2939a95a45368968ff00d Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 28 Apr 2010 17:55:45 +0200 Subject: [PATCH 100/126] Revert the RPM naming change, we know it works, and can apply it to a later release. --- support-files/mysql.spec.sh | 52 ++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 3f5f4282310..52dce98c69f 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -242,14 +242,14 @@ documentation and the manual for more information. # Sub package definition ############################################################################## -%package -n %{name}-server +%package -n MySQL-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 -%description -n %{name}-server +%description -n MySQL-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 @@ -271,64 +271,64 @@ This package includes the MySQL server binary as well as related utilities to run and administer a MySQL server. If you want to access and work with the database, you have to install -package "%{name}-client" as well! +package "MySQL-client%{product_suffix}" as well! # ---------------------------------------------------------------------------- -%package -n %{name}-client +%package -n MySQL-client%{product_suffix} Summary: MySQL - Client Group: Applications/Databases Obsoletes: mysql-client MySQL-client Provides: mysql-client MySQL-client -%description -n %{name}-client +%description -n MySQL-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 %{name}-test -Requires: %{name}-client perl +%package -n MySQL-test%{product_suffix} +Requires: MySQL-client%{product_suffix} perl Summary: MySQL - Test suite Group: Applications/Databases Provides: mysql-test Obsoletes: mysql-bench mysql-test AutoReqProv: no -%description -n %{name}-test +%description -n MySQL-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 %{name}-devel +%package -n MySQL-devel%{product_suffix} Summary: MySQL - Development header files and libraries Group: Applications/Databases Provides: mysql-devel Obsoletes: mysql-devel -%description -n %{name}-devel +%description -n MySQL-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 %{name}-shared +%package -n MySQL-shared%{product_suffix} Summary: MySQL - Shared libraries Group: Applications/Databases -%description -n %{name}-shared +%description -n MySQL-shared%{product_suffix} This package contains the shared libraries (*.so*) which certain languages and applications need to dynamically load and use MySQL. # ---------------------------------------------------------------------------- -%package -n %{name}-embedded +%package -n MySQL-embedded%{product_suffix} Summary: MySQL - embedded library Group: Applications/Databases -Requires: %{name}-devel +Requires: MySQL-devel%{product_suffix} Obsoletes: mysql-embedded -%description -n %{name}-embedded +%description -n MySQL-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 @@ -485,7 +485,7 @@ rm -f $RBR%{_mandir}/man1/make_win_bin_dist.1* # Post processing actions, i.e. when installed ############################################################################## -%pre -n %{name}-server +%pre -n MySQL-server%{product_suffix} # Check if we can safely upgrade. An upgrade is only safe if it's from one # of our RPMs in the same version family. @@ -561,7 +561,7 @@ if [ -x %{_sysconfdir}/init.d/mysql ] ; then sleep 5 fi -%post -n %{name}-server +%post -n MySQL-server%{product_suffix} mysql_datadir=%{mysqldatadir} # ---------------------------------------------------------------------- @@ -629,7 +629,7 @@ sleep 2 #scheduled service packs and more. Visit www.mysql.com/enterprise for more #information." -%preun -n %{name}-server +%preun -n MySQL-server%{product_suffix} if [ $1 = 0 ] ; then # Stop MySQL before uninstalling it if [ -x %{_sysconfdir}/init.d/mysql ] ; then @@ -658,7 +658,7 @@ fi # Files section ############################################################################## -%files -n %{name}-server +%files -n MySQL-server%{product_suffix} %defattr(-,root,root,0755) %if %{defined license_files_server} @@ -744,7 +744,7 @@ fi %attr(755, root, root) %{_datadir}/mysql/ # ---------------------------------------------------------------------------- -%files -n %{name}-client +%files -n MySQL-client%{product_suffix} %defattr(-, root, root, 0755) %attr(755, root, root) %{_bindir}/msql2mysql @@ -776,7 +776,7 @@ fi %doc %attr(644, root, man) %{_mandir}/man1/mysqlslap.1* # ---------------------------------------------------------------------------- -%files -n %{name}-devel -f optional-files-devel +%files -n MySQL-devel%{product_suffix} -f optional-files-devel %defattr(-, root, root, 0755) %if %{defined license_files_devel} %doc %{license_files_devel} @@ -793,19 +793,19 @@ fi %{_libdir}/mysql/libmysqlservices.a # ---------------------------------------------------------------------------- -%files -n %{name}-shared +%files -n MySQL-shared%{product_suffix} %defattr(-, root, root, 0755) # Shared libraries (omit for architectures that don't support them) %{_libdir}/libmysql*.so* -%post -n %{name}-shared +%post -n MySQL-shared%{product_suffix} /sbin/ldconfig -%postun -n %{name}-shared +%postun -n MySQL-shared%{product_suffix} /sbin/ldconfig # ---------------------------------------------------------------------------- -%files -n %{name}-test +%files -n MySQL-test%{product_suffix} %defattr(-, root, root, 0755) %attr(-, root, root) %{_datadir}/mysql-test %attr(755, root, root) %{_bindir}/mysql_client_test @@ -818,7 +818,7 @@ fi %doc %attr(644, root, man) %{_mandir}/man1/mysqltest_embedded.1* # ---------------------------------------------------------------------------- -%files -n %{name}-embedded +%files -n MySQL-embedded%{product_suffix} %defattr(-, root, root, 0755) %attr(644, root, root) %{_libdir}/mysql/libmysqld.a %attr(644, root, root) %{_libdir}/mysql/libmysqld-debug.a From ce57e2415c18370985e182c707e96e26a8ec752d Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 28 Apr 2010 21:01:26 +0200 Subject: [PATCH 101/126] Sync icc flags with reality. --- cmake/build_configurations/mysql_release.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index de92544ada5..eeef9f04544 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -136,8 +136,8 @@ IF(UNIX) # Linux flags IF(CMAKE_SYSTEM_NAME MATCHES "Linux") IF(CMAKE_C_COMPILER_ID MATCHES "Intel") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-static-intel -g -O3 -unroll2 -ip -mp -restrict") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-static-intel -g -O3 -unroll2 -ip -mp -restrict") + SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-static-intel -static-libgcc -g -O3 -unroll2 -ip -mp -restrict -no-ftz -no-prefetch") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-static-intel -static-libgcc -g -O3 -unroll2 -ip -mp -restrict -no-ftz -no-prefetch") SET(WITH_SSL no) ENDIF() ENDIF() From 241b702d7a66ce700f846d51915befea98c588a2 Mon Sep 17 00:00:00 2001 From: Bjorn Munch Date: Thu, 29 Apr 2010 12:31:15 +0200 Subject: [PATCH 102/126] Do not include Comments, as3ap or example --- sql-bench/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sql-bench/CMakeLists.txt b/sql-bench/CMakeLists.txt index 59dca2e84cc..4b7f9520cc1 100644 --- a/sql-bench/CMakeLists.txt +++ b/sql-bench/CMakeLists.txt @@ -18,7 +18,6 @@ FILE(GLOB all_files ${CMAKE_SOURCE_DIR}/sql-bench/* ${CMAKE_SOURCE_DIR}/sql-bench/Data/ATIS/* ${CMAKE_SOURCE_DIR}/sql-bench/Data/Wisconsin/* -${CMAKE_SOURCE_DIR}/sql-bench/Comments/* ${CMAKE_SOURCE_DIR}/sql-bench/limits/* ) @@ -34,7 +33,7 @@ ENDIF() GET_FILENAME_COMPONENT(basedir ${CMAKE_SOURCE_DIR} ABSOLUTE) FOREACH(file ${all_files}) - IF(NOT IS_DIRECTORY ${file} AND NOT ${file} MATCHES "Make" ) + IF(NOT IS_DIRECTORY ${file} AND NOT ${file} MATCHES "Make|as3ap|/example$" ) FILE(RELATIVE_PATH relpath ${basedir} ${file}) SET(target_relpath ${relpath}) GET_FILENAME_COMPONENT(ext ${file} EXT) From 17206900a07660ec35b7d86d8febabccac6a384f Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 29 Apr 2010 16:37:28 +0200 Subject: [PATCH 103/126] Rebrand Red Hat as 'Enterprise Linux' --- support-files/mysql.spec.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 52dce98c69f..764c67b85c7 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -122,20 +122,20 @@ %endif %if %{distro_specific} %if %(test -f /etc/redhat-release && echo 1 || echo 0) - %define redhatver %(rpm -qf --qf '%%{version}\\n' /etc/redhat-release | sed -e 's/^\\([0-9]*\\).*/\\1/g') - %if "%redhatver" == "4" - %define distro_description Red Hat Enterprise Linux 4 - %define distro_releasetag rhel4 + %define elver %(rpm -qf --qf '%%{version}\\n' /etc/redhat-release | sed -e 's/^\\([0-9]*\\).*/\\1/g') + %if "%elver" == "4" + %define distro_description Enterprise Linux 4 + %define distro_releasetag el4 %define distro_buildreq gcc-c++ gperf ncurses-devel perl readline-devel time zlib-devel %define distro_requires chkconfig coreutils grep procps shadow-utils %else - %if "%redhatver" == "5" - %define distro_description Red Hat Enterprise Linux 5 - %define distro_releasetag rhel5 + %if "%elver" == "5" + %define distro_description Enterprise Linux 5 + %define distro_releasetag el5 %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 %{redhatver} is unsupported} + %{error:Enterprise Linux %{elver} is unsupported} %endif %endif %else @@ -577,7 +577,7 @@ if [ ! -d $mysql_datadir/test ] ; then mkdir $mysql_datadir/test; fi # use insserv for older SuSE Linux versions if [ -x /sbin/insserv ] ; then /sbin/insserv %{_sysconfdir}/init.d/mysql -# use chkconfig on Red Hat and newer SuSE releases +# use chkconfig on Enterprise Linux and newer SuSE releases elif [ -x /sbin/chkconfig ] ; then /sbin/chkconfig --add mysql fi @@ -638,7 +638,7 @@ if [ $1 = 0 ] ; then # For older SuSE Linux versions if [ -x /sbin/insserv ] ; then /sbin/insserv -r %{_sysconfdir}/init.d/mysql - # use chkconfig on Red Hat and newer SuSE releases + # use chkconfig on Enterprise Linux and newer SuSE releases elif [ -x /sbin/chkconfig ] ; then /sbin/chkconfig --del mysql fi From d60efe5820d98bba41f1b76c37927c8f648937c9 Mon Sep 17 00:00:00 2001 From: Daniel Fischer Date: Fri, 30 Apr 2010 13:30:32 +0200 Subject: [PATCH 104/126] Changes to MSI installer: - Introduce MANUFACTURER setting to set package manufacturer via CMake. - Introduce COMMUNITY_BUILD setting to be passed on to packaging (not used here, but required for our own packages to determine what added files should be included in the package). - Create an RTF version of the COPYING text file and use that as the default license (can be overridden by providing a COPYING.rtf file). - Allow passing extra arguments to candle and light via environment. (Need -sval in pushbuild, but want validation elsewhere.) - Introduce a custom action that stops and uninstalls the service if the user installed one that points into the MySQL directory that is being removed. (Our own packages historically used the instance configuration wizard for this, but it wouldn't be very nice if MSIs created by our users couldn't remove it too.) - Make install location configurable again ("Browse" button in custom installation was greyed out before). - Remove registry keys that use "MySQL AB"; they should only be set in packages provided by us. Users can set their own registry keys if they want to. --- CMakeLists.txt | 12 ++ packaging/WiX/CMakeLists.txt | 187 +++++++++++++++++------------ packaging/WiX/ca/CMakeLists.txt | 27 +++++ packaging/WiX/ca/CustomAction.cpp | 188 ++++++++++++++++++++++++++++++ packaging/WiX/ca/CustomAction.def | 8 ++ packaging/WiX/ca/CustomAction.rc | 18 +++ packaging/WiX/create_msi.cmake.in | 18 ++- packaging/WiX/extra.wxs.in | 33 +----- packaging/WiX/mysql_server.wxs.in | 32 ++++- 9 files changed, 412 insertions(+), 111 deletions(-) create mode 100644 packaging/WiX/ca/CMakeLists.txt create mode 100644 packaging/WiX/ca/CustomAction.cpp create mode 100644 packaging/WiX/ca/CustomAction.def create mode 100644 packaging/WiX/ca/CustomAction.rc diff --git a/CMakeLists.txt b/CMakeLists.txt index 8edd1e5c158..43c1c2ea095 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,18 @@ SET(CUSTOM_C_FLAGS $ENV{CFLAGS}) OPTION(WITH_DEBUG "Use dbug/safemutex" OFF) OPTION(WITH_DEBUG_FULL "Use dbug and safemalloc/safemutex. Slow" OFF) +# Distinguish between community and non-community builds, with the +# default being a community build. This does not impact the feature +# set that will be compiled in; it's merely provided as a hint to +# custom packaging steps. +OPTION(COMMUNITY_BUILD "Set to true if this is a community build" ON) + +# Use a default manufacturer if no manufacturer was identified. +SET(MANUFACTURER_DOCSTRING + "Set the entity that appears as the manufacturer of packages that support a manufacturer field.") +IF(NOT DEFINED MANUFACTURER) + SET(MANUFACTURER "Built from Source" CACHE BOOL ${MANUFACTURER_DOCSTRING}) +ENDIF() # We choose to provide WITH_DEBUG as alias to standard CMAKE_BUILD_TYPE=Debug # which turns out to be not trivial, as this involves synchronization diff --git a/packaging/WiX/CMakeLists.txt b/packaging/WiX/CMakeLists.txt index f3fa3eb7a30..8a6a4ae4c41 100644 --- a/packaging/WiX/CMakeLists.txt +++ b/packaging/WiX/CMakeLists.txt @@ -1,75 +1,112 @@ - -IF(NOT WIN32) - RETURN() -ENDIF() - -FIND_PATH(WIX_DIR heat.exe - $ENV{WIX_DIR}/bin - $ENV{ProgramFiles}/wix/bin - "$ENV{ProgramFiles}/Windows Installer XML v3/bin" - "$ENV{ProgramFiles}/Windows Installer XML v3.5/bin" -) - -IF(NOT WIX_DIR) - IF(NOT _WIX_DIR_CHECKED) - SET(_WIX_DIR_CHECKED 1 CACHE INTERNAL "") - MESSAGE(STATUS "Cannot find wix 3, installer project will not be generated") - ENDIF() - RETURN() -ENDIF() - -# extra.wxs.in needs DATADIR_MYSQL_FILES and DATADIR_PERFORMANCE_SCHEMA_FILES, i.e -# Wix-compatible file lists for ${builddir}\sql\data\{mysql,performance_schema} - -FOREACH(dir mysql performance_schema) - FILE(GLOB files ${CMAKE_BINARY_DIR}/sql/data/${dir}/*) - SET(filelist) - FOREACH(f ${files}) - FILE(TO_NATIVE_PATH "${f}" file_native_path) - GET_FILENAME_COMPONENT(file_name "${f}" NAME) - SET(filelist -"${filelist} -") - ENDFOREACH() - STRING(TOUPPER ${dir} DIR_UPPER) - SET(DATADIR_${DIR_UPPER}_FILES "${filelist}") -ENDFOREACH() - - -FIND_PROGRAM(HEAT_EXECUTABLE heat ${WIX_DIR}) -FIND_PROGRAM(CANDLE_EXECUTABLE candle ${WIX_DIR}) -FIND_PROGRAM(LIGHT_EXECUTABLE light ${WIX_DIR}) - -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake - @ONLY) -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/extra.wxs.in - ${CMAKE_CURRENT_BINARY_DIR}/extra.wxs - @ONLY - ) - -IF(CMAKE_GENERATOR MATCHES "Visual Studio") - SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR}") -ENDIF() - - -ADD_CUSTOM_TARGET( - MSI - COMMAND set VS_UNICODE_OUTPUT= - COMMAND ${CMAKE_COMMAND} - -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake - -DCPACK_WIX_INCLUDE=${CMAKE_CURRENT_BINARY_DIR}/extra.wxs - ${CONFIG_PARAM} - -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake -) - -ADD_CUSTOM_TARGET( - MSI_ESSENTIALS - COMMAND set VS_UNICODE_OUTPUT= - COMMAND ${CMAKE_COMMAND} -DESSENTIALS=1 - -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake - -DCPACK_WIX_INCLUDE=${CMAKE_CURRENT_BINARY_DIR}/extra.wxs - ${CONFIG_PARAM} - -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake -) - +# Copyright 2010, Oracle and/or its affiliates. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +IF(NOT WIN32) + RETURN() +ENDIF() + +FIND_PATH(WIX_DIR heat.exe + $ENV{WIX_DIR}/bin + $ENV{ProgramFiles}/wix/bin + "$ENV{ProgramFiles}/Windows Installer XML v3/bin" + "$ENV{ProgramFiles}/Windows Installer XML v3.5/bin" +) + +IF(NOT WIX_DIR) + IF(NOT _WIX_DIR_CHECKED) + SET(_WIX_DIR_CHECKED 1 CACHE INTERNAL "") + MESSAGE(STATUS "Cannot find wix 3, installer project will not be generated") + ENDIF() + RETURN() +ENDIF() + +ADD_SUBDIRECTORY(ca) + +# extra.wxs.in needs DATADIR_MYSQL_FILES and DATADIR_PERFORMANCE_SCHEMA_FILES, i.e +# Wix-compatible file lists for ${builddir}\sql\data\{mysql,performance_schema} + +FOREACH(dir mysql performance_schema) + FILE(GLOB files ${CMAKE_BINARY_DIR}/sql/data/${dir}/*) + SET(filelist) + FOREACH(f ${files}) + FILE(TO_NATIVE_PATH "${f}" file_native_path) + GET_FILENAME_COMPONENT(file_name "${f}" NAME) + SET(filelist +"${filelist} +") + ENDFOREACH() + STRING(TOUPPER ${dir} DIR_UPPER) + SET(DATADIR_${DIR_UPPER}_FILES "${filelist}") +ENDFOREACH() + + +FIND_PROGRAM(HEAT_EXECUTABLE heat ${WIX_DIR}) +FIND_PROGRAM(CANDLE_EXECUTABLE candle ${WIX_DIR}) +FIND_PROGRAM(LIGHT_EXECUTABLE light ${WIX_DIR}) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake + @ONLY) + +IF(CMAKE_SIZEOF_VOID_P EQUAL 8) + SET(WixWin64 " Win64='yes'") +ELSE() + SET(WixWin64) +ENDIF() +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/extra.wxs.in + ${CMAKE_CURRENT_BINARY_DIR}/extra.wxs) + +IF(CMAKE_GENERATOR MATCHES "Visual Studio") + SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR}") +ENDIF() + +# WiX wants the license text as rtf; if there is no rtf license, +# we create a fake one from the plain text COPYING file. +IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf") + MESSAGE("copying COPYING.rtf") + FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf" CONTENTS) + FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "${CONTENTS}") +ELSE() + MESSAGE("creating COPYING.rtf") + FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/../../COPYING" CONTENTS) + STRING(REGEX REPLACE "\n" "\\\\par\n" CONTENTS "${CONTENTS}") + STRING(REGEX REPLACE "\t" "\\\\tab" CONTENTS "${CONTENTS}") + FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}\\viewkind4\\uc1\\pard\\lang1031\\f0\\fs15") + FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "${CONTENTS}") + FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "\n}\n") +ENDIF() + +ADD_CUSTOM_TARGET( + MSI + COMMAND set VS_UNICODE_OUTPUT= + COMMAND ${CMAKE_COMMAND} + -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake + -DCPACK_WIX_INCLUDE=${CMAKE_CURRENT_BINARY_DIR}/extra.wxs + ${CONFIG_PARAM} + -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake +) +ADD_DEPENDENCIES(MSI wixca) + +ADD_CUSTOM_TARGET( + MSI_ESSENTIALS + COMMAND set VS_UNICODE_OUTPUT= + COMMAND ${CMAKE_COMMAND} -DESSENTIALS=1 + -DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake + -DCPACK_WIX_INCLUDE=${CMAKE_CURRENT_BINARY_DIR}/extra.wxs + ${CONFIG_PARAM} + -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake +) +ADD_DEPENDENCIES(MSI wixca) + diff --git a/packaging/WiX/ca/CMakeLists.txt b/packaging/WiX/ca/CMakeLists.txt new file mode 100644 index 00000000000..c74b51284c7 --- /dev/null +++ b/packaging/WiX/ca/CMakeLists.txt @@ -0,0 +1,27 @@ +# Copyright 2010, Oracle and/or its affiliates. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +INCLUDE_DIRECTORIES(${WIX_DIR}/../SDK/inc) +LINK_DIRECTORIES(${WIX_DIR}/../SDK/lib) + +SET(WIXCA_SOURCES CustomAction.cpp CustomAction.rc CustomAction.def) + +IF(CMAKE_SIZEOF_VOID_P EQUAL 8) + LINK_LIBRARIES(wcautil_x64 dutil_x64 msi version) +ELSE() + LINK_LIBRARIES(wcautil dutil msi version) +ENDIF() + +ADD_LIBRARY(wixca SHARED ${WIXCA_SOURCES}) diff --git a/packaging/WiX/ca/CustomAction.cpp b/packaging/WiX/ca/CustomAction.cpp new file mode 100644 index 00000000000..806535bc79a --- /dev/null +++ b/packaging/WiX/ca/CustomAction.cpp @@ -0,0 +1,188 @@ +/* Copyright 2010, Oracle and/or its affiliates. All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef UNICODE +#define UNICODE +#endif + +#include +#include +#include +#include +#include +#include +#include + +/* + * Search the registry for a service whose ImagePath starts + * with our install directory. Stop and remove it if requested. + */ +static TCHAR last_service_name[128]; +int remove_service(TCHAR *installdir, int check_only) { + HKEY hKey; + int done = 0; + + if(wcslen(installdir) < 3) { + WcaLog(LOGMSG_STANDARD, "INSTALLDIR is suspiciously short, better not do anything."); + return 0; + } + + if(check_only == 0) { + WcaLog(LOGMSG_STANDARD, "Determining number of matching services..."); + int servicecount = remove_service(installdir, 1); + if(servicecount <= 0) { + WcaLog(LOGMSG_STANDARD, "No services found, not removing anything."); + return 0; + } else if(servicecount == 1) { + TCHAR buf[256]; + swprintf_s(buf, sizeof(buf), TEXT("There is a service called '%ls' set up to run from this installation. Do you wish me to stop and remove that service?"), last_service_name); + int rc = MessageBox(NULL, buf, TEXT("Removing MySQL Server"), MB_ICONQUESTION|MB_YESNOCANCEL|MB_SYSTEMMODAL); + if(rc == IDCANCEL) return -1; + if(rc != IDYES) return 0; + } else if(servicecount > 0) { + TCHAR buf[256]; + swprintf_s(buf, sizeof(buf), TEXT("There appear to be %d services set up to run from this installation. Do you wish me to stop and remove those services?"), servicecount); + int rc = MessageBox(NULL, buf, TEXT("Removing MySQL Server"), MB_ICONQUESTION|MB_YESNOCANCEL|MB_SYSTEMMODAL); + if(rc == IDCANCEL) return -1; + if(rc != IDYES) return 0; + } + } + + if(check_only == -1) check_only = 0; + + WcaLog(LOGMSG_STANDARD, "Looking for service..."); + WcaLog(LOGMSG_STANDARD, "INSTALLDIR = %ls", installdir); + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\services"), 0, KEY_READ, &hKey)==ERROR_SUCCESS) { + DWORD index = 0; + TCHAR keyname[1024]; + DWORD keylen = sizeof(keyname); + FILETIME t; + /* Go through all services in the registry */ + while(RegEnumKeyExW(hKey, index, keyname, &keylen, NULL, NULL, NULL, &t) == ERROR_SUCCESS) { + HKEY hServiceKey = 0; + TCHAR path[1024]; + DWORD pathlen = sizeof(path)-1; + if (RegOpenKeyExW(hKey, keyname, NULL, KEY_READ, &hServiceKey) == ERROR_SUCCESS) { + /* Look at the ImagePath value of each service */ + if (RegQueryValueExW(hServiceKey, TEXT("ImagePath"), NULL, NULL, (LPBYTE)path, &pathlen) == ERROR_SUCCESS) { + path[pathlen] = 0; + TCHAR *p = path; + if(p[0] == '"') p += 1; + /* See if it is similar to our install directory */ + if(wcsncmp(p, installdir, wcslen(installdir)) == 0) { + WcaLog(LOGMSG_STANDARD, "Found service '%ls' with ImagePath '%ls'.", keyname, path); + swprintf_s(last_service_name, sizeof(last_service_name), TEXT("%ls"), keyname); + /* If we are supposed to stop and remove the service... */ + if(!check_only) { + WcaLog(LOGMSG_STANDARD, "Trying to stop the service."); + SC_HANDLE hSCM = NULL; + hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT); + if(hSCM != NULL) { + SC_HANDLE hService = NULL; + hService = OpenService(hSCM, keyname, SERVICE_STOP|SERVICE_QUERY_STATUS|DELETE); + if(hService != NULL) { + WcaLog(LOGMSG_STANDARD, "Waiting for the service to stop..."); + SERVICE_STATUS status; + /* Attempt to stop the service */ + if(ControlService(hService, SERVICE_CONTROL_STOP, &status)) { + /* Now wait until it's stopped */ + while("it's one big, mean and cruel world out there") { + if(!QueryServiceStatus(hService, &status)) break; + if(status.dwCurrentState == SERVICE_STOPPED) break; + Sleep(1000); + } + WcaLog(LOGMSG_STANDARD, "Stopped the service."); + } + /* Mark the service for deletion */ + DeleteService(hService); + CloseServiceHandle(hService); + } + CloseServiceHandle(hSCM); + } + } + done++; + } + } + RegCloseKey(hServiceKey); + } + index++; + keylen = sizeof(keyname)-1; + } + RegCloseKey(hKey); + } else { + WcaLog(LOGMSG_STANDARD, "Can't seem to go through the list of installed services in the registry."); + } + return done; +} + +UINT wrap(MSIHANDLE hInstall, char *name, int check_only) { + HRESULT hr = S_OK; + UINT er = ERROR_SUCCESS; + + hr = WcaInitialize(hInstall, name); + ExitOnFailure(hr, "Failed to initialize"); + + WcaLog(LOGMSG_STANDARD, "Initialized."); + + TCHAR INSTALLDIR[1024]; + DWORD INSTALLDIR_size = sizeof(INSTALLDIR); + if(MsiGetPropertyW(hInstall, TEXT("CustomActionData"), INSTALLDIR, &INSTALLDIR_size) == ERROR_SUCCESS) { + int rc = remove_service(INSTALLDIR, check_only); + if(rc < 0) { + er = ERROR_CANCELLED; + } + } else { + er = ERROR_CANT_ACCESS_FILE; + } + +LExit: + return WcaFinalize(er); +} + +UINT __stdcall RemoveServiceNoninteractive(MSIHANDLE hInstall) +{ + return wrap(hInstall, "RemoveServiceNoninteractive", -1); +} + +UINT __stdcall RemoveService(MSIHANDLE hInstall) +{ + return wrap(hInstall, "RemoveService", 0); +} + +UINT __stdcall TestService(MSIHANDLE hInstall) +{ + return wrap(hInstall, "TestService", 1); +} + +/* DllMain - Initialize and cleanup WiX custom action utils */ +extern "C" BOOL WINAPI DllMain( + __in HINSTANCE hInst, + __in ULONG ulReason, + __in LPVOID + ) +{ + switch(ulReason) + { + case DLL_PROCESS_ATTACH: + WcaGlobalInitialize(hInst); + break; + + case DLL_PROCESS_DETACH: + WcaGlobalFinalize(); + break; + } + + return TRUE; +} diff --git a/packaging/WiX/ca/CustomAction.def b/packaging/WiX/ca/CustomAction.def new file mode 100644 index 00000000000..5f5e6630013 --- /dev/null +++ b/packaging/WiX/ca/CustomAction.def @@ -0,0 +1,8 @@ +LIBRARY "wixca" +VERSION 1.0 + +EXPORTS + +RemoveService +RemoveServiceNoninteractive +TestService diff --git a/packaging/WiX/ca/CustomAction.rc b/packaging/WiX/ca/CustomAction.rc new file mode 100644 index 00000000000..3f37126ee77 --- /dev/null +++ b/packaging/WiX/ca/CustomAction.rc @@ -0,0 +1,18 @@ +#include "afxres.h" +#undef APSTUDIO_READONLY_SYMBOLS + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x0L + FILESUBTYPE 0x0L +BEGIN +END + diff --git a/packaging/WiX/create_msi.cmake.in b/packaging/WiX/create_msi.cmake.in index dc60123b58a..ff18009fd0c 100644 --- a/packaging/WiX/create_msi.cmake.in +++ b/packaging/WiX/create_msi.cmake.in @@ -8,6 +8,7 @@ SET(MAJOR_VERSION "@MAJOR_VERSION@") SET(MINOR_VERSION "@MINOR_VERSION@") SET(PATCH "@PATCH@") SET(CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@) +SET(MANUFACTURER "@MANUFACTURER@") IF(CMAKE_SIZEOF_VOID_P EQUAL 8) SET(Win64 " Win64='yes'") @@ -97,6 +98,7 @@ FOREACH(f ${WIX_FEATURES}) " ) FOREACH(c ${${f}_COMPONENTS}) @@ -127,6 +129,7 @@ FOREACH(f ${WIX_FEATURES}) ") @@ -286,12 +289,23 @@ ENDFOREACH() CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in ${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs) +SET(EXTRA_CANDLE_ARGS) +IF("$ENV{EXTRA_CANDLE_ARGS}") + SET(EXTRA_CANDLE_ARGS "$ENV{EXTRA_CANDLE_ARGS}") +ENDIF() + +SET(EXTRA_LIGHT_ARGS) +IF("$ENV{EXTRA_LIGHT_ARGS}") + SET(EXTRA_LIGHT_ARGS "$ENV{EXTRA_LIGHT_ARGS}") +ENDIF() + FILE(REMOVE mysql_server.wixobj) EXECUTE_PROCESS( - COMMAND ${CANDLE_EXECUTABLE} -ext WixUtilExtension mysql_server.wxs + COMMAND ${CANDLE_EXECUTABLE} -ext WixUtilExtension mysql_server.wxs ${EXTRA_CANDLE_ARGS} ) EXECUTE_PROCESS( - COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension -ext WixUtilExtension + COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension -ext WixUtilExtension mysql_server.wixobj -out ${CPACK_PACKAGE_FILE_NAME}.msi + ${EXTRA_LIGHT_ARGS} ) diff --git a/packaging/WiX/extra.wxs.in b/packaging/WiX/extra.wxs.in index 78e6f96dbcc..4957071526b 100644 --- a/packaging/WiX/extra.wxs.in +++ b/packaging/WiX/extra.wxs.in @@ -1,34 +1,5 @@ - - - - - - - - - - - - - @@ -43,7 +14,6 @@ - - - + diff --git a/packaging/WiX/mysql_server.wxs.in b/packaging/WiX/mysql_server.wxs.in index 8c2b839c6e7..8b20644e58d 100644 --- a/packaging/WiX/mysql_server.wxs.in +++ b/packaging/WiX/mysql_server.wxs.in @@ -6,12 +6,12 @@ Name="MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@" Version="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH@" Language="1033" - Manufacturer="MySQL AB"> + Manufacturer="@MANUFACTURER@"> + + + + + + + + + + + Installed And Not UPGRADINGPRODUCTCODE + Installed And Not UPGRADINGPRODUCTCODE + Installed And Not UPGRADINGPRODUCTCODE And UILevel>2 + Installed And Not UPGRADINGPRODUCTCODE And UILevel<=2 + + From 5c4ccba3240052728f08257d91017c5bf9d5ec66 Mon Sep 17 00:00:00 2001 From: Daniel Fischer Date: Fri, 30 Apr 2010 14:12:56 +0200 Subject: [PATCH 105/126] post-merge fix --- libmysql/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index cf0f8f8ebde..2ae09c1707a 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -209,7 +209,7 @@ IF(NOT DISABLE_SHARED) "${CMAKE_SHARED_LIBRARY_SUFFIX}" "" linkname) - INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR}) + INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} COMPONENT SharedLibraries) SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}") LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS) FOREACH(ver ${OS_SHARED_LIB_SYMLINKS}) @@ -218,7 +218,7 @@ IF(NOT DISABLE_SHARED) "${CMAKE_SHARED_LIBRARY_SUFFIX}" "${ver}" linkname) - INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR}) + INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} COMPONENT SharedLibraries) ENDFOREACH() ENDIF() ENDIF() From 9e7536638ac90d695b7a19b426d7af27fa0d4f1f Mon Sep 17 00:00:00 2001 From: Daniel Fischer Date: Fri, 30 Apr 2010 15:28:08 +0200 Subject: [PATCH 106/126] apply wlad's patch to read the fill_help_tables.sql file whole, not line by line --- cmake/create_initial_db.cmake.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/create_initial_db.cmake.in b/cmake/create_initial_db.cmake.in index 649d96a6627..01b2da665a6 100644 --- a/cmake/create_initial_db.cmake.in +++ b/cmake/create_initial_db.cmake.in @@ -31,8 +31,7 @@ ENDIF() # Create bootstrapper SQL script FILE(WRITE bootstrap.sql "use mysql;\n" ) -FOREACH(FILENAME mysql_system_tables.sql mysql_system_tables_data.sql - fill_help_tables.sql) +FOREACH(FILENAME mysql_system_tables.sql mysql_system_tables_data.sql) FILE(STRINGS ${CMAKE_SOURCE_DIR}/scripts/${FILENAME} CONTENTS) FOREACH(STR ${CONTENTS}) IF(NOT STR MATCHES "@current_hostname") @@ -40,6 +39,8 @@ FOREACH(FILENAME mysql_system_tables.sql mysql_system_tables_data.sql ENDIF() ENDFOREACH() ENDFOREACH() +FILE(READ ${CMAKE_SOURCE_DIR}/scripts/fill_help_tables.sql CONTENTS) +FILE(APPEND bootstrap.sql ${CONTENTS}) FILE(REMOVE_RECURSE mysql) From 487b6e1c72e66cd87e9e9e0af6ce1c48e9c6f200 Mon Sep 17 00:00:00 2001 From: Daniel Fischer Date: Fri, 30 Apr 2010 17:12:01 +0200 Subject: [PATCH 107/126] WiX is worried that we aren't going to create these directories after all, so let's reaffirm our intention to do so. --- packaging/WiX/extra.wxs.in | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packaging/WiX/extra.wxs.in b/packaging/WiX/extra.wxs.in index 4957071526b..b6c42136129 100644 --- a/packaging/WiX/extra.wxs.in +++ b/packaging/WiX/extra.wxs.in @@ -10,15 +10,18 @@ Name="MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@"> - - - + + + + + + @DATADIR_MYSQL_FILES@ @@ -27,6 +30,9 @@ + + + @DATADIR_PERFORMANCE_SCHEMA_FILES@ From e32c25628793455b7537022d679f8a80913edd4f Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 4 May 2010 12:34:00 +0200 Subject: [PATCH 108/126] Put back SELinux files --- support-files/mysql.spec.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 764c67b85c7..0016c456b60 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -442,6 +442,7 @@ MBD=$RPM_BUILD_DIR/%{src_dir} install -d $RBR%{_sysconfdir}/{logrotate.d,init.d} install -d $RBR%{mysqldatadir}/mysql install -d $RBR%{_datadir}/mysql-test +install -d $RBR%{_datadir}/mysql/SELinux/RHEL4 install -d $RBR%{_includedir} install -d $RBR%{_libdir} install -d $RBR%{_mandir} @@ -470,6 +471,10 @@ ln -s %{_sysconfdir}/init.d/mysql $RBR%{_sbindir}/rcmysql # Just to make sure it's in the file list and marked as a config file touch $RBR%{_sysconfdir}/my.cnf +# Install SELinux files in datadir +install -m 600 $MBD/support-files/RHEL4-SElinux/mysql.{fc,te} \ + $RBR%{_datadir}/mysql/SELinux/RHEL4 + %if %{WITH_TCMALLOC} # Even though this is a shared library, put it under /usr/lib*/mysql, so it # doesn't conflict with possible shared lib by the same name in /usr/lib*. See From 0187562f0171f0eb411e384024b5dd73736a6a70 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 4 May 2010 14:03:10 +0200 Subject: [PATCH 109/126] fix --- support-files/mysql.spec.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 0016c456b60..c8d34528a8b 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -472,7 +472,7 @@ ln -s %{_sysconfdir}/init.d/mysql $RBR%{_sbindir}/rcmysql touch $RBR%{_sysconfdir}/my.cnf # Install SELinux files in datadir -install -m 600 $MBD/support-files/RHEL4-SElinux/mysql.{fc,te} \ +install -m 600 $MBD/release/support-files/RHEL4-SElinux/mysql.{fc,te} \ $RBR%{_datadir}/mysql/SELinux/RHEL4 %if %{WITH_TCMALLOC} From 58b15f80581c2c7aef2ef568cffb88bba0c3dc93 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 4 May 2010 15:41:42 +0200 Subject: [PATCH 110/126] Ok, let's try, one more time --- support-files/mysql.spec.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index c8d34528a8b..6f033bc8546 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -472,7 +472,7 @@ ln -s %{_sysconfdir}/init.d/mysql $RBR%{_sbindir}/rcmysql touch $RBR%{_sysconfdir}/my.cnf # Install SELinux files in datadir -install -m 600 $MBD/release/support-files/RHEL4-SElinux/mysql.{fc,te} \ +install -m 600 $MBD/%{src_dir}/support-files/RHEL4-SElinux/mysql.{fc,te} \ $RBR%{_datadir}/mysql/SELinux/RHEL4 %if %{WITH_TCMALLOC} From 2c9803580f3495895b9ccd86bff1492105416340 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 5 May 2010 13:49:03 +0200 Subject: [PATCH 111/126] Build all plugins. Try to fix ia64/icc builds. --- cmake/build_configurations/mysql_release.cmake | 3 --- config.h.cmake | 1 + plugin/audit_null/CMakeLists.txt | 3 ++- plugin/daemon_example/CMakeLists.txt | 3 ++- plugin/fulltext/CMakeLists.txt | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index eeef9f04544..dd1015ff9b9 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -80,9 +80,6 @@ IF(FEATURE_SET) ENDFOREACH() ENDIF() -SET(WITHOUT_AUDIT_NULL ON CACHE BOOL "") -SET(WITHOUT_DAEMON_EXAMPLE ON CACHE BOOL "") - OPTION(ENABLE_LOCAL_INFILE "" ON) SET(WITH_SSL bundled CACHE STRING "") SET(WITH_ZLIB bundled CACHE STRING "") diff --git a/config.h.cmake b/config.h.cmake index f0473c83af6..b3b234a153b 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -38,6 +38,7 @@ #cmakedefine HAVE_FPU_CONTROL_H 1 #cmakedefine HAVE_GRP_H 1 #cmakedefine HAVE_EXPLICIT_TEMPLATE_INSTANTIATION 1 +#cmakedefine HAVE_IA64INTRIN_H 1 #cmakedefine HAVE_IEEEFP_H 1 #cmakedefine HAVE_INTTYPES_H 1 #cmakedefine HAVE_LIMITS_H 1 diff --git a/plugin/audit_null/CMakeLists.txt b/plugin/audit_null/CMakeLists.txt index 9f32181a163..4baa1da35fe 100644 --- a/plugin/audit_null/CMakeLists.txt +++ b/plugin/audit_null/CMakeLists.txt @@ -13,4 +13,5 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -MYSQL_ADD_PLUGIN(audit_null audit_null.c) +MYSQL_ADD_PLUGIN(audit_null audit_null.c + MODULE_ONLY MODULE_OUTPUT_NAME "adt_null") diff --git a/plugin/daemon_example/CMakeLists.txt b/plugin/daemon_example/CMakeLists.txt index 1c21d57b326..abb9a0d49df 100644 --- a/plugin/daemon_example/CMakeLists.txt +++ b/plugin/daemon_example/CMakeLists.txt @@ -13,4 +13,5 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -MYSQL_ADD_PLUGIN(daemon_example daemon_example.cc MODULE_ONLY) +MYSQL_ADD_PLUGIN(daemon_example daemon_example.cc + MODULE_ONLY MODULE_NAME "libdaemon_example") diff --git a/plugin/fulltext/CMakeLists.txt b/plugin/fulltext/CMakeLists.txt index ea71552a37a..394cb8dc51d 100644 --- a/plugin/fulltext/CMakeLists.txt +++ b/plugin/fulltext/CMakeLists.txt @@ -13,5 +13,5 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -MYSQL_ADD_PLUGIN(ftexample plugin_example.c MODULE_ONLY MODULE_OUTPUT_NAME mypluglib) +MYSQL_ADD_PLUGIN(ftexample plugin_example.c + MODULE_ONLY MODULE_OUTPUT_NAME "mypluglib") From 9f282523859643a1c0b3c9825bd661e4a603aa5a Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 5 May 2010 14:28:02 +0200 Subject: [PATCH 112/126] fix syntax error --- plugin/daemon_example/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/daemon_example/CMakeLists.txt b/plugin/daemon_example/CMakeLists.txt index abb9a0d49df..de4310b0244 100644 --- a/plugin/daemon_example/CMakeLists.txt +++ b/plugin/daemon_example/CMakeLists.txt @@ -14,4 +14,4 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA MYSQL_ADD_PLUGIN(daemon_example daemon_example.cc - MODULE_ONLY MODULE_NAME "libdaemon_example") + MODULE_ONLY MODULE_OUTPUT_NAME "libdaemon_example") From f9d9388527f51825d6f81bf804b2f705533115dd Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 5 May 2010 15:23:34 +0200 Subject: [PATCH 113/126] Add all plugins --- support-files/mysql.spec.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 6f033bc8546..3ad9eebd657 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -732,12 +732,16 @@ fi %attr(755, root, root) %{_sbindir}/mysqld %attr(755, root, root) %{_sbindir}/mysqld-debug %attr(755, root, root) %{_sbindir}/rcmysql +%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 -%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_master.so* -%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_slave.so* +%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_master.so +%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_slave.so +%attr(755, root, root) %{_libdir}/mysql/plugin/debug/adt_null.so +%attr(755, root, root) %{_libdir}/mysql/plugin/debug/libdaemon_example.so %attr(755, root, root) %{_libdir}/mysql/plugin/debug/mypluglib.so -%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_master.so* -%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_slave.so* +%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_master.so +%attr(755, root, root) %{_libdir}/mysql/plugin/debug/semisync_slave.so %if %{WITH_TCMALLOC} %attr(755, root, root) %{_libdir}/mysql/%{malloc_lib_target} From 63fbe9cce8bafbbb65a54294c958f5ce9c5f05ee Mon Sep 17 00:00:00 2001 From: Kent Boortz Date: Wed, 5 May 2010 17:50:22 +0200 Subject: [PATCH 114/126] Output the config.h defines to stdout --- support-files/mysql.spec.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 3ad9eebd657..e3944805368 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -396,6 +396,7 @@ mkdir debug -DFEATURE_SET="%{feature_set}" \ -DCOMPILATION_COMMENT="%{compilation_comment_debug}" \ -DMYSQL_SERVER_SUFFIX="%{server_suffix}" + echo BEGIN_DEBUG_CONFIG ; egrep '^#define' include/config.h ; echo END_DEBUG_CONFIG make VERBOSE=1 ) # Build full release @@ -410,6 +411,7 @@ mkdir release -DFEATURE_SET="%{feature_set}" \ -DCOMPILATION_COMMENT="%{compilation_comment_release}" \ -DMYSQL_SERVER_SUFFIX="%{server_suffix}" + echo BEGIN_NORMAL_CONFIG ; egrep '^#define' include/config.h ; echo END_NORMAL_CONFIG make VERBOSE=1 ) From c8432bfbcc6dcdc5c1bc106b6132d0814e739a1b Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 5 May 2010 19:27:21 +0200 Subject: [PATCH 115/126] Try an ia64 fix --- support-files/mysql.spec.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index e3944805368..540fef6def6 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -363,6 +363,9 @@ touch optional-files-devel # not require C++ features such as exceptions, and may need to be removed at # a later date. # +%if "%{_arch}" == "ia64" +RPM_OPT_FLAGS= +%endif export PATH=${MYSQL_BUILD_PATH:-$PATH} export CC=${MYSQL_BUILD_CC:-${CC:-gcc}} export CXX=${MYSQL_BUILD_CXX:-${CXX:-gcc}} From af941670abbb84b32cdb80a4c87e95a5d5594895 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 5 May 2010 23:03:38 +0200 Subject: [PATCH 116/126] Update comment --- support-files/mysql.spec.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 540fef6def6..fcdcb096d01 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -363,9 +363,14 @@ touch optional-files-devel # not require C++ features such as exceptions, and may need to be removed at # a later date. # + +# This is a hack, $RPM_OPT_FLAGS on ia64 hosts contains flags which break +# the compile in cmd-line-utils/readline - needs investigation, but for now +# we simply unset it and use those specified directly in cmake. %if "%{_arch}" == "ia64" RPM_OPT_FLAGS= %endif + export PATH=${MYSQL_BUILD_PATH:-$PATH} export CC=${MYSQL_BUILD_CC:-${CC:-gcc}} export CXX=${MYSQL_BUILD_CXX:-${CXX:-gcc}} From e31887f2ed9a5dd58345f8fd6d28e0729710ac96 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 6 May 2010 15:20:14 +0200 Subject: [PATCH 117/126] Tidy install layout. Remove 'ROOT' from sql-bench dir variable, it's unnecessary. --- cmake/install_layout.cmake | 195 +++++++++++++++++++++---------------- sql-bench/CMakeLists.txt | 6 +- 2 files changed, 113 insertions(+), 88 deletions(-) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 296bebd3bb0..ade6cdb747f 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -40,18 +40,25 @@ # # - INSTALL_BINDIR (directory with client executables and scripts) # - INSTALL_SBINDIR (directory with mysqld) +# - INSTALL_SCRIPTDIR (several scripts, rarely used) +# # - INSTALL_LIBDIR (directory with client end embedded libraries) # - INSTALL_PLUGINDIR (directory for plugins) +# # - INSTALL_INCLUDEDIR (directory for MySQL headers) +# # - INSTALL_DOCDIR (documentation) -# - INSTALL_MANDIR (man pages) -# - INSTALL_SCRIPTDIR (several scripts, rarely used) -# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages) -# - INSTALL_SHAREDIR (location of aclocal/mysql.m4) -# - INSTALL_SQLBENCHDIR (sql-bench) -# - INSTALL_MYSQLTESTDIR (mysql-test) # - INSTALL_DOCREADMEDIR (readme and similar) -# - INSTALL_SUPPORTFILESDIR (used only in standalone installer) +# - INSTALL_MANDIR (man pages) +# - INSTALL_INFODIR (info pages) +# +# - INSTALL_SHAREDIR (location of aclocal/mysql.m4) +# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages) +# - INSTALL_MYSQLTESTDIR (mysql-test) +# - INSTALL_SQLBENCHDIR (sql-bench) +# - INSTALL_SUPPORTFILESDIR (various extra support files) +# +# - INSTALL_MYSQLDATADIR (data directory) IF(NOT INSTALL_LAYOUT) SET(DEFAULT_INSTALL_LAYOUT "STANDALONE") @@ -60,15 +67,6 @@ ENDIF() SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}" CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) or UNIX") -#IF(NOT INSTALL_LAYOUT MATCHES "STANDALONE") -# IF(NOT INSTALL_LAYOUT MATCHES "UNIX") -# # XXX not keen on this, how many more will we need? prefer to just bail... -# IF(NOT INSTALL_LAYOUT MATCHES "SVR4") -# SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}") -# ENDIF() -# ENDIF() -#ENDIF() - IF(UNIX) IF(INSTALL_LAYOUT MATCHES "RPM") SET(default_prefix "/usr") @@ -90,84 +88,111 @@ IF(UNIX) MARK_AS_ADVANCED(SYSCONFDIR) ENDIF() +# # STANDALONE layout -SET(INSTALL_BINDIR_STANDALONE "bin") -SET(INSTALL_SBINDIR_STANDALONE "bin") -SET(INSTALL_LIBDIR_STANDALONE "lib") -SET(INSTALL_INCLUDEDIR_STANDALONE "include") -SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") -SET(INSTALL_DOCDIR_STANDALONE "docs") -SET(INSTALL_MANDIR_STANDALONE "man") -SET(INSTALL_INFODIR_STANDALONE "docs") -SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") -SET(INSTALL_SHAREDIR_STANDALONE "share") -SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") -SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test") -SET(INSTALL_SQLBENCHROOTDIR_STANDALONE ".") -SET(INSTALL_DOCREADMEDIR_STANDALONE ".") -SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") -SET(INSTALL_MYSQLDATADIR_STANDALONE "data") +# +SET(INSTALL_BINDIR_STANDALONE "bin") +SET(INSTALL_SBINDIR_STANDALONE "bin") +SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") +# +SET(INSTALL_LIBDIR_STANDALONE "lib") +SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") +# +SET(INSTALL_INCLUDEDIR_STANDALONE "include") +# +SET(INSTALL_DOCDIR_STANDALONE "docs") +SET(INSTALL_DOCREADMEDIR_STANDALONE ".") +SET(INSTALL_MANDIR_STANDALONE "man") +SET(INSTALL_INFODIR_STANDALONE "docs") +# +SET(INSTALL_SHAREDIR_STANDALONE "share") +SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") +SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test") +SET(INSTALL_SQLBENCHDIR_STANDALONE ".") +SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") +# +SET(INSTALL_MYSQLDATADIR_STANDALONE "data") # # RPM layout # -SET(INSTALL_BINDIR_RPM "bin") -SET(INSTALL_INCLUDEDIR_RPM "include/mysql") -IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") - SET(INSTALL_LIBDIR_RPM "lib64") -ELSE() - SET(INSTALL_LIBDIR_RPM "lib") -ENDIF() -SET(INSTALL_SBINDIR_RPM "sbin") -SET(INSTALL_SHAREDIR_RPM "share") +SET(INSTALL_BINDIR_RPM "bin") +SET(INSTALL_SBINDIR_RPM "sbin") +SET(INSTALL_SCRIPTDIR_RPM "bin") # -#SET(INSTALL_DOCDIR_RPM "XXXunset") -#SET(INSTALL_DOCREADMEDIR_RPM "${INSTALL_DOCDIR_RPM}") -SET(INSTALL_INFODIR_RPM "${INSTALL_SHAREDIR_RPM}/info") -SET(INSTALL_MANDIR_RPM "${INSTALL_SHAREDIR_RPM}/man") -SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql") -SET(INSTALL_MYSQLSHAREDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql") -SET(INSTALL_MYSQLTESTDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql-test") -SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/mysql/plugin") -SET(INSTALL_SCRIPTDIR_RPM "${INSTALL_BINDIR_RPM}") -SET(INSTALL_SQLBENCHROOTDIR_RPM "") -SET(INSTALL_SUPPORTFILESDIR_RPM "${INSTALL_SHAREDIR_RPM}/mysql") +IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") + SET(INSTALL_LIBDIR_RPM "lib64") + SET(INSTALL_PLUGINDIR_RPM "lib64/mysql/plugin") +ELSE() + SET(INSTALL_LIBDIR_RPM "lib") + SET(INSTALL_PLUGINDIR_RPM "lib/mysql/plugin") +ENDIF() +# +SET(INSTALL_INCLUDEDIR_RPM "include/mysql") +# +#SET(INSTALL_DOCDIR_RPM unset - installed directly by RPM) +#SET(INSTALL_DOCREADMEDIR_RPM unset - installed directly by RPM) +SET(INSTALL_INFODIR_RPM "share/info") +SET(INSTALL_MANDIR_RPM "share/man") +# +SET(INSTALL_SHAREDIR_RPM "share") +SET(INSTALL_MYSQLSHAREDIR_RPM "share/mysql") +SET(INSTALL_MYSQLTESTDIR_RPM "share/mysql-test") +SET(INSTALL_SQLBENCHDIR_RPM "") +SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql") +# +SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql") +# # DEB layout -SET(INSTALL_BINDIR_DEB "bin") -SET(INSTALL_SBINDIR_DEB "bin") -SET(INSTALL_LIBDIR_DEB "lib") -SET(INSTALL_INCLUDEDIR_DEB "include") -SET(INSTALL_PLUGINDIR_DEB "lib/plugin") -SET(INSTALL_DOCDIR_DEB "docs") -SET(INSTALL_MANDIR_DEB "man") -SET(INSTALL_INFODIR_DEB "docs") -SET(INSTALL_MYSQLSHAREDIR_DEB "share") -SET(INSTALL_SHAREDIR_DEB "share") -SET(INSTALL_SCRIPTDIR_DEB "scripts") -SET(INSTALL_MYSQLTESTDIR_DEB "mysql-test") -SET(INSTALL_SQLBENCHROOTDIR_DEB ".") -SET(INSTALL_DOCREADMEDIR_DEB ".") -SET(INSTALL_SUPPORTFILESDIR_DEB "support-files") -SET(INSTALL_MYSQLDATADIR_DEB "data") +# +SET(INSTALL_BINDIR_DEB "bin") +SET(INSTALL_SBINDIR_DEB "bin") +SET(INSTALL_SCRIPTDIR_DEB "scripts") +# +SET(INSTALL_LIBDIR_DEB "lib") +SET(INSTALL_PLUGINDIR_DEB "lib/plugin") +# +SET(INSTALL_INCLUDEDIR_DEB "include") +# +SET(INSTALL_DOCDIR_DEB "docs") +SET(INSTALL_DOCREADMEDIR_DEB ".") +SET(INSTALL_MANDIR_DEB "man") +SET(INSTALL_INFODIR_DEB "docs") +# +SET(INSTALL_SHAREDIR_DEB "share") +SET(INSTALL_MYSQLSHAREDIR_DEB "share") +SET(INSTALL_MYSQLTESTDIR_DEB "mysql-test") +SET(INSTALL_SQLBENCHDIR_DEB ".") +SET(INSTALL_SUPPORTFILESDIR_DEB "support-files") +# +SET(INSTALL_MYSQLDATADIR_DEB "data") +# # SVR4 layout -SET(INSTALL_BINDIR_SVR4 "bin") -SET(INSTALL_SBINDIR_SVR4 "bin") -SET(INSTALL_LIBDIR_SVR4 "lib") -SET(INSTALL_INCLUDEDIR_SVR4 "include") -SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") -SET(INSTALL_DOCDIR_SVR4 "docs") -SET(INSTALL_MANDIR_SVR4 "man") -SET(INSTALL_INFODIR_SVR4 "docs") -SET(INSTALL_MYSQLSHAREDIR_SVR4 "share") -SET(INSTALL_SHAREDIR_SVR4 "share") -SET(INSTALL_SCRIPTDIR_SVR4 "scripts") -SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") -SET(INSTALL_SQLBENCHROOTDIR_SVR4 ".") -SET(INSTALL_DOCREADMEDIR_SVR4 ".") -SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") -SET(INSTALL_MYSQLDATADIR_SVR4 "/var/lib/mysql") +# +SET(INSTALL_BINDIR_SVR4 "bin") +SET(INSTALL_SBINDIR_SVR4 "bin") +SET(INSTALL_SCRIPTDIR_SVR4 "scripts") +# +SET(INSTALL_LIBDIR_SVR4 "lib") +SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") +# +SET(INSTALL_INCLUDEDIR_SVR4 "include") +# +SET(INSTALL_DOCDIR_SVR4 "docs") +SET(INSTALL_DOCREADMEDIR_SVR4 ".") +SET(INSTALL_MANDIR_SVR4 "man") +SET(INSTALL_INFODIR_SVR4 "docs") +# +SET(INSTALL_SHAREDIR_SVR4 "share") +SET(INSTALL_MYSQLSHAREDIR_SVR4 "share") +SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") +SET(INSTALL_SQLBENCHDIR_SVR4 ".") +SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") +# +SET(INSTALL_MYSQLDATADIR_SVR4 "/var/lib/mysql") + # Clear cached variables if install layout was changed IF(OLD_INSTALL_LAYOUT) @@ -181,7 +206,7 @@ SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "") # will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE # layout is chosen) FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN - INFO MYSQLTEST SQLBENCHROOT DOCREADME SUPPORTFILES MYSQLDATA) + INFO MYSQLTEST SQLBENCH DOCREADME SUPPORTFILES MYSQLDATA) SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}} CACHE STRING "${var} installation directory" ${FORCE}) MARK_AS_ADVANCED(INSTALL_${var}DIR) diff --git a/sql-bench/CMakeLists.txt b/sql-bench/CMakeLists.txt index 4b7f9520cc1..be0aeca70b0 100644 --- a/sql-bench/CMakeLists.txt +++ b/sql-bench/CMakeLists.txt @@ -21,14 +21,14 @@ ${CMAKE_SOURCE_DIR}/sql-bench/Data/Wisconsin/* ${CMAKE_SOURCE_DIR}/sql-bench/limits/* ) -IF(NOT INSTALL_SQLBENCHROOTDIR) +IF(NOT INSTALL_SQLBENCHDIR) RETURN() ENDIF() -IF(INSTALL_SQLBENCHROOTDIR STREQUAL ".") +IF(INSTALL_SQLBENCHDIR STREQUAL ".") SET(prefix) ELSE() - SET(prefix ${INSTALL_SQLBENCHROOTDIR}/) + SET(prefix ${INSTALL_SQLBENCHDIR}/) ENDIF() GET_FILENAME_COMPONENT(basedir ${CMAKE_SOURCE_DIR} ABSOLUTE) From 5230aa7a5e7275c4b9da3b612ddad8f3370e10b5 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Fri, 7 May 2010 12:11:09 +0200 Subject: [PATCH 118/126] Explicitly set OSX flags, to match current release. --- cmake/build_configurations/mysql_release.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index dd1015ff9b9..97de0965f6b 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -141,8 +141,8 @@ IF(UNIX) # OSX flags IF(APPLE) - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-Os ${CMAKE_C_FLAGS_RELWITHDEBINFO}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Os ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -Os -fno-common") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -Os -felide-constructors -fno-common") ENDIF() # Solaris flags From b5164c140178132018a1d4bdff95048b4d8ff4dc Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 12 May 2010 14:12:20 +0200 Subject: [PATCH 119/126] Pointless commit to avoid unnecessary diffs and to trigger a new build --- support-files/mysql.spec.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index fcdcb096d01..2ed3b1ff788 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -10,7 +10,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to the +# along with this program; see the file COPYING. If not, write to the # Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston # MA 02110-1301 USA. From 08e457cc52d52c8d43b3e38e69254ee01b09db8b Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Fri, 14 May 2010 13:00:37 +0200 Subject: [PATCH 120/126] Null commit to test changes. From bb6c611314e6fef51fb31e797b7c61598f33f671 Mon Sep 17 00:00:00 2001 From: Kent Boortz Date: Tue, 18 May 2010 14:25:02 +0200 Subject: [PATCH 121/126] config.h.cmake - Added missing HAVE_SYS_TIMES_H, HAVE_SYS_TIME_H, HAVE_TIME_H, HAVE_TIME and HAVE_TIMES - Removed most #if constructs, keep logic in "configure.cmake" - Use space after # if inside #if, for consistency configure.cmake - Added MY_CHECK_TYPE_SIZE function that sets both SIZEOF_* and HAVE_* - If "sys/stream.h" exists, include it before "sys/ptem.h" in test - Set VOID_SIGHANDLER if RETSIGTYPE is set to "void" --- config.h.cmake | 127 ++++++++++++++---------------------------------- configure.cmake | 82 ++++++++++++++++--------------- 2 files changed, 78 insertions(+), 131 deletions(-) diff --git a/config.h.cmake b/config.h.cmake index b3b234a153b..cd9305e2b4f 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -81,6 +81,8 @@ #cmakedefine HAVE_SYS_STREAM_H 1 #cmakedefine HAVE_SYS_TERMCAP_H 1 #cmakedefine HAVE_SYS_TIMEB_H 1 +#cmakedefine HAVE_SYS_TIMES_H 1 +#cmakedefine HAVE_SYS_TIME_H 1 #cmakedefine HAVE_SYS_TYPES_H 1 #cmakedefine HAVE_SYS_UN_H 1 #cmakedefine HAVE_SYS_VADVISE_H 1 @@ -88,6 +90,7 @@ #cmakedefine HAVE_TERMIOS_H 1 #cmakedefine HAVE_TERMIO_H 1 #cmakedefine HAVE_TERMCAP_H 1 +#cmakedefine HAVE_TIME_H 1 #cmakedefine HAVE_UNISTD_H 1 #cmakedefine HAVE_UTIME_H 1 #cmakedefine HAVE_VARARGS_H 1 @@ -261,6 +264,8 @@ #cmakedefine HAVE_TEMPNAM 1 #cmakedefine HAVE_THR_SETCONCURRENCY 1 #cmakedefine HAVE_THR_YIELD 1 +#cmakedefine HAVE_TIME 1 +#cmakedefine HAVE_TIMES 1 #cmakedefine HAVE_VALLOC 1 #define HAVE_VIO_READ_BUFF 1 #cmakedefine HAVE_VASPRINTF 1 @@ -293,11 +298,6 @@ /* Types we may use */ -#cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@ -#if SIZEOF_CHAR -# define HAVE_CHAR 1 -#endif - #ifdef __APPLE__ /* Special handling required for OSX to support universal binaries that @@ -316,119 +316,64 @@ #cmakedefine SIZEOF_SIZE_T @SIZEOF_CHARP@ #endif -#if SIZEOF_LONG -# define HAVE_LONG 1 -#endif - - +#cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@ +#cmakedefine HAVE_CHAR 1 +#cmakedefine HAVE_LONG 1 +#cmakedefine HAVE_CHARP 1 #if SIZEOF_CHARP -#define HAVE_CHARP 1 -#define SIZEOF_VOIDP SIZEOF_CHARP +# define SIZEOF_VOIDP SIZEOF_CHARP #endif - #cmakedefine SIZEOF_SHORT @SIZEOF_SHORT@ -#if SIZEOF_SHORT -# define HAVE_SHORT 1 -#endif - +#cmakedefine HAVE_SHORT 1 #cmakedefine SIZEOF_INT @SIZEOF_INT@ -#if SIZEOF_INT -# define HAVE_INT 1 -#endif - - +#cmakedefine HAVE_INT 1 #cmakedefine SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@ -#if SIZEOF_LONG_LONG -# define HAVE_LONG_LONG 1 -#endif - +#cmakedefine HAVE_LONG_LONG 1 #cmakedefine SIZEOF_OFF_T @SIZEOF_OFF_T@ -#if SIZEOF_OFF_T -#define HAVE_OFF_T 1 -#endif - +#cmakedefine HAVE_OFF_T 1 #cmakedefine SIZEOF_SIGSET_T @SIZEOF_SIGSET_T@ -#if SIZEOF_SIGSET_T -#define HAVE_SIGSET_T 1 -#endif - -#if SIZEOF_SIZE_T -#define HAVE_SIZE_T 1 -#endif - +#cmakedefine HAVE_SIGSET_T 1 +#cmakedefine SIZEOF_SIZE_T @SIZEOF_SIZE_T@ +#cmakedefine HAVE_SIZE_T 1 #cmakedefine SIZEOF_UCHAR @SIZEOF_UCHAR@ -#if SIZEOF_UCHAR -#define HAVE_UCHAR 1 -#endif - +#cmakedefine HAVE_UCHAR 1 #cmakedefine SIZEOF_UINT @SIZEOF_UINT@ -#if SIZEOF_UINT -#define HAVE_UINT 1 -#endif - +#cmakedefine HAVE_UINT 1 #cmakedefine SIZEOF_ULONG @SIZEOF_ULONG@ -#if SIZEOF_ULONG -#define HAVE_ULONG 1 -#endif - +#cmakedefine HAVE_ULONG 1 #cmakedefine SIZEOF_INT8 @SIZEOF_INT8@ -#if SIZEOF_INT8 -#define HAVE_INT8 1 -#endif +#cmakedefine HAVE_INT8 1 #cmakedefine SIZEOF_UINT8 @SIZEOF_UINT8@ -#if SIZEOF_UINT8 -#define HAVE_UINT8 1 -#endif - +#cmakedefine HAVE_UINT8 1 #cmakedefine SIZEOF_INT16 @SIZEOF_INT16@ -#if SIZEOF_INT16 -# define HAVE_INT16 1 -#endif +#cmakedefine HAVE_INT16 1 #cmakedefine SIZEOF_UINT16 @SIZEOF_UINT16@ -#if SIZEOF_UINT16 -#define HAVE_UINT16 1 -#endif - +#cmakedefine HAVE_UINT16 1 #cmakedefine SIZEOF_INT32 @SIZEOF_INT32@ -#if SIZEOF_INT32 -#define HAVE_INT32 1 -#endif +#cmakedefine HAVE_INT32 1 #cmakedefine SIZEOF_UINT32 @SIZEOF_UINT32@ -#if SIZEOF_UINT32 -#define HAVE_UINT32 1 -#endif +#cmakedefine HAVE_UINT32 1 #cmakedefine SIZEOF_U_INT32_T @SIZEOF_U_INT32_T@ -#if SIZEOF_U_INT32_T -#define HAVE_U_INT32_T 1 -#endif - +#cmakedefine HAVE_U_INT32_T 1 #cmakedefine SIZEOF_INT64 @SIZEOF_INT64@ -#if SIZEOF_INT64 -#define HAVE_INT64 1 -#endif +#cmakedefine HAVE_INT64 1 #cmakedefine SIZEOF_UINT64 @SIZEOF_UINT64@ -#if SIZEOF_UINT64 -#define HAVE_UINT64 1 -#endif +#cmakedefine HAVE_UINT64 1 +#cmakedefine SIZEOF_BOOL @SIZEOF_BOOL@ +#cmakedefine HAVE_BOOL 1 #cmakedefine SOCKET_SIZE_TYPE @SOCKET_SIZE_TYPE@ -#cmakedefine SIZEOF_BOOL @SIZEOF_BOOL@ -#if SIZEOF_BOOL -#define HAVE_BOOL 1 -#endif #cmakedefine HAVE_MBSTATE_T #define MAX_INDEXES 64 #cmakedefine QSORT_TYPE_IS_VOID 1 -#define RETQSORTTYPE void +#cmakedefine RETQSORTTYPE @RETQSORTTYPE@ #cmakedefine SIGNAL_RETURN_TYPE_IS_VOID 1 -#define RETSIGTYPE void -#if SIGNAL_RETURN_TYPE_IS_VOID -#define VOID_SIGHANDLER 1 -#endif +#cmakedefine RETSIGTYPE @RETSIGTYPE@ +#cmakedefine VOID_SIGHANDLER 1 #define STRUCT_RLIMIT struct rlimit #ifdef __APPLE__ @@ -545,7 +490,7 @@ #cmakedefine strtoull @strtoull@ #cmakedefine vsnprintf @vsnprintf@ #if (_MSC_VER > 1310) -#define HAVE_SETENV +# define HAVE_SETENV #define setenv(a,b,c) _putenv_s(a,b) #endif @@ -635,7 +580,7 @@ #cmakedefine WITH_PERFSCHEMA_STORAGE_ENGINE 1 #cmakedefine WITH_NDBCLUSTER_STORAGE_ENGINE 1 #if (WITH_NDBCLUSTER_STORAGE_ENGINE) && !defined(EMBEDDED_LIBRARY) -#define HAVE_NDB_BINLOG 1 +# define HAVE_NDB_BINLOG 1 #endif #cmakedefine DEFAULT_MYSQL_HOME "@DEFAULT_MYSQL_HOME@" diff --git a/configure.cmake b/configure.cmake index 31e38aaa2cd..0dc32b08226 100644 --- a/configure.cmake +++ b/configure.cmake @@ -81,6 +81,13 @@ ENDIF(WITHOUT_DYNAMIC_PLUGINS) # Large files, common flag SET(_LARGEFILE_SOURCE 1) +# If finds the size of a type, set SIZEOF_ and HAVE_ +FUNCTION(MY_CHECK_TYPE_SIZE type defbase) + CHECK_TYPE_SIZE("${type}" SIZEOF_${defbase}) + IF(SIZEOF_${defbase}) + SET(HAVE_${defbase} 1 PARENT_SCOPE) + ENDIF() +ENDFUNCTION() # Searches function in libraries # if function is found, sets output parameter result to the name of the library @@ -186,7 +193,6 @@ CHECK_INCLUDE_FILES (select.h HAVE_SELECT_H) CHECK_INCLUDE_FILES (semaphore.h HAVE_SEMAPHORE_H) CHECK_INCLUDE_FILES (sys/dir.h HAVE_SYS_DIR_H) CHECK_INCLUDE_FILES (sys/pte.h HAVE_SYS_PTE_H) -CHECK_INCLUDE_FILES (sys/ptem.h HAVE_SYS_PTEM_H) CHECK_INCLUDE_FILES (stddef.h HAVE_STDDEF_H) CHECK_INCLUDE_FILES (stdint.h HAVE_STDINT_H) CHECK_INCLUDE_FILES (stdlib.h HAVE_STDLIB_H) @@ -226,6 +232,13 @@ CHECK_INCLUDE_FILES (fnmatch.h HAVE_FNMATCH_H) CHECK_INCLUDE_FILES (stdarg.h HAVE_STDARG_H) CHECK_INCLUDE_FILES("stdlib.h;sys/un.h" HAVE_SYS_UN_H) +IF(HAVE_SYS_STREAM_H) + # Needs sys/stream.h on Solaris + CHECK_INCLUDE_FILES (sys/stream.h sys/ptem.h HAVE_SYS_PTEM_H) +ELSE() + CHECK_INCLUDE_FILES (sys/ptem.h HAVE_SYS_PTEM_H) +ENDIF() + # Figure out threading library # FIND_PACKAGE (Threads) @@ -449,14 +462,11 @@ set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -D_LARGEFILE_SOURCE -D_LARGE_FILES -D_FILE_OFFSET_BITS=64 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS) SET(CMAKE_EXTRA_INCLUDE_FILES signal.h) -CHECK_TYPE_SIZE(sigset_t SIZEOF_SIGSET_T) -IF(SIZEOF_SIGSET_T) - SET(HAVE_SIGSET_T 1) -ENDIF() +MY_CHECK_TYPE_SIZE(sigset_t SIGSET_T) IF(NOT SIZEOF_SIGSET_T) SET(sigset_t int) ENDIF() -CHECK_TYPE_SIZE(mode_t SIZEOF_MODE_T) +MY_CHECK_TYPE_SIZE(mode_t MODE_T) IF(NOT SIZEOF_MODE_T) SET(mode_t int) ENDIF() @@ -469,43 +479,40 @@ ENDIF(HAVE_STDINT_H) IF(NOT APPLE) # Prevent some checks on OSX, they return ambigious results # on universal 32/64 bit binariess - CHECK_TYPE_SIZE("char *" SIZEOF_CHARP) - CHECK_TYPE_SIZE(long SIZEOF_LONG) - CHECK_TYPE_SIZE(size_t SIZEOF_SIZE_T) + MY_CHECK_TYPE_SIZE("char *" CHARP) + MY_CHECK_TYPE_SIZE(long LONG) + MY_CHECK_TYPE_SIZE(size_t SIZE_T) ENDIF() -CHECK_TYPE_SIZE(char SIZEOF_CHAR) -CHECK_TYPE_SIZE(short SIZEOF_SHORT) -CHECK_TYPE_SIZE(int SIZEOF_INT) -CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG) +MY_CHECK_TYPE_SIZE(char CHAR) +MY_CHECK_TYPE_SIZE(short SHORT) +MY_CHECK_TYPE_SIZE(int INT) +MY_CHECK_TYPE_SIZE("long long" LONG_LONG) SET(CMAKE_EXTRA_INCLUDE_FILES stdio.h sys/types.h) -CHECK_TYPE_SIZE(off_t SIZEOF_OFF_T) -CHECK_TYPE_SIZE(uchar SIZEOF_UCHAR) -CHECK_TYPE_SIZE(uint SIZEOF_UINT) -CHECK_TYPE_SIZE(ulong SIZEOF_ULONG) -CHECK_TYPE_SIZE(int8 SIZEOF_INT8) -CHECK_TYPE_SIZE(uint8 SIZEOF_UINT8) -CHECK_TYPE_SIZE(int16 SIZEOF_INT16) -CHECK_TYPE_SIZE(uint16 SIZEOF_UINT16) -CHECK_TYPE_SIZE(int32 SIZEOF_INT32) -CHECK_TYPE_SIZE(uint32 SIZEOF_UINT32) -CHECK_TYPE_SIZE(u_int32_t SIZEOF_U_INT32_T) -CHECK_TYPE_SIZE(int64 SIZEOF_INT64) -CHECK_TYPE_SIZE(uint64 SIZEOF_UINT64) +MY_CHECK_TYPE_SIZE(off_t OFF_T) +MY_CHECK_TYPE_SIZE(uchar UCHAR) +MY_CHECK_TYPE_SIZE(uint UINT) +MY_CHECK_TYPE_SIZE(ulong ULONG) +MY_CHECK_TYPE_SIZE(int8 INT8) +MY_CHECK_TYPE_SIZE(uint8 UINT8) +MY_CHECK_TYPE_SIZE(int16 INT16) +MY_CHECK_TYPE_SIZE(uint16 UINT16) +MY_CHECK_TYPE_SIZE(int32 INT32) +MY_CHECK_TYPE_SIZE(uint32 UINT32) +MY_CHECK_TYPE_SIZE(u_int32_t U_INT32_T) +MY_CHECK_TYPE_SIZE(int64 INT64) +MY_CHECK_TYPE_SIZE(uint64 UINT64) SET (CMAKE_EXTRA_INCLUDE_FILES sys/types.h) -CHECK_TYPE_SIZE(bool SIZEOF_BOOL) +MY_CHECK_TYPE_SIZE(bool BOOL) SET(CMAKE_EXTRA_INCLUDE_FILES) IF(HAVE_SYS_SOCKET_H) SET(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h) ENDIF(HAVE_SYS_SOCKET_H) -CHECK_TYPE_SIZE(socklen_t SIZEOF_SOCKLEN_T) +MY_CHECK_TYPE_SIZE(socklen_t SOCKLEN_T) SET(CMAKE_EXTRA_INCLUDE_FILES) IF(HAVE_IEEEFP_H) SET(CMAKE_EXTRA_INCLUDE_FILES ieeefp.h) - CHECK_TYPE_SIZE(fp_except SIZEOF_FP_EXCEPT) - IF(SIZEOF_FP_EXCEPT) - SET(HAVE_FP_EXCEPT TRUE) - ENDIF() + MY_CHECK_TYPE_SIZE(fp_except FP_EXCEPT) ENDIF() @@ -669,6 +676,7 @@ int main(int ac, char **av) {} " SIGNAL_RETURN_TYPE_IS_VOID) IF(SIGNAL_RETURN_TYPE_IS_VOID) SET(RETSIGTYPE void) + SET(VOID_SIGHANDLER 1) ELSE(SIGNAL_RETURN_TYPE_IS_VOID) SET(RETSIGTYPE int) ENDIF(SIGNAL_RETURN_TYPE_IS_VOID) @@ -973,14 +981,8 @@ ELSEIF(WIN32) SET(CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES} winsock2.h ws2ipdef.h) ENDIF() -CHECK_TYPE_SIZE("struct sockaddr_in6" SIZEOF_SOCKADDR_IN6) -CHECK_TYPE_SIZE("struct in6_addr" SIZEOF_IN6_ADDR) -IF(SIZEOF_SOCKADDR_IN6) - SET(HAVE_STRUCT_SOCKADDR_IN6 1) -ENDIF() -IF(SIZEOF_IN6_ADDR) - SET(HAVE_STRUCT_IN6_ADDR 1) -ENDIF() +MY_CHECK_TYPE_SIZE("struct sockaddr_in6" SOCKADDR_IN6) +MY_CHECK_TYPE_SIZE("struct in6_addr" IN6_ADDR) IF(HAVE_STRUCT_SOCKADDR_IN6 OR HAVE_STRUCT_IN6_ADDR) SET(HAVE_IPV6 TRUE CACHE INTERNAL "") From 497abee8f31732367ee3c7d74c0cd56313535609 Mon Sep 17 00:00:00 2001 From: Kent Boortz Date: Fri, 21 May 2010 01:40:12 +0200 Subject: [PATCH 122/126] config.h.cmake - Set SIZEOF_VOIDP the same way as others - Unindent the no Mac OS settings, to let the checker scripts find the lines - Removed duplicate SIZEOF_SIZE_T setting - Added missing value for HAVE_CHARSET_ascii configure.cmake - Added HAVE_ prefix to library names, like HAVE_LIBM - Set HAVE_CXXABI_H if header is found, HAVE_ABI_CXA_DEMANGLE controls if useful - Set SIZEOF_VOIDP the same way as others --- config.h.cmake | 15 +++++++-------- configure.cmake | 9 ++++----- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/config.h.cmake b/config.h.cmake index cd9305e2b4f..f93cc18a0bc 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -308,21 +308,21 @@ #else #define SIZEOF_LONG 4 #endif + #define SIZEOF_VOIDP SIZEOF_LONG #define SIZEOF_CHARP SIZEOF_LONG #define SIZEOF_SIZE_T SIZEOF_LONG #else - #cmakedefine SIZEOF_LONG @SIZEOF_LONG@ - #cmakedefine SIZEOF_CHARP @SIZEOF_CHARP@ - #cmakedefine SIZEOF_SIZE_T @SIZEOF_CHARP@ +# No indentation, to fetch the lines from verification scripts +#cmakedefine SIZEOF_LONG @SIZEOF_LONG@ +#cmakedefine SIZEOF_VOIDP @SIZEOF_VOIDP@ +#cmakedefine SIZEOF_CHARP @SIZEOF_CHARP@ +#cmakedefine SIZEOF_SIZE_T @SIZEOF_CHARP@ #endif #cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@ #cmakedefine HAVE_CHAR 1 #cmakedefine HAVE_LONG 1 #cmakedefine HAVE_CHARP 1 -#if SIZEOF_CHARP -# define SIZEOF_VOIDP SIZEOF_CHARP -#endif #cmakedefine SIZEOF_SHORT @SIZEOF_SHORT@ #cmakedefine HAVE_SHORT 1 #cmakedefine SIZEOF_INT @SIZEOF_INT@ @@ -333,7 +333,6 @@ #cmakedefine HAVE_OFF_T 1 #cmakedefine SIZEOF_SIGSET_T @SIZEOF_SIGSET_T@ #cmakedefine HAVE_SIGSET_T 1 -#cmakedefine SIZEOF_SIZE_T @SIZEOF_SIZE_T@ #cmakedefine HAVE_SIZE_T 1 #cmakedefine SIZEOF_UCHAR @SIZEOF_UCHAR@ #cmakedefine HAVE_UCHAR 1 @@ -518,7 +517,7 @@ #cmakedefine FN_NO_CASE_SENSE 1 #cmakedefine HAVE_CHARSET_armscii8 1 -#cmakedefine HAVE_CHARSET_ascii +#cmakedefine HAVE_CHARSET_ascii 1 #cmakedefine HAVE_CHARSET_big5 1 #cmakedefine HAVE_CHARSET_cp1250 1 #cmakedefine HAVE_CHARSET_cp1251 1 diff --git a/configure.cmake b/configure.cmake index 0dc32b08226..6734b652676 100644 --- a/configure.cmake +++ b/configure.cmake @@ -105,7 +105,7 @@ FUNCTION(MY_SEARCH_LIBS func libs result) FOREACH(lib ${libs}) CHECK_LIBRARY_EXISTS(${lib} ${func} "" HAVE_${func}_IN_${lib}) IF(HAVE_${func}_IN_${lib}) - SET(${result} ${lib} PARENT_SCOPE) + SET(${result} HAVE_${lib} PARENT_SCOPE) RETURN() ENDIF() ENDFOREACH() @@ -167,6 +167,7 @@ CHECK_INCLUDE_FILES (alloca.h HAVE_ALLOCA_H) CHECK_INCLUDE_FILES (aio.h HAVE_AIO_H) CHECK_INCLUDE_FILES (arpa/inet.h HAVE_ARPA_INET_H) CHECK_INCLUDE_FILES (crypt.h HAVE_CRYPT_H) +CHECK_INCLUDE_FILES (cxxabi.h HAVE_CXXABI_H) CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H) CHECK_INCLUDE_FILES (dlfcn.h HAVE_DLFCN_H) CHECK_INCLUDE_FILES (execinfo.h HAVE_EXECINFO_H) @@ -479,6 +480,7 @@ ENDIF(HAVE_STDINT_H) IF(NOT APPLE) # Prevent some checks on OSX, they return ambigious results # on universal 32/64 bit binariess + MY_CHECK_TYPE_SIZE("void *" VOIDP) MY_CHECK_TYPE_SIZE("char *" CHARP) MY_CHECK_TYPE_SIZE(long LONG) MY_CHECK_TYPE_SIZE(size_t SIZE_T) @@ -776,7 +778,7 @@ ENDIF(NOT HAVE_POSIX_SIGNALS) # Assume regular sprintf SET(SPRINTFS_RETURNS_INT 1) -IF(CMAKE_COMPILER_IS_GNUXX) +IF(CMAKE_COMPILER_IS_GNUXX AND HAVE_CXXABI_H) CHECK_CXX_SOURCE_COMPILES(" #include int main(int argc, char **argv) @@ -786,9 +788,6 @@ CHECK_CXX_SOURCE_COMPILES(" return 0; }" HAVE_ABI_CXA_DEMANGLE) -IF(HAVE_ABI_CXA_DEMANGLE) - SET(HAVE_CXXABI_H 1) -ENDIF() ENDIF() CHECK_C_SOURCE_COMPILES(" From 447846cf3c96c1e729b32a240acfb3e3caa2618b Mon Sep 17 00:00:00 2001 From: Joerg Bruehe Date: Fri, 21 May 2010 19:31:55 +0200 Subject: [PATCH 123/126] Get rid ot the "net retry count" difference which is not needed any more with current versions of FreeBSD. (Entries 52410 and 52412 in the Bug DB) That change is based on Dan Nelson replying on the FreeBSD mailing list, freebsd-questions@freebsd.org in a thread running from 2010-Apr-29 to 2010-May-1 titled "Need info about FreeBSD and interrupted system calls for MySQL code" Also, ensure the cmake settings correspond to the autotools ones: Add "HAVE_BROKEN_REALPATH" to cmake. --- cmake/os/FreeBSD.cmake | 9 ++++++--- configure.in | 14 +++++++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/cmake/os/FreeBSD.cmake b/cmake/os/FreeBSD.cmake index 0b958c61315..be7af778e93 100644 --- a/cmake/os/FreeBSD.cmake +++ b/cmake/os/FreeBSD.cmake @@ -1,5 +1,5 @@ -# Copyright (C) 2010 Sun Microsystems, Inc +# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -15,6 +15,9 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # This file includes FreeBSD specific options and quirks, related to system checks -#Legacy option, maybe not needed anymore , taken as is from autotools build -ADD_DEFINITIONS(-DNET_RETRY_COUNT=1000000) +# Should not be needed any more, but kept for easy resurrection if needed +# #Legacy option, maybe not needed anymore , taken as is from autotools build +# ADD_DEFINITIONS(-DNET_RETRY_COUNT=1000000) + +ADD_DEFINITIONS(-DHAVE_BROKEN_REALPATH) diff --git a/configure.in b/configure.in index 0a040cc60ee..1d95c11bd5b 100644 --- a/configure.in +++ b/configure.in @@ -1,7 +1,7 @@ dnl -*- ksh -*- dnl Process this file with autoconf to produce a configure script. -# Copyright (C) 2008-2009 Sun Microsystems, Inc +# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -1235,14 +1235,22 @@ case $SYSTEM_TYPE in fi ;; *freebsd*|*dragonfly*) - AC_MSG_WARN([Adding fix for interrupted reads]) + dnl These dependencies have not really been checked for some time OSVERSION=`sysctl -a | grep osreldate | awk '{ print $2 }'` - if test "$OSVERSION" -gt "480100" && \ + if test "$OSVERSION" -gt "600000" + then + # Post user-level threads, MYSQLD_NET_RETRY_COUNT is not needed any more + AC_MSG_WARN([Adding fix for broken realpath]) + CFLAGS="$CFLAGS -DHAVE_BROKEN_REALPATH" + CXXFLAGS="$CXXFLAGS -DHAVE_BROKEN_REALPATH" + elif test "$OSVERSION" -gt "480100" && \ test "$OSVERSION" -lt "500000" || \ test "$OSVERSION" -gt "500109" then + AC_MSG_WARN([Adding fix for interrupted reads]) CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000" else + AC_MSG_WARN([Adding fix for interrupted reads and broken realpath]) CFLAGS="$CFLAGS -DHAVE_BROKEN_REALPATH" CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000 -DHAVE_BROKEN_REALPATH" fi From 3dec34f4f71f721652c49e612cb6bc9c53cebefe Mon Sep 17 00:00:00 2001 From: Kent Boortz Date: Tue, 25 May 2010 10:14:07 +0200 Subject: [PATCH 124/126] configure.cmake - Reverted a faulty change of MY_SEARCH_LIBS - Added the proper change for MY_SEARCH_LIBS and HAVE_ --- config.h.cmake | 2 +- configure.cmake | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/config.h.cmake b/config.h.cmake index f93cc18a0bc..3adc7b1e3f5 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -312,7 +312,7 @@ #define SIZEOF_CHARP SIZEOF_LONG #define SIZEOF_SIZE_T SIZEOF_LONG #else -# No indentation, to fetch the lines from verification scripts +/* No indentation, to fetch the lines from verification scripts */ #cmakedefine SIZEOF_LONG @SIZEOF_LONG@ #cmakedefine SIZEOF_VOIDP @SIZEOF_VOIDP@ #cmakedefine SIZEOF_CHARP @SIZEOF_CHARP@ diff --git a/configure.cmake b/configure.cmake index 6734b652676..eeefa054de0 100644 --- a/configure.cmake +++ b/configure.cmake @@ -105,7 +105,8 @@ FUNCTION(MY_SEARCH_LIBS func libs result) FOREACH(lib ${libs}) CHECK_LIBRARY_EXISTS(${lib} ${func} "" HAVE_${func}_IN_${lib}) IF(HAVE_${func}_IN_${lib}) - SET(${result} HAVE_${lib} PARENT_SCOPE) + SET(${result} ${lib} PARENT_SCOPE) + SET(HAVE_${result} 1 PARENT_SCOPE) RETURN() ENDIF() ENDFOREACH() From ce34f3d8093f131f5713437c299a72046753868f Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Thu, 27 May 2010 12:51:26 +0200 Subject: [PATCH 125/126] Split OEL/RHEL --- support-files/mysql.spec.sh | 65 ++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 23 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 2ed3b1ff788..c0edd3718bb 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -121,43 +121,62 @@ %define distro_specific 0 %endif %if %{distro_specific} - %if %(test -f /etc/redhat-release && echo 1 || echo 0) - %define elver %(rpm -qf --qf '%%{version}\\n' /etc/redhat-release | sed -e 's/^\\([0-9]*\\).*/\\1/g') - %if "%elver" == "4" - %define distro_description Enterprise Linux 4 - %define distro_releasetag el4 + %if %(test -f /etc/enterprise-release && echo 1 || echo 0) + %define oelver %(rpm -qf --qf '%%{version}\\n' /etc/enterprise-release | sed -e 's/^\\([0-9]*\\).*/\\1/g') + %if "%oelver" == "4" + %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 %else - %if "%elver" == "5" - %define distro_description Enterprise Linux 5 - %define distro_releasetag el5 + %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 %else - %{error:Enterprise Linux %{elver} is unsupported} + %{error:Oracle Enterprise Linux %{oelver} is unsupported} %endif %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 %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 %else - %{error:SuSE %{susever} is unsupported} + %{error:Red Hat Enterprise Linux %{rhelver} is unsupported} %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 %else From 89205a3bf6bba245e312078b23168ff5f8560759 Mon Sep 17 00:00:00 2001 From: Daniel Fischer Date: Fri, 28 May 2010 16:50:23 +0200 Subject: [PATCH 126/126] post-merge fix 1 --- CMakeLists.txt | 13 ------------- scripts/CMakeLists.txt | 2 +- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 43c1c2ea095..fa691042026 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -282,19 +282,6 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in ${CMAKE_BINARY_DIR}/sql/sql_builtin.cc) -INSTALL(FILES EXCEPTIONS-CLIENT DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT - Development) - - -INSTALL(FILES COPYING DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme OPTIONAL) -INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme) -IF(UNIX) - INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Documentation) -ENDIF() -# MYSQL_DOCS_LOCATON is used in "make dist", points to the documentation directory -SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied") -MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION) -INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR} COMPONENT Documentation) # Packaging IF(WIN32) SET(CPACK_GENERATOR "ZIP") diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index 483e4bcef65..633b9b8ff90 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -177,7 +177,7 @@ ENDIF() INSTALL_SCRIPT( "${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db${EXT}" - DESTINATION ${INSTALL_BINDIR} + DESTINATION ${DEST} COMPONENT Server )