mirror of
https://github.com/netdata/netdata.git
synced 2024-11-21 15:28:05 +00:00
acf5adced8
Co-authored-by: Ilya Mashchenko <ilya@netdata.cloud>
86 lines
2.9 KiB
CMake
86 lines
2.9 KiB
CMake
# CMake module to handle fetching and installing the dashboard code
|
|
#
|
|
# Copyright (c) 2024 Netdata Inc.
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
include(NetdataUtil)
|
|
|
|
function(handle_braindead_versioning_insanity prefix)
|
|
if(IS_DIRECTORY "${prefix}/v2" AND NOT IS_DIRECTORY "${prefix}/v3")
|
|
message(STATUS " Fixing incorrectly versioned paths generated by poorly written CI")
|
|
file(RENAME "${prefix}/v2" "${prefix}/v3")
|
|
|
|
if(IS_DIRECTORY "${prefix}/v3" AND NOT IS_DIRECTORY "${prefix}/v2")
|
|
message(STATUS " Fixing incorrectly versioned paths generated by poorly written CI -- Done")
|
|
else()
|
|
message(FATAL_ERROR "Failed to fix incorrectly versioned paths")
|
|
endif()
|
|
endif()
|
|
endfunction()
|
|
|
|
# Bundle the dashboard code for inclusion during install.
|
|
#
|
|
# This is unfortunately complicated due to how we need to handle the
|
|
# generation of the CMakeLists file for the dashboard code.
|
|
function(bundle_dashboard)
|
|
include(ExternalProject)
|
|
|
|
set(dashboard_src_dir "${CMAKE_BINARY_DIR}/dashboard-src")
|
|
set(dashboard_src_prefix "${dashboard_src_dir}/dist/agent")
|
|
set(dashboard_bin_dir "${CMAKE_BINARY_DIR}/dashboard-bin")
|
|
set(DASHBOARD_URL "https://app.netdata.cloud/agent.tar.gz" CACHE STRING
|
|
"URL used to fetch the local agent dashboard code")
|
|
|
|
message(STATUS "Preparing local agent dashboard code")
|
|
|
|
message(STATUS " Fetching ${DASHBOARD_URL}")
|
|
file(DOWNLOAD
|
|
"${DASHBOARD_URL}"
|
|
"${CMAKE_BINARY_DIR}/dashboard.tar.gz"
|
|
TIMEOUT 180
|
|
STATUS fetch_status)
|
|
|
|
list(GET fetch_status 0 result)
|
|
|
|
if(result)
|
|
message(FATAL_ERROR "Failed to fetch dashboard code")
|
|
else()
|
|
message(STATUS " Fetching ${DASHBOARD_URL} -- Done")
|
|
endif()
|
|
|
|
message(STATUS " Extracting dashboard code")
|
|
extract_gzipped_tarball(
|
|
"${CMAKE_BINARY_DIR}/dashboard.tar.gz"
|
|
"${dashboard_src_dir}"
|
|
)
|
|
message(STATUS " Extracting dashboard code -- Done")
|
|
|
|
handle_braindead_versioning_insanity("${dashboard_src_prefix}")
|
|
|
|
message(STATUS " Generating CMakeLists.txt file for dashboard code")
|
|
set(rules "")
|
|
|
|
subdirlist(dash_dirs "${dashboard_src_prefix}")
|
|
|
|
foreach(dir IN LISTS dash_dirs)
|
|
file(GLOB files
|
|
LIST_DIRECTORIES FALSE
|
|
RELATIVE "${dashboard_src_dir}"
|
|
"${dashboard_src_prefix}/${dir}/*")
|
|
|
|
set(rules "${rules}install(FILES ${files} COMPONENT dashboard DESTINATION ${WEB_DEST}/${dir})\n")
|
|
endforeach()
|
|
|
|
file(GLOB files
|
|
LIST_DIRECTORIES FALSE
|
|
RELATIVE "${dashboard_src_dir}"
|
|
"${dashboard_src_prefix}/*")
|
|
|
|
set(rules "${rules}install(FILES ${files} COMPONENT dashboard DESTINATION ${WEB_DEST})\n")
|
|
|
|
file(WRITE "${dashboard_src_dir}/CMakeLists.txt" "${rules}")
|
|
message(STATUS " Generating CMakeLists.txt file for dashboard code -- Done")
|
|
add_subdirectory("${dashboard_src_dir}" "${dashboard_bin_dir}")
|
|
message(STATUS "Preparing local agent dashboard code -- Done")
|
|
endfunction()
|