export DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
-extraopts += -DUSE_CRYPTOPP=OFF -DWITH_OCF=ON -DWITH_LTTNG=ON -DWITH_PYTHON3=ON -DWITH_EMBEDDED=OFF
+extraopts += -DUSE_CRYPTOPP=OFF -DWITH_OCF=ON -DWITH_LTTNG=ON -DWITH_PYTHON3=ON -DWITH_EMBEDDED=OFF -DWITH_MGR_DASHBOARD_V2_FRONTEND=OFF
extraopts += -DWITH_CEPHFS_JAVA=ON
extraopts += -DWITH_SYSTEMD=ON -DCEPH_SYSTEMD_ENV_DIR=/etc/default
# assumes that ceph is exmpt from multiarch support, so we override the libdir.
COMMENT "dashboard_v2 tests virtualenv is being created")
add_dependencies(tests mgr-dashboard_v2-test-venv)
-include(Distutils)
-distutils_install_module(mgr_dashboard_v2)
+if(WITH_MGR_DASHBOARD_V2_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM")
+
+add_custom_command(
+ OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend/node_modules"
+ COMMAND npm install
+ DEPENDS frontend/package.json
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend
+ COMMENT "dashboard_v2 frontend dependencies are being installed"
+)
+
+add_custom_target(mgr-dashboard_v2-frontend-deps
+ DEPENDS frontend/node_modules
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend
+)
+
+# Glob some frontend files. With CMake 3.6, this can be simplified
+# to *.ts *.html. Just add:
+# list(FILTER frontend_src INCLUDE REGEX "frontend/src")
+file(
+ GLOB_RECURSE frontend_src
+ frontend/src/*.ts
+ frontend/src/*.html
+ frontend/src/*/*.ts
+ frontend/src/*/*.html
+ frontend/src/*/*/*.ts
+ frontend/src/*/*/*.html
+ frontend/src/*/*/*/*.ts
+ frontend/src/*/*/*/*.html
+ frontend/src/*/*/*/*/*.ts
+ frontend/src/*/*/*/*/*.html
+ frontend/src/*/*/*/*/*/*.ts
+ frontend/src/*/*/*/*/*/*.html)
+
+if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
+ set(npm_command npm run build -- --prod)
+else()
+ set(npm_command npm run build)
+endif()
+
+add_custom_command(
+ OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend/dist"
+ COMMAND ${npm_command}
+ DEPENDS ${frontend_src} frontend/node_modules
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend
+ COMMENT "dashboard_v2 frontend is being created"
+)
+add_custom_target(mgr-dashboard_v2-frontend-build
+ DEPENDS frontend/dist mgr-dashboard_v2-frontend-deps
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend
+)
+add_dependencies(ceph-mgr mgr-dashboard_v2-frontend-build)
+endif(WITH_MGR_DASHBOARD_V2_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM")
fi
# dashboard_v2
- # build frontend
- pushd $MGR_PYTHON_PATH/dashboard_v2/frontend
- npm install
- npm run build
- popd
- # setting login credentials for dashboard_v2
+ sleep 5 # when running with more than 1 mgrs, if we enable dashboard_v2
+ # immediately it will fail, so we just wait for a bit
ceph_adm mgr module enable dashboard_v2
+ # setting login credentials for dashboard_v2
ceph_adm tell mgr dashboard set-login-credentials admin admin
}