functions.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #!/usr/bin/env bash
  2. # SPDX-License-Identifier: GPL-3.0-or-later
  3. # -----------------------------------------------------------------------------
  4. # allow running the jobs by hand
  5. [ -z "${NETDATA_BUILD_WITH_DEBUG}" ] && export NETDATA_BUILD_WITH_DEBUG=0
  6. [ -z "${NETDATA_INSTALL_PATH}" ] && export NETDATA_INSTALL_PATH="${1-/opt/netdata}"
  7. [ -z "${NETDATA_MAKESELF_PATH}" ] && NETDATA_MAKESELF_PATH="$(
  8. self=${0}
  9. while [ -L "${self}" ]
  10. do
  11. cd "${self%/*}" || exit 1
  12. self=$(readlink "${self}")
  13. done
  14. cd "${self%/*}" || exit 1
  15. cd ../.. || exit 1
  16. echo "$(pwd -P)/${self##*/}"
  17. )"
  18. [ -z "${NETDATA_SOURCE_PATH}" ] && NETDATA_SOURCE_PATH="$(
  19. cd "${NETDATA_MAKESELF_PATH}/../.." || exit 1
  20. pwd -P
  21. )"
  22. export NETDATA_MAKESELF_PATH NETDATA_SOURCE_PATH
  23. export NULL=
  24. # make sure the path does not end with /
  25. if [ "${NETDATA_INSTALL_PATH:$((${#NETDATA_INSTALL_PATH} - 1)):1}" = "/" ]; then
  26. export NETDATA_INSTALL_PATH="${NETDATA_INSTALL_PATH:0:$((${#NETDATA_INSTALL_PATH} - 1))}"
  27. fi
  28. # find the parent directory
  29. NETDATA_INSTALL_PARENT="$(dirname "${NETDATA_INSTALL_PATH}")"
  30. export NETDATA_INSTALL_PARENT
  31. # -----------------------------------------------------------------------------
  32. # bash strict mode
  33. set -euo pipefail
  34. # -----------------------------------------------------------------------------
  35. fetch() {
  36. local dir="${1}" url="${2}" sha256="${3}" key="${4}"
  37. local tar
  38. tar="$(basename "${2}")"
  39. local cache="${NETDATA_SOURCE_PATH}/artifacts/cache/${BUILDARCH}/${key}"
  40. if [ -d "${NETDATA_MAKESELF_PATH}/tmp/${dir}" ]; then
  41. rm -rf "${NETDATA_MAKESELF_PATH}/tmp/${dir}"
  42. fi
  43. if [ -d "${cache}/${dir}" ]; then
  44. echo "Found cached copy of build directory for ${key}, using it."
  45. cp -a "${cache}/${dir}" "${NETDATA_MAKESELF_PATH}/tmp/"
  46. CACHE_HIT=1
  47. else
  48. echo "No cached copy of build directory for ${key} found, fetching sources instead."
  49. if [ ! -f "${NETDATA_MAKESELF_PATH}/tmp/${tar}" ]; then
  50. run wget -O "${NETDATA_MAKESELF_PATH}/tmp/${tar}" "${url}"
  51. fi
  52. # Check SHA256 of gzip'd tar file (apparently alpine's sha256sum requires
  53. # two empty spaces between the checksum and the file's path)
  54. set +e
  55. echo "${sha256} ${NETDATA_MAKESELF_PATH}/tmp/${tar}" | sha256sum --c --status
  56. local rc=$?
  57. if [ ${rc} -ne 0 ]; then
  58. echo >&2 "SHA256 verification of tar file ${tar} failed (rc=${rc})"
  59. echo >&2 "expected: ${sha256}, got $(sha256sum "${NETDATA_MAKESELF_PATH}/tmp/${tar}")"
  60. exit 1
  61. fi
  62. set -e
  63. cd "${NETDATA_MAKESELF_PATH}/tmp"
  64. run tar -axpf "${tar}"
  65. cd -
  66. CACHE_HIT=0
  67. fi
  68. run cd "${NETDATA_MAKESELF_PATH}/tmp/${dir}"
  69. }
  70. store_cache() {
  71. key="${1}"
  72. src="${2}"
  73. cache="${NETDATA_SOURCE_PATH}/artifacts/cache/${BUILDARCH}/${key}"
  74. if [ "${CACHE_HIT:-0}" -eq 0 ]; then
  75. if [ -d "${cache}" ]; then
  76. rm -rf "${cache}"
  77. fi
  78. mkdir -p "${cache}"
  79. cp -a "${src}" "${cache}"
  80. fi
  81. }
  82. # -----------------------------------------------------------------------------
  83. # load the functions of the netdata-installer.sh
  84. # shellcheck source=packaging/installer/functions.sh
  85. . "${NETDATA_SOURCE_PATH}/packaging/installer/functions.sh"
  86. # -----------------------------------------------------------------------------
  87. # debug
  88. echo "ME=${0}"
  89. echo "NETDATA_INSTALL_PARENT=${NETDATA_INSTALL_PARENT}"
  90. echo "NETDATA_INSTALL_PATH=${NETDATA_INSTALL_PATH}"
  91. echo "NETDATA_MAKESELF_PATH=${NETDATA_MAKESELF_PATH}"
  92. echo "NETDATA_SOURCE_PATH=${NETDATA_SOURCE_PATH}"
  93. echo "PROCESSORS=$(nproc)"