# -*- indent-tabs-mode: nil -*- include: - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml' - project: 'freedesktop/ci-templates' ref: '88ed1082df2af02090916566742543f1dbaee988' file: '/templates/fedora.yml' variables: FDO_UPSTREAM_REPO: 'cairo/cairo' FDO_DISTRIBUTION_VERSION: '32' FDO_DISTRIBUTION_TAG: '2020-09-29.0' # TODO: should probably get its own image at some point instead of reusing the GStreamer one. WINDOWS_IMAGE: "registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:v16-master" DEFAULT_MESON_ARGS: > --default-library=both -Dgl-backend=auto -Dglesv2=auto -Dglesv3=auto stages: - prep - test # Global CI policy: This can be used to configure global behaviour our our jobs default: retry: max: 2 when: - 'runner_system_failure' - 'stuck_or_timeout_failure' - 'scheduler_failure' - 'api_failure' interruptible: true .ccache_setup: variables: CCACHE_BASEDIR: "$CI_PROJECT_DIR" CCACHE_DIR: "$CI_PROJECT_DIR/ccache" CC: "ccache gcc" CXX: "ccache g++" before_script: - mkdir -p ccache - ccache --show-stats cache: # Each job will have it's own cache key: "$CI_JOB_NAME" paths: - ccache/ fedora image: extends: - '.fdo.container-build@fedora' stage: 'prep' variables: FDO_DISTRIBUTION_PACKAGES: > meson ninja-build ccache gcc g++ zlib-devel expat libpng-devel fontconfig-devel freetype-devel libX11-devel libXrender-devel glib2-devel librsvg2-devel libdrm-devel poppler-glib-devel pixman-devel cogl-devel systemd-devel systemd-udev mesa-libEGL mesa-libGL mesa-libGL-devel mesa-libgbm mesa-libgbm-devel mesa-libglapi autoconf automake make which libtool diffutils fedora autotools build: extends: - '.fdo.distribution-image@fedora' - '.ccache_setup' stage: 'test' script: - ./autogen.sh # Ignore test suite failures with CAIRO_TEST_FORCE_PASS=1 - make check CAIRO_TEST_FORCE_PASS=1 VERBOSE=1 artifacts: when: 'always' expire_in: "7 days" paths: - test/*.log - test/pdiff/*.log - test/output exclude: - "test/**/*.cs" - "test/**/*.trace" fedora meson build: extends: - '.fdo.distribution-image@fedora' - '.ccache_setup' stage: 'test' variables: MESON_ARGS: > ${DEFAULT_MESON_ARGS} -Dgl-backend=gl script: - meson builddir ${MESON_ARGS} - ninja -C builddir # - ninja -C builddir test - ninja -C builddir install artifacts: expire_in: "7 days" when: "always" paths: - 'builddir/meson-logs/' # Based on https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/gitlab/ci_template.yml .build meson windows: image: $WINDOWS_IMAGE tags: - 'docker' - 'windows' - '1809' timeout: '30min' variables: MESON_ARGS: > ${DEFAULT_MESON_ARGS} -Dfontconfig=enabled -Dfreetype=enabled -Dglib=enabled -Dzlib=enabled before_script: # Make sure meson is up to date, so we don't need to rebuild the image with each release - pip3 install -U meson script: # Make sure powershell exists on errors # https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-6 - $ErrorActionPreference = "Stop" # Copy GLib from existing subproject cache to avoid downloading it - cd $env:CI_PROJECT_DIR - cp -r C:/subprojects/glib subprojects/ # For some reason, options are separated by newline instead of space, so we # have to replace them first. - $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ") # Gitlab executes PowerShell in docker, but VsDevCmd.bat is a batch script. # Environment variables substitutions is done by PowerShell before calling # cmd.exe, that's why we use $env:FOO instead of %FOO% - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH && meson build $env:MESON_ARGS && ninja -C build" meson vs2017 amd64: extends: '.build meson windows' variables: ARCH: 'amd64' meson vs2017 x86: extends: '.build meson windows' variables: ARCH: 'x86' meson android arm64 fedora: # See https://gitlab.freedesktop.org/gstreamer/gst-ci/container_registry/164 for current images image: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/android-fedora:2020-10-22.0-master' artifacts: name: "${CI_JOB_NAME}_${CI_COMMIT_SHA}" expire_in: '5 days' when: 'always' paths: - "build/meson-logs/*.txt" before_script: - dnf install -y python3-pip gcc ninja-build gperf - pip3 install --user meson script: - export PATH="$HOME/.local/bin:$PATH" - | cat > android-cross-file.txt <