Closed friendlyanon closed 3 years ago
I like the new config. That being said, calling this a refactor is a bit of a stretch :). A couple of points I'd like to raise.
The old centos/llvm-toolset-7-centos7:latest has Clang 5 installed, this teeks99 image has Clang 10, which is a huge jump
Clang 5 specifically, is the first version that has official C++17 support, and that's the minimum supported version of refl-cpp. I wanted to have it as a compatibility check of sorts.
The GCC image was always the latest version, to guard against breaking changes in the future standards.
I cannot get any of the jobs to run with the CircleCI CLI.
Setting up librhash0:amd64 (1.3.9-1) ...
Setting up libcurl4:amd64 (7.68.0-1ubuntu2.5) ...
Setting up cmake-data (3.16.3-1ubuntu1) ...
Setting up libjsoncpp1:amd64 (1.7.4-3.1ubuntu2) ...
Setting up cmake (3.16.3-1ubuntu1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
====>> Checkout code
Making checkout directory "/root/project"
Copying files from "/tmp/_circleci_local_build_repo" to "/root/project"
Error: /bin/sh: 1: git: not found
Installing git during the install_packages
step fixes this for me.
The teeks99/clang-ubuntu:5
image only comes with cmake:3.5.1-1ubuntu3
, which is too old for the build to run.
We need to keep the manual installation script for CMake to make sure we have a recent enough version.
But maybe change the version to v3.14, the minimum supported for building? You mentioned that as the minimum supported version, right?
It does not look like refl-cpp
supports Clang 5.0, see the CI run.
Edit: well, actually it's the examples that are failing. They either have to be Clang 5.0 compatible or they should be disabled in clang executor.
It seems like Clang is building in GCC compatibility mode.
/usr/bin/clang++-5.0 -I../include -O3 -DNDEBUG -std=gnu++17
^^^
Seems there is no change with extensions off.
It didn't have up to date libstdc++ installed and one wasn't available with that image. I rebased everything off of ubutnu:20.04 and added a two more compiler versions to build against in 24ab424.
This PR will make CircleCI use the gcc and clang images by teeks99, which are based on Ubuntu, so it's less hassle to set things up (install cmake and ninja).
The gcc and clang jobs are run using a parameterized matrix as well.
Just a note, but
CI
env var is always set in CI services and developer mode is force enabled if theCI
env var is a true value, i.e. no need to passrefl-cpp_DEVELOPER_MODE
.Edit: you should enable running CI on PRs. On CircleCI, you can do this in Project settings > Advanced > Build forked pull requests and Auto-cancel redundant builds.