From: Ricardo Dias Date: Mon, 30 Sep 2019 14:52:40 +0000 (+0100) Subject: cmake: dashboard: support locale-dependent frontend builds X-Git-Tag: v14.2.5~16^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8f8e76444e654d29830a178be0e42e45db0e7526;p=ceph.git cmake: dashboard: support locale-dependent frontend builds Fixes: https://tracker.ceph.com/issues/41988 Signed-off-by: Ricardo Dias (cherry picked from commit 3fe39d4899f909d4db8bb3fbc1de5367b280620d) Conflicts: src/pybind/mgr/dashboard/CMakeLists.txt kept regex from the cherry picked commit --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e187f261bc..8d8cfa6b4fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -681,6 +681,9 @@ if(WITH_SYSTEM_NPM) message(FATAL_ERROR "Can't find npm.") endif() endif() +set(DASHBOARD_FRONTEND_LANGS "" CACHE STRING + "List of comma separated ceph-dashboard frontend languages to build. \ + Use value `ALL` to build all languages") include_directories(SYSTEM ${PROJECT_BINARY_DIR}/include) diff --git a/src/pybind/mgr/dashboard/CMakeLists.txt b/src/pybind/mgr/dashboard/CMakeLists.txt index 24a2efc9e29..b6c7861838e 100644 --- a/src/pybind/mgr/dashboard/CMakeLists.txt +++ b/src/pybind/mgr/dashboard/CMakeLists.txt @@ -15,7 +15,7 @@ function(add_npm_command) cmake_parse_arguments(NC "${options}" "${single_kw}" "${multi_kw}" ${ARGN}) string(REPLACE ";" " " command "${NC_COMMAND}") if(NC_NODEENV) - string(REGEX REPLACE "^(npm .*)$" ". ${mgr-dashboard-nodeenv-dir}/bin/activate && \\1 && deactivate" command ${command}) + string(REGEX REPLACE "^(.*(npm|npx) .*)$" ". ${mgr-dashboard-nodeenv-dir}/bin/activate && \\1 && deactivate" command ${command}) endif() string(REPLACE " " ";" command "${command}") add_custom_command( @@ -84,15 +84,41 @@ file( frontend/src/*/*/*/*/*/*.ts frontend/src/*/*/*/*/*/*.html) +# these files are generated during build +list(REMOVE_ITEM frontend_src + ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/src/environments/environment.prod.ts + ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/src/environments/environment.ts) + +execute_process( + COMMAND bash -c "jq -r .config.locale ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/package.json" + OUTPUT_VARIABLE default_lang + OUTPUT_STRIP_TRAILING_WHITESPACE) + +if(DASHBOARD_FRONTEND_LANGS) + string(STRIP "${DASHBOARD_FRONTEND_LANGS}" DASHBOARD_FRONTEND_LANGS) + if(DASHBOARD_FRONTEND_LANGS STREQUAL "ALL") + set(build_target ":*") + else() + string(FIND "${DASHBOARD_FRONTEND_LANGS}" "${default_lang}" default_idx) + if (default_idx EQUAL -1) + # default language must be always built + string(CONCAT DASHBOARD_FRONTEND_LANGS "${DASHBOARD_FRONTEND_LANGS}" ",${default_lang}") + endif() + set(build_target ":\{${DASHBOARD_FRONTEND_LANGS}\}") + endif() +else(DASHBOARD_FRONTEND_LANGS) + set(build_target ":${default_lang}") +endif(DASHBOARD_FRONTEND_LANGS) + if(NOT CMAKE_BUILD_TYPE STREQUAL Debug) - set(npm_command npm run build -- --prod --progress=false) + set(npm_args "-- --prod --progress=false") else() - set(npm_command npm run build -- --progress=false) + set(npm_args "-- --progress=false") endif() add_npm_command( OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/dist" - COMMAND ${npm_command} + COMMAND npx npm-run-all --print-label --parallel --max-parallel 2 "\"build${build_target} -- ${npm_args}\"" DEPENDS ${frontend_src} frontend/node_modules WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend COMMENT "dashboard frontend is being created" @@ -102,5 +128,6 @@ add_custom_target(mgr-dashboard-frontend-build ALL DEPENDS frontend/dist mgr-dashboard-frontend-deps WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend) + add_dependencies(tests mgr-dashboard-frontend-build) endif(WITH_MGR_DASHBOARD_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM")