123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/bin/bash
- # SPDX-License-Identifier: GPL-3.0-or-later
- # shellcheck source=./packaging/installer/functions.sh
- . "$(dirname "$0")"/../installer/functions.sh || exit 1
- BUILDARCH="${1}"
- set -e
- platform="$("$(dirname "${0}")/uname2platform.sh" "${BUILDARCH}")"
- if [ -z "${platform}" ]; then
- exit 1
- fi
- if command -v docker > /dev/null 2>&1; then
- docker="docker"
- elif command -v podman > /dev/null 2>&1; then
- docker="podman"
- else
- echo "Could not find a usable OCI runtime, need either Docker or Podman."
- exit 1
- fi
- DOCKER_IMAGE_NAME="netdata/static-builder:v1"
- if [ "${BUILDARCH}" != "$(uname -m)" ] && [ -z "${SKIP_EMULATION}" ]; then
- if [ "$(uname -m)" = "x86_64" ]; then
- ${docker} run --rm --privileged multiarch/qemu-user-static --reset -p yes || exit 1
- else
- echo "Automatic cross-architecture builds are only supported on x86_64 hosts."
- exit 1
- fi
- fi
- case "${BUILDARCH}" in
- x86_64) # x86-64-v2 equivalent
- QEMU_CPU="Nehalem-v2"
- TUNING_FLAGS="-march=x86-64"
- GOAMD64="v1"
- ;;
- armv6l) # Raspberry Pi 1 equivalent
- QEMU_CPU="arm1176"
- TUNING_FLAGS="-march=armv6zk -mtune=arm1176jzf-s"
- GOARM="6"
- ;;
- armv7l) # Baseline ARMv7 CPU
- QEMU_CPU="cortex-a7"
- TUNING_FLAGS="-march=armv7-a"
- GOARM="7"
- ;;
- aarch64) # Baseline ARMv8 CPU
- QEMU_CPU="cortex-a53"
- TUNING_FLAGS="-march=armv8-a"
- GOARM64="v8.0"
- ;;
- ppc64le) # Baseline POWER8+ CPU
- QEMU_CPU="power8nvl"
- TUNING_FLAGS="-mcpu=power8 -mtune=power9"
- GOPPC64="power8"
- ;;
- esac
- if ${docker} inspect "${DOCKER_IMAGE_NAME}" > /dev/null 2>&1; then
- if ${docker} image inspect "${DOCKER_IMAGE_NAME}" | grep -q 'Variant'; then
- img_platform="$(${docker} image inspect "${DOCKER_IMAGE_NAME}" --format '{{.Os}}/{{.Architecture}}/{{.Variant}}')"
- else
- img_platform="$(${docker} image inspect "${DOCKER_IMAGE_NAME}" --format '{{.Os}}/{{.Architecture}}')"
- fi
- if [ "${img_platform}" != "${platform}" ]; then
- ${docker} image rm "${DOCKER_IMAGE_NAME}" || exit 1
- fi
- fi
- if ! ${docker} inspect "${DOCKER_IMAGE_NAME}" > /dev/null 2>&1; then
- ${docker} pull --platform "${platform}" "${DOCKER_IMAGE_NAME}"
- fi
- # Run the build script inside the container
- if [ -t 1 ]; then
- run ${docker} run --rm -e BUILDARCH="${BUILDARCH}" -a stdin -a stdout -a stderr -i -t -v "$(pwd)":/netdata:rw \
- --platform "${platform}" ${EXTRA_INSTALL_FLAGS:+-e EXTRA_INSTALL_FLAGS="${EXTRA_INSTALL_FLAGS}"} \
- ${QEMU_CPU:+-e QEMU_CPU="${QEMU_CPU}"} \
- -e TUNING_FLAGS="${TUNING_FLAGS}" \
- ${GOAMD64:+-e GOAMD64="${GOAMD64}"} ${GOARM:+-e GOARM="${GOARM}"} \
- ${GOARM64:+-e GOARM64="${GOARM64}"} ${GOPPC64:+-e GOPPC64="${GOPPC64}"} \
- "${DOCKER_IMAGE_NAME}" /bin/sh /netdata/packaging/makeself/build.sh "${@}"
- else
- run ${docker} run --rm -e BUILDARCH="${BUILDARCH}" -v "$(pwd)":/netdata:rw \
- -e GITHUB_ACTIONS="${GITHUB_ACTIONS}" --platform "${platform}" \
- ${EXTRA_INSTALL_FLAGS:+-e EXTRA_INSTALL_FLAGS="${EXTRA_INSTALL_FLAGS}"} \
- ${QEMU_CPU:+-e QEMU_CPU="${QEMU_CPU}"} \
- -e TUNING_FLAGS="${TUNING_FLAGS}" \
- ${GOAMD64:+-e GOAMD64="${GOAMD64}"} ${GOARM:+-e GOARM="${GOARM}"} \
- ${GOARM64:+-e GOARM64="${GOARM64}"} ${GOPPC64:+-e GOPPC64="${GOPPC64}"} \
- "${DOCKER_IMAGE_NAME}" /bin/sh /netdata/packaging/makeself/build.sh "${@}"
- fi
|