mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-01-04 02:40:16 +01:00
This does little other than drag in a whole bunch of dependencies. The libinput documentation is designed to be consumed online, so there's no need building it on every machine. We leave the dependencies installed in the images because it's a lot easier to remove them and test if the build still works than adding them and dragging in every updated package since we built the image. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
707 lines
22 KiB
YAML
707 lines
22 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 #
|
|
# #
|
|
########################################
|
|
|
|
# To change the gitlab CI, edit .gitlab-ci/ci.template and/or .gitlab-ci/config.yaml
|
|
# and run ci-fairy generate-template. For details, see
|
|
# https://freedesktop.pages.freedesktop.org/ci-templates/ci-fairy.html#templating-gitlab-ci-yml
|
|
|
|
# This is a bit complicated for two reasons:
|
|
# - we really want to run dnf/apt/... only once, updating on the test runner for
|
|
# each job takes forever. So we create a container image for each distribution
|
|
# tested, then run the tests on this container image.
|
|
#
|
|
# This is handled by the ci-templates, ensuring containers are only rebuilt
|
|
# when the TAG changes.
|
|
#
|
|
# - GitLab only allows one script: set per job but we have a bunch of commands
|
|
# we need to re-run for each build (meson && ninja && etc). YAML cannot merge
|
|
# arrays so we're screwed.
|
|
#
|
|
# So instead we use a default_build template and override everything with
|
|
# variables. The only two variables that matter:
|
|
# MESON_ARGS=-Denable-something=true
|
|
# NINJA_ARGS=dist ... to run 'ninja -C builddir dist'
|
|
# Note that you cannot use scripts: in any target if you expect default_build
|
|
# to work.
|
|
#
|
|
#
|
|
# All jobs must follow the naming scheme of
|
|
# <distribution>:<version>@activity:
|
|
# e.g. fedora:31@build-default
|
|
|
|
.templates_sha: &template_sha 007f3e2fe2235328e77d3cd4ce007ab41cd9ce6c
|
|
|
|
include:
|
|
{% for distro in distributions|sort(attribute="name") %}
|
|
# {{ distro.name.capitalize() }} container builder template
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: *template_sha
|
|
file: '/templates/{{distro.name}}.yml'
|
|
{% endfor %}
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: *template_sha
|
|
file: '/templates/ci-fairy.yml'
|
|
|
|
stages:
|
|
- sanity check # CI/commit checks
|
|
- prep # prep work like rebuilding the container images if there is a change
|
|
- build # for actually building and testing things in a container
|
|
- test-suite # for running the test suite in a VM
|
|
- test-suite-no-libwacom # for running the test suite in a VM (libwacom disabled)
|
|
- valgrind # for running the test suite under valgrind in a VM
|
|
- distro # distribs test
|
|
- deploy # trigger wayland's website generation
|
|
- container_clean # clean up unused container images (scheduled jobs only)
|
|
|
|
variables:
|
|
###############################################################################
|
|
# This is the list of packages required to build libinput 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 %}
|
|
{{"%-17s" | format(distro.name.upper() + '_PACKAGES:')}} '{{ distro.packages|join(' ')}}'
|
|
{% 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 %}
|
|
{% for distro in distributions %}
|
|
{% if distro.want_qemu %}
|
|
{{"%-20s"| format(distro.name.upper() + '_QEMU_TAG:')}} '{{distro.name}}-qemu-vm-{{distro.tag}}'
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
FDO_UPSTREAM_REPO: libinput/libinput
|
|
|
|
MESON_BUILDDIR: "build dir"
|
|
NINJA_ARGS: ''
|
|
MESON_ARGS: ''
|
|
MESON_TEST_ARGS: '--no-suite=hardware'
|
|
|
|
# udev isn't available/working properly in the containers
|
|
UDEV_NOT_AVAILABLE: 1
|
|
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
|
|
dependencies: []
|
|
|
|
.default_artifacts:
|
|
artifacts:
|
|
name: "meson-logs-$CI_JOB_NAME"
|
|
when: always
|
|
expire_in: 1 week
|
|
paths:
|
|
- $MESON_BUILDDIR/meson-logs
|
|
reports:
|
|
junit: $MESON_BUILDDIR/junit-*.xml
|
|
|
|
|
|
#################################################################
|
|
# #
|
|
# sanity check stage #
|
|
# #
|
|
#################################################################
|
|
|
|
# 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: sanity check
|
|
script:
|
|
- ci-fairy generate-template --verify && exit 0 || true
|
|
- >
|
|
printf "%s\n" \
|
|
"Committed gitlab-ci.yml differs from generated gitlab-ci.yml. Please verify" \
|
|
"https://wayland.freedesktop.org/libinput/doc/latest/contributing.html"
|
|
- exit 1
|
|
|
|
#
|
|
# Verify that commit messages are as expected, signed-off, etc.
|
|
#
|
|
|
|
check-commit:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: sanity check
|
|
script:
|
|
- ci-fairy check-commits --signed-off-by --junit-xml=results.xml && exit 0 || true
|
|
- >
|
|
printf "%s\n" \
|
|
"Error checking commit format. Please verify" \
|
|
"https://wayland.freedesktop.org/libinput/doc/latest/contributing.html"
|
|
- exit 1
|
|
except:
|
|
- main@libinput/libinput
|
|
variables:
|
|
GIT_DEPTH: 100
|
|
artifacts:
|
|
reports:
|
|
junit: results.xml
|
|
|
|
#################################################################
|
|
# #
|
|
# prep stage #
|
|
# #
|
|
#################################################################
|
|
|
|
#
|
|
# Note: images are rebuilt weekly with a scheduled pipeline with FDO_FORCE_REBUILD set
|
|
#
|
|
#
|
|
{# qemu builds are only done for the latest version of any distribution #}
|
|
{% for distro in distributions if distro.want_qemu %}
|
|
{% set version = "{}".format(distro.versions|last()) %}
|
|
{{distro.name}}:{{version}}@qemu-prep:
|
|
extends:
|
|
- .fdo.qemu-build@{{distro.name}}
|
|
- .policy
|
|
stage: prep
|
|
tags:
|
|
- kvm
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
FDO_DISTRIBUTION_VERSION: "{{version}}"
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_QEMU_TAG
|
|
FDO_DISTRIBUTION_PACKAGES: ${{distro.name.upper()}}_PACKAGES
|
|
|
|
{% endfor %}
|
|
|
|
{% for distro in distributions %}
|
|
{% if not distro.skip_container %}
|
|
{% 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
|
|
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
|
|
#################################################################
|
|
# #
|
|
# container clean stage #
|
|
# run during the clean stage #
|
|
# #
|
|
#################################################################
|
|
|
|
#
|
|
# This stage will look for the container images we currently have in
|
|
# the registry and will remove any that are not tagged with the provided
|
|
# $container_image:$tag
|
|
#
|
|
.container-clean:
|
|
extends:
|
|
- .policy
|
|
- .fdo.ci-fairy
|
|
stage: container_clean
|
|
script:
|
|
# Go to your Profile, Settings, Access Tokens
|
|
# Create a personal token with 'api' scope, copy the value.
|
|
# Go to CI/CD, Schedules, schedule a new monthly job (or edit the existing one)
|
|
# Define a variable of type File named AUTHFILE. Content is that token
|
|
# value.
|
|
- ci-fairy -v --authfile $AUTHFILE delete-image
|
|
--repository $FDO_DISTRIBUTION_NAME/$FDO_DISTRIBUTION_VERSION
|
|
--exclude-tag $FDO_DISTRIBUTION_TAG
|
|
allow_failure: true
|
|
only:
|
|
- schedules
|
|
|
|
{% for distro in distributions %}
|
|
{% if not distro.skip_container %}
|
|
{% for version in distro.versions %}
|
|
{{distro.name}}:{{version}}@container-clean:
|
|
extends:
|
|
- .policy
|
|
- .container-clean
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/{{distro.name}}/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
|
|
FDO_DISTRIBUTION_VERSION: '{{version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
|
|
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
#################################################################
|
|
# #
|
|
# build stage #
|
|
# #
|
|
#################################################################
|
|
|
|
.build@template:
|
|
extends:
|
|
- .policy
|
|
- .default_artifacts
|
|
stage: build
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
|
|
#
|
|
# Fedora
|
|
#
|
|
|
|
.check_tainted: &check_tainted |
|
|
# make sure the kernel is not tainted
|
|
if [[ "$(ssh localhost -p 5555 cat /proc/sys/kernel/tainted)" -gt 0 ]];
|
|
then
|
|
echo tainted kernel ;
|
|
exit 1 ;
|
|
fi
|
|
|
|
# Run meson and meson test in the qemu image
|
|
.build-in-qemu@template:
|
|
extends:
|
|
- .policy
|
|
- .fdo.distribution-image@fedora
|
|
tags:
|
|
- kvm
|
|
variables:
|
|
MESON_BUILDDIR: build_dir
|
|
script:
|
|
# start our vm, no args required
|
|
- /app/vmctl start || (echo "Error - Failed to start the VM." && exit 1)
|
|
|
|
- *check_tainted
|
|
|
|
- "scp -r $PWD vm:"
|
|
- echo "CI_JOB_ID=\"$CI_JOB_ID\"" > sshenv
|
|
- echo "CI_JOB_NAME=\"$CI_JOB_NAME\"" >> sshenv
|
|
- echo "MESON_ARGS=\"$MESON_ARGS\"" >> sshenv
|
|
- echo "MESON_BUILDDIR=\"$MESON_BUILDDIR\"" >> sshenv
|
|
- echo "MESON_TEST_ARGS=\"$MESON_TEST_ARGS\"" >> sshenv
|
|
- echo "NINJA_ARGS=\"$NINJA_ARGS\"" >> sshenv
|
|
- "scp sshenv vm:~/$CI_PROJECT_NAME/.meson_environment"
|
|
- /app/vmctl exec "cd $CI_PROJECT_NAME ; .gitlab-ci/meson-build.sh" && touch .success || true
|
|
# no matter the results of the tests, we want to fetch the logs
|
|
- scp -r vm:$CI_PROJECT_NAME/$MESON_BUILDDIR .
|
|
|
|
- *check_tainted
|
|
|
|
- /app/vmctl stop
|
|
|
|
- if [[ ! -e .success ]] ;
|
|
then
|
|
exit 1 ;
|
|
fi
|
|
artifacts:
|
|
name: "qemu-meson-logs-$CI_JOB_NAME"
|
|
when: always
|
|
expire_in: 1 week
|
|
paths:
|
|
- $MESON_BUILDDIR/meson-logs
|
|
- console.out
|
|
reports:
|
|
junit: $MESON_BUILDDIR/junit-*.xml
|
|
|
|
|
|
# Run in a test suite. Special variables:
|
|
# - SUITES: the meson test suites to run, or
|
|
# - SUITE_NAMES: all elements will be expanded to libinput-test-suite-$value
|
|
# Set one or the other, not both.
|
|
.test-suite-vm:
|
|
extends:
|
|
- .build-in-qemu@template
|
|
stage: test-suite
|
|
variables:
|
|
# remove the global --no-suite=hardware
|
|
MESON_TEST_ARGS: ''
|
|
before_script:
|
|
- if ! [[ -z $SUITE_NAMES ]]; then SUITES=$(echo $SUITE_NAMES | sed 's/\([^ ]*\)/libinput-test-suite-\1/g'); fi
|
|
- echo "Testing $SUITES"
|
|
- export MESON_TEST_ARGS="$MESON_TEST_ARGS $SUITES"
|
|
retry:
|
|
max: 2
|
|
when: script_failure
|
|
|
|
|
|
{# qemu tests are only done for the latest version of any distribution #}
|
|
{% for distro in distributions if distro.want_qemu %}
|
|
{% set version = "{}".format(distro.versions|last()) %}
|
|
{% if distro.use_for_custom_build_tests %}
|
|
.{{distro.name}}:{{version}}@test-suite-vm:
|
|
extends:
|
|
- .test-suite-vm
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: {{version}}
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_QEMU_TAG
|
|
needs:
|
|
- "{{distro.name}}:{{version}}@qemu-prep"
|
|
|
|
|
|
{% for suite in test_suites %}
|
|
vm-{{suite.name}}:
|
|
extends:
|
|
- .{{distro.name}}:{{version}}@test-suite-vm
|
|
variables:
|
|
SUITE_NAMES: '{{suite.suites|join(' ')}}'
|
|
|
|
vm-{{suite.name}}-no-libwacom:
|
|
extends:
|
|
- vm-{{suite.name}}
|
|
stage: test-suite-no-libwacom
|
|
variables:
|
|
MESON_ARGS: '-Dlibwacom=false'
|
|
|
|
{% endfor %}
|
|
|
|
{% for suite in test_suites %}
|
|
vm-valgrind-{{suite.name}}:
|
|
stage: valgrind
|
|
extends:
|
|
- vm-{{suite.name}}
|
|
variables:
|
|
MESON_TEST_ARGS: '--setup=valgrind'
|
|
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}{# for if distro.want_qemu #}
|
|
|
|
{% 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:
|
|
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"
|
|
|
|
scan-build@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
NINJA_ARGS: ''
|
|
MESON_TEST_ARGS: ''
|
|
before_script:
|
|
- dnf install -y clang-analyzer
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
- export SCANBUILD="$PWD/.gitlab-ci/scanbuild-wrapper.sh"
|
|
- ninja -C "$MESON_BUILDDIR" scan-build
|
|
after_script:
|
|
- .gitlab-ci/scanbuild-plist-to-junit.py "$MESON_BUILDDIR"/meson-logs/scanbuild/ > "$MESON_BUILDDIR"/junit-scan-build.xml
|
|
|
|
# Below jobs are build option combinations. We only
|
|
# run them on one image, they shouldn't fail on one distro
|
|
# when they succeed on another.
|
|
|
|
build-no-libwacom@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Dlibwacom=false"
|
|
|
|
build-no-libwacom-nodeps@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Dlibwacom=false"
|
|
before_script:
|
|
- dnf remove -y libwacom libwacom-devel
|
|
|
|
build-docs@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Ddocumentation=true"
|
|
|
|
build-no-docs-nodeps@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Ddocumentation=false"
|
|
before_script:
|
|
- dnf remove -y doxygen graphviz
|
|
|
|
build-no-debuggui@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Ddebug-gui=false"
|
|
|
|
build-no-debuggui-nodeps@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Ddebug-gui=false"
|
|
before_script:
|
|
- dnf remove -y gtk3-devel
|
|
|
|
build-no-tests@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Dtests=false"
|
|
|
|
build-no-tests-nodeps@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_ARGS: "-Dtests=false"
|
|
before_script:
|
|
- dnf remove -y check-devel
|
|
|
|
valgrind@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
variables:
|
|
MESON_TEST_ARGS: '--suite=valgrind --no-suite=hardware --setup=valgrind'
|
|
before_script:
|
|
- dnf install -y valgrind
|
|
|
|
# Python checks, only run on Fedora
|
|
|
|
usr-bin-env-python@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
script:
|
|
- |
|
|
if git grep -l '^#!/usr/bin/python'; then
|
|
echo "Use '/usr/bin/env python3' in the above files";
|
|
/bin/false
|
|
fi
|
|
|
|
python-format@{{distro.name}}:{{version}}:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
before_script:
|
|
- dnf install -y black
|
|
script:
|
|
- black $(git grep -l '^#!/usr/bin/env python3')
|
|
- git diff --exit-code || (echo "Please run Black against all Python files" && false)
|
|
|
|
# A job to check we're actually running all test suites in the CI
|
|
check-test-suites:
|
|
extends:
|
|
- .{{distro.name}}-build@template
|
|
before_script:
|
|
- dnf install -y jq
|
|
script:
|
|
- meson builddir
|
|
- meson introspect builddir --test | jq -r '.[].name' | grep 'libinput-test-suite' | sort > meson-testsuites
|
|
- |
|
|
cat <<EOF > ci-testsuites ;
|
|
{% for suite in test_suites %}
|
|
{% for name in suite.suites %}
|
|
libinput-test-suite-{{name}}
|
|
{% endfor %}
|
|
{% endfor %}
|
|
EOF
|
|
- sort -o ci-testsuites ci-testsuites
|
|
- diff -u8 -w ci-testsuites meson-testsuites || (echo "Some test suites are not run in the CI" && false)
|
|
only:
|
|
changes:
|
|
- "meson.build"
|
|
- ".gitlab-ci.yml"
|
|
{% endfor %}
|
|
|
|
#
|
|
# coverity run
|
|
#
|
|
# This requires the COVERITY_SCAN_TOKEN. Log into scan.coverity.com and get
|
|
# the token from the respective project settings page.
|
|
# Schedule a pipeline and set a variable COVERITY_SCAN_TOKEN with the token value.
|
|
# https://gitlab.freedesktop.org/$CI_PROJECT_PATH/-/pipeline_schedules
|
|
# Email from coverity will be sent to the GITLAB_USER_EMAIL that scheduled the
|
|
# job.
|
|
#
|
|
# Coverity ratelimits submissions and the coverity tools download is about
|
|
# 700M, do not run this too often.
|
|
#
|
|
coverity:
|
|
extends:
|
|
- .fdo.distribution-image@debian
|
|
- .policy
|
|
stage: build
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: 'stable'
|
|
FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
|
|
# so git-describe works, or should work
|
|
GIT_DEPTH: 200
|
|
only:
|
|
variables:
|
|
- $COVERITY_SCAN_TOKEN
|
|
script:
|
|
- curl https://scan.coverity.com/download/linux64
|
|
-o /tmp/cov-analysis-linux64.tgz
|
|
--form project=$CI_PROJECT_NAME
|
|
--form token=$COVERITY_SCAN_TOKEN
|
|
- tar xfz /tmp/cov-analysis-linux64.tgz
|
|
# coverity has special build options in meson, make sure we enable those
|
|
- meson coverity-build -Ddocumentation=false -Dcoverity=true
|
|
- cov-analysis-linux64-*/bin/cov-build --dir cov-int ninja -C coverity-build
|
|
- tar cfz cov-int.tar.gz cov-int
|
|
- curl https://scan.coverity.com/builds?project=$CI_PROJECT_NAME
|
|
--form token=$COVERITY_SCAN_TOKEN --form email=$GITLAB_USER_EMAIL
|
|
--form file=@cov-int.tar.gz --form version="$(git describe --tags)"
|
|
--form description="$(git describe --tags) / $CI_COMMIT_TITLE / $CI_COMMIT_REF_NAME:$CI_PIPELINE_ID"
|
|
artifacts:
|
|
name: "coverity-submit-data"
|
|
when: always
|
|
expire_in: 1 week
|
|
paths:
|
|
- cov-int.tar.gz
|
|
needs:
|
|
- "debian:stable@container-prep"
|
|
|
|
#################################################################
|
|
# #
|
|
# distro stage #
|
|
# #
|
|
#################################################################
|
|
|
|
{% for distro in distributions %}
|
|
{% if not distro.skip_container %}
|
|
{% 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 %}
|
|
{% else %}
|
|
{% set version = "{}".format(distro.versions|last()) %}
|
|
{{distro.name}}:{{version}}@default-build:
|
|
stage: distro
|
|
extends:
|
|
- .build-in-qemu@template
|
|
- .fdo.distribution-image@{{distro.name}}
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: '{{version}}'
|
|
FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_QEMU_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}}@qemu-prep"
|
|
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
#################################################################
|
|
# #
|
|
# deploy stage #
|
|
# #
|
|
#################################################################
|
|
|
|
#
|
|
# Verify that the merge request has the allow-collaboration checkbox ticked
|
|
#
|
|
|
|
check-merge-request:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
- .policy
|
|
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
|
|
|
|
build rpm:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .policy
|
|
stage: deploy
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: '34'
|
|
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
|
|
needs:
|
|
- "fedora:33@container-prep"
|
|
script:
|
|
- dnf install -y rpmdevtools jq
|
|
- meson "$MESON_BUILDDIR"
|
|
- VERSION=$(meson introspect "$MESON_BUILDDIR" --projectinfo | jq -r .version)
|
|
- sed -e "s/@PIPELINEID@/${CI_PIPELINE_ID}/"
|
|
-e "s/@GITVERSION@/${CI_COMMIT_SHA}/"
|
|
-e "s/@VERSION@/${VERSION}/" .gitlab-ci/libinput.spec.in > libinput.spec
|
|
- git config --local user.name 'gitlab CI'
|
|
- git config --local user.email 'noreply@nowhere'
|
|
- git add libinput.spec && git commit -m 'Add libinput.spec for build testing' libinput.spec
|
|
- cd "$MESON_BUILDDIR"
|
|
- meson dist --no-test
|
|
- rpmbuild -ta meson-dist/libinput*.tar.xz
|
|
|
|
|
|
wayland-web:
|
|
stage: deploy
|
|
trigger: wayland/wayland.freedesktop.org
|
|
except:
|
|
refs:
|
|
- schedules
|
|
variables:
|
|
MESON_ARGS: '-Ddocumentation=true -Ddebug-gui=false -Dlibwacom=false -Dtests=false'
|
|
MESON_BUILDDIR: 'builddir'
|
|
only:
|
|
refs:
|
|
- main
|
|
variables:
|
|
- $CI_PROJECT_PATH == "libinput/libinput"
|
|
|