@cryptotaxi247 / netdata-1 / commits / 79c56b71c

Fix Static Netdata to correctly build with Netdata Cloud support. (#9381)

* Revert "Revert "Override linker and include paths for static builds. (#9311)" (#9343)" This reverts commit 36d5e40dca91a93963e4d96f07af3e38803615d0. * Run git clean before building anything * Fix checking out openssl and skip if bind-mounted sources already exist at the given path * Add --require-cloud flag to the static build scripts * Add CMAKEFLAGS support to the installer to customize how to build libwebsockets for static builds * Update packaging/makeself/jobs/50-bash-4.4.18.install.sh Co-authored-by: Andrew Moss <1043609+amoss@users.noreply.github.com> * Fix remaining other two tyos Co-authored-by: Andrew Moss <1043609+amoss@users.noreply.github.com>

James Mills committed Aug 6, 2020 at 13:09 UTC 79c56b71c4567ce947e755b5fbe6d0b4eeffd046
9 files changed +62 -28
.github/scripts/build-artifacts.sh
+2
@@ -23,6 +23,7 @@ prepare_build() {
23 build_dist() {
24 progress "Building dist"
25 (
26 + command -v git > /dev/null && [ -d .git ] && git clean -d -f
27 autoreconf -ivf
28 ./configure \
29 --prefix=/usr \
@@ -41,6 +42,7 @@ build_dist() {
42 build_static_x86_64() {
43 progress "Building static x86_64"
44 (
45 + command -v git > /dev/null && [ -d .git ] && git clean -d -f
46 USER="" ./packaging/makeself/build-x86_64-static.sh
47 ) >&2
48 }
.travis/create_artifacts.sh
+8 -7
@@ -17,15 +17,14 @@ set -e
17 TOP_LEVEL=$(basename "$(git rev-parse --show-toplevel)")
18 CWD=$(git rev-parse --show-cdup || echo "")
19 if [ -n "${CWD}" ] || [ ! "${TOP_LEVEL}" == "netdata" ]; then
20 - echo "Run as .travis/$(basename "$0") from top level directory of netdata git repository"
21 - exit 1
20 + echo "Run as .travis/$(basename "$0") from top level directory of netdata git repository"
21 + exit 1
22 fi
23
24 if [ ! "${TRAVIS_REPO_SLUG}" == "netdata/netdata" ]; then
25 - echo "Beta mode on ${TRAVIS_REPO_SLUG}, not running anything here"
26 - exit 0
27 -fi;
28 -
25 + echo "Beta mode on ${TRAVIS_REPO_SLUG}, not running anything here"
26 + exit 0
27 +fi
28
29 echo "--- Initialize git configuration ---"
30 git checkout "${1-master}"
@@ -46,12 +45,14 @@ BASENAME="netdata-$(git describe)"
45 # See https://github.com/travis-ci/travis-ci/issues/4704#issuecomment-348435959 for details.
46 python -c 'import os,sys,fcntl; flags = fcntl.fcntl(sys.stdout, fcntl.F_GETFL); fcntl.fcntl(sys.stdout, fcntl.F_SETFL, flags&~os.O_NONBLOCK);'
47 echo "--- Create tarball ---"
48 +command -v git > /dev/null && [ -d .git ] && git clean -d -f
49 autoreconf -ivf
50 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/libexec --with-zlib --with-math --with-user=netdata CFLAGS=-O2
51 make dist
52 mv "${BASENAME}.tar.gz" artifacts/
53
54 echo "--- Create self-extractor ---"
55 +command -v git > /dev/null && [ -d .git ] && git clean -d -f
56 ./packaging/makeself/build-x86_64-static.sh
57
58 # Needed for GCS
@@ -61,6 +62,6 @@ cp packaging/version artifacts/latest-version.txt
62 cd artifacts
63 ln -s "${BASENAME}.tar.gz" netdata-latest.tar.gz
64 ln -s "${BASENAME}.gz.run" netdata-latest.gz.run
64 -sha256sum -b ./* >"sha256sums.txt"
65 +sha256sum -b ./* > "sha256sums.txt"
66 echo "checksums:"
67 cat sha256sums.txt
netdata-installer.sh
+29 -9
@@ -235,6 +235,7 @@ while [ -n "${1}" ]; do
235 case "${1}" in
236 "--zlib-is-really-here") LIBS_ARE_HERE=1 ;;
237 "--libs-are-really-here") LIBS_ARE_HERE=1 ;;
238 + "--dont-scrub-cflags-even-though-it-may-break-things") DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS=1 ;;
239 "--dont-start-it") DONOTSTART=1 ;;
240 "--dont-wait") DONOTWAIT=1 ;;
241 "--auto-update" | "-u") AUTOUPDATE=1 ;;
@@ -467,20 +468,26 @@ trap build_error EXIT
468 # -----------------------------------------------------------------------------
469
470 build_libmosquitto() {
471 + local env_cmd=''
472 +
473 + if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
474 + env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
475 + fi
476 +
477 if [ "$(uname -s)" = Linux ]; then
471 - run env CFLAGS= CXXFLAGS= LDFLAGS= make -C "${1}/lib"
478 + run ${env_cmd} make -C "${1}/lib"
479 else
480 pushd ${1} > /dev/null || return 1
481 if [ "$(uname)" = "Darwin" ] && [ -d /usr/local/opt/openssl ]; then
475 - run env CFLAGS= CXXFLAGS= LDFLAGS= cmake \
482 + run ${env_cmd} cmake \
483 -D OPENSSL_ROOT_DIR=/usr/local/opt/openssl \
484 -D OPENSSL_LIBRARIES=/usr/local/opt/openssl/lib \
485 -D WITH_STATIC_LIBRARIES:boolean=YES \
486 .
487 else
481 - run env CFLAGS= CXXFLAGS= LDFLAGS= cmake -D WITH_STATIC_LIBRARIES:boolean=YES .
488 + run ${env_cmd} cmake -D WITH_STATIC_LIBRARIES:boolean=YES .
489 fi
483 - run env CFLAGS= CXXFLAGS= LDFLAGS= make -C lib
490 + run ${env_cmd} make -C lib
491 run mv lib/libmosquitto_static.a lib/libmosquitto.a
492 popd || return 1
493 fi
@@ -541,17 +548,24 @@ bundle_libmosquitto
548 # -----------------------------------------------------------------------------
549
550 build_libwebsockets() {
551 + local env_cmd=''
552 +
553 + if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
554 + env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
555 + fi
556 +
557 pushd "${1}" > /dev/null || exit 1
558 if [ "$(uname)" = "Darwin" ] && [ -d /usr/local/opt/openssl ]; then
546 - run env CFLAGS= CXXFLAGS= LDFLAGS= cmake \
559 + run ${env_cmd} cmake \
560 -D OPENSSL_ROOT_DIR=/usr/local/opt/openssl \
561 -D OPENSSL_LIBRARIES=/usr/local/opt/openssl/lib \
562 -D LWS_WITH_SOCKS5:bool=ON \
563 + $CMAKE_FLAGS \
564 .
565 else
552 - run env CFLAGS= CXXFLAGS= LDFLAGS= cmake -D LWS_WITH_SOCKS5:bool=ON .
566 + run ${env_cmd} cmake -D LWS_WITH_SOCKS5:bool=ON $CMAKE_FLAGS .
567 fi
554 - run env CFLAGS= CXXFLAGS= LDFLAGS= make
568 + run ${env_cmd} make
569 popd > /dev/null || exit 1
570 }
571
@@ -615,9 +629,15 @@ bundle_libwebsockets
629 # -----------------------------------------------------------------------------
630
631 build_jsonc() {
632 + local env_cmd=''
633 +
634 + if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
635 + env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
636 + fi
637 +
638 pushd "${1}" > /dev/null || exit 1
619 - run env CFLAGS= CXXFLAGS= LDFLAGS= cmake -DBUILD_SHARED_LIBS=OFF .
620 - run env CFLAGS= CXXFLAGS= LDFLAGS= make
639 + run ${env_cmd} cmake -DBUILD_SHARED_LIBS=OFF .
640 + run ${env_cmd} make
641 popd > /dev/null || exit 1
642 }
643
packaging/makeself/install-alpine-packages.sh
-2
@@ -24,14 +24,12 @@ apk add --no-cache -U \
24 libtool \
25 pkgconfig \
26 util-linux-dev \
27 - openssl-dev \
27 gnutls-dev \
28 zlib-dev \
29 libmnl-dev \
30 libnetfilter_acct-dev \
31 libuv-dev \
32 lz4-dev \
34 - openssl-dev \
33 snappy-dev \
34 protobuf-dev \
35 binutils \
packaging/makeself/jobs/20-openssl.install.sh
+4 -1
@@ -9,7 +9,10 @@ version="$(cat "$(dirname "${0}")/../openssl.version")"
9 export LDFLAGS='-static'
10 export PKG_CONFIG="pkg-config --static"
11
12 -run git clone --branch "${version}" --single-branch git://git.openssl.org/openssl.git "${NETDATA_MAKESELF_PATH}/tmp/openssl"
12 +# Might be bind-mounted
13 +if [ ! -d "${NETDATA_MAKESELF_PATH}/tmp/openssl" ]; then
14 + run git clone --branch "${version}" --single-branch git://git.openssl.org/openssl.git "${NETDATA_MAKESELF_PATH}/tmp/openssl"
15 +fi
16 cd "${NETDATA_MAKESELF_PATH}/tmp/openssl" || exit 1
17
18 run ./config no-shared no-tests --prefix=/openssl-static --openssldir=/opt/netdata/etc/ssl
packaging/makeself/jobs/50-bash-4.4.18.install.sh
+1 -1
@@ -6,7 +6,7 @@
6
7 fetch "bash-4.4.18" "http://ftp.gnu.org/gnu/bash/bash-4.4.18.tar.gz"
8
9 -export PKG_CONFIG_PATH="/opnessl/lib/pkgconfig"
9 +export PKG_CONFIG_PATH="/openssl-static/lib/pkgconfig"
10
11 run ./configure \
12 --prefix="${NETDATA_INSTALL_PATH}" \
packaging/makeself/jobs/50-curl-7.60.0.install.sh
+3 -2
@@ -6,9 +6,10 @@
6
7 fetch "curl-curl-7_60_0" "https://github.com/curl/curl/archive/curl-7_60_0.tar.gz"
8
9 -export LDFLAGS="-static"
9 +export CFLAGS="-I/openssl-static/include"
10 +export LDFLAGS="-static -L/openssl-static/lib"
11 export PKG_CONFIG="pkg-config --static"
11 -export PKG_CONFIG_PATH="/opnessl/lib/pkgconfig"
12 +export PKG_CONFIG_PATH="/openssl-static/lib/pkgconfig"
13
14 run ./buildconf
15
packaging/makeself/jobs/50-fping-4.2.install.sh
+3 -2
@@ -6,8 +6,9 @@
6
7 fetch "fping-4.2" "https://github.com/schweikert/fping/releases/download/v4.2/fping-4.2.tar.gz"
8
9 -export CFLAGS="-static"
10 -export PKG_CONFIG_PATH="/opnessl/lib/pkgconfig"
9 +export CFLAGS="-static -I/openssl-static/include"
10 +export LDFLAGS="-static -L/openssl-static/lib"
11 +export PKG_CONFIG_PATH="/openssl-static/lib/pkgconfig"
12
13 run ./configure \
14 --prefix="${NETDATA_INSTALL_PATH}" \
packaging/makeself/jobs/70-netdata-git.install.sh
+12 -4
@@ -7,23 +7,31 @@
7 cd "${NETDATA_SOURCE_PATH}" || exit 1
8
9 if [ ${NETDATA_BUILD_WITH_DEBUG} -eq 0 ]; then
10 - export CFLAGS="-static -O3"
10 + export CFLAGS="-static -O3 -I/openssl-static/include"
11 else
12 - export CFLAGS="-static -O1 -ggdb -Wall -Wextra -Wformat-signedness -fstack-protector-all -D_FORTIFY_SOURCE=2 -DNETDATA_INTERNAL_CHECKS=1"
12 + export CFLAGS="-static -O1 -ggdb -Wall -Wextra -Wformat-signedness -fstack-protector-all -D_FORTIFY_SOURCE=2 -DNETDATA_INTERNAL_CHECKS=1 -I/openssl-static/include"
13 fi
14
15 +export LDFLAGS="-static -L/openssl-static/lib"
16 +
17 # We export this to 'yes', installer sets this to .environment.
18 # The updater consumes this one, so that it can tell whether it should update a static install or a non-static one
19 export IS_NETDATA_STATIC_BINARY="yes"
20
21 # Set eBPF LIBC to "static" to bundle the `-static` variant of the kernel-collector
22 export EBPF_LIBC="static"
21 -export PKG_CONFIG_PATH="/opnessl/lib/pkgconfig"
23 +export PKG_CONFIG_PATH="/openssl-static/lib/pkgconfig"
24 +
25 +# Set correct CMake flags for building against non-System OpenSSL
26 +# See: https://github.com/warmcat/libwebsockets/blob/master/READMEs/README.build.md
27 +export CMAKE_FLAGS="-DOPENSSL_ROOT_DIR=/openssl-static -DOPENSSL_LIBRARIES=/openssl-static/lib -DCMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE=/openssl-static -DLWS_OPENSSL_INCLUDE_DIRS=/openssl-static/include -DLWS_OPENSSL_LIBRARIES=/openssl-static/lib/libssl.a;/openssl-static/lib/libcrypto.a"
28
29 run ./netdata-installer.sh \
30 --install "${NETDATA_INSTALL_PARENT}" \
31 --dont-wait \
26 - --dont-start-it
32 + --dont-start-it \
33 + --require-cloud \
34 + --dont-scrub-cflags-even-though-it-may-break-things
35
36 # Remove the netdata.conf file from the tree. It has hard-coded sensible defaults builtin.
37 run rm -f "${NETDATA_INSTALL_PATH}/etc/netdata/netdata.conf"