Skip to content

Commit d090422

Browse files
committed
spot a bug with inclusive submodule update, fix it - move inclusive update to separate proxy CMake script to perform the checkout then nested submodule handle. TODO: still have a bug in skipping modules
1 parent 04bf0e8 commit d090422

File tree

1 file changed

+46
-38
lines changed

1 file changed

+46
-38
lines changed

cmake/common.cmake

Lines changed: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,14 +1272,6 @@ endmacro()
12721272
function(NBL_UPDATE_SUBMODULES)
12731273
ProcessorCount(_GIT_SUBMODULES_JOBS_AMOUNT_)
12741274

1275-
macro(NBL_IMPL_SHALLOW_CHECK)
1276-
if(NBL_CI_GIT_SUBMODULES_SHALLOW)
1277-
set(NBL_SHALLOW "--depth=1")
1278-
else()
1279-
set(NBL_SHALLOW "")
1280-
endif()
1281-
endmacro()
1282-
12831275
macro(NBL_WRAPPER_COMMAND_EXCLUSIVE GIT_RELATIVE_ENTRY GIT_SUBMODULE_PATH SHOULD_RECURSIVE EXCLUDE_SUBMODULE_PATH)
12841276
set(SHOULD_RECURSIVE ${SHOULD_RECURSIVE})
12851277

@@ -1289,7 +1281,11 @@ function(NBL_UPDATE_SUBMODULES)
12891281
set(NBL_EXCLUDE "-c submodule.\"${EXCLUDE_SUBMODULE_PATH}\".update=none")
12901282
endif()
12911283

1292-
NBL_IMPL_SHALLOW_CHECK()
1284+
if(NBL_CI_GIT_SUBMODULES_SHALLOW)
1285+
set(NBL_SHALLOW "--depth=1")
1286+
else()
1287+
set(NBL_SHALLOW "")
1288+
endif()
12931289

12941290
if(SHOULD_RECURSIVE)
12951291
string(APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\"${GIT_EXECUTABLE}\" ${NBL_EXCLUDE} -C \"${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}\" submodule update --init -j ${_GIT_SUBMODULES_JOBS_AMOUNT_} --recursive ${NBL_SHALLOW} ${GIT_SUBMODULE_PATH}\n")
@@ -1298,40 +1294,53 @@ function(NBL_UPDATE_SUBMODULES)
12981294
endif()
12991295
endmacro()
13001296

1301-
macro(NBL_WRAPPER_COMMAND_INCLUSIVE GIT_RELATIVE_ENTRY INCLUDE_SUBMODULE_PATHS)
1302-
set(INCLUDE_SUBMODULE_PATHS ${INCLUDE_SUBMODULE_PATHS})
1303-
1304-
if("${INCLUDE_SUBMODULE_PATHS}" STREQUAL "")
1305-
set(NBL_SUBMODULE_UPDATE_CONFIG_ENTRY "")
1306-
else()
1307-
execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}" config --file .gitmodules --get-regexp path
1308-
OUTPUT_VARIABLE NBL_OUTPUT_VARIABLE
1309-
)
1310-
1311-
string(REGEX REPLACE "\n" ";" NBL_SUBMODULE_CONFIG_LIST "${NBL_OUTPUT_VARIABLE}")
1312-
1313-
foreach(NBL_SUBMODULE_PATH ${NBL_SUBMODULE_CONFIG_LIST})
1314-
string(REGEX REPLACE "^[^ ]+ (.*)" "\\1" NBL_SUBMODULE_PATH "${NBL_SUBMODULE_PATH}")
1315-
list(FIND INCLUDE_SUBMODULE_PATHS "${NBL_SUBMODULE_PATH}" NBL_FOUND)
1297+
set(_NBL_UPDATE_SUBMODULES_CMD_NAME_ "nbl-update-submodules")
1298+
set(_NBL_UPDATE_SUBMODULES_CMD_FILE_ "${NBL_ROOT_PATH_BINARY}/${_NBL_UPDATE_SUBMODULES_CMD_NAME_}.cmd")
1299+
get_filename_component(_NBL_UPDATE_IMPL_CMAKE_FILE_ "${NBL_ROOT_PATH_BINARY}/${_NBL_UPDATE_SUBMODULES_CMD_NAME_}.cmake" ABSOLUTE)
1300+
1301+
set(NBL_IMPL_SCRIPT
1302+
[=[
1303+
execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}" submodule update --init "${GIT_RELATIVE_ENTRY}")
13161304
1317-
if("${NBL_FOUND}" STREQUAL "-1")
1318-
string(APPEND NBL_CONFIG_SETUP_CMD "-c submodule.\"${NBL_SUBMODULE_PATH}\".update=none ") # if a submodule is not on the INCLUDE_SUBMODULE_PATHS list of a currently handedled submodule - do not let it to be updated
1319-
endif()
1320-
endforeach()
1321-
1322-
string(REPLACE "\n" "" NBL_CONFIG_SETUP_CMD "${NBL_CONFIG_SETUP_CMD}")
1323-
string(STRIP "${NBL_CONFIG_SETUP_CMD}" NBL_CONFIG_SETUP_CMD)
1305+
if("${INCLUDE_SUBMODULE_PATHS}" STREQUAL "")
1306+
set(NBL_SUBMODULE_UPDATE_CONFIG_ENTRY "")
1307+
else()
1308+
execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}" config --file .gitmodules --get-regexp path
1309+
OUTPUT_VARIABLE NBL_OUTPUT_VARIABLE
1310+
)
1311+
1312+
string(REGEX MATCH "submodule\\.(.*)\\.path" extracted_content "${original_string}")
1313+
1314+
string(REGEX REPLACE "\n" ";" NBL_SUBMODULE_CONFIG_LIST "${NBL_OUTPUT_VARIABLE}")
1315+
1316+
foreach(NBL_SUBMODULE_NAME ${NBL_SUBMODULE_CONFIG_LIST})
1317+
string(REGEX MATCH "submodule\\.(.*)\\.path" NBL_SUBMODULE_NAME "${NBL_SUBMODULE_NAME}")
1318+
list(FIND INCLUDE_SUBMODULE_PATHS "${NBL_SUBMODULE_NAME}" NBL_FOUND)
1319+
1320+
if("${NBL_FOUND}" STREQUAL "-1")
1321+
list(APPEND NBL_CONFIG_SETUP_CMD "-c")
1322+
list(APPEND NBL_CONFIG_SETUP_CMD "submodule.\"${CMAKE_MATCH_1}\".update=none") # if a submodule is not on the INCLUDE_SUBMODULE_PATHS list of a currently handedled submodule - do not let it to be updated
13241323
endif()
1325-
1326-
NBL_IMPL_SHALLOW_CHECK()
1324+
endforeach()
1325+
endif()
1326+
1327+
if(NBL_CI_GIT_SUBMODULES_SHALLOW)
1328+
set(NBL_SHALLOW "--depth=1")
1329+
else()
1330+
set(NBL_SHALLOW "")
1331+
endif()
1332+
1333+
execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}" ${NBL_CONFIG_SETUP_CMD} submodule update --init -j ${_GIT_SUBMODULES_JOBS_AMOUNT_} --recursive ${NBL_SHALLOW} ./)
1334+
]=]
1335+
)
1336+
file(WRITE "${_NBL_UPDATE_IMPL_CMAKE_FILE_}" "${NBL_IMPL_SCRIPT}")
13271337

1328-
string(APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\"${GIT_EXECUTABLE}\" -C \"${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}\" ${NBL_CONFIG_SETUP_CMD} submodule update --init -j ${_GIT_SUBMODULES_JOBS_AMOUNT_} --recursive ${NBL_SHALLOW} ./\n")
1338+
macro(NBL_WRAPPER_COMMAND_INCLUSIVE GIT_RELATIVE_ENTRY INCLUDE_SUBMODULE_PATHS)
1339+
string(APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\"${CMAKE_COMMAND}\" \"-DNBL_ROOT_PATH=${NBL_ROOT_PATH}\" \"-D_GIT_SUBMODULES_JOBS_AMOUNT_=${_GIT_SUBMODULES_JOBS_AMOUNT_}\" \"-DNBL_CI_GIT_SUBMODULES_SHALLOW=${NBL_CI_GIT_SUBMODULES_SHALLOW}\" \"-DGIT_RELATIVE_ENTRY=${GIT_RELATIVE_ENTRY}\" \"-DINCLUDE_SUBMODULE_PATHS=${INCLUDE_SUBMODULE_PATHS}\" \"-DGIT_EXECUTABLE=${GIT_EXECUTABLE}\" -P \"${_NBL_UPDATE_IMPL_CMAKE_FILE_}\"")
13291340
endmacro()
13301341

13311342
if(NBL_UPDATE_GIT_SUBMODULE)
13321343
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "All submodules are about to get updated and initialized in repository because NBL_UPDATE_GIT_SUBMODULE is turned ON!")
1333-
set(_NBL_UPDATE_SUBMODULES_CMD_NAME_ "nbl-update-submodules")
1334-
set(_NBL_UPDATE_SUBMODULES_CMD_FILE_ "${NBL_ROOT_PATH_BINARY}/${_NBL_UPDATE_SUBMODULES_CMD_NAME_}.cmd")
13351344

13361345
include("${THIRD_PARTY_SOURCE_DIR}/boost/dep/wave.cmake")
13371346

@@ -1340,10 +1349,9 @@ function(NBL_UPDATE_SUBMODULES)
13401349
NBL_WRAPPER_COMMAND_EXCLUSIVE("" ./3rdparty TRUE 3rdparty/boost/superproject)
13411350

13421351
# boost's 3rdaprties, special case
1343-
NBL_WRAPPER_COMMAND_EXCLUSIVE(3rdparty/boost ./superproject FALSE "")
13441352
set(NBL_BOOST_LIBS_TO_INIT ${NBL_BOOST_LIBS} wave)
13451353
foreach(NBL_TARGET ${NBL_BOOST_LIBS_TO_INIT})
1346-
list(APPEND NBL_BOOST_SUBMODULES_TO_INIT libs/${NBL_TARGET})
1354+
list(APPEND NBL_BOOST_SUBMODULES_TO_INIT ${NBL_TARGET})
13471355
endforeach()
13481356
NBL_WRAPPER_COMMAND_INCLUSIVE(3rdparty/boost/superproject "${NBL_BOOST_SUBMODULES_TO_INIT}")
13491357

0 commit comments

Comments
 (0)