Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update continuous integration testing configurations #329

Open
AzothAmmo opened this issue Aug 10, 2016 · 3 comments
Open

Update continuous integration testing configurations #329

AzothAmmo opened this issue Aug 10, 2016 · 3 comments

Comments

@AzothAmmo
Copy link
Contributor

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.

@furkanusta
Copy link
Contributor

furkanusta commented Aug 30, 2017

Hi, I've been working on Travis improvements and did some refactoring here are the list of compilers:

on Linux:

  • g++-4.8
  • g++-5
  • g++-6
  • g++-7
  • clang++-3.5
  • clang++-3.6
  • clang++-3.7
  • clang++-3.8
  • clang++-3.9
  • clang++-4.0
  • clang++-5.0

on OSX:

  • clang XCode 7.3
  • clang XCode 8
  • clang XCode 8.1
  • clang XCode 8.2
  • clang XCode 8.3
  • clang XCode 9

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
Copy link
Contributor Author

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
Copy link
Contributor

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.

  1. 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

  2. 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.

  3. 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.

  4. 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.

  5. 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

  6. 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants