diff options
author | Costa Tsaousis (ktsaou) <costa@tsaousis.gr> | 2017-03-27 00:39:16 +0300 |
---|---|---|
committer | Costa Tsaousis (ktsaou) <costa@tsaousis.gr> | 2017-03-27 00:39:16 +0300 |
commit | 833da72e1ccf538cb2a65653f43491ec37ff3a06 (patch) | |
tree | f6264714c26fa7f035827786c0cbae34b35dff34 /makeself | |
parent | aa6b96fc2d421517a59a1aaaf91be5f201d34287 (diff) |
modular static build on alpine
Diffstat (limited to 'makeself')
-rwxr-xr-x | makeself/build.sh | 53 | ||||
-rwxr-xr-x | makeself/functions.sh | 29 | ||||
-rwxr-xr-x | makeself/jobs/10-prepare-destination.install.sh | 16 | ||||
-rwxr-xr-x | makeself/jobs/50-bash-4.4.install.sh | 46 | ||||
-rwxr-xr-x | makeself/jobs/50-fping-3.16.install.sh | 26 | ||||
-rwxr-xr-x | makeself/jobs/70-netdata-git.install.sh | 19 | ||||
-rwxr-xr-x | makeself/jobs/80-netdata-links.install.sh | 13 | ||||
-rwxr-xr-x | makeself/run-all-jobs.sh | 28 |
8 files changed, 230 insertions, 0 deletions
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 <EOF + +This program will create a self-extracting shell package containing +a statically linked netdata, able to run on any 64bit Linux system, +without any dependencies from the target system. + +It can be used to have netdata running in no-time, or in cases the +target Linux system cannot compile netdata. + +EOF + + +read "Press ENTER to continue > " + +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 <<EOF +all: +clean: +install: +EOF + +run make install + diff --git a/makeself/jobs/50-fping-3.16.install.sh b/makeself/jobs/50-fping-3.16.install.sh new file mode 100755 index 0000000000..ab218e3177 --- /dev/null +++ b/makeself/jobs/50-fping-3.16.install.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1 + +fetch "fping-3.16" "https://github.com/schweikert/fping/archive/3.16.tar.gz" + +export CFLAGS="-static" + +run ./autogen.sh + +run ./configure \ + --prefix=${NETDATA_INSTALL_PATH} \ + --enable-ipv4 \ + --enable-ipv6 \ + ${NULL} + +cat >doc/Makefile <<EOF +all: +clean: +install: +EOF + +run make clean +run make -j${PROCESSORS} +run make install + diff --git a/makeself/jobs/70-netdata-git.install.sh b/makeself/jobs/70-netdata-git.install.sh new file mode 100755 index 0000000000..1ba2fab114 --- /dev/null +++ b/makeself/jobs/70-netdata-git.install.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1 + +cd .. || exit 1 + +export CFLAGS="-O3 -static" +run ./netdata-installer.sh --install /opt --dont-wait --dont-start-it + +mkdir -p "${NETDATA_INSTALL_PATH}/system" + +cp \ + system/netdata-init-d \ + system/netdata-lsb \ + system/netdata-openrc \ + system/netdata.logrotate \ + system/netdata.service \ + "${NETDATA_INSTALL_PATH}/system/" + diff --git a/makeself/jobs/80-netdata-links.install.sh b/makeself/jobs/80-netdata-links.install.sh new file mode 100755 index 0000000000..373a2c852d --- /dev/null +++ b/makeself/jobs/80-netdata-links.install.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1 + +run cd "${NETDATA_INSTALL_PATH}" +run ln -s etc/netdata netdata-configs +run ln -s usr/share/netdata/web netdata-web-files +run ln -s usr/libexec/netdata netdata-plugins +run ln -s var/lib/netdata netdata-dbs +run ln -s var/cache/netdata netdata-metrics +run ln -s var/log/netdata netdata-logs + + diff --git a/makeself/run-all-jobs.sh b/makeself/run-all-jobs.sh new file mode 100755 index 0000000000..8be355e79f --- /dev/null +++ b/makeself/run-all-jobs.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +LC_ALL=C +umask 002 + +# be nice +renice 19 $$ >/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 + |