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

add CI jobs to implement platform support RFC #4906

Merged
merged 5 commits into from
Sep 6, 2020
Merged

add CI jobs to implement platform support RFC #4906

merged 5 commits into from
Sep 6, 2020

Conversation

mossheim
Copy link
Contributor

@mossheim mossheim commented May 4, 2020

Purpose and Motivation

part of implementing supercollider/rfcs#1 was adding CI jobs to enforce compatibility with platforms and toolchains, this PR does that.

no new Windows jobs because each new job adds ~15 minutes to the total build time.

it's possible that Travis builds will take too long after we start doing this; we can remove jobs if that's the case. we can also run some of them less often, for instance on cron schedules or when a special keyword is in the commit message or when making a release.

Summary of changes

  • .travis.yml: rewrite build matrix and add new jobs for a total of 18. this covers a variety of toolchains and build configurations; see the "summary" comment at the top of that file for full details
  • .travis.yml: add some logic around deployments to ensure only 1 macOS build is deployed
  • before-install-linux.sh, before-install-osx.sh: update logic to install the right packages depending on configuration
  • before-script-linux.sh, before-script-osx.sh: use correct CMake flags depending on build job configuration
  • script-linux.sh: use 2 cores when building on linux, which we already do in sc3-plugins with no problems encountered so far
  • CMakeLists.txt: add an option for using libstdc++ with clang, SC_CLANG_USES_LIBSTDCPP; remove obsolete logic for pre-3.1 cmake.
  • README_LINUX.md: add info on using clang
  • README_MACOS.md: update the version of Xcode required to 10
  • server/supernova/CMakeLists.txt: link against libatomic on clang version 4, 5, 6; a build issue i encountered when running clang build jobs
  • other C++ files: expand a workaround we previously added for appleclang 11 to include appleclang 10 and 11, and clang 7 and 8.
  • rename the VERSION at external_libraries/libsndfile/VERSION to VERSION.txt; very obscure issue. with Boost 1.73 on macOS (which happens in the system libs build), a boost header ends up including this file because it thinks it's the C++20 <version> header. i don't like modifying 3rd party code but it doesn't seem like this file even exists in the main repo, and it's not used by our build system. renaming it seemed to be the most sensible solution to a really nonsensical problem.

Types of changes

  • Documentation - updated readmes
  • Bug fix - bug fixes for clang and xcode versions
  • New feature - new ci jobs and cmake options

To-do list

  • Code is tested
  • All tests are passing
  • Updated documentation
  • This PR is ready for review

@mossheim mossheim added comp: travis comp: build CMake build system comp: project docs READMEs, info on contributing, etc. labels May 4, 2020
@mossheim
Copy link
Contributor Author

mossheim commented May 4, 2020

some, if not all the linux failures are because i turned on scel, but the PR to update the scel submodule hasn't been merged into develop yet.

@mossheim
Copy link
Contributor Author

i've added 3 new jobs:

}

void run() {
#if 0
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since it looks like this has been if'd out forever now, do you feel ok if we just get rid of it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah! but that code is actually just to demonstrate PR #5014 -- i'll make that change there :)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(done - a865795)

@mossheim
Copy link
Contributor Author

@joshpar i updated this PR after #5014. anything else you'd like to add?

@mossheim
Copy link
Contributor Author

oh, i just realized i haven't touched the deployment aspect of this yet. we don't want all those macOS jobs trying to push to S3 or GitHub.

@mossheim
Copy link
Contributor Author

mossheim commented Jul 1, 2020

ready for review again. i just pushed this to the branch on this repo as well to see if the deployment step will work correctly.

clang 4-6 needs to be linked to libatomic manually

use libc++ with clang

add config option for using libstdc++

remove dead cmake code
travis: add many new CI jobs

add syslibs-only jobs makes it possible to test using devendored boost and yamlcpp

travis: support clang and syslibs builds on linux

travis: turn on scvim, scel, and sced in linux builds

[skip appveyor] travis: add libscsynth builds

[skip appveyor] travis: add gcc10 job

[skip appveyor] travis: only deploy from single macOS job
@mossheim mossheim requested review from dyfer and jrsurge August 9, 2020 00:46
@mossheim
Copy link
Contributor Author

mossheim commented Aug 9, 2020

i think i've finally resolved all the issues here. the PR text is updated with a summary of the changes. @joshpar (or anyone else) can you please review when you have time?

@mossheim mossheim mentioned this pull request Aug 25, 2020
4 tasks
Copy link
Member

@dyfer dyfer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks great, thanks!

@dyfer dyfer merged commit 4234f93 into supercollider:develop Sep 6, 2020
@mossheim mossheim deleted the topic/build-matrix-expansion branch September 6, 2020 19:23
@mossheim
Copy link
Contributor Author

mossheim commented Sep 6, 2020

thanks @dyfer !

@mossheim mossheim mentioned this pull request Oct 3, 2020
4 tasks
@mossheim mossheim mentioned this pull request Nov 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp: build CMake build system comp: project docs READMEs, info on contributing, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants