From 833da72e1ccf538cb2a65653f43491ec37ff3a06 Mon Sep 17 00:00:00 2001 From: "Costa Tsaousis (ktsaou)" Date: Mon, 27 Mar 2017 00:39:16 +0300 Subject: modular static build on alpine --- makeself/build.sh | 53 +++++++++++++++++++++++++ makeself/functions.sh | 29 ++++++++++++++ makeself/jobs/10-prepare-destination.install.sh | 16 ++++++++ makeself/jobs/50-bash-4.4.install.sh | 46 +++++++++++++++++++++ makeself/jobs/50-fping-3.16.install.sh | 26 ++++++++++++ makeself/jobs/70-netdata-git.install.sh | 19 +++++++++ makeself/jobs/80-netdata-links.install.sh | 13 ++++++ makeself/run-all-jobs.sh | 28 +++++++++++++ 8 files changed, 230 insertions(+) create mode 100755 makeself/build.sh create mode 100755 makeself/functions.sh create mode 100755 makeself/jobs/10-prepare-destination.install.sh create mode 100755 makeself/jobs/50-bash-4.4.install.sh create mode 100755 makeself/jobs/50-fping-3.16.install.sh create mode 100755 makeself/jobs/70-netdata-git.install.sh create mode 100755 makeself/jobs/80-netdata-links.install.sh create mode 100755 makeself/run-all-jobs.sh (limited to 'makeself') diff --git a/makeself/build.sh b/makeself/build.sh new file mode 100755 index 0000000000..02d2fdee63 --- /dev/null +++ b/makeself/build.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env sh + +# this script should be running in alpine linux +# install the required packages +apk add \ + bash \ + wget \ + curl \ + ncurses \ + git \ + netcat-openbsd \ + alpine-sdk \ + autoconf \ + automake \ + gcc \ + make \ + pkgconfig \ + util-linux-dev \ + zlib-dev \ + libmnl-dev \ + libnetfilter_acct-dev \ + || exit 1 + +cd $(dirname "$0") || exit 1 + +# if we don't run inside the netdata repo +# download it and run from it +if [ ! -f ../netdata-installer.sh ] +then + git clone https://github.com/firehol/netdata.git netdata.git || exit 1 + cd netdata.git/makeself || exit 1 + ./build.sh "$@" + exit $? +fi + +cat >&2 " + +mkdir tmp || exit 1 + +./run-all-jobs.sh "$@" +exit $? diff --git a/makeself/functions.sh b/makeself/functions.sh new file mode 100755 index 0000000000..84dd76a5a5 --- /dev/null +++ b/makeself/functions.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# bash strict mode +set -euo pipefail + +# ----------------------------------------------------------------------------- + +# allow running the jobs by hand +[ -z "${NETDATA_INSTALL_PATH}" ] && export NETDATA_INSTALL_PATH="${1-/opt/netdata}" +[ -z "${NETDATA_MAKESELF_PATH}" ] export NETDATA_MAKESELF_PATH="$(dirname "${0}")" +[ -z "${NETDATA_SOURCE_PATH}" ] && export NETDATA_SOURCE_PATH="${NETDATA_MAKESELF_PATH}/.." +[ -z "${PROCESSORS}" ] && export PROCESSORS=$(cat /proc/cpuinfo 2>/dev/null | grep ^processor | wc -l) +[ -z "${PROCESSORS}" -o $((PROCESSORS)) -lt 1 ] && export PROCESSORS=1 + +# ----------------------------------------------------------------------------- + +fetch() { + local dir="${1}" url="${2}" + local tar="${dir}.tar.gz" + + [ ! -f "tmp/${tar}" ] && run wget -O "tmp/${tar}" "${url}" + [ ! -d "tmp/${dir}" ] && cd tmp && run tar -zxvpf "${tar}" + run cd "tmp/${dir}" +} + +# ----------------------------------------------------------------------------- + +# load the functions of the netdata-installer.sh +. "${NETDATA_SOURCE_PATH}/installer/functions.sh" diff --git a/makeself/jobs/10-prepare-destination.install.sh b/makeself/jobs/10-prepare-destination.install.sh new file mode 100755 index 0000000000..befda6a84c --- /dev/null +++ b/makeself/jobs/10-prepare-destination.install.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1 + +[ -d "${NETDATA_INSTALL_PATH}.old" ] && run rm -rf "${NETDATA_INSTALL_PATH}.old" +[ -d "${NETDATA_INSTALL_PATH}" ] && run mv -f "${NETDATA_INSTALL_PATH}" "${NETDATA_INSTALL_PATH}.old" + +run mkdir -p "${NETDATA_INSTALL_PATH}/bin" +run mkdir -p "${NETDATA_INSTALL_PATH}/usr" +run cd "${NETDATA_INSTALL_PATH}" +run ln -s bin sbin +run cd "${NETDATA_INSTALL_PATH}/usr" +run ln -s ../bin bin +run ln -s ../sbin sbin +run ln -s . local + diff --git a/makeself/jobs/50-bash-4.4.install.sh b/makeself/jobs/50-bash-4.4.install.sh new file mode 100755 index 0000000000..76f4ec9203 --- /dev/null +++ b/makeself/jobs/50-bash-4.4.install.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1 + +fetch "bash-4.4" "http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz" + +run ./configure \ + --prefix=${NETDATA_INSTALL_PATH} \ + --enable-static-link \ + --disable-nls \ + --without-bash-malloc \ +# --disable-rpath \ +# --enable-alias \ +# --enable-arith-for-command \ +# --enable-array-variables \ +# --enable-brace-expansion \ +# --enable-casemod-attributes \ +# --enable-casemod-expansions \ +# --enable-command-timing \ +# --enable-cond-command \ +# --enable-cond-regexp \ +# --enable-directory-stack \ +# --enable-dparen-arithmetic \ +# --enable-function-import \ +# --enable-glob-asciiranges-default \ +# --enable-help-builtin \ +# --enable-job-control \ +# --enable-net-redirections \ +# --enable-process-substitution \ +# --enable-progcomp \ +# --enable-prompt-string-decoding \ +# --enable-readline \ +# --enable-select \ + + +run make clean +run make -j${PROCESSORS} + +cat >examples/loadables/Makefile <doc/Makefile </dev/null 2>/dev/null + +# prepare the environment for the jobs +export NETDATA_INSTALL_PATH="${1-/opt/netdata}" +export NETDATA_MAKESELF_PATH="$(pwd)" +export NETDATA_SOURCE_PATH="${NETDATA_MAKESELF_PATH}/.." + +PROCESSORS=$(cat /proc/cpuinfo 2>/dev/null | grep ^processor | wc -l) +[ -z "${PROCESSORS}" -o $(( PROCESSORS )) -lt 1 ] && PROCESSORS=1 +export PROCESSORS + +# make sure ${NULL} is empty +export NULL= + +. $(dirname "${0}")/functions.sh "${@}" || exit 1 + +for x in $(dirname "${0}")/*.install.sh +do + progress "running ${x}" + "${x}" "${NETDATA_INSTALL_PATH}" +done + -- cgit v1.2.3