Fixed builds using particular versions of Clang. (#10155)
* Add a CI check for building against Clang * Fix CFLAGS for libmosquitto/libwebsockets so builds work with Clang * Add fixes for libbpf, judy, and JSON-C. Co-authored-by: James Mills <prologic@shortcircuit.net.au>
Austin S. Hemmelgarn committed
Nov 6, 2020 at 07:06 UTC
fddc8510887eadec5fdfd744f80677874f0d313d
3 files changed
+32
-5
.github/dockerfiles/Dockerfile.clang
new
+18
@@ -0,0 +1,18 @@
1
+FROM debian:buster AS build
2
+
3
+# Disable apt/dpkg interactive mode
4
+ENV DEBIAN_FRONTEND=noninteractive
5
+
6
+# Install all build dependencies
7
+COPY packaging/installer/install-required-packages.sh /tmp/install-required-packages.sh
8
+RUN /tmp/install-required-packages.sh --dont-wait --non-interactive netdata-all
9
+
10
+# Install Clang and set as default CC
11
+RUN apt-get install -y clang && \
12
+ update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
13
+
14
+WORKDIR /netdata
15
+COPY . .
16
+
17
+# Build Netdata
18
+RUN ./netdata-installer.sh --dont-wait --dont-start-it --disable-go --require-cloud
.github/workflows/checks.yml
+9
@@ -53,6 +53,15 @@ jobs:
53
autoreconf -ivf;
54
./configure;
55
make;'
56
+ clang-checks:
57
+ name: Clang
58
+ runs-on: ubuntu-latest
59
+ steps:
60
+ - name: Checkout
61
+ uses: actions/checkout@v2
62
+ - name: Build
63
+ run: |
64
+ docker build -f .github/dockerfiles/Dockerfile.clang .
65
dist-checks:
66
name: Dist
67
runs-on: ubuntu-latest
netdata-installer.sh
+5
-5
@@ -535,7 +535,7 @@ build_libmosquitto() {
535
local env_cmd=''
536
537
if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
538
- env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
538
+ env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
539
fi
540
541
if [ "$(uname -s)" = Linux ]; then
@@ -615,7 +615,7 @@ build_libwebsockets() {
615
local env_cmd=''
616
617
if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
618
- env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
618
+ env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
619
fi
620
621
pushd "${1}" > /dev/null || exit 1
@@ -697,7 +697,7 @@ build_judy() {
697
local env_cmd=''
698
699
if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
700
- env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
700
+ env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
701
fi
702
703
pushd "${1}" > /dev/null || return 1
@@ -780,7 +780,7 @@ build_jsonc() {
780
local env_cmd=''
781
782
if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
783
- env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
783
+ env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
784
fi
785
786
pushd "${1}" > /dev/null || exit 1
@@ -851,7 +851,7 @@ bundle_jsonc
851
852
build_libbpf() {
853
pushd "${1}/src" > /dev/null || exit 1
854
- run env CFLAGS= CXXFLAGS= LDFLAGS= BUILD_STATIC_ONLY=y OBJDIR=build DESTDIR=.. make install
854
+ run env CFLAGS=-fPIC CXXFLAGS= LDFLAGS= BUILD_STATIC_ONLY=y OBJDIR=build DESTDIR=.. make install
855
popd > /dev/null || exit 1
856
}
857