diff --git a/.cci.jenkinsfile b/.cci.jenkinsfile index 6fb127f94e..c90dc13e7e 100644 --- a/.cci.jenkinsfile +++ b/.cci.jenkinsfile @@ -39,8 +39,7 @@ codestyle: { } }, unit: { - // this branch runs unit tests (both Rust-based and C-based) and makes sure we compile - // fine against the MSRV + // this branch runs unit tests (both Rust-based and C-based) def n = 5 cosaPod(buildroot: true, runAsUser: 0, memory: "2Gi", cpu: "${n}") { checkout scm @@ -48,7 +47,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/Cargo.toml b/Cargo.toml index c317082224..c7e410ef82 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,12 @@ name = "rpmostree-rust" version = "0.1.0" authors = ["Colin Walters ", "Jonathan Lebon "] edition = "2018" +# See https://rust-lang.github.io/rfcs/2495-min-rust-version.html +# Usually, we try to keep this to no newer than current RHEL8 rust-toolset version. +# You can find the current versions from here: +# https://access.redhat.com/documentation/en-us/red_hat_developer_tools/1/ +# However, right now we are bumping to 1.48 so we can use https://cxx.rs +#rust = "1.48" links = "rpmostreeinternals" # This currently needs to duplicate the libraries in configure.ac diff --git a/ci/build-check.sh b/ci/build-check.sh index 6954aa5d23..64fc7df17b 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/build.sh b/ci/build.sh index db083e84b0..97b0f9f55b 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -9,11 +9,6 @@ dn=$(dirname $0) ${dn}/install-extra-builddeps.sh ${dn}/installdeps.sh -# create an unprivileged user for testing -if ! getent passwd testuser; then - adduser testuser -fi - # make it clear what rustc version we're compiling with (this is grepped in CI) rustc --version diff --git a/ci/clang-build-check.sh b/ci/clang-build-check.sh new file mode 100755 index 0000000000..b863fc2a08 --- /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 diff --git a/ci/unit.sh b/ci/unit.sh index e1be68c553..cd9af714f2 100755 --- a/ci/unit.sh +++ b/ci/unit.sh @@ -1,15 +1,7 @@ #!/bin/bash set -euo pipefail -# Usually, we try to keep this to no newer than current RHEL8 rust-toolset version. -# You can find the current versions from here: -# https://access.redhat.com/documentation/en-us/red_hat_developer_tools/1/ -# However, right now we are bumping to 1.48 so we can use https://cxx.rs -MINIMUM_SUPPORTED_RUST_VERSION=1.48 - ci/installdeps.sh -dnf remove -y cargo rust -curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain ${MINIMUM_SUPPORTED_RUST_VERSION} -y +ci/install-extra-builddeps.sh export PATH="$HOME/.cargo/bin:$PATH" ci/build.sh -cargo +${MINIMUM_SUPPORTED_RUST_VERSION} test