mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-05-22 17:28:21 +02:00
Because we currently only run the test suite in valgrind, we skip the python test suite there (we don't want to valgrind python itself, too messy). Fix this by specifically excluding the python test suite and having a separate job that just runs that suite instead. And because the protocol test suite needs the directory to the eis-demo-server and isn't smart enough to split spaces correctly, let's change the builddir to just that.
315 lines
9.1 KiB
YAML
315 lines
9.1 KiB
YAML
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:
|
|
|
|
{# You're looking at the template here, so you can ignore the below
|
|
warning. This is the right file to edit #}
|
|
########################################
|
|
# #
|
|
# THIS FILE IS GENERATED, DO NOT EDIT #
|
|
# #
|
|
########################################
|
|
|
|
.templates_sha: &template_sha ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
|
|
|
|
include:
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: *template_sha
|
|
file:
|
|
{% for distro in distributions|sort(attribute="name") %}
|
|
{% if not distro.does_not_have_ci_templates %}
|
|
- '/templates/{{distro.name}}.yml'
|
|
{% endif %}
|
|
{% endfor %}
|
|
- '/templates/ci-fairy.yml'
|
|
|
|
stages:
|
|
- prep # prep work like rebuilding the container images if there is a change
|
|
- build # for actually building and testing things in a container
|
|
- distro # distribs test
|
|
- deploy
|
|
|
|
variables:
|
|
###############################################################################
|
|
# This is the list of packages required to build libei with the default #
|
|
# configuration. #
|
|
# #
|
|
# Run dnf install/apt-get install/.. with the list of packages for your #
|
|
# distribution #
|
|
# #
|
|
# See the documentation here: #
|
|
# https://wayland.freedesktop.org/libinput/doc/latest/building_libinput.html #
|
|
###############################################################################
|
|
{% for distro in distributions %}
|
|
{{distro.name.upper()}}_PACKAGES: '{% for p in distro.packages %}{{p}} {% endfor %}'
|
|
{% endfor %}
|
|
############################ end of package lists #############################
|
|
|
|
# these tags should be updated each time the list of packages is updated
|
|
# changing these will force rebuilding the associated image
|
|
# Note: these tags have no meaning and are not tied to a particular
|
|
# libinput version
|
|
{% for distro in distributions %}
|
|
{{"%-13s"| format(distro.name.upper() + '_TAG:')}}'{{distro.tag}}'
|
|
{% endfor %}
|
|
|
|
FDO_UPSTREAM_REPO: libinput/libei
|
|
|
|
MESON_BUILDDIR: "builddir"
|
|
NINJA_ARGS: ''
|
|
MESON_ARGS: ''
|
|
MESON_TEST_ARGS: ''
|
|
GIT_DEPTH: 1
|
|
|
|
.policy:
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- runner_system_failure
|
|
- stuck_or_timeout_failure
|
|
# cancel run when a newer version is pushed to the branch
|
|
interruptible: true
|
|
|
|
#################################################################
|
|
# #
|
|
# prep stage #
|
|
# #
|
|
#################################################################
|
|
|
|
fail-if-fork-is-not-public:
|
|
stage: prep
|
|
script:
|
|
- |
|
|
if [ $CI_PROJECT_VISIBILITY != "public" ]; then
|
|
echo "*************************************************************************************"
|
|
echo "Project visibility must be set to 'public'"
|
|
echo "Change this in $CI_PROJECT_URL/edit under 'Visibility, project features, permissions'"
|
|
echo "*************************************************************************************"
|
|
exit 1
|
|
fi
|
|
except:
|
|
- main@libinput/libei
|
|
|
|
# Re-generate the CI script and make sure it's the one currently checked in
|
|
# If this job fails, re-generate the gitlab-ci.yml script, see
|
|
# $SRCDIR/.gitlab-ci/generate-gitlab-ci.py
|
|
#
|
|
check-ci-script:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: prep
|
|
script:
|
|
- ci-fairy generate-template
|
|
- git diff --exit-code && exit 0 || true
|
|
- echo "Committed gitlab-ci.yml differs from generated gitlab-ci.yml. Please verify"
|
|
- exit 1
|
|
|
|
#
|
|
# Verify that commit messages are as expected, signed-off, etc.
|
|
#
|
|
|
|
check-commit:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: prep
|
|
script:
|
|
- ci-fairy check-commits --junit-xml=results.xml
|
|
except:
|
|
- main@libinput/libei
|
|
variables:
|
|
GIT_DEPTH: 100
|
|
artifacts:
|
|
reports:
|
|
junit: results.xml
|
|
|
|
#
|
|
# Verify that the merge request has the allow-collaboration checkbox ticked
|
|
#
|
|
|
|
check-merge-request:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: deploy
|
|
script:
|
|
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
|
|
artifacts:
|
|
when: on_failure
|
|
reports:
|
|
junit: results.xml
|
|
allow_failure: true
|
|
|
|
# Format anything python with python-black
|
|
#
|
|
python-black:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: prep
|
|
before_script:
|
|
- python3 -m venv venv
|
|
- source venv/bin/activate
|
|
- pip3 install black
|
|
script:
|
|
- black --check --diff . proto/ei-scanner
|
|
|
|
# Lint with Ruff
|
|
#
|
|
python-ruff:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: prep
|
|
before_script:
|
|
- python3 -m venv venv
|
|
- source venv/bin/activate
|
|
- pip3 install ruff
|
|
script:
|
|
- ruff check --ignore E741,E501 .
|
|
|
|
#
|
|
# Build distribution-specific images used by the jobs in the build stage
|
|
#
|
|
|
|
{% for distro in distributions %}
|
|
{% for version in distro.versions %}
|
|
{{distro.name}}:{{version}}@container-prep:
|
|
extends:
|
|
- .fdo.container-build@{{distro.name}}
|
|
- .policy
|
|
stage: prep
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
FDO_DISTRIBUTION_VERSION: '{{version}}'
|
|
FDO_DISTRIBUTION_PACKAGES: ${{distro.name.upper()}}_PACKAGES
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
|
|
FDO_DISTRIBUTION_EXEC: 'pip install structlog'
|
|
|
|
{% endfor %}
|
|
{% endfor %}
|
|
|
|
|
|
#################################################################
|
|
# #
|
|
# build stage #
|
|
# #
|
|
#################################################################
|
|
|
|
.build@template:
|
|
extends:
|
|
- .policy
|
|
stage: build
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
artifacts:
|
|
name: "meson-logs-$CI_JOB_NAME"
|
|
when: always
|
|
expire_in: 1 week
|
|
paths:
|
|
- $MESON_BUILDDIR/meson-logs
|
|
reports:
|
|
junit: $MESON_BUILDDIR/meson-logs/.junit.xml
|
|
dependencies: []
|
|
|
|
#
|
|
# Fedora
|
|
#
|
|
|
|
{% for distro in distributions if distro.use_for_custom_build_tests %}
|
|
{% set version = "{}".format(distro.versions|last()) %}
|
|
.{{distro.name}}-build@template:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .build@template
|
|
variables:
|
|
MESON_TEST_ARGS: '--no-suite=python'
|
|
FDO_DISTRIBUTION_VERSION: '{{version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
|
|
needs:
|
|
- "{{distro.name}}:{{version}}@container-prep"
|
|
|
|
default-build-release@{{distro.name}}:{{version}}:
|
|
stage: distro
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Dbuildtype=release"
|
|
CFLAGS: "-Werror -Wno-error=vla-parameter" # munit triggers -Wvla-parameter
|
|
|
|
build-no-libxkcommon-nodeps@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
before_script:
|
|
- dnf remove -y libxkcommon-devel
|
|
|
|
build-no-doxygen@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Ddocumentation=false"
|
|
before_script:
|
|
- dnf remove -y doxygen
|
|
|
|
valgrind@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_TEST_ARGS: '--setup=valgrind'
|
|
before_script:
|
|
- dnf install -y valgrind
|
|
|
|
pytest@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_TEST_ARGS: '--suite=python'
|
|
|
|
werror@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: '-Dwerror=true'
|
|
allow_failure: true
|
|
|
|
{% endfor %}
|
|
|
|
#################################################################
|
|
# #
|
|
# distro stage #
|
|
# #
|
|
#################################################################
|
|
|
|
{% for distro in distributions %}
|
|
{% for version in distro.versions %}
|
|
{{distro.name}}:{{version}}@default-build:
|
|
stage: distro
|
|
extends:
|
|
- .build@template
|
|
- .fdo.distribution-image@{{distro.name}}
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: '{{version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
|
|
{# Where we have extra_variables defined, add them to the list #}
|
|
{% if distro.build is defined and distro.build.extra_variables is defined %}
|
|
{% for var in distro.build.extra_variables %}
|
|
{{var}}
|
|
{% endfor %}
|
|
{% endif %}
|
|
needs:
|
|
- "{{distro.name}}:{{version}}@container-prep"
|
|
|
|
{% endfor %}
|
|
{% endfor %}
|
|
|
|
pages:
|
|
stage: deploy
|
|
extends:
|
|
- .build@template
|
|
- .fdo.distribution-image@{{pages.distro}}
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: '{{pages.version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{pages.distro.upper()}}_TAG
|
|
MESON_ARGS: "-Ddocumentation=true"
|
|
after_script:
|
|
- mv "$MESON_BUILDDIR"/doc/html/ public
|
|
only:
|
|
refs:
|
|
- main
|
|
artifacts:
|
|
paths:
|
|
- public
|