58dba727c9
$FDO_CI_CONCURRENT is provided by in the CI environment by the fd.o GitLab runners to tell us how many parallel processes would be 'good' to use. Use this to override the default Ninja invocation which uses as many CPUs as available, and instead tell it to use as many parallel processes as the runner thinks we should during the build process. Tests are invoked using `meson test` inside a virtme/QEmu VM; whilst Meson's test backend will use as many processors as availble, virtme will by default create a single-CPU VM. So if we create a VM with as many CPUs as we should have parallel processes, we can let it use all of them. This also requires quadrupling the requested RAM so ASan doesn't force us straight into OOM. Suggested by @daenzer. Signed-off-by: Daniel Stone <daniels@collabora.com>
172 lines
4.1 KiB
YAML
172 lines
4.1 KiB
YAML
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0:
|
|
|
|
variables:
|
|
FDO_UPSTREAM_REPO: wayland/weston
|
|
|
|
|
|
include:
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: 59de540b620c45739871d1a073d76d5521989d11
|
|
file: '/templates/debian.yml'
|
|
|
|
|
|
stages:
|
|
- container_prep
|
|
- build
|
|
- pages
|
|
|
|
|
|
.debian:
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: buster
|
|
FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/debian-install.sh'
|
|
FDO_DISTRIBUTION_TAG: '2021-04-15.2'
|
|
|
|
|
|
container_prep:
|
|
extends:
|
|
- .debian
|
|
- .fdo.container-build@debian
|
|
timeout: 30m
|
|
stage: container_prep
|
|
|
|
|
|
.build-env:
|
|
extends:
|
|
- .debian
|
|
- .fdo.distribution-image@debian
|
|
timeout: 5m
|
|
stage: build
|
|
variables:
|
|
BUILDDIR: $CI_PROJECT_DIR/build-weston-$CI_JOB_NAME
|
|
PREFIX: $CI_PROJECT_DIR/prefix-weston-$CI_JOB_NAME
|
|
before_script:
|
|
- git clone --depth=1 https://gitlab.freedesktop.org/wayland/wayland-protocols
|
|
- export WAYLAND_PROTOCOLS_DIR="$(pwd)/prefix-wayland-protocols"
|
|
- export PKG_CONFIG_PATH="$WAYLAND_PROTOCOLS_DIR/share/pkgconfig:$PKG_CONFIG_PATH"
|
|
- export MAKEFLAGS="-j${FDO_CI_CONCURRENT:-4}"
|
|
- cd wayland-protocols
|
|
- git show -s HEAD
|
|
- mkdir build
|
|
- cd build
|
|
- ../autogen.sh --prefix="$WAYLAND_PROTOCOLS_DIR"
|
|
- make install
|
|
- cd ../../
|
|
- export XDG_RUNTIME_DIR="$(mktemp -p $(pwd) -d xdg-runtime-XXXXXX)"
|
|
- export TESTS_RES_PATH="$BUILDDIR/tests-res.txt"
|
|
- mkdir "$BUILDDIR" "$PREFIX"
|
|
|
|
.build-and-test:
|
|
extends: .build-env
|
|
tags:
|
|
- kvm
|
|
script:
|
|
- export PATH=~/.local/bin:$PATH
|
|
- cd "$BUILDDIR"
|
|
- meson --prefix="$PREFIX" -Db_sanitize=address ${MESON_OPTIONS} ..
|
|
- ninja -k0 -j${FDO_CI_CONCURRENT:-4}
|
|
- ninja install
|
|
- virtme-run --rw --pwd --kimg /weston-virtme/bzImage --kopt quiet --script-dir ../.gitlab-ci/virtme-scripts --qemu-opts -m 4096 -smp ${FDO_CI_CONCURRENT:-4}
|
|
- TEST_RES=$(cat $TESTS_RES_PATH)
|
|
- rm $TESTS_RES_PATH
|
|
- cp -R /weston-virtme ./
|
|
- rm weston-virtme/bzImage
|
|
- exit $TEST_RES
|
|
artifacts:
|
|
name: weston-$CI_COMMIT_SHA
|
|
when: always
|
|
paths:
|
|
- $BUILDDIR/*.png
|
|
- $BUILDDIR/meson-logs
|
|
- $BUILDDIR/weston-virtme
|
|
- $PREFIX
|
|
reports:
|
|
junit: $BUILDDIR/meson-logs/testlog.junit.xml
|
|
|
|
.build-no-test:
|
|
extends: .build-env
|
|
tags:
|
|
- kvm
|
|
script:
|
|
- export PATH=~/.local/bin:$PATH
|
|
- cd "$BUILDDIR"
|
|
- meson --prefix="$PREFIX" ${MESON_OPTIONS} ..
|
|
- ninja -k0 -j${FDO_CI_CONCURRENT:-4}
|
|
- ninja install
|
|
- ninja clean
|
|
artifacts:
|
|
name: weston-$CI_COMMIT_SHA
|
|
when: always
|
|
paths:
|
|
- $BUILDDIR/meson-logs
|
|
- $PREFIX
|
|
|
|
build-full:
|
|
variables:
|
|
MESON_OPTIONS: >
|
|
-Doptimization=0
|
|
-Db_coverage=true
|
|
-Dwerror=true
|
|
-Dtest-skip-is-failure=true
|
|
-Dlauncher-libseat=true
|
|
extends: .build-and-test
|
|
after_script:
|
|
- ninja -C "$BUILDDIR" coverage-html > "$BUILDDIR/meson-logs/ninja-coverage-html.txt"
|
|
- ninja -C "$BUILDDIR" coverage-xml
|
|
- sed -i -e 's/\/build-weston-build-full//' -e 's/\"..\//\"/' "$BUILDDIR/meson-logs/coverage.xml"
|
|
artifacts:
|
|
reports:
|
|
cobertura: $BUILDDIR/meson-logs/coverage.xml
|
|
|
|
build-docs:
|
|
variables:
|
|
MESON_OPTIONS: >
|
|
-Dwerror=true
|
|
-Ddoc=true
|
|
extends: .build-no-test
|
|
|
|
build-no-gl:
|
|
variables:
|
|
MESON_OPTIONS: >
|
|
-Dsimple-clients=damage,im,shm,touch,dmabuf-v4l
|
|
-Drenderer-gl=false
|
|
-Dremoting=false
|
|
-Dpipewire=false
|
|
-Dwerror=true
|
|
-Dlauncher-libseat=true
|
|
extends: .build-and-test
|
|
|
|
docs-and-coverage:
|
|
stage: pages
|
|
timeout: 5m
|
|
script:
|
|
- mv prefix-weston-build-docs/share/doc/weston Documentation
|
|
- mv build-weston-build-full/meson-logs/coveragereport Test_Coverage
|
|
- rm Test_Coverage/gcov.css
|
|
- cp doc/style/lcov-style.css Test_Coverage/gcov.css
|
|
- cp doc/style/*.png Test_Coverage/
|
|
- rm -rf build-* prefix-*
|
|
dependencies:
|
|
- build-docs
|
|
- build-full
|
|
artifacts:
|
|
expose_as: 'Documentation preview and test coverage report'
|
|
paths:
|
|
- Documentation/
|
|
- Test_Coverage/
|
|
|
|
pages:
|
|
stage: pages
|
|
timeout: 5m
|
|
dependencies:
|
|
- build-docs
|
|
script:
|
|
- export PREFIX=$(pwd)/prefix-weston-build-docs
|
|
- mkdir public
|
|
- cp -R $PREFIX/share/doc/weston/* public/
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
only:
|
|
- main
|