@cryptotaxi247 / netdata-1 / commits / 833da72e1

modular static build on alpine

Costa Tsaousis (ktsaou) committed Mar 27, 2017 at 00:39 UTC 833da72e1ccf538cb2a65653f43491ec37ff3a06
8 files changed +230
makeself/build.sh new
+53
@@ -0,0 +1,53 @@
1 +#!/usr/bin/env sh
2 +
3 +# this script should be running in alpine linux
4 +# install the required packages
5 +apk add \
6 + bash \
7 + wget \
8 + curl \
9 + ncurses \
10 + git \
11 + netcat-openbsd \
12 + alpine-sdk \
13 + autoconf \
14 + automake \
15 + gcc \
16 + make \
17 + pkgconfig \
18 + util-linux-dev \
19 + zlib-dev \
20 + libmnl-dev \
21 + libnetfilter_acct-dev \
22 + || exit 1
23 +
24 +cd $(dirname "$0") || exit 1
25 +
26 +# if we don't run inside the netdata repo
27 +# download it and run from it
28 +if [ ! -f ../netdata-installer.sh ]
29 +then
30 + git clone https://github.com/firehol/netdata.git netdata.git || exit 1
31 + cd netdata.git/makeself || exit 1
32 + ./build.sh "$@"
33 + exit $?
34 +fi
35 +
36 +cat >&2 <EOF
37 +
38 +This program will create a self-extracting shell package containing
39 +a statically linked netdata, able to run on any 64bit Linux system,
40 +without any dependencies from the target system.
41 +
42 +It can be used to have netdata running in no-time, or in cases the
43 +target Linux system cannot compile netdata.
44 +
45 +EOF
46 +
47 +
48 +read "Press ENTER to continue > "
49 +
50 +mkdir tmp || exit 1
51 +
52 +./run-all-jobs.sh "$@"
53 +exit $?
makeself/functions.sh new
+29
@@ -0,0 +1,29 @@
1 +#!/usr/bin/env bash
2 +
3 +# bash strict mode
4 +set -euo pipefail
5 +
6 +# -----------------------------------------------------------------------------
7 +
8 +# allow running the jobs by hand
9 +[ -z "${NETDATA_INSTALL_PATH}" ] && export NETDATA_INSTALL_PATH="${1-/opt/netdata}"
10 +[ -z "${NETDATA_MAKESELF_PATH}" ] export NETDATA_MAKESELF_PATH="$(dirname "${0}")"
11 +[ -z "${NETDATA_SOURCE_PATH}" ] && export NETDATA_SOURCE_PATH="${NETDATA_MAKESELF_PATH}/.."
12 +[ -z "${PROCESSORS}" ] && export PROCESSORS=$(cat /proc/cpuinfo 2>/dev/null | grep ^processor | wc -l)
13 +[ -z "${PROCESSORS}" -o $((PROCESSORS)) -lt 1 ] && export PROCESSORS=1
14 +
15 +# -----------------------------------------------------------------------------
16 +
17 +fetch() {
18 + local dir="${1}" url="${2}"
19 + local tar="${dir}.tar.gz"
20 +
21 + [ ! -f "tmp/${tar}" ] && run wget -O "tmp/${tar}" "${url}"
22 + [ ! -d "tmp/${dir}" ] && cd tmp && run tar -zxvpf "${tar}"
23 + run cd "tmp/${dir}"
24 +}
25 +
26 +# -----------------------------------------------------------------------------
27 +
28 +# load the functions of the netdata-installer.sh
29 +. "${NETDATA_SOURCE_PATH}/installer/functions.sh"
makeself/jobs/10-prepare-destination.install.sh new
+16
@@ -0,0 +1,16 @@
1 +#!/usr/bin/env bash
2 +
3 +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1
4 +
5 +[ -d "${NETDATA_INSTALL_PATH}.old" ] && run rm -rf "${NETDATA_INSTALL_PATH}.old"
6 +[ -d "${NETDATA_INSTALL_PATH}" ] && run mv -f "${NETDATA_INSTALL_PATH}" "${NETDATA_INSTALL_PATH}.old"
7 +
8 +run mkdir -p "${NETDATA_INSTALL_PATH}/bin"
9 +run mkdir -p "${NETDATA_INSTALL_PATH}/usr"
10 +run cd "${NETDATA_INSTALL_PATH}"
11 +run ln -s bin sbin
12 +run cd "${NETDATA_INSTALL_PATH}/usr"
13 +run ln -s ../bin bin
14 +run ln -s ../sbin sbin
15 +run ln -s . local
16 +
makeself/jobs/50-bash-4.4.install.sh new
+46
@@ -0,0 +1,46 @@
1 +#!/usr/bin/env bash
2 +
3 +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1
4 +
5 +fetch "bash-4.4" "http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz"
6 +
7 +run ./configure \
8 + --prefix=${NETDATA_INSTALL_PATH} \
9 + --enable-static-link \
10 + --disable-nls \
11 + --without-bash-malloc \
12 +# --disable-rpath \
13 +# --enable-alias \
14 +# --enable-arith-for-command \
15 +# --enable-array-variables \
16 +# --enable-brace-expansion \
17 +# --enable-casemod-attributes \
18 +# --enable-casemod-expansions \
19 +# --enable-command-timing \
20 +# --enable-cond-command \
21 +# --enable-cond-regexp \
22 +# --enable-directory-stack \
23 +# --enable-dparen-arithmetic \
24 +# --enable-function-import \
25 +# --enable-glob-asciiranges-default \
26 +# --enable-help-builtin \
27 +# --enable-job-control \
28 +# --enable-net-redirections \
29 +# --enable-process-substitution \
30 +# --enable-progcomp \
31 +# --enable-prompt-string-decoding \
32 +# --enable-readline \
33 +# --enable-select \
34 +
35 +
36 +run make clean
37 +run make -j${PROCESSORS}
38 +
39 +cat >examples/loadables/Makefile <<EOF
40 +all:
41 +clean:
42 +install:
43 +EOF
44 +
45 +run make install
46 +
makeself/jobs/50-fping-3.16.install.sh new
+26
@@ -0,0 +1,26 @@
1 +#!/usr/bin/env bash
2 +
3 +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1
4 +
5 +fetch "fping-3.16" "https://github.com/schweikert/fping/archive/3.16.tar.gz"
6 +
7 +export CFLAGS="-static"
8 +
9 +run ./autogen.sh
10 +
11 +run ./configure \
12 + --prefix=${NETDATA_INSTALL_PATH} \
13 + --enable-ipv4 \
14 + --enable-ipv6 \
15 + ${NULL}
16 +
17 +cat >doc/Makefile <<EOF
18 +all:
19 +clean:
20 +install:
21 +EOF
22 +
23 +run make clean
24 +run make -j${PROCESSORS}
25 +run make install
26 +
makeself/jobs/70-netdata-git.install.sh new
+19
@@ -0,0 +1,19 @@
1 +#!/usr/bin/env bash
2 +
3 +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1
4 +
5 +cd .. || exit 1
6 +
7 +export CFLAGS="-O3 -static"
8 +run ./netdata-installer.sh --install /opt --dont-wait --dont-start-it
9 +
10 +mkdir -p "${NETDATA_INSTALL_PATH}/system"
11 +
12 +cp \
13 + system/netdata-init-d \
14 + system/netdata-lsb \
15 + system/netdata-openrc \
16 + system/netdata.logrotate \
17 + system/netdata.service \
18 + "${NETDATA_INSTALL_PATH}/system/"
19 +
makeself/jobs/80-netdata-links.install.sh new
+13
@@ -0,0 +1,13 @@
1 +#!/usr/bin/env bash
2 +
3 +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1
4 +
5 +run cd "${NETDATA_INSTALL_PATH}"
6 +run ln -s etc/netdata netdata-configs
7 +run ln -s usr/share/netdata/web netdata-web-files
8 +run ln -s usr/libexec/netdata netdata-plugins
9 +run ln -s var/lib/netdata netdata-dbs
10 +run ln -s var/cache/netdata netdata-metrics
11 +run ln -s var/log/netdata netdata-logs
12 +
13 +
makeself/run-all-jobs.sh new
+28
@@ -0,0 +1,28 @@
1 +#!/usr/bin/env bash
2 +
3 +LC_ALL=C
4 +umask 002
5 +
6 +# be nice
7 +renice 19 $$ >/dev/null 2>/dev/null
8 +
9 +# prepare the environment for the jobs
10 +export NETDATA_INSTALL_PATH="${1-/opt/netdata}"
11 +export NETDATA_MAKESELF_PATH="$(pwd)"
12 +export NETDATA_SOURCE_PATH="${NETDATA_MAKESELF_PATH}/.."
13 +
14 +PROCESSORS=$(cat /proc/cpuinfo 2>/dev/null | grep ^processor | wc -l)
15 +[ -z "${PROCESSORS}" -o $(( PROCESSORS )) -lt 1 ] && PROCESSORS=1
16 +export PROCESSORS
17 +
18 +# make sure ${NULL} is empty
19 +export NULL=
20 +
21 +. $(dirname "${0}")/functions.sh "${@}" || exit 1
22 +
23 +for x in $(dirname "${0}")/*.install.sh
24 +do
25 + progress "running ${x}"
26 + "${x}" "${NETDATA_INSTALL_PATH}"
27 +done
28 +