Skip to content

Commit fe40245

Browse files
committed
Protect resources from different processes using CMake instance trying to write to SCM by locking & releasing examples_tests and zlib directory. Perform tests executing all axes at once with docker. TODO: we could make atomic lock guard per file, though directory is fine as a solution - implement CMake NBL_CONFIGURE_FILE_ATOMIC(*) and NBL_FILE_ATOMIC(*) in future
1 parent 64fb5e2 commit fe40245

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

3rdparty/CMakeLists.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,15 @@ set(_OLD_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
6262
set(_OLD_SKIP_INSTALL_ALL ${SKIP_INSTALL_ALL})
6363
set(BUILD_SHARED_LIBS OFF)
6464
set(SKIP_INSTALL_ALL ON)
65+
6566
add_subdirectory(zlib zlib EXCLUDE_FROM_ALL)
66-
execute_process(COMMAND ${CMAKE_COMMAND} -E rename zconf.h.included zconf.h
67-
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/zlib") # clean zlib git working-tree
67+
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/zlib" DIRECTORY GUARD PROCESS RESULT_VARIABLE NBL_LOCK TIMEOUT 60)
68+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/zlib/zconf.h.included")
69+
execute_process(COMMAND "${CMAKE_COMMAND}" -E rename zconf.h.included zconf.h
70+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/zlib"
71+
) # clean zlib git working-tree
72+
endif()
73+
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/zlib" DIRECTORY RELEASE RESULT_VARIABLE NBL_LOCK)
6874
set(SKIP_INSTALL_ALL ${_OLD_SKIP_INSTALL_ALL})
6975
set(BUILD_SHARED_LIBS ${_OLD_BUILD_SHARED_LIBS})
7076

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,9 @@ add_subdirectory(src/nbl)
347347
add_subdirectory("${NBL_PYTHON_MODULE_ROOT_PATH}" tests) # Python Framework
348348

349349
if(NBL_BUILD_EXAMPLES)
350+
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/examples_tests" DIRECTORY GUARD PROCESS RESULT_VARIABLE NBL_LOCK TIMEOUT 60)
350351
add_subdirectory(examples_tests)
352+
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/examples_tests" DIRECTORY RELEASE RESULT_VARIABLE NBL_LOCK)
351353
endif()
352354

353355
if(NBL_BUILD_DOCS)

0 commit comments

Comments
 (0)