@cryptotaxi247 / netdata-1 / commits / cba0dca1f

Add `-pipe` to CFLAGS in most cases for builds. (#12709)

* Add `-pipe` to CFLAGS in most cases for builds. This trades marginally higher memory usage at build time (on the order of a few hundred kB in the worst case scenario) for improved build times by avoiding using temporary files for passing data from the compiler to commands it invokes. * Suppress bogus shellcheck warnings. * Fix handling of CFLAGS in netdata-installer.sh.

Austin S. Hemmelgarn committed May 2, 2022 at 08:54 UTC cba0dca1f69f5ea8fc4d35cb35463a71349f654d
8 files changed +27 -31
netdata-installer.sh
+18 -23
@@ -129,7 +129,7 @@ renice 19 $$ > /dev/null 2> /dev/null
129 # you can set CFLAGS before running installer
130 # shellcheck disable=SC2269
131 LDFLAGS="${LDFLAGS}"
132 -CFLAGS="${CFLAGS--O2}"
132 +CFLAGS="${CFLAGS-"-O2 -pipe"}"
133 [ "z${CFLAGS}" = "z-O3" ] && CFLAGS="-O2"
134 # shellcheck disable=SC2269
135 ACLK="${ACLK}"
@@ -576,18 +576,16 @@ build_protobuf() {
576 env_cmd=''
577
578 if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
579 - env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
579 + env_cmd="env CFLAGS='-fPIC -pipe' CXXFLAGS='-fPIC -pipe' LDFLAGS="
580 fi
581
582 cd "${1}" > /dev/null || return 1
583 - # shellcheck disable=SC2086
584 - if ! run ${env_cmd} ./configure --disable-shared --without-zlib --disable-dependency-tracking --with-pic; then
583 + if ! run eval "${env_cmd} ./configure --disable-shared --without-zlib --disable-dependency-tracking --with-pic"; then
584 cd - > /dev/null || return 1
585 return 1
586 fi
587
589 - # shellcheck disable=SC2086
590 - if ! run ${env_cmd} $make ${MAKEOPTS}; then
588 + if ! run eval "${env_cmd} ${make} ${MAKEOPTS}"; then
589 cd - > /dev/null || return 1
590 return 1
591 fi
@@ -659,7 +657,7 @@ build_judy() {
657 libtoolize="libtoolize"
658
659 if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
662 - env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
660 + env_cmd="env CFLAGS='-fPIC -pipe' CXXFLAGS='-fPIC -pipe' LDFLAGS="
661 fi
662
663 if [ "$(uname)" = "Darwin" ]; then
@@ -667,15 +665,14 @@ build_judy() {
665 fi
666
667 cd "${1}" > /dev/null || return 1
670 - # shellcheck disable=SC2086
671 - if run ${env_cmd} ${libtoolize} --force --copy &&
672 - run ${env_cmd} aclocal &&
673 - run ${env_cmd} autoheader &&
674 - run ${env_cmd} automake --add-missing --force --copy --include-deps &&
675 - run ${env_cmd} autoconf &&
676 - run ${env_cmd} ./configure --disable-dependency-tracking &&
677 - run ${env_cmd} ${make} ${MAKEOPTS} -C src &&
678 - run ${env_cmd} ar -r src/libJudy.a src/Judy*/*.o; then
668 + if run eval "${env_cmd} ${libtoolize} --force --copy" &&
669 + run eval "${env_cmd} aclocal" &&
670 + run eval "${env_cmd} autoheader" &&
671 + run eval "${env_cmd} automake --add-missing --force --copy --include-deps" &&
672 + run eval "${env_cmd} autoconf" &&
673 + run eval "${env_cmd} ./configure" &&
674 + run eval "${env_cmd} ${make} ${MAKEOPTS} -C src" &&
675 + run eval "${env_cmd} ar -r src/libJudy.a src/Judy*/*.o"; then
676 cd - > /dev/null || return 1
677 else
678 cd - > /dev/null || return 1
@@ -750,14 +747,12 @@ build_jsonc() {
747 env_cmd=''
748
749 if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
753 - env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
750 + env_cmd="env CFLAGS='-fPIC -pipe' CXXFLAGS='-fPIC -pipe' LDFLAGS="
751 fi
752
756 - cd "${1}" > /dev/null || return 1
757 - # shellcheck disable=SC2086
758 - run ${env_cmd} cmake -DBUILD_SHARED_LIBS=OFF .
759 - # shellcheck disable=SC2086
760 - run ${env_cmd} ${make} ${MAKEOPTS}
753 + cd "${1}" > /dev/null || exit 1
754 + run eval "${env_cmd} cmake -DBUILD_SHARED_LIBS=OFF ."
755 + run eval "${env_cmd} ${make} ${MAKEOPTS}"
756 cd - > /dev/null || return 1
757 }
758
@@ -874,7 +869,7 @@ build_libbpf() {
869 cd "${1}/src" > /dev/null || return 1
870 mkdir root build
871 # shellcheck disable=SC2086
877 - run env CFLAGS=-fPIC CXXFLAGS= LDFLAGS= BUILD_STATIC_ONLY=y OBJDIR=build DESTDIR=.. ${make} ${MAKEOPTS} install
872 + run env CFLAGS='-fPIC -pipe' CXXFLAGS='-fPIC -pipe' LDFLAGS= BUILD_STATIC_ONLY=y OBJDIR=build DESTDIR=.. ${make} ${MAKEOPTS} install
873 cd - > /dev/null || return 1
874 }
875
packaging/docker/Dockerfile
+2 -2
@@ -26,8 +26,8 @@ WORKDIR /opt/netdata.git
26 RUN chmod +x netdata-installer.sh && \
27 cp -rp /deps/* /usr/local/ && \
28 /bin/echo -e "INSTALL_TYPE='oci'\nPREBUILT_ARCH='$(uname -m)'" > ./system/.install-type && \
29 - ./netdata-installer.sh --dont-wait --dont-start-it --use-system-protobuf ${EXTRA_INSTALL_OPTS} \
30 - --one-time-build "$([ "$RELEASE_CHANNEL" = stable ] && echo --stable-channel)"
29 + CFLAGS="-O2 -pipe" ./netdata-installer.sh --dont-wait --dont-start-it --use-system-protobuf \
30 + ${EXTRA_INSTALL_OPTS} --one-time-build "$([ "$RELEASE_CHANNEL" = stable ] && echo --stable-channel)"
31
32 # files to one directory
33 RUN mkdir -p /app/usr/sbin/ \
packaging/makeself/jobs/20-openssl.install.sh
+1 -1
@@ -9,7 +9,7 @@
9
10 version="$(cat "$(dirname "${0}")/../openssl.version")"
11
12 -export CFLAGS='-fno-lto'
12 +export CFLAGS='-fno-lto -pipe'
13 export LDFLAGS='-static'
14 export PKG_CONFIG="pkg-config --static"
15
packaging/makeself/jobs/50-bash-5.1.16.install.sh
+1
@@ -10,6 +10,7 @@
10 fetch "bash-5.1.16" "http://ftp.gnu.org/gnu/bash/bash-5.1.16.tar.gz" \
11 5bac17218d3911834520dad13cd1f85ab944e1c09ae1aba55906be1f8192f558
12
13 +export CFLAGS="-pipe"
14 export PKG_CONFIG_PATH="/openssl-static/lib/pkgconfig"
15
16 run ./configure \
packaging/makeself/jobs/50-curl-7.82.0.install.sh
+1 -1
@@ -10,7 +10,7 @@
10 fetch "curl-7.82.0" "https://curl.haxx.se/download/curl-7.82.0.tar.gz" \
11 910cc5fe279dc36e2cca534172c94364cf3fcf7d6494ba56e6c61a390881ddce
12
13 -export CFLAGS="-I/openssl-static/include"
13 +export CFLAGS="-I/openssl-static/include -pipe"
14 export LDFLAGS="-static -L/openssl-static/lib"
15 export PKG_CONFIG="pkg-config --static"
16 export PKG_CONFIG_PATH="/openssl-static/lib/pkgconfig"
packaging/makeself/jobs/50-fping-5.1.install.sh
+1 -1
@@ -10,7 +10,7 @@
10 fetch "fping-5.1" "https://fping.org/dist/fping-5.1.tar.gz" \
11 1ee5268c063d76646af2b4426052e7d81a42b657e6a77d8e7d3d2e60fd7409fe
12
13 -export CFLAGS="-static -I/openssl-static/include"
13 +export CFLAGS="-static -I/openssl-static/include -pipe"
14 export LDFLAGS="-static -L/openssl-static/lib"
15 export PKG_CONFIG_PATH="/openssl-static/lib/pkgconfig"
16
packaging/makeself/jobs/50-ioping-1.2.install.sh
+1 -1
@@ -10,7 +10,7 @@
10 fetch "ioping-1.2" "https://github.com/koct9i/ioping/archive/v1.2.tar.gz" \
11 d3e4497c653a1e96df67c72ce2b70da18e9f5e3b93179a5bb57a6e30ceacfa75
12
13 -export CFLAGS="-static"
13 +export CFLAGS="-static -pipe"
14
15 run make clean
16 run make -j "$(nproc)"
packaging/makeself/jobs/70-netdata-git.install.sh
+2 -2
@@ -7,9 +7,9 @@
7 cd "${NETDATA_SOURCE_PATH}" || exit 1
8
9 if [ "${NETDATA_BUILD_WITH_DEBUG}" -eq 0 ]; then
10 - export CFLAGS="-static -O2 -I/openssl-static/include"
10 + export CFLAGS="-static -O2 -I/openssl-static/include -pipe"
11 else
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"
12 + export CFLAGS="-static -O1 -pipe -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"