Browse Source

package/ci: migrate macOS builds to CircleCI as well.

pull/484/head
Vladimír Vondruš 6 years ago
parent
commit
ef9963f8d1
  1. 1
      README.md
  2. 11
      doc/building.dox
  3. 69
      package/ci/circleci.yml
  4. 58
      package/ci/travis.yml

1
README.md

@ -7,6 +7,7 @@ not give up on flexibility? *Here it is.* And it's free to use, even for
commercial purposes. commercial purposes.
[![Join the chat at https://gitter.im/mosra/magnum](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mosra/magnum?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Join the chat at https://gitter.im/mosra/magnum](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mosra/magnum?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://circleci.com/gh/mosra/magnum.svg?style=shield)](https://circleci.com/gh/mosra/magnum)
[![Build Status](https://travis-ci.com/mosra/magnum.svg?branch=master)](https://travis-ci.com/mosra/magnum) [![Build Status](https://travis-ci.com/mosra/magnum.svg?branch=master)](https://travis-ci.com/mosra/magnum)
[![Build Status](https://ci.appveyor.com/api/projects/status/5b477m034cfaskse/branch/master?svg=true)](https://ci.appveyor.com/project/mosra/magnum/branch/master) [![Build Status](https://ci.appveyor.com/api/projects/status/5b477m034cfaskse/branch/master?svg=true)](https://ci.appveyor.com/project/mosra/magnum/branch/master)
[![Coverage Status](https://codecov.io/gh/mosra/magnum/branch/master/graph/badge.svg)](https://codecov.io/gh/mosra/magnum) [![Coverage Status](https://codecov.io/gh/mosra/magnum/branch/master/graph/badge.svg)](https://codecov.io/gh/mosra/magnum)

11
doc/building.dox

@ -1106,11 +1106,16 @@ more information.
@section building-ci Continuous Integration @section building-ci Continuous Integration
@subsection building-ci-circleci CircleCI
In `package/ci/` there is a `circle.yml` file with Linux GCC 4.8, macOS, Linux
desktop GLES2/GLES3, Emscripten WebGL1/WebGL2, AddressSanitizer and
ThreadSanitizer configuration. Online at https://circleci.com/gh/mosra/magnum.
@subsection building-ci-travis Travis @subsection building-ci-travis Travis
In `package/ci/` there is a `travis.yml` file with Linux GCC 4.8, macOS, Linux In `package/ci/` there is a `travis.yml` file with iOS GLES2/GLES3, Emscripten
desktop GLES2/GLES3, iOS GLES2/GLES3, Emscripten WebGL1/WebGL2, Android WebGL1/WebGL2 and Android GLES2/GLES3 configuration. Online at
GLES2/GLES3, AddressSanitizer and ThreadSanitizer configuration. Online at
https://travis-ci.com/mosra/magnum. https://travis-ci.com/mosra/magnum.
@subsection building-ci-appveyor AppVeyor @subsection building-ci-appveyor AppVeyor

69
package/ci/circleci.yml

@ -13,6 +13,9 @@ executors:
ubuntu-16_04: ubuntu-16_04:
docker: docker:
- image: ubuntu:xenial-20201014 - image: ubuntu:xenial-20201014
xcode-9_4:
macos:
xcode: 9.4.1
emscripten: emscripten:
docker: docker:
# 1.39.0 is the oldest on Docker. Anything before 1.39.2 is useless as emar # 1.39.0 is the oldest on Docker. Anything before 1.39.2 is useless as emar
@ -24,7 +27,7 @@ executors:
- image: emscripten/emsdk:1.39.6-upstream - image: emscripten/emsdk:1.39.6-upstream
commands: commands:
install-base: install-base-linux:
parameters: parameters:
extra: extra:
type: string type: string
@ -38,6 +41,20 @@ commands:
if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then export LCOV_PACKAGES="lcov curl"; fi if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then export LCOV_PACKAGES="lcov curl"; fi
apt install -y git ninja-build $LCOV_PACKAGES << parameters.extra >> apt install -y git ninja-build $LCOV_PACKAGES << parameters.extra >>
install-base-macos:
parameters:
extra:
type: string
default: ""
steps:
- run:
name: Install base packages
# As usual, homebrew takes five minutes to update and then explodes in
# a spectacular way. How is this acceptable?!
command: |
if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then export LCOV_PACKAGES="lcov"; fi
HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake ninja $LCOV_PACKAGES << parameters.extra >>
install-gcc-4_8: install-gcc-4_8:
steps: steps:
- run: - run:
@ -158,7 +175,7 @@ jobs:
CONFIGURATION: Debug CONFIGURATION: Debug
PLATFORM_GL_API: GLX PLATFORM_GL_API: GLX
steps: steps:
- install-base: - install-base-linux:
extra: libgl1-mesa-dev libsdl2-dev libglfw3-dev libopenal-dev extra: libgl1-mesa-dev libsdl2-dev libglfw3-dev libopenal-dev
- install-gcc-4_8 - install-gcc-4_8
- install-cmake-3_4 - install-cmake-3_4
@ -174,7 +191,7 @@ jobs:
CMAKE_CXX_FLAGS: --coverage CMAKE_CXX_FLAGS: --coverage
CONFIGURATION: Debug CONFIGURATION: Debug
steps: steps:
- install-base: - install-base-linux:
extra: cmake libsdl2-dev libglfw3-dev extra: cmake libsdl2-dev libglfw3-dev
- build: - build:
script: unix-desktop-vulkan.sh script: unix-desktop-vulkan.sh
@ -190,7 +207,7 @@ jobs:
# STUPID yml interprets unquoted ON as a boolean # STUPID yml interprets unquoted ON as a boolean
TARGET_GLES2: "ON" TARGET_GLES2: "ON"
steps: steps:
- install-base: - install-base-linux:
extra: libsdl2-dev libglfw3-dev extra: libsdl2-dev libglfw3-dev
- install-gcc-4_8 - install-gcc-4_8
- install-cmake-3_4 - install-cmake-3_4
@ -209,7 +226,7 @@ jobs:
# STUPID yml interprets unquoted OFF as a boolean # STUPID yml interprets unquoted OFF as a boolean
TARGET_GLES2: "OFF" TARGET_GLES2: "OFF"
steps: steps:
- install-base: - install-base-linux:
extra: libsdl2-dev libglfw3-dev extra: libsdl2-dev libglfw3-dev
- install-gcc-4_8 - install-gcc-4_8
- install-cmake-3_4 - install-cmake-3_4
@ -229,7 +246,7 @@ jobs:
CONFIGURATION: Debug CONFIGURATION: Debug
PLATFORM_GL_API: GLX PLATFORM_GL_API: GLX
steps: steps:
- install-base: - install-base-linux:
extra: libgl1-mesa-dev libsdl2-dev libglfw3-dev libopenal-dev extra: libgl1-mesa-dev libsdl2-dev libglfw3-dev libopenal-dev
- install-gcc-4_8 - install-gcc-4_8
- install-cmake-3_4 - install-cmake-3_4
@ -247,7 +264,7 @@ jobs:
CONFIGURATION: Release CONFIGURATION: Release
PLATFORM_GL_API: GLX PLATFORM_GL_API: GLX
steps: steps:
- install-base: - install-base-linux:
extra: libgl1-mesa-dev libsdl2-dev libglfw3-dev libopenal-dev extra: libgl1-mesa-dev libsdl2-dev libglfw3-dev libopenal-dev
- install-gcc-4_8 - install-gcc-4_8
- install-cmake-3_4 - install-cmake-3_4
@ -266,7 +283,7 @@ jobs:
CONFIGURATION: Debug CONFIGURATION: Debug
PLATFORM_GL_API: GLX PLATFORM_GL_API: GLX
steps: steps:
- install-base: - install-base-linux:
extra: libgl1-mesa-dev libopenal-dev extra: libgl1-mesa-dev libopenal-dev
- install-clang-3_8 - install-clang-3_8
- install-cmake-3_4 - install-cmake-3_4
@ -285,7 +302,7 @@ jobs:
CONFIGURATION: Debug CONFIGURATION: Debug
PLATFORM_GL_API: GLX PLATFORM_GL_API: GLX
steps: steps:
- install-base: - install-base-linux:
extra: libgl1-mesa-dev libopenal-dev extra: libgl1-mesa-dev libopenal-dev
- install-clang-3_8 - install-clang-3_8
- install-cmake-3_4 - install-cmake-3_4
@ -293,13 +310,41 @@ jobs:
- build: - build:
script: unix-desktop.sh script: unix-desktop.sh
macos-gl:
executor: xcode-9_4
environment:
CMAKE_CXX_FLAGS: --coverage
CONFIGURATION: Debug
PLATFORM_GL_API: CGL
steps:
- install-base-macos:
extra: sdl2 glfw
- build:
script: unix-desktop.sh
- lcov
macos-static:
executor: xcode-9_4
environment:
# STUPID yml interprets unquoted ON as a boolean
BUILD_STATIC: "ON"
CMAKE_CXX_FLAGS: --coverage
CONFIGURATION: Debug
PLATFORM_GL_API: CGL
steps:
- install-base-macos:
extra: sdl2 glfw
- build:
script: unix-desktop.sh
- lcov
emscripten-webgl1: emscripten-webgl1:
executor: emscripten executor: emscripten
environment: environment:
# STUPID yml interprets unquoted ON as a boolean # STUPID yml interprets unquoted ON as a boolean
TARGET_GLES2: "ON" TARGET_GLES2: "ON"
steps: steps:
- install-base - install-base-linux
- build: - build:
script: emscripten.sh script: emscripten.sh
@ -309,7 +354,7 @@ jobs:
# STUPID yml interprets unquoted OFF as a boolean # STUPID yml interprets unquoted OFF as a boolean
TARGET_GLES2: "OFF" TARGET_GLES2: "OFF"
steps: steps:
- install-base - install-base-linux
- build: - build:
script: emscripten.sh script: emscripten.sh
@ -325,5 +370,7 @@ workflows:
- linux-nondeprecated - linux-nondeprecated
- linux-sanitizers - linux-sanitizers
- linux-threadsanitizer - linux-threadsanitizer
- macos-gl
- macos-static
- emscripten-webgl1 - emscripten-webgl1
- emscripten-webgl2 - emscripten-webgl2

58
package/ci/travis.yml

@ -118,35 +118,35 @@ matrix:
#- TARGET_GLES2=OFF #- TARGET_GLES2=OFF
#- CMAKE_CXX_FLAGS="--coverage" #- CMAKE_CXX_FLAGS="--coverage"
#- LCOV_EXTRA_OPTS="--gcov-tool /usr/bin/gcov-4.8" #- LCOV_EXTRA_OPTS="--gcov-tool /usr/bin/gcov-4.8"
- language: cpp #- language: cpp
os: osx #os: osx
# The new plugin testing workflow is dynamically loading and unloading them ## The new plugin testing workflow is dynamically loading and unloading them
# in the tests. When that's combined with coverage and LLVM < 5.0.1, all ## in the tests. When that's combined with coverage and LLVM < 5.0.1, all
# such tests crash on exit: https://bugs.llvm.org/show_bug.cgi?id=27224 ## such tests crash on exit: https://bugs.llvm.org/show_bug.cgi?id=27224
# But only in some cases (for example not at all in tests for Corrade ## But only in some cases (for example not at all in tests for Corrade
# PluginManager itself). The commit fixing it is from Jan 3 2018 and all ## PluginManager itself). The commit fixing it is from Jan 3 2018 and all
# Xcode versions before Xcode 9.3 beta (released on Jan 24) are affected. ## Xcode versions before Xcode 9.3 beta (released on Jan 24) are affected.
# https://github.com/llvm-mirror/compiler-rt/commit/860d7953a6f36980f406bfbff76f3c00f15eed57 ## https://github.com/llvm-mirror/compiler-rt/commit/860d7953a6f36980f406bfbff76f3c00f15eed57
# Xcode 9.3 beta has broken git clone ("unknown protocol version 2") since ## Xcode 9.3 beta has broken git clone ("unknown protocol version 2") since
# Feb 16 2019, so using version 9.3 now. ## Feb 16 2019, so using version 9.3 now.
osx_image: xcode9.3 #osx_image: xcode9.3
compiler: clang #compiler: clang
env: #env:
- JOBID=macos-gl #- JOBID=macos-gl
- TARGET=desktop #- TARGET=desktop
- CMAKE_CXX_FLAGS="--coverage" #- CMAKE_CXX_FLAGS="--coverage"
- CONFIGURATION=Debug #- CONFIGURATION=Debug
- language: cpp #- language: cpp
os: osx #os: osx
# See above ## See above
osx_image: xcode9.3 #osx_image: xcode9.3
compiler: clang #compiler: clang
env: #env:
- JOBID=macos-static #- JOBID=macos-static
- TARGET=desktop #- TARGET=desktop
- CMAKE_CXX_FLAGS="--coverage" #- CMAKE_CXX_FLAGS="--coverage"
- BUILD_STATIC=ON #- BUILD_STATIC=ON
- CONFIGURATION=Debug #- CONFIGURATION=Debug
- language: cpp - language: cpp
os: osx os: osx
osx_image: xcode7.3 osx_image: xcode7.3

Loading…
Cancel
Save