Skip to content

Commit 3217f70

Browse files
committed
cmake : fix ui build with read-only source
1 parent f3e1828 commit 3217f70

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

scripts/ui-assets.cmake

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ set(LLAMA_UI_GZIP "" CACHE STRING "Apply gzip compress to assets to save ban
2020

2121
set(DIST_DIR "${UI_BINARY_DIR}/dist")
2222
set(SRC_DIST_DIR "${UI_SOURCE_DIR}/dist")
23+
set(WORK_DIR "${UI_BINARY_DIR}/ui-src")
2324
set(STAMP_FILE "${UI_BINARY_DIR}/.ui-stamp")
2425
set(UI_CPP "${UI_BINARY_DIR}/ui.cpp")
2526
set(UI_H "${UI_BINARY_DIR}/ui.h")
@@ -64,6 +65,22 @@ function(npm_build_should_skip out_var)
6465
set(${out_var} TRUE PARENT_SCOPE)
6566
endfunction()
6667

68+
function(stage_sources)
69+
if(EXISTS "${WORK_DIR}")
70+
file(GLOB staged RELATIVE "${WORK_DIR}" "${WORK_DIR}/*")
71+
list(REMOVE_ITEM staged "node_modules")
72+
foreach(entry ${staged})
73+
file(REMOVE_RECURSE "${WORK_DIR}/${entry}")
74+
endforeach()
75+
endif()
76+
77+
file(COPY "${UI_SOURCE_DIR}/"
78+
DESTINATION "${WORK_DIR}"
79+
NO_SOURCE_PERMISSIONS
80+
PATTERN "node_modules" EXCLUDE
81+
)
82+
endfunction()
83+
6784
function(npm_build out_var)
6885
set(${out_var} FALSE PARENT_SCOPE)
6986

@@ -89,14 +106,16 @@ function(npm_build out_var)
89106
return()
90107
endif()
91108

109+
stage_sources()
110+
92111
# npm writes node_modules/.package-lock.json on every successful install,
93112
# so a package-lock.json newer than this marker means node_modules is stale
94-
set(NPM_MARKER "${UI_SOURCE_DIR}/node_modules/.package-lock.json")
113+
set(NPM_MARKER "${WORK_DIR}/node_modules/.package-lock.json")
95114
set(need_install FALSE)
96115
if(NOT EXISTS "${NPM_MARKER}")
97116
set(need_install TRUE)
98117
else()
99-
file(TIMESTAMP "${UI_SOURCE_DIR}/package-lock.json" lock_ts)
118+
file(TIMESTAMP "${WORK_DIR}/package-lock.json" lock_ts)
100119
file(TIMESTAMP "${NPM_MARKER}" marker_ts)
101120
if(lock_ts STRGREATER marker_ts)
102121
set(need_install TRUE)
@@ -107,7 +126,7 @@ function(npm_build out_var)
107126
message(STATUS "UI: running npm install")
108127
execute_process(
109128
COMMAND ${NPM_EXECUTABLE} install
110-
WORKING_DIRECTORY "${UI_SOURCE_DIR}"
129+
WORKING_DIRECTORY "${WORK_DIR}"
111130
RESULT_VARIABLE rc
112131
ERROR_VARIABLE err
113132
)
@@ -124,7 +143,7 @@ function(npm_build out_var)
124143
execute_process(
125144
COMMAND ${CMAKE_COMMAND} -E env "LLAMA_UI_OUT_DIR=${DIST_DIR}" "LLAMA_UI_VERSION=${HF_VERSION}" "LLAMA_BUILD_NUMBER=${LLAMA_BUILD_NUMBER}"
126145
${NPM_EXECUTABLE} run build
127-
WORKING_DIRECTORY "${UI_SOURCE_DIR}"
146+
WORKING_DIRECTORY "${WORK_DIR}"
128147
RESULT_VARIABLE rc
129148
ERROR_VARIABLE err
130149
)

0 commit comments

Comments
 (0)