12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- # 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()
|