]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | set(MGR_DASHBOARD_VIRTUALENV ${CEPH_BUILD_VIRTUALENV}/mgr-dashboard-virtualenv) |
2 | ||
3 | add_custom_target(mgr-dashboard-test-venv | |
4 | COMMAND | |
5 | ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${MGR_PYTHON_EXECUTABLE} ${MGR_DASHBOARD_VIRTUALENV} | |
6 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard | |
7 | COMMENT "dashboard tests virtualenv is being created") | |
8 | add_dependencies(tests mgr-dashboard-test-venv) | |
9 | ||
10 | include(CMakeParseArguments) | |
11 | function(add_npm_command) | |
12 | set(options NODEENV) | |
13 | set(single_kw OUTPUT COMMENT WORKING_DIRECTORY) | |
14 | set(multi_kw COMMAND DEPENDS) | |
15 | cmake_parse_arguments(NC "${options}" "${single_kw}" "${multi_kw}" ${ARGN}) | |
16 | string(REPLACE ";" " " command "${NC_COMMAND}") | |
17 | if(NC_NODEENV) | |
18 | string(REGEX REPLACE "^(npm .*)$" ". ${mgr-dashboard-nodeenv-dir}/bin/activate && \\1 && deactivate" command ${command}) | |
19 | endif() | |
20 | string(REPLACE " " ";" command "${command}") | |
21 | add_custom_command( | |
22 | OUTPUT "${NC_OUTPUT}" | |
23 | COMMAND ${command} | |
24 | DEPENDS ${NC_DEPENDS} | |
25 | WORKING_DIRECTORY "${NC_WORKING_DIRECTORY}" | |
26 | COMMENT ${NC_COMMENT}) | |
27 | endfunction(add_npm_command) | |
28 | ||
29 | if(WITH_MGR_DASHBOARD_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM") | |
30 | ||
31 | if(WITH_SYSTEM_NPM) | |
32 | set(mgr-dashboard-nodeenv-dir ) | |
33 | set(nodeenv "") | |
34 | add_custom_target(mgr-dashboard-frontend-deps | |
35 | DEPENDS frontend/node_modules | |
36 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend | |
37 | ) | |
38 | else() | |
39 | set(mgr-dashboard-nodeenv-dir ${CMAKE_CURRENT_BINARY_DIR}/node-env) | |
40 | set(nodeenv NODEENV) | |
41 | ||
42 | add_custom_command( | |
43 | OUTPUT "${mgr-dashboard-nodeenv-dir}/bin/npm" | |
44 | COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${MGR_PYTHON_EXECUTABLE} ${mgr-dashboard-nodeenv-dir} | |
45 | COMMAND ${mgr-dashboard-nodeenv-dir}/bin/pip install nodeenv | |
46 | COMMAND ${mgr-dashboard-nodeenv-dir}/bin/nodeenv -p --node=10.13.0 | |
47 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} | |
48 | COMMENT "dashboard nodeenv is being installed" | |
49 | ) | |
50 | add_custom_target(mgr-dashboard-nodeenv | |
51 | DEPENDS ${mgr-dashboard-nodeenv-dir}/bin/npm | |
52 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} | |
53 | ) | |
54 | add_custom_target(mgr-dashboard-frontend-deps | |
55 | DEPENDS frontend/node_modules mgr-dashboard-nodeenv | |
56 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend | |
57 | ) | |
58 | endif() | |
59 | ||
60 | add_npm_command( | |
61 | OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/node_modules" | |
62 | COMMAND npm ci | |
63 | DEPENDS frontend/package.json | |
64 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend | |
65 | COMMENT "dashboard frontend dependencies are being installed" | |
66 | ${nodeenv} | |
67 | ) | |
68 | ||
69 | # Glob some frontend files. With CMake 3.6, this can be simplified | |
70 | # to *.ts *.html. Just add: | |
71 | # list(FILTER frontend_src INCLUDE REGEX "frontend/src") | |
72 | file( | |
73 | GLOB_RECURSE frontend_src | |
74 | frontend/src/*.ts | |
75 | frontend/src/*.html | |
76 | frontend/src/*/*.ts | |
77 | frontend/src/*/*.html | |
78 | frontend/src/*/*/*.ts | |
79 | frontend/src/*/*/*.html | |
80 | frontend/src/*/*/*/*.ts | |
81 | frontend/src/*/*/*/*.html | |
82 | frontend/src/*/*/*/*/*.ts | |
83 | frontend/src/*/*/*/*/*.html | |
84 | frontend/src/*/*/*/*/*/*.ts | |
85 | frontend/src/*/*/*/*/*/*.html) | |
86 | ||
87 | if(NOT CMAKE_BUILD_TYPE STREQUAL Debug) | |
88 | set(npm_command npm run build -- --prod --progress=false) | |
89 | else() | |
90 | set(npm_command npm run build -- --progress=false) | |
91 | endif() | |
92 | ||
93 | add_npm_command( | |
94 | OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/dist" | |
95 | COMMAND ${npm_command} | |
96 | DEPENDS ${frontend_src} frontend/node_modules | |
97 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend | |
98 | COMMENT "dashboard frontend is being created" | |
99 | ${nodeenv} | |
100 | ) | |
101 | add_custom_target(mgr-dashboard-frontend-build | |
102 | ALL | |
103 | DEPENDS frontend/dist mgr-dashboard-frontend-deps | |
104 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend) | |
105 | add_dependencies(tests mgr-dashboard-frontend-build) | |
106 | endif(WITH_MGR_DASHBOARD_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM") |