diff options
author | Alexander Nozdrin <alik@sun.com> | 2010-02-22 16:22:31 +0300 |
---|---|---|
committer | Alexander Nozdrin <alik@sun.com> | 2010-02-22 16:22:31 +0300 |
commit | 0ceeeafe85316e594d8ba42a6d0c3c29201944bf (patch) | |
tree | 1d77daf398f43cbe5998ff4f0676165e6808927c /scripts | |
parent | 7a9f2e57e3325a56434704e9ba9fc4f424678a0b (diff) | |
parent | 4836199d701af05a9c89563b642c51ee5640e804 (diff) | |
download | mariadb-git-0ceeeafe85316e594d8ba42a6d0c3c29201944bf.tar.gz |
Manual merge from mysql-next-mr.
Conflicts:
- mysql-test/r/mysqld--help-notwin.result
- mysql-test/r/mysqld--help-win.result
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/CMakeLists.txt | 356 | ||||
-rw-r--r-- | scripts/Makefile.am | 2 | ||||
-rw-r--r-- | scripts/mysqld_safe.sh | 7 |
3 files changed, 317 insertions, 48 deletions
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index 25cdae2b522..315103db4b0 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -13,65 +13,327 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# Build mysql_fix_privilege_tables.sql -ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables.sql - COMMAND copy /b - mysql_system_tables.sql + mysql_system_tables_fix.sql - mysql_fix_privilege_tables.sql - DEPENDS - ${PROJECT_SOURCE_DIR}/scripts/mysql_system_tables.sql - ${PROJECT_SOURCE_DIR}/scripts/mysql_system_tables_fix.sql) # Build comp_sql - used for embedding SQL in C or C++ programs -ADD_EXECUTABLE(comp_sql comp_sql.c) -TARGET_LINK_LIBRARIES(comp_sql dbug mysys strings) +IF(NOT CMAKE_CROSSCOMPILING) + ADD_EXECUTABLE(comp_sql comp_sql.c) + TARGET_LINK_LIBRARIES(comp_sql) +ENDIF() -# Use comp_sql to build mysql_fix_privilege_tables_sql.c -GET_TARGET_PROPERTY(COMP_SQL_EXE comp_sql LOCATION) +SET(FIX_PRIVS_IN + ${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql + ${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_fix.sql +) +SET(FIX_PRIVILEGES_SQL + ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables.sql +) -ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables_sql.c - COMMAND ${COMP_SQL_EXE} - mysql_fix_privilege_tables - mysql_fix_privilege_tables.sql - mysql_fix_privilege_tables_sql.c - DEPENDS comp_sql ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables.sql) +# Build mysql_fix_privilege_tables.sql (concatenate 2 sql scripts) +FILE(WRITE ${FIX_PRIVILEGES_SQL} "") +FOREACH(FILENAME ${FIX_PRIVS_IN}) + FILE(READ "${FILENAME}" CONTENTS) + FILE(APPEND ${FIX_PRIVILEGES_SQL} "${CONTENTS}") +ENDFOREACH() -# Add dummy target for the above to be built + +# Build mysql_fix_privilege_tables.c +ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables_sql.c + COMMAND comp_sql + mysql_fix_privilege_tables + mysql_fix_privilege_tables.sql + mysql_fix_privilege_tables_sql.c + DEPENDS comp_sql + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +# Add target for the above to be built ADD_CUSTOM_TARGET(GenFixPrivs - ALL - DEPENDS ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables_sql.c) + ALL + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables_sql.c +) + +IF(UNIX) + FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution + "cd ${CMAKE_BINARY_DIR} && ${CMAKE_CPACK_COMMAND} -G TGZ --config CPackConfig.cmake" ) + EXECUTE_PROCESS( + COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution +) +ENDIF() + +INSTALL(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql + ${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} +) + +# TCMalloc hacks +IF($ENV{MALLOC_LIB}) + SET(MALLOC_LIB $ENV{MALLOC_LIB} CACHE STRING "malloc library") +ENDIF() + +IF(MALLOC_LIB) + INSTALL(FILES ${MALLOC_LIB} DESTINATION lib OPTIONAL) +ENDIF() + +IF(CMAKE_GENERATOR MATCHES "Makefiles") + # No multiconfig build - use CMAKE_C_FLAGS + SET(CFLAGS "@CMAKE_C_FLAGS@") + SET(CXXFLAGS "@CMAKE_CXX_FLAGS@") +ELSE() + # Multiconfig build - use CMAKE_C_FLAGS_RELWITHDEBINFO + SET(CFLAGS "@CMAKE_C_FLAGS_RELWITHDEBINFO@") + SET(CXXFLAGS "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@") +ENDIF() + +IF(UNIX) + # FIND_PROC and CHECK_PID are used by mysqld_safe +IF(CMAKE_SYSTEM_NAME MATCHES "Linux") + SET (FIND_PROC + "ps wwwp $PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" > /dev/null") +ENDIF() +IF(NOT FIND_PROC AND CMAKE_SYSTEM_NAME MATCHES "SunOS") + SET (FIND_PROC + "ps -p $PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" > /dev/null") +ENDIF() + +IF(NOT FIND_PROC) + # BSD style + EXECUTE_PROCESS(COMMAND ps -uaxww OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result) + IF(result MATCHES 0) + SET( FIND_PROC + "ps -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- "\$MYSQLD\" | grep \" $PID \" > /dev/null") + ENDIF() +ENDIF() + +IF(NOT FIND_PROC) + # SysV style + EXECUTE_PROCESS(COMMAND ps -ef OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result) + IF(result MATCHES 0) + SET( FIND_PROC "ps -ef | grep -v \" grep\" | grep -v mysqld_safe | grep -- "\$MYSQLD\" | grep \" $PID \" > /dev/null") + ENDIF() +ENDIF() + +EXECUTE_PROCESS(COMMAND sh -c "kill -0 $$" OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result2) +IF(result3 MATCHES 0) + SET(CHECK_PID "kill -0 $PID > /dev/null 2> /dev/null") +ELSE() + EXECUTE_PROCESS(COMMAND sh -c "kill -s 0 $$" OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result3) + IF(result4 MATCHES 0) + SET(CHECK_PID "kill -s 0 $PID > /dev/null 2> /dev/null") + ELSE() + SET(CHECK_PID "kill -s SIGCONT $PID > /dev/null 2> /dev/null") + ENDIF() +ENDIF() + +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. + +IF(INSTALL_LAYOUT MATCHES "STANDALONE") + SET(prefix ".") +ELSE() + SET(prefix "${CMAKE_INSTALL_PREFIX}") +ENDIF() + +SET(bindir ${prefix}/${INSTALL_BINDIR}) +SET(sbindir ${prefix}/${INSTALL_SBINDIR}) +SET(scriptdir ${prefix}/${INSTALL_BINDIR}) +SET(libexecdir ${prefix}/${INSTALL_SBINDIR}) +SET(pkgdatadir ${prefix}/${INSTALL_MYSQLSHAREDIR}) +IF(INSTALL_LAYOUT MATCHES "STANDALONE") + SET(localstatedir ${prefix}/data) +ELSE() + SET(localstatedir ${MYSQL_DATADIR}) +ENDIF() + +IF(UNIX) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_install_db.sh + ${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db ESCAPE_QUOTES @ONLY) + SET(DEST ${INSTALL_SCRIPTDIR}) + SET(EXT) +ELSE() + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_install_db.pl.in + ${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db.pl ESCAPE_QUOTES @ONLY) + SET(DEST ${INSTALL_SCRIPTDIR}) + SET(EXT ".pl") +ENDIF() + +INSTALL(FILES + "${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 + ) + + +SET(prefix "${CMAKE_INSTALL_PREFIX}") +SET(sysconfdir ${prefix}) +SET(bindir ${prefix}/${INSTALL_BINDIR}) +SET(libexecdir ${prefix}/${INSTALL_SBINDIR}) +SET(scriptdir ${prefix}/${INSTALL_BINDIR}) +SET(datadir ${prefix}/${INSTALL_MYSQLSHAREDIR}) +SET(pkgdatadir ${prefix}/${INSTALL_MYSQLSHAREDIR}) +SET(pkgincludedir ${prefix}/${INSTALL_INCLUDEDIR}) +SET(pkglibdir ${prefix}/${INSTALL_LIBDIR}) +SET(pkgplugindir ${prefix}/${INSTALL_PLUGINDIR}) +SET(localstatedir ${MYSQL_DATADIR}) + +# some scripts use @TARGET_LINUX@ +IF(CMAKE_SYSTEM_NAME MATCHES "Linux") + SET(TARGET_LINUX 1) +ELSE() + SET(TARGET_LINUX 0) +ENDIF() + +# Use cmake variables to inspect dependencies for +# mysqlclient library (add -l stuff) +SET(CLIENT_LIBS "") +SET(LIBS "") + +# Avoid compatibility warning about lists with empty elements +IF(POLICY CMP0011) + CMAKE_POLICY(SET CMP0011 NEW) +ENDIF() +IF(POLICY CMP0007) + CMAKE_POLICY(SET CMP0007 OLD) +ENDIF() + +LIST(REMOVE_ITEM mysqlclient_LIB_DEPENDS "") +LIST(REMOVE_DUPLICATES mysqlclient_LIB_DEPENDS) +FOREACH(lib ${mysqlclient_LIB_DEPENDS}) + # Filter out "general", it is not a library, just CMake hint + IF(NOT lib STREQUAL "general" AND NOT CLIENT_LIBS MATCHES "-l${lib} ") + IF (lib MATCHES "^\\-l") + SET(CLIENT_LIBS "${CLIENT_LIBS} ${lib} ") + ELSEIF(lib MATCHES "^/") + # Full path, convert to just filename, strip "lib" prefix and extension + GET_FILENAME_COMPONENT(lib "${lib}" NAME_WE) + STRING(REGEX REPLACE "^lib" "" lib "${lib}") + SET(CLIENT_LIBS "${CLIENT_LIBS}-l${lib} " ) + ELSE() + SET(CLIENT_LIBS "${CLIENT_LIBS}-l${lib} " ) + ENDIF() + ENDIF() +ENDFOREACH() + + +IF(LIBDL AND NOT LIBDL MATCHES "-l") + SET(LIBDL "-l${LIBDL}") +ENDIF() + +IF(LIBWRAP) + SET(WRAPLIBS "-lwrap") +ENDIF() + +SET(LIBS "${CLIENT_LIBS}") + +IF(LIBCRYPT) + SET(LIBS "${LIBS} -l${LIBCRYPT}") +ENDIF() -# ---------------------------------------------------------------------- -# Replace some variables @foo@ in the .in/.sh file, and write the new script -# ---------------------------------------------------------------------- +IF(MSVC) + STRING(REPLACE "-l" "" CLIENT_LIBS "${CLIENT_LIBS}") + STRING(REPLACE "-l" "" LIBS "${LIBS}" ) +ENDIF() -SET(CFLAGS "-D_WINDOWS ${CMAKE_C_FLAGS_RELWITHDEBINFO}") -SET(prefix "${CMAKE_INSTALL_PREFIX}/MySQL Server ${MYSQL_BASE_VERSION}") -SET(sysconfdir ${prefix}) -SET(bindir ${prefix}/bin) -SET(libexecdir ${prefix}/bin) -SET(scriptdir ${prefix}/bin) -SET(datadir ${prefix}/share) -SET(pkgdatadir ${prefix}/share) -SET(localstatedir ${prefix}/data) +SET(NON_THREADED_LIBS ${CLIENT_LIBS}) -CONFIGURE_FILE(mysql_config.pl.in - scripts/mysql_config.pl ESCAPE_QUOTES @ONLY) +IF(WIN32) + # On Windows, some .sh and some .pl.in files are configured + # The resulting files will have .pl extension (those are perl scripts) -CONFIGURE_FILE(mysql_convert_table_format.sh - scripts/mysql_convert_table_format.pl ESCAPE_QUOTES @ONLY) + # Input files with pl.in extension + SET(PLIN_FILES mysql_config mysql_secure_installation) + # Input files with .sh extension -CONFIGURE_FILE(mysql_install_db.pl.in - scripts/mysql_install_db.pl ESCAPE_QUOTES @ONLY) + SET(SH_FILES mysql_convert_table_format mysqld_multi) -CONFIGURE_FILE(mysql_secure_installation.pl.in - scripts/mysql_secure_installation.pl ESCAPE_QUOTES @ONLY) + 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 + ) + ENDFOREACH() -CONFIGURE_FILE(mysqld_multi.sh - scripts/mysqld_multi.pl ESCAPE_QUOTES @ONLY) + 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 + ) + ENDFOREACH() +ELSE() + # On Unix, most of the files end up in the bin directory + SET(BIN_SCRIPTS + msql2mysql + mysql_config + mysql_fix_extensions + mysql_setpermission + mysql_secure_installation + mysql_zap + mysqlaccess + mysqlbug + mysql_convert_table_format + mysql_find_rows + mysqlhotcopy + mysqldumpslow + mysqld_multi + mysqlaccess + mysqlaccess.conf + mysqld_safe + ) + FOREACH(file ${BIN_SCRIPTS}) + IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh + ${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY) + ELSEIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file} + ${CMAKE_CURRENT_BINARY_DIR}/${file} COPYONLY) + 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 + ) + ENDFOREACH() +ENDIF() -CONFIGURE_FILE(mysqldumpslow.sh - scripts/mysqldumpslow.pl ESCAPE_QUOTES @ONLY) +# Install libgcc as mylibgcc.a +IF(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_FLAGS MATCHES "-static") + EXECUTE_PROCESS ( + COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} + ${CMAKE_CXX_FLAGS} --print-libgcc + OUTPUT_VARIABLE LIBGCC_LOCATION + RESULT_VARIABLE RESULT + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + IF(${RESULT} EQUAL 0 AND EXISTS ${LIBGCC_LOCATION}) + INSTALL(FILES "${LIBGCC_LOCATION}" DESTINATION ${INSTALL_LIBDIR}) + ENDIF() +ENDIF() -CONFIGURE_FILE(mysqlhotcopy.sh - scripts/mysqlhotcopy.pl ESCAPE_QUOTES @ONLY) diff --git a/scripts/Makefile.am b/scripts/Makefile.am index cd758370388..dac073d00c1 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -69,7 +69,7 @@ EXTRA_DIST = $(EXTRA_SCRIPTS) \ make_win_bin_dist \ mysql_fix_privilege_tables_sql.c \ mysql_system_tables_fix.sql \ - CMakeLists.txt + CMakeLists.txt dist_pkgdata_DATA = fill_help_tables.sql \ mysql_fix_privilege_tables.sql \ diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index 70b9b9f630e..f08e870d5e0 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -361,6 +361,9 @@ then if test -x "$MY_BASEDIR_VERSION/libexec/mysqld" then ledir="$MY_BASEDIR_VERSION/libexec" + elif test -x "$MY_BASEDIR_VERSION/sbin/mysqld" + then + ledir="$MY_BASEDIR_VERSION/sbin" else ledir="$MY_BASEDIR_VERSION/bin" fi @@ -373,6 +376,10 @@ elif test -f "$relpkgdata"/english/errmsg.sys -a -x "$MY_PWD/libexec/mysqld" then MY_BASEDIR_VERSION="$MY_PWD" # Where libexec, share and var are ledir="$MY_PWD/libexec" # Where mysqld is +elif test -f "$relpkgdata"/english/errmsg.sys -a -x "$MY_PWD/sbin/mysqld" +then + MY_BASEDIR_VERSION="$MY_PWD" # Where sbin, share and var are + ledir="$MY_PWD/sbin" # Where mysqld is # Since we didn't find anything, used the compiled-in defaults else MY_BASEDIR_VERSION='@prefix@' |