trompeloeil icon indicating copy to clipboard operation
trompeloeil copied to clipboard

ci: use setup-cpp to install the compilers

Open aminya opened this issue 3 years ago • 13 comments

This uses setup-cpp to install the C++ tools https://github.com/aminya/setup-cpp/

https://github.com/aminya/trompeloeil/actions/runs/1551038387

image

aminya avatar Dec 07 '21 08:12 aminya

Does the libc++ installation script expect a certain llvm installation path? setup-cpp installs llvm in ~/llvm by default (installation path is also accessible from ${{ env.LLVM_PATH }})

aminya avatar Dec 07 '21 09:12 aminya

Apologies for being a bit silent, but I will get back to you in a couple of days. I much appreciate the work you're doing. Thanks.

rollbear avatar Dec 07 '21 18:12 rollbear

Codecov Report

Merging #266 (f083f90) into main (c9c0df9) will decrease coverage by 21.98%. The diff coverage is n/a.

@@             Coverage Diff             @@
##             main     #266       +/-   ##
===========================================
- Coverage   97.75%   75.77%   -21.99%     
===========================================
  Files           1        1               
  Lines         890      875       -15     
===========================================
- Hits          870      663      -207     
- Misses         20      212      +192     
Impacted Files Coverage Δ
include/trompeloeil.hpp 75.77% <0.00%> (-21.99%) :arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

codecov[bot] avatar Dec 07 '21 18:12 codecov[bot]

On the libc++ build/install-script. It's only there because not all versions have readily available downloads (as .deb packages.) If setup-cpp provides the right libc++ versions already, that step can be removed.

rollbear avatar Dec 07 '21 19:12 rollbear

Apologies for being a bit silent, but I will get back to you in a couple of days. I much appreciate the work you're doing. Thanks.

You're welcome!

On the libc++ build/install-script. It's only there because not all versions have readily available downloads (as .deb packages.) If setup-cpp provides the right libc++ versions already, that step can be removed.

setup-cpp downloads the original llvm releases, which usually include the libcxx. It does not use apt for this. So, I think we can try removing it. If there is a separate installation step required for libcxx, we can add it to setup-cpp

aminya avatar Dec 07 '21 19:12 aminya

The libcxx issue is fixed. It required using the correct LLVM_PATH and also passing the CPPFLAGS and LDFLAGS to cmake.

aminya avatar Dec 07 '21 19:12 aminya

The only remaining thing is installing gcc-4.9, which for some reason is rejected by apt although its ppa is already added. How did you do that before? 🤔

aminya avatar Dec 07 '21 20:12 aminya

Yay! Everything is fixed now. 🎉

aminya avatar Dec 07 '21 20:12 aminya

The failures are due to missing coverage reports on some versions, which I think is unrelated to this PR. Right?

aminya avatar Dec 10 '21 00:12 aminya

I'm not so sure that it is unrelated to the PR. If you look at the "Collect Coverage" step for gcc 4.8, it says:

kcov: error while loading shared libraries: libopcodes-2.34-system.so: cannot open shared object file: No such file or directory

Why is that library missing here?

rollbear avatar Dec 10 '21 15:12 rollbear

I updated kcov to v39 because it does not need to be built from the source this way. It might rely on some shared libraries that are missing in the old GCC installer. I need to try install missing packages and see if the issue is fixed.

aminya avatar Dec 10 '21 17:12 aminya

Sorry for not paying much attention, but the push to finish things before Christmas was a bit intense.

I've looked into the current state, and tried to figure out how to move forward, but I haven't been that successful.

All builds that use ubuntu-18.04 fail because kcov needs binutils-2.34, but the one installed is 2.30. I then tried to use ubuntu-20.04 also for the older compilers, but that failed for completely different reasons. Now C++ standard headers cannot be found, so it looks like libstdc++ and libc++ are not available, or in paths that the compiler cannot find. I had hoped to reach a state where it all builds, but perhaps with some missing functionality, but unfortunately I have failed.

rollbear avatar Dec 24 '21 14:12 rollbear

Of course, a different route forward, that may be easier, is to scrap kcov (it's not like I'm married to it) and use normal coverage builds instead. I have to read up on how to use it with the CI codecov-action, but I presume it's a normal enough use to be reasonably straight forward.

rollbear avatar Dec 24 '21 17:12 rollbear