| 1 | #!/bin/sh |
| 2 | # |
| 3 | # Invoked by the package builder images to actually build native packages. |
| 4 | |
| 5 | set -e |
| 6 | |
| 7 | PKG_TYPE="${1}" |
| 8 | BUILD_DIR="${2}" |
| 9 | SCRIPT_SOURCE="$( |
| 10 | self=${0} |
| 11 | while [ -L "${self}" ] |
| 12 | do |
| 13 | cd "${self%/*}" || exit 1 |
| 14 | self=$(readlink "${self}") |
| 15 | done |
| 16 | cd "${self%/*}" || exit 1 |
| 17 | echo "$(pwd -P)/${self##*/}" |
| 18 | )" |
| 19 | SOURCE_DIR="$(dirname "$(dirname "${SCRIPT_SOURCE}")")" |
| 20 | |
| 21 | . /etc/os-release |
| 22 | |
| 23 | # Keep one argument per line so POSIX sh preserves embedded spaces |
| 24 | # without relying on arrays or eval. |
| 25 | CMAKE_ARGS="-S |
| 26 | ${SOURCE_DIR} |
| 27 | -B |
| 28 | ${BUILD_DIR} |
| 29 | -G |
| 30 | Ninja" |
| 31 | |
| 32 | add_cmake_option() { |
| 33 | CMAKE_ARGS="${CMAKE_ARGS} |
| 34 | -D${1}=${2}" |
| 35 | } |
| 36 | |
| 37 | run_cmake() { |
| 38 | ( |
| 39 | set -- |
| 40 | while IFS= read -r arg; do |
| 41 | [ -n "${arg}" ] || continue |
| 42 | set -- "$@" "${arg}" |
| 43 | done <<EOF |
| 44 | ${CMAKE_ARGS} |
| 45 | EOF |
| 46 | cmake "$@" |
| 47 | ) |
| 48 | } |
| 49 | |
| 50 | add_cmake_option CMAKE_BUILD_TYPE RelWithDebInfo |
| 51 | add_cmake_option CMAKE_INSTALL_PREFIX / |
| 52 | add_cmake_option ENABLE_DASHBOARD on |
| 53 | add_cmake_option ENABLE_DBENGINE On |
| 54 | add_cmake_option ENABLE_ML On |
| 55 | |
| 56 | add_cmake_option ENABLE_PLUGIN_APPS On |
| 57 | add_cmake_option ENABLE_PLUGIN_CGROUP_NETWORK On |
| 58 | add_cmake_option ENABLE_PLUGIN_DEBUGFS On |
| 59 | add_cmake_option ENABLE_PLUGIN_FREEIPMI On |
| 60 | add_cmake_option ENABLE_PLUGIN_GO On |
| 61 | add_cmake_option ENABLE_PLUGIN_SCRIPTS On |
| 62 | add_cmake_option ENABLE_PLUGIN_PYTHON On |
| 63 | add_cmake_option ENABLE_PLUGIN_CHARTS On |
| 64 | add_cmake_option ENABLE_PLUGIN_LOCAL_LISTENERS On |
| 65 | add_cmake_option ENABLE_PLUGIN_NFACCT On |
| 66 | add_cmake_option ENABLE_PLUGIN_NETFLOW On |
| 67 | add_cmake_option ENABLE_PLUGIN_OTEL On |
| 68 | add_cmake_option ENABLE_PLUGIN_PERF On |
| 69 | add_cmake_option ENABLE_PLUGIN_SLABINFO On |
| 70 | add_cmake_option ENABLE_PLUGIN_SYSTEMD_JOURNAL On |
| 71 | add_cmake_option ENABLE_PLUGIN_SYSTEMD_UNITS On |
| 72 | |
| 73 | add_cmake_option ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE On |
| 74 | |
| 75 | add_cmake_option ENABLE_BUNDLED_PROTOBUF Off |
| 76 | add_cmake_option ENABLE_BUNDLED_JSONC Off |
| 77 | add_cmake_option ENABLE_BUNDLED_YAML Off |
| 78 | |
| 79 | add_cmake_option ENABLE_LIBBACKTRACE On |
| 80 | |
| 81 | add_cmake_option BUILD_FOR_PACKAGING On |
| 82 | |
| 83 | [ -d "${SOURCE_DIR}/tmp/ibm_mq" ] && add_cmake_option FETCHCONTENT_SOURCE_DIR_IBM_MQ "${SOURCE_DIR}/tmp/ibm_mq" |
| 84 | if [ -n "${NETDATA_TOPOLOGY_IP_INTEL_STOCK_DIR}" ]; then |
| 85 | if [ ! -d "${NETDATA_TOPOLOGY_IP_INTEL_STOCK_DIR}" ]; then |
| 86 | echo "Missing topology IP intelligence stock directory: ${NETDATA_TOPOLOGY_IP_INTEL_STOCK_DIR}" |
| 87 | exit 1 |
| 88 | fi |
| 89 | add_cmake_option NETDATA_TOPOLOGY_IP_INTEL_STOCK_DIR "${NETDATA_TOPOLOGY_IP_INTEL_STOCK_DIR}" |
| 90 | fi |
| 91 | |
| 92 | case "${PKG_TYPE}" in |
| 93 | DEB) |
| 94 | case "$(dpkg-architecture -q DEB_TARGET_ARCH)" in |
| 95 | amd64) |
| 96 | add_cmake_option ENABLE_PLUGIN_XENSTAT On |
| 97 | add_cmake_option ENABLE_PLUGIN_EBPF On |
| 98 | add_cmake_option ENABLE_PLUGIN_IBM On |
| 99 | ;; |
| 100 | arm64) |
| 101 | add_cmake_option ENABLE_PLUGIN_XENSTAT On |
| 102 | add_cmake_option ENABLE_PLUGIN_EBPF Off |
| 103 | add_cmake_option ENABLE_PLUGIN_IBM Off |
| 104 | ;; |
| 105 | armhf) |
| 106 | add_cmake_option ENABLE_PLUGIN_XENSTAT Off |
| 107 | add_cmake_option ENABLE_PLUGIN_EBPF Off |
| 108 | add_cmake_option ENABLE_PLUGIN_IBM Off |
| 109 | ;; |
| 110 | *) |
| 111 | add_cmake_option ENABLE_PLUGIN_XENSTAT Off |
| 112 | add_cmake_option ENABLE_PLUGIN_EBPF Off |
| 113 | add_cmake_option ENABLE_PLUGIN_IBM Off |
| 114 | ;; |
| 115 | esac |
| 116 | |
| 117 | if [ "${ID}" = "ubuntu" ]; then |
| 118 | case "${VERSION_ID}" in |
| 119 | 20.04|22.04|24.04) add_cmake_option ENABLE_EXPORTER_MONGODB Off ;; |
| 120 | *) add_cmake_option ENABLE_EXPORTER_MONGODB On ;; |
| 121 | esac |
| 122 | else |
| 123 | add_cmake_option ENABLE_EXPORTER_MONGODB On |
| 124 | fi |
| 125 | ;; |
| 126 | RPM) ;; |
| 127 | *) echo "Unrecognized package type ${PKG_TYPE}." ; exit 1 ;; |
| 128 | esac |
| 129 | |
| 130 | if [ "${ENABLE_SENTRY}" = "true" ]; then |
| 131 | if [ -z "${SENTRY_DSN}" ]; then |
| 132 | echo "ERROR: Sentry enabled but no DSN specified, exiting." |
| 133 | exit 1 |
| 134 | fi |
| 135 | |
| 136 | add_cmake_option ENABLE_SENTRY On |
| 137 | add_cmake_option NETDATA_SENTRY_ENVIRONMENT "${RELEASE_PIPELINE:-Unknown}" |
| 138 | add_cmake_option NETDATA_SENTRY_DIST "${BUILD_DESTINATION:-Unknown}" |
| 139 | add_cmake_option NETDATA_SENTRY_DSN "${SENTRY_DSN}" |
| 140 | else |
| 141 | add_cmake_option ENABLE_SENTRY Off |
| 142 | fi |
| 143 | |
| 144 | run_cmake |
| 145 | cmake --build "${BUILD_DIR}" --parallel "$(nproc)" -- -k 1 |
| 146 | |
| 147 | if [ "${ENABLE_SENTRY}" = "true" ] && [ "${UPLOAD_SENTRY}" = "true" ]; then |
| 148 | sentry-cli debug-files upload -o netdata-inc -p netdata-agent --force-foreground --log-level=debug --wait --include-sources build/netdata |
| 149 | fi |
| 150 | |
| 151 | cd "${BUILD_DIR}" || exit 1 |
| 152 | cpack -V -G "${PKG_TYPE}" |