From 14f75f94effc6783408eaf9ca32d1d8bb9dc08a5 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 29 Jan 2021 17:50:54 +0000 Subject: [PATCH] ci: Split clang into separate script, run it in CoreOS CI Let's do a build with clang as a cleanly separate context instead of serially; and also do it unconditionally. This is prep for turning on more `-Werror` flow in both cases, and also using clang `scan-build` in CI. --- .cci.jenkinsfile | 11 ++++++++++- ci/build-check.sh | 23 ----------------------- ci/clang-build-check.sh | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 24 deletions(-) create mode 100755 ci/clang-build-check.sh diff --git a/.cci.jenkinsfile b/.cci.jenkinsfile index 6fb127f9..95cfda83 100644 --- a/.cci.jenkinsfile +++ b/.cci.jenkinsfile @@ -48,7 +48,16 @@ unit: { MAKE_JOBS=${n} CARGO_BUILD_JOBS=${n} ci/unit.sh """) } -}} +}, +clang: { + // Build with clang/clang++ + def n = 5 + cosaPod(buildroot: true, runAsUser: 0, memory: "2Gi", cpu: "${n}") { + checkout scm + shwrap("ci/clang-build-check.sh") + } +} +} stage("Test") { parallel insttests: { diff --git a/ci/build-check.sh b/ci/build-check.sh index 6954aa5d..64fc7df1 100755 --- a/ci/build-check.sh +++ b/ci/build-check.sh @@ -14,26 +14,3 @@ export PATH="$HOME/.cargo/bin:$PATH" ${dn}/build.sh make check make install - -# And now a clang build with -Werror turned on. We can't do this with gcc (in -# build.sh) because it doesn't support -Wno-error=macro-redefined, (and neither -# does clang on CentOS). Anyway, all we want is at least one clang run. -if test -x /usr/bin/clang; then - if grep -q -e 'static inline.*_GLIB_AUTOPTR_LIST_FUNC_NAME' /usr/include/glib-2.0/glib/gmacros.h; then - echo 'Skipping clang check, see https://bugzilla.gnome.org/show_bug.cgi?id=796346' - else - # Except unused-command-line-argument: - # error: argument unused during compilation: '-specs=/usr/lib/rpm/redhat/redhat-hardened -cc1' [-Werror,-Wunused-command-line-argument] - # Except for macro-redefined: - # /usr/include/python2.7/pyconfig-64.h:1199:9: error: '_POSIX_C_SOURCE' macro redefined - # Except for deprecated-declarations: libdnf python bindings uses deprecated - # functions - export CFLAGS="-Wall -Werror -Wno-error=deprecated-declarations -Wno-error=macro-redefined -Wno-error=unused-command-line-argument ${CFLAGS:-}" - export CC=clang - git clean -dfx && git submodule foreach git clean -dfx - # XXX: --disable-introspection because right now we're always building the - # introspection bits with gcc, which doesn't understand some of the flags - # above (see Makefile-lib.am) - build ${CONFIGOPTS:-} --disable-introspection - fi -fi diff --git a/ci/clang-build-check.sh b/ci/clang-build-check.sh new file mode 100755 index 00000000..b863fc2a --- /dev/null +++ b/ci/clang-build-check.sh @@ -0,0 +1,16 @@ +#!/usr/bin/bash +# Install build dependencies, run unit tests and installed tests. + +# This script is what Prow runs. + +set -xeuo pipefail + +dn=$(dirname $0) +. ${dn}/libbuild.sh + +# add cargo's directory to the PATH like we do in CoreOS CI +export PATH="$HOME/.cargo/bin:$PATH" + +export CC=clang CXX=clang++ +${dn}/build.sh +make check