@@ -20,6 +20,7 @@ set(LLAMA_UI_GZIP "" CACHE STRING "Apply gzip compress to assets to save ban
2020
2121set (DIST_DIR "${UI_BINARY_DIR } /dist" )
2222set (SRC_DIST_DIR "${UI_SOURCE_DIR } /dist" )
23+ set (WORK_DIR "${UI_BINARY_DIR } /ui-src" )
2324set (STAMP_FILE "${UI_BINARY_DIR } /.ui-stamp" )
2425set (UI_CPP "${UI_BINARY_DIR } /ui.cpp" )
2526set (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 )
6566endfunction ()
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+
6784function (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