aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown/Continuous-Integration.md
diff options
context:
space:
mode:
authorThibault Saunier <thibault.saunier@osg.samsung.com>2017-03-29 15:03:43 -0300
committerJussi Pakkanen <jpakkane@gmail.com>2017-04-26 17:56:33 +0300
commitb371875e02cce2fb3fbb9fbb8f07eb5817ae0e8f (patch)
tree6e1a3c34b1a85479d3b9f42ccd071096e637929b /docs/markdown/Continuous-Integration.md
parent7dc747ea54480c452b913e4bfe682ec67061c9bf (diff)
downloadmeson-b371875e02cce2fb3fbb9fbb8f07eb5817ae0e8f.zip
meson-b371875e02cce2fb3fbb9fbb8f07eb5817ae0e8f.tar.gz
meson-b371875e02cce2fb3fbb9fbb8f07eb5817ae0e8f.tar.bz2
docs: Import the website and wiki and build with hotdoc
This allows us to more easily have the documentation in sync with the source code as people will have to document new features etc right at the time where they implement it.
Diffstat (limited to 'docs/markdown/Continuous-Integration.md')
-rw-r--r--docs/markdown/Continuous-Integration.md102
1 files changed, 102 insertions, 0 deletions
diff --git a/docs/markdown/Continuous-Integration.md b/docs/markdown/Continuous-Integration.md
new file mode 100644
index 0000000..1dff200
--- /dev/null
+++ b/docs/markdown/Continuous-Integration.md
@@ -0,0 +1,102 @@
+# Continous Integration
+
+Here you will find snippets to use Meson with various CI such as Travis and Appveyor.
+
+Please [file an issue](https://github.com/mesonbuild/meson/issues/new) if these instructions don't work for you.
+
+## Travis for OS X and Linux (with Docker)
+
+Travis for Linux provides ancient versions of Ubuntu which will likely cause problems building your projects regardless of which build system you're using. We recommend using Docker to get a more-recent version of Ubuntu and installing Ninja, Python3, and Meson inside it.
+
+This `yml` file is derived from the [configuration used by Meson for running its own tests](https://github.com/mesonbuild/meson/blob/master/.travis.yml).
+
+```yaml
+sudo: false
+
+os:
+ - linux
+ - osx
+
+language:
+ - cpp
+
+services:
+ - docker
+
+before_install:
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install ninja python3; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pip3 install meson; fi
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker pull YOUR/REPO:yakkety; fi
+
+script:
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then echo FROM YOUR/REPO:yakkety > Dockerfile; fi
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then echo ADD . /root >> Dockerfile; fi
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker build -t withgit .; fi
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker run withgit /bin/sh -c "cd /root && TRAVIS=true CC=$CC CXX=$CXX meson build && ninja -C build test"; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then SDKROOT=$(xcodebuild -version -sdk macosx Path) meson build && ninja -C build test; fi
+```
+
+## AppVeyor for Windows
+
+For CI on Windows, [AppVeyor](https://www.appveyor.com/) is probably your best bet. Here's a sample `yml` file for use with that.
+
+```yaml
+os: Visual Studio 2015
+
+matrix:
+ - arch: x86
+ compiler: msvc2010
+ - arch: x86
+ compiler: msvc2015
+ - arch: x64
+ compiler: msvc2015
+
+platform:
+ - x64
+
+install:
+ # Use the x86 python only when building for x86 for the cpython tests.
+ # For all other archs (including, say, arm), use the x64 python.
+ - ps: (new-object net.webclient).DownloadFile('https://dl.dropboxusercontent.com/u/37517477/ninja.exe', 'C:\projects\meson\ninja.exe')
+ - cmd: if %arch%==x86 (set MESON_PYTHON_PATH=C:\python34) else (set MESON_PYTHON_PATH=C:\python34-x64)
+ - cmd: echo Using Python at %MESON_PYTHON_PATH%
+ - cmd: %MESON_PYTHON_PATH%\pip install meson
+ - cmd: if %compiler%==msvc2010 ( call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" %arch% )
+ - cmd: if %compiler%==msvc2015 ( call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %arch% )
+
+build_script:
+ - cmd: echo Building on %arch% with %compiler%
+ - cmd: PATH=%cd%;%MESON_PYTHON_PATH%;%PATH%; && python meson.py --backend=ninja build
+ - cmd: PATH=%cd%;%MESON_PYTHON_PATH%;%PATH%; && ninja -C build
+
+test_script:
+ - cmd: PATH=%cd%;%MESON_PYTHON_PATH%;%PATH%; && ninja -C build test
+```
+
+## Travis without Docker
+
+This setup is not recommended but included here for completeness
+
+```yaml
+sudo: false
+language: cpp
+group: beta
+
+matrix:
+ include:
+ - os: linux
+ dist: trusty
+ - os: osx
+
+install:
+ - export PATH="`pwd`/build:${PATH}"
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update && brew install python3 ninja; fi
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then wget https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-linux.zip && unzip -q ninja-linux.zip -d build; fi
+ - pip3 install meson
+
+script:
+ - meson build
+ - ninja -C build
+ - ninja -C build test
+```