functions.sh 3.4 KB

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