From 890c52d889231c7854c52d7b649d2be24e509e69 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Wed, 10 Feb 2010 20:23:24 +0100 Subject: [PATCH] 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)