Просмотр исходного кода

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 4 лет назад
Родитель
Сommit
fddc851088
3 измененных файлов с 32 добавлено и 5 удалено
  1. 18 0
      .github/dockerfiles/Dockerfile.clang
  2. 9 0
      .github/workflows/checks.yml
  3. 5 5
      netdata-installer.sh

+ 18 - 0
.github/dockerfiles/Dockerfile.clang

@@ -0,0 +1,18 @@
+FROM debian:buster AS build
+
+# Disable apt/dpkg interactive mode
+ENV DEBIAN_FRONTEND=noninteractive
+
+# Install all build dependencies
+COPY packaging/installer/install-required-packages.sh /tmp/install-required-packages.sh
+RUN /tmp/install-required-packages.sh --dont-wait --non-interactive netdata-all
+
+# Install Clang and set as default CC
+RUN apt-get install -y clang && \
+    update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
+
+WORKDIR /netdata
+COPY . .
+
+# Build Netdata
+RUN ./netdata-installer.sh --dont-wait --dont-start-it --disable-go --require-cloud

+ 9 - 0
.github/workflows/checks.yml

@@ -53,6 +53,15 @@ jobs:
           autoreconf -ivf;
           autoreconf -ivf;
           ./configure;
           ./configure;
           make;'
           make;'
+  clang-checks:
+    name: Clang
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Build
+        run: |
+          docker build -f .github/dockerfiles/Dockerfile.clang .
   dist-checks:
   dist-checks:
     name: Dist
     name: Dist
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest

+ 5 - 5
netdata-installer.sh

@@ -535,7 +535,7 @@ build_libmosquitto() {
   local env_cmd=''
   local env_cmd=''
 
 
   if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
   if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
-    env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
+    env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
   fi
   fi
 
 
   if [ "$(uname -s)" = Linux ]; then
   if [ "$(uname -s)" = Linux ]; then
@@ -615,7 +615,7 @@ build_libwebsockets() {
   local env_cmd=''
   local env_cmd=''
 
 
   if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
   if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
-    env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
+    env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
   fi
   fi
 
 
   pushd "${1}" > /dev/null || exit 1
   pushd "${1}" > /dev/null || exit 1
@@ -697,7 +697,7 @@ build_judy() {
   local env_cmd=''
   local env_cmd=''
 
 
   if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
   if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
-    env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
+    env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
   fi
   fi
 
 
   pushd "${1}" > /dev/null || return 1
   pushd "${1}" > /dev/null || return 1
@@ -780,7 +780,7 @@ build_jsonc() {
   local env_cmd=''
   local env_cmd=''
 
 
   if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
   if [ -z "${DONT_SCRUB_CFLAGS_EVEN_THOUGH_IT_MAY_BREAK_THINGS}" ]; then
-    env_cmd="env CFLAGS= CXXFLAGS= LDFLAGS="
+    env_cmd="env CFLAGS=-fPIC CXXFLAGS= LDFLAGS="
   fi
   fi
 
 
   pushd "${1}" > /dev/null || exit 1
   pushd "${1}" > /dev/null || exit 1
@@ -851,7 +851,7 @@ bundle_jsonc
 
 
 build_libbpf() {
 build_libbpf() {
   pushd "${1}/src" > /dev/null || exit 1
   pushd "${1}/src" > /dev/null || exit 1
-  run env CFLAGS= CXXFLAGS= LDFLAGS= BUILD_STATIC_ONLY=y OBJDIR=build DESTDIR=.. make install
+  run env CFLAGS=-fPIC CXXFLAGS= LDFLAGS= BUILD_STATIC_ONLY=y OBJDIR=build DESTDIR=.. make install
   popd > /dev/null || exit 1
   popd > /dev/null || exit 1
 }
 }