blob: 070ce18e8d6a5ec1805659d64f59bfd00d9cc0cd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# 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()
|