Skip to content

Commit 9bd8682

Browse files
committed
update validation of kernel version & promote to process logic
1 parent c6d23bd commit 9bd8682

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

tools/nsc/CMakeLists.txt

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -157,29 +157,34 @@ set(NBL_DOCKER_NSC_COMPILER_CONFIG_OUTPUT "${NBL_DOCKER_CTX_DIR}/hlsl.local.prop
157157
string(GENEX_STRIP "${NBL_PACKAGE_RUNTIME_EXE_DIR_PATH}" NBL_RELATIVE_ENTRY)
158158
set(OUTPUT_CONFIG_FILE $<PATH:NORMAL_PATH,${NBL_DOCKER_NSC_COMPILER_CONFIG_OUTPUT}>)
159159

160-
function(PROMOTE_PROCESS_ISOLATION HOST_KERNEL BASE VAR)
160+
function(PROMOTE_PROCESS_ISOLATION BASE VAR)
161161
set(${VAR} True)
162162

163163
macro(INSPECT IMAGE)
164-
execute_process(COMMAND "${DOCKER_EXE}" inspect --format={{.OsVersion}} ${IMAGE}
165-
RESULT_VARIABLE EXIT_LEVEL
164+
execute_process(COMMAND "${DOCKER_EXE}" inspect --format={{.OsVersion}} ${IMAGE}
165+
RESULT_VARIABLE INSPECTION_OK
166166
OUTPUT_VARIABLE TARGET_KERNEL
167167
OUTPUT_STRIP_TRAILING_WHITESPACE
168168
)
169169
endmacro()
170170

171171
macro(TO_PROCESS IMAGE TARGET_KERNEL)
172-
if(${HOST_KERNEL} VERSION_LESS ${TARGET_KERNEL})
173-
set(${VAR} False)
174-
message(STATUS "Host kernel \"${HOST_KERNEL}\" version too low to promote process isolation with \"${IMAGE}\" [${TARGET_KERNEL}] and requires falling back to HyperV. Please update your host OS.")
172+
execute_process(COMMAND "${DOCKER_EXE}" run --rm --isolation process --entrypoint cmd ${BASE} /K
173+
RESULT_VARIABLE PROCESS_ISOLATION_OK
174+
OUTPUT_QUIET ERROR_QUIET
175+
)
176+
177+
if(${PROCESS_ISOLATION_OK} EQUAL 0)
178+
message(STATUS "Promoting \"${IMAGE}\" [${TARGET_KERNEL}] to process isolation")
175179
else()
176-
message(STATUS "\"${IMAGE}\" [${TARGET_KERNEL}] can be promoted to process isolation with host kernel [${HOST_KERNEL}] version")
180+
set(${VAR} False)
181+
message(STATUS "Cannot promote \"${IMAGE}\" [${TARGET_KERNEL}] to process isolation, requires falling back to HyperV. Please update your docker host OS.")
177182
endif()
178183
endmacro()
179184

180185
INSPECT(${BASE})
181186

182-
if(${EXIT_LEVEL} EQUAL 0)
187+
if(${INSPECTION_OK} EQUAL 0)
183188
TO_PROCESS(${BASE} ${TARGET_KERNEL})
184189
else()
185190
message(STATUS "\"${BASE}\" not found in local registry, pulling...")
@@ -192,9 +197,7 @@ function(PROMOTE_PROCESS_ISOLATION HOST_KERNEL BASE VAR)
192197
set(${VAR} ${${VAR}} PARENT_SCOPE)
193198
endfunction()
194199

195-
execute_process(COMMAND cmd /C ver OUTPUT_VARIABLE PIPE OUTPUT_STRIP_TRAILING_WHITESPACE)
196-
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+" HOST_KERNEL "${PIPE}")
197-
PROMOTE_PROCESS_ISOLATION(${HOST_KERNEL} ${BASE_IMAGE} USE_PROCESS_ISOLATION)
200+
PROMOTE_PROCESS_ISOLATION(${BASE_IMAGE} USE_PROCESS_ISOLATION)
198201

199202
if(NOT USE_PROCESS_ISOLATION)
200203
# NOTE: we would need to use GET_RUNTIME_DEPENDENCIES which uses objdump

0 commit comments

Comments
 (0)