Skip to content

Commit a461efa

Browse files
committed
correct logic and flow of proxy submodule update script, make it finally work, perform tests
1 parent 59fe329 commit a461efa

File tree

1 file changed

+32
-24
lines changed

1 file changed

+32
-24
lines changed

cmake/common.cmake

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,6 +1271,12 @@ endmacro()
12711271

12721272
function(NBL_UPDATE_SUBMODULES)
12731273
ProcessorCount(_GIT_SUBMODULES_JOBS_AMOUNT_)
1274+
1275+
if(NBL_CI_GIT_SUBMODULES_SHALLOW)
1276+
set(NBL_SHALLOW "--depth=1")
1277+
else()
1278+
set(NBL_SHALLOW "")
1279+
endif()
12741280

12751281
macro(NBL_WRAPPER_COMMAND_EXCLUSIVE GIT_RELATIVE_ENTRY GIT_SUBMODULE_PATH SHOULD_RECURSIVE EXCLUDE_SUBMODULE_PATH)
12761282
set(SHOULD_RECURSIVE ${SHOULD_RECURSIVE})
@@ -1280,12 +1286,6 @@ function(NBL_UPDATE_SUBMODULES)
12801286
else()
12811287
set(NBL_EXCLUDE "-c submodule.\"${EXCLUDE_SUBMODULE_PATH}\".update=none")
12821288
endif()
1283-
1284-
if(NBL_CI_GIT_SUBMODULES_SHALLOW)
1285-
set(NBL_SHALLOW "--depth=1")
1286-
else()
1287-
set(NBL_SHALLOW "")
1288-
endif()
12891289

12901290
if(SHOULD_RECURSIVE)
12911291
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,8 +1298,19 @@ function(NBL_UPDATE_SUBMODULES)
12981298
set(_NBL_UPDATE_SUBMODULES_CMD_FILE_ "${NBL_ROOT_PATH_BINARY}/${_NBL_UPDATE_SUBMODULES_CMD_NAME_}.cmd")
12991299
get_filename_component(_NBL_UPDATE_IMPL_CMAKE_FILE_ "${NBL_ROOT_PATH_BINARY}/${_NBL_UPDATE_SUBMODULES_CMD_NAME_}.cmake" ABSOLUTE)
13001300

1301-
set(NBL_IMPL_SCRIPT
1301+
# Proxy script for inclusive submodule updating
1302+
string(APPEND NBL_IMPL_SCRIPT "set(NBL_ROOT_PATH \"${NBL_ROOT_PATH}\")\nset(_GIT_SUBMODULES_JOBS_AMOUNT_ ${_GIT_SUBMODULES_JOBS_AMOUNT_})\nset(GIT_EXECUTABLE \"${GIT_EXECUTABLE}\")\nset(NBL_SHALLOW \"${NBL_SHALLOW}\")\n\n")
1303+
string(APPEND NBL_IMPL_SCRIPT
13021304
[=[
1305+
if(NOT DEFINED GIT_RELATIVE_ENTRY)
1306+
message(FATAL_ERROR "GIT_RELATIVE_ENTRY must be defined to use this script!")
1307+
endif()
1308+
1309+
if(NOT DEFINED INCLUDE_SUBMODULE_PATHS)
1310+
message(FATAL_ERROR "INCLUDE_SUBMODULE_PATHS must be defined to use this script!")
1311+
endif()
1312+
1313+
# update an inclusive submodule first
13031314
execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}" submodule update --init "${GIT_RELATIVE_ENTRY}")
13041315
13051316
if("${INCLUDE_SUBMODULE_PATHS}" STREQUAL "")
@@ -1309,34 +1320,31 @@ else()
13091320
OUTPUT_VARIABLE NBL_OUTPUT_VARIABLE
13101321
)
13111322
1312-
string(REGEX MATCH "submodule\\.(.*)\\.path" extracted_content "${original_string}")
1313-
13141323
string(REGEX REPLACE "\n" ";" NBL_SUBMODULE_CONFIG_LIST "${NBL_OUTPUT_VARIABLE}")
13151324
13161325
foreach(NBL_SUBMODULE_NAME ${NBL_SUBMODULE_CONFIG_LIST})
13171326
string(REGEX MATCH "submodule\\.(.*)\\.path" NBL_SUBMODULE_NAME "${NBL_SUBMODULE_NAME}")
1327+
list(APPEND NBL_ALL_SUBMODULES "${CMAKE_MATCH_1}")
1328+
endforeach()
1329+
1330+
foreach(NBL_SUBMODULE_NAME ${NBL_ALL_SUBMODULES})
13181331
list(FIND INCLUDE_SUBMODULE_PATHS "${NBL_SUBMODULE_NAME}" NBL_FOUND)
1319-
1332+
13201333
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
1334+
list(APPEND NBL_CONFIG_SETUP_CMD "-c;submodule.${NBL_SUBMODULE_NAME}.update=none") # filter submodules - only those on the INCLUDE_SUBMODULE_PATHS list will be updated when recursive update is requested, all left will be skipped
13231335
endif()
13241336
endforeach()
13251337
endif()
13261338
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} ./)
1339+
execute_process(COMMAND "${GIT_EXECUTABLE}" ${NBL_CONFIG_SETUP_CMD} submodule update --init -j ${_GIT_SUBMODULES_JOBS_AMOUNT_} --recursive ${NBL_SHALLOW}
1340+
WORKING_DIRECTORY "${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}"
1341+
)
13341342
]=]
13351343
)
13361344
file(WRITE "${_NBL_UPDATE_IMPL_CMAKE_FILE_}" "${NBL_IMPL_SCRIPT}")
13371345

13381346
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_}\"\n")
1347+
string(APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\"${CMAKE_COMMAND}\" \"-DGIT_RELATIVE_ENTRY=${GIT_RELATIVE_ENTRY}\" \"-DINCLUDE_SUBMODULE_PATHS=${INCLUDE_SUBMODULE_PATHS}\" -P \"${_NBL_UPDATE_IMPL_CMAKE_FILE_}\"\n")
13401348
endmacro()
13411349

13421350
if(NBL_UPDATE_GIT_SUBMODULE)
@@ -1349,7 +1357,7 @@ execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}/${GIT_RELATIVE_
13491357
NBL_WRAPPER_COMMAND_EXCLUSIVE("" ./3rdparty TRUE 3rdparty/boost/superproject)
13501358

13511359
# boost's 3rdaprties, special case
1352-
set(NBL_BOOST_LIBS_TO_INIT ${NBL_BOOST_LIBS} wave)
1360+
set(NBL_BOOST_LIBS_TO_INIT ${NBL_BOOST_LIBS} wave numeric_conversion) # wave and all of its deps, numeric_conversion is nested in conversion submodule (for some reason boostdep tool doesn't output it properly)
13531361
foreach(NBL_TARGET ${NBL_BOOST_LIBS_TO_INIT})
13541362
list(APPEND NBL_BOOST_SUBMODULES_TO_INIT ${NBL_TARGET})
13551363
endforeach()
@@ -1384,9 +1392,7 @@ clear
13841392
sleep 1
13851393
clear
13861394
tput setaf 2; echo -e "Submodules have been updated!
1387-
Created nbl-update-submodules.log in your build directory.
1388-
This window will be closed in 5 seconds..."
1389-
sleep 5
1395+
Created nbl-update-submodules.log in your build directory."
13901396
]=]
13911397
WORKING_DIRECTORY ${NBL_ROOT_PATH_BINARY}
13921398
OUTPUT_VARIABLE _NBL_TMP_OUTPUT_
@@ -1400,6 +1406,8 @@ sleep 5
14001406
else()
14011407
execute_process(COMMAND "${_NBL_UPDATE_SUBMODULES_CMD_FILE_}")
14021408
endif()
1409+
1410+
message(STATUS "Submodules have been updated! Check \"${NBL_ROOT_PATH_BINARY}/nbl-update-submodules.log\" for more details.")
14031411
else()
14041412
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "NBL_UPDATE_GIT_SUBMODULE is turned OFF therefore submodules won't get updated.")
14051413
endif()

0 commit comments

Comments
 (0)