mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
refactor submodule.cmake to fetch less
don't update all submodules automatically, only update those that are actually used by the build
This commit is contained in:
@@ -45,7 +45,7 @@ SET(CLIENT_PLUGIN_PVIO_SHMEM STATIC)
|
||||
SET(CLIENT_PLUGIN_PVIO_SOCKET STATIC)
|
||||
|
||||
MESSAGE("== Configuring MariaDB Connector/C")
|
||||
ADD_SUBDIRECTORY(libmariadb)
|
||||
ADD_SUBMODULE_SUBDIRECTORY(libmariadb)
|
||||
|
||||
IF(MSVC AND TARGET mariadb_obj AND TARGET mariadbclient)
|
||||
# With MSVC, do not produce LTCG-compiled static client libraries.
|
||||
|
||||
@@ -62,6 +62,7 @@ MACRO (MYSQL_USE_BUNDLED_SSL)
|
||||
SET(HAVE_des ON CACHE INTERNAL "wolfssl does support DES API")
|
||||
SET(HAVE_hkdf ON CACHE INTERNAL "wolfssl does support EVP_PKEY API")
|
||||
CHANGE_SSL_SETTINGS("bundled")
|
||||
ADD_SUBMODULE(extra/wolfssl/wolfssl)
|
||||
ADD_SUBDIRECTORY(extra/wolfssl)
|
||||
MESSAGE_ONCE(SSL_LIBRARIES "SSL_LIBRARIES = ${SSL_LIBRARIES}")
|
||||
ENDMACRO()
|
||||
|
||||
@@ -1,50 +1,54 @@
|
||||
# update submodules automatically
|
||||
|
||||
OPTION(UPDATE_SUBMODULES "Update submodules automatically" ON)
|
||||
IF(NOT UPDATE_SUBMODULES)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
IF(GIT_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||
IF(NOT UPDATE_SUBMODULES)
|
||||
SET(SUBMODULE_UPDATE_CONFIG_MESSAGE "Disabled by -DUPDATE_SUBMODULES=OFF")
|
||||
ELSEIF(NOT GIT_EXECUTABLE)
|
||||
SET(SUBMODULE_UPDATE_CONFIG_MESSAGE "git executable was not found")
|
||||
ELSEIF(NOT EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||
SET(SUBMODULE_UPDATE_CONFIG_MESSAGE "Not inside a git repository")
|
||||
ELSE()
|
||||
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" config --get cmake.update-submodules
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
OUTPUT_VARIABLE cmake_update_submodules
|
||||
OUTPUT_VARIABLE CMAKE_UPDATE_SUBMODULES
|
||||
RESULT_VARIABLE git_config_get_result)
|
||||
IF(cmake_update_submodules MATCHES no)
|
||||
IF(CMAKE_UPDATE_SUBMODULES MATCHES no)
|
||||
SET(update_result 0)
|
||||
SET(SUBMODULE_UPDATE_CONFIG_MESSAGE
|
||||
"\n\nTo update submodules automatically, set cmake.update-submodules to 'yes', or 'force' to update automatically:
|
||||
${GIT_EXECUTABLE} config cmake.update-submodules yes")
|
||||
SET(SUBMODULE_UPDATE_CONFIG_MESSAGE "Disabled by git config. To enable set cmake.update-submodules to 'yes', or 'force': ${GIT_EXECUTABLE} config cmake.update-submodules yes")
|
||||
ELSEIF(git_config_get_result EQUAL 128)
|
||||
SET(update_result 0)
|
||||
ELSE()
|
||||
SET(UPDATE_SUBMODULES_COMMAND
|
||||
"${GIT_EXECUTABLE}" submodule update --init --recursive)
|
||||
# Old Git may not work with "--depth 1".
|
||||
# See also: https://github.com/git/git/commit/fb43e31f2b43076e7a30c9cd00d0241cb8cf97eb
|
||||
IF(NOT GIT_VERSION_STRING VERSION_LESS "2.8.0")
|
||||
SET(UPDATE_SUBMODULES_COMMAND ${UPDATE_SUBMODULES_COMMAND} --depth 1)
|
||||
ENDIF()
|
||||
IF(cmake_update_submodules MATCHES force)
|
||||
MESSAGE(STATUS "Updating submodules (forced)")
|
||||
EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND} --force
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RESULT_VARIABLE update_result)
|
||||
ELSEIF(cmake_update_submodules MATCHES yes)
|
||||
EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND}
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RESULT_VARIABLE update_result)
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Updating submodules")
|
||||
EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND}
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RESULT_VARIABLE update_result)
|
||||
ENDIF()
|
||||
SET(SUBMODULE_UPDATE_CONFIG_MESSAGE "Git executable ${GIT_EXECUTABLE} failed to run")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(update_result OR NOT EXISTS ${CMAKE_SOURCE_DIR}/libmariadb/CMakeLists.txt)
|
||||
MESSAGE(FATAL_ERROR "No MariaDB Connector/C! Run
|
||||
${GIT_EXECUTABLE} submodule update --init --recursive
|
||||
Then restart the build.${SUBMODULE_UPDATE_CONFIG_MESSAGE}")
|
||||
ENDIF()
|
||||
FUNCTION(ADD_SUBMODULE dir)
|
||||
IF (ARGV1)
|
||||
SET(file "${ARGV1}")
|
||||
ELSE()
|
||||
SET(file CMakeLists.txt)
|
||||
ENDIF()
|
||||
IF(SUBMODULE_UPDATE_CONFIG_MESSAGE)
|
||||
IF(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/${file})
|
||||
MESSAGE(FATAL_ERROR "Cannot download ${CMAKE_CURRENT_SOURCE_DIR}/${dir} submodule: ${SUBMODULE_UPDATE_CONFIG_MESSAGE}")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Downloading ${CMAKE_CURRENT_SOURCE_DIR}/${dir} submodule...")
|
||||
SET(UPDATE_SUBMODULES_COMMAND
|
||||
"${GIT_EXECUTABLE}" submodule update --init --recursive --depth 1)
|
||||
IF(CMAKE_UPDATE_SUBMODULES MATCHES force)
|
||||
EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND} --force ${dir}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
RESULT_VARIABLE update_result)
|
||||
ELSE()
|
||||
EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND} ${dir}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
RESULT_VARIABLE update_result)
|
||||
ENDIF()
|
||||
IF(update_result OR NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/${file})
|
||||
MESSAGE(FATAL_ERROR "Failed to download ${CMAKE_CURRENT_SOURCE_DIR}/${dir} submodule")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
MACRO(ADD_SUBMODULE_SUBDIRECTORY dir)
|
||||
ADD_SUBMODULE(${dir})
|
||||
ADD_SUBDIRECTORY(${dir})
|
||||
ENDMACRO()
|
||||
|
||||
@@ -35,12 +35,8 @@ IF(WITH_WSREP)
|
||||
# Set the patch version
|
||||
SET(WSREP_PATCH_VERSION "22")
|
||||
|
||||
IF(NOT EXISTS "${CMAKE_SOURCE_DIR}/wsrep-lib/wsrep-API/v26/wsrep_api.h")
|
||||
MESSAGE(FATAL_ERROR "No MariaDB wsrep-API code! Run
|
||||
${GIT_EXECUTABLE} submodule update --init --recursive
|
||||
Then restart the build.
|
||||
")
|
||||
ENDIF()
|
||||
ADD_SUBMODULE(wsrep-lib)
|
||||
|
||||
# Obtain wsrep API version
|
||||
FILE(STRINGS "${CMAKE_SOURCE_DIR}/wsrep-lib/wsrep-API/v26/wsrep_api.h" WSREP_API_VERSION
|
||||
LIMIT_COUNT 1 REGEX "WSREP_INTERFACE_VERSION")
|
||||
|
||||
@@ -56,7 +56,7 @@ CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" OR
|
||||
CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
MY_CHECK_AND_SET_COMPILER_FLAG("-fno-lto")
|
||||
SET(PCRE_INCLUDES "${PCRE_INCLUDE_DIRS}")
|
||||
add_subdirectory(columnstore)
|
||||
add_submodule_subdirectory(columnstore)
|
||||
|
||||
IF(TARGET columnstore)
|
||||
# Redo logic in cmake/plugin to prevent the attempted creation of *Symlinks package
|
||||
|
||||
@@ -25,13 +25,6 @@
|
||||
SET(DUCKDB_SUBMODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_parties/duckdb")
|
||||
SET(DUCKDB_INCLUDE_DIR "${DUCKDB_SUBMODULE_DIR}/src/include")
|
||||
|
||||
IF(NOT EXISTS "${DUCKDB_SUBMODULE_DIR}/CMakeLists.txt")
|
||||
MESSAGE(FATAL_ERROR
|
||||
"DuckDB submodule not found at ${DUCKDB_SUBMODULE_DIR}\n"
|
||||
"Run: git submodule update --init ${DUCKDB_SUBMODULE_DIR}"
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(ExternalProject)
|
||||
|
||||
# Map MariaDB build type to a DuckDB-friendly one.
|
||||
@@ -56,6 +49,7 @@ SET(_DUCKDB_STATIC_LIBS
|
||||
)
|
||||
|
||||
MESSAGE(STATUS "=== Building DuckDB from submodule (${DUCKDB_SUBMODULE_DIR}) ===")
|
||||
ADD_SUBMODULE(third_parties/duckdb)
|
||||
|
||||
ExternalProject_Add(duckdb_build
|
||||
PREFIX "${_DUCKDB_BUILD_DIR}"
|
||||
|
||||
@@ -131,6 +131,7 @@ SET(CPACK_RPM_s3-engine_PACKAGE_SUMMARY "Amazon S3 archival storage engine for M
|
||||
SET(CPACK_RPM_s3-engine_PACKAGE_DESCRIPTION "The S3 storage engine allows one to archive MariaDB tables in Amazon S3 (or any third-party public or private cloud that implements S3 API), but still have them accessible in MariaDB in read-only mode." PARENT_SCOPE)
|
||||
|
||||
IF(TARGET s3)
|
||||
ADD_SUBMODULE(libmarias3 Makefile.am)
|
||||
MYSQL_ADD_EXECUTABLE(aria_s3_copy aria_s3_copy.cc ${S3_SOURCES} COMPONENT s3-engine)
|
||||
TARGET_LINK_LIBRARIES(aria_s3_copy aria myisam mysys mysys_ssl ${CURL_LIBRARIES} ${ZLIB_LIBRARIES})
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libmarias3)
|
||||
|
||||
@@ -163,6 +163,8 @@ IF(NOT TARGET rocksdb)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
ADD_SUBMODULE(rocksdb)
|
||||
|
||||
INSTALL_MANPAGES(rocksdb-engine mariadb-ldb.1 myrocks_hotbackup.1)
|
||||
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
|
||||
Reference in New Issue
Block a user