# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:
#
# This CI uses the freedesktop.org ci-templates.
# Please see the ci-templates documentation for details:
# https://freedesktop.pages.freedesktop.org/ci-templates/

.templates_sha: &template_sha aec7a6ce7bb38902c70641526f6611e27141784a # see https://docs.gitlab.com/ee/ci/yaml/#includefile


include:
  # Arch container builder template
  - project: 'freedesktop/ci-templates'
    ref: *template_sha
    file: '/templates/arch.yml'
  - project: 'freedesktop/ci-templates'
    ref: *template_sha
    file: '/templates/ci-fairy.yml'
  - template: Security/SAST.gitlab-ci.yml

workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    - if: $CI_PIPELINE_SOURCE == 'push'

stages:
  - prep             # prep work like rebuilding the container images if there is a change
  - build            # for actually building and testing things in a container
  - test
  - deploy


variables:
  FDO_UPSTREAM_REPO: 'xorg/lib/libxkbfile'
  # The tag should be updated each time the list of packages is updated.
  # Changing a tag forces the associated image to be rebuilt.
  # Note: the tag has no meaning, we use a date format purely for readability
  FDO_DISTRIBUTION_TAG: '2025-09-13.0'
  # minimal set of packages required to build and install with any build tool
  BASE_PACKAGES: 'git gcc pkgconf xorgproto libx11'
  # packages needed to build and install with meson
  MESON_PACKAGES: 'meson ninja'
  FDO_DISTRIBUTION_PACKAGES: $BASE_PACKAGES $MESON_PACKAGES


#
# Verify that commit messages are as expected
#
check-commits:
  extends:
    - .fdo.ci-fairy
  stage: prep
  script:
    - ci-fairy check-commits --junit-xml=results.xml
  except:
    - master@xorg/lib/libxkbfile
  variables:
    GIT_DEPTH: 100
  artifacts:
    reports:
      junit: results.xml


#
# Build a container with the given tag and the packages pre-installed.
# This only happens if/when the tag changes, otherwise the existing image is
# re-used.
#
container-prep:
  extends:
    - .fdo.container-build@arch
  stage: prep
  variables:
    GIT_STRATEGY: none

#
# Builds run on the image built above.
#

meson:
  extends:
    - .fdo.distribution-image@arch
  stage: build
  script:
    - mkdir -p ../_inst
    - meson setup builddir --prefix="$PWD/../_inst" -Dwarning_level=3
    - meson compile -C builddir
    - meson test -C builddir
    - meson install -C builddir
