summaryrefslogtreecommitdiffstats
path: root/makeself
diff options
context:
space:
mode:
authorCosta Tsaousis (ktsaou) <costa@tsaousis.gr>2017-03-27 00:39:16 +0300
committerCosta Tsaousis (ktsaou) <costa@tsaousis.gr>2017-03-27 00:39:16 +0300
commit833da72e1ccf538cb2a65653f43491ec37ff3a06 (patch)
treef6264714c26fa7f035827786c0cbae34b35dff34 /makeself
parentaa6b96fc2d421517a59a1aaaf91be5f201d34287 (diff)
modular static build on alpine
Diffstat (limited to 'makeself')
-rwxr-xr-xmakeself/build.sh53
-rwxr-xr-xmakeself/functions.sh29
-rwxr-xr-xmakeself/jobs/10-prepare-destination.install.sh16
-rwxr-xr-xmakeself/jobs/50-bash-4.4.install.sh46
-rwxr-xr-xmakeself/jobs/50-fping-3.16.install.sh26
-rwxr-xr-xmakeself/jobs/70-netdata-git.install.sh19
-rwxr-xr-xmakeself/jobs/80-netdata-links.install.sh13
-rwxr-xr-xmakeself/run-all-jobs.sh28
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
+