Open
Description
Travis CI should test against every configuration we care about:
(For linux):
g++-4.7
g++-4.8
g++-4.9
g++-5
g++-6
clang++-3.3
(newer clangs)
Clang should be tested against libstdc++ and libc++.
OSX builds should test clang.
Currently we are only doing a single g++ automated test.
Also need to get this set up for MSVC as well (#126), which should test against MSVC 2013 and MSVC 2015.
Activity
furkanusta commentedon Aug 30, 2017
Hi, I've been working on Travis improvements and did some refactoring here are the list of compilers:
on Linux:
on OSX:
Currently there are failing builds but those are due to code I've reported one of them in #416 and can report others as well if needed. Only serious problem is with OSX 8.1 which couldn't find cmake
Travis page: https://travis-ci.org/furkanusta/cereal
.travis.yml file: https://github.com/furkanusta/cereal/blob/travis/.travis.yml
If you have issues with the .travis.yml I can modify or I can send a pull request and we can discuss it there.
Moreover, after merging this I can try valgrind or code coverage integration
AzothAmmo commentedon Aug 30, 2017
This looks really nice. It would be great to get some of the g++ builds (at least one) also building the 32 bit tests. You can see my futile attempts to get this working in the develop travis.yml, but I wasn't able to get around an error for c++config.h not being found. We also (for now) still need g++-4.7 in the build list since it has some quirks not present in later versions.
furkanusta commentedon Sep 1, 2017
Hi, I've managed to enable 32bit-g++ build. Although there are a few problems Travis can currently check
Linux-GCC 4.7, 4.8, 4.9, 5.0, 6.0, 7.0 (64-bit)
Linux-GCC g++-5 (32-bit) [More can be added easily]
Linux-Clang 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0 (all with libstdc++)
Linux-Clang 3.5 (with libc++)
Linux-Clang 3.5 (32-bit)
OSX: 7.3, 8, 8.1, 8.2, 8.3, 9
However, not all of them passes successfully. I'll note the existing errors here but, if needed, I can open a separate issue as well.
g++-7 fails of missing fallthrough
This one is already reported by me in make install fails on gcc 7.1.1-64bit #416 and I have a fix for it but I will submit it after setting the travis up to not cause problems to other builds
Clang-3.5 with libc++ on Linux fails because of missing cxxabi.h:
I've checked this one and it seems that version didn't shipped with cxxabi.h but it got fixed in later
versions. However, in Ubuntu repositories there is only one version of libc++ available and to fix need we need to compile libc++ from source in Travis.
Clang 5.0 libstdc++ fails because of missing type_traits
I couldn't find the reason behind this, I am supposing it is because of a clash between clang and libstdc++. I'll check this one tomorrow.
XCode 8.1 CMake is missing:
There is a reported issue about this one on Travis but it is a year old and this one requires either using homebrew or downloading CMake manually from their page.
Clang 5.0 fails because of warnings
cereal/archives/json.hpp:552:42: error: private field 'itsValueItEnd' is not used. However, it passes when WITH_WERROR=OFF is used
clang with libc++ might not work well with Boost.Serialization
Boost.Serialization is requires for sandbox.performance, in Travis Boost is installed and thus it enables the performance test but boost is compiled with g++ this might cause issues. To fix this we need to either build boost with clang again or add a CMake option to disable performance check. However, this one is not in the priority list, since it depends on the problem 1#.
You can find the latest Linux run in : https://travis-ci.org/furkanusta/cereal/builds/270945461
There is quite a backlog on OSX builds in Travis and 4 of them have been waiting for more than an hour, if they were to be successful I'll send a pull request in the morning.
In the meantime if you have any suggestions to problems above, I can fix before sending a PR.
Final configuration will be more or less like below
https://github.com/furkanusta/cereal/blob/53c5a3d45fb469a76f1eb886b6b3eece85abbe3b/.travis.yml