Blob Blame History Raw
include:
  - project: 'libfprint/libfprint'
    ref: master
    file: '/.gitlab-ci/libfprint-templates.yaml'
  - project: 'wayland/ci-templates'
    ref: master
    file: '/templates/fedora.yml'

variables:
  extends: .libfprint_common_variables
  FDO_DISTRIBUTION_TAG: latest
  FDO_DISTRIBUTION_VERSION: rawhide
  FEDORA_IMAGE: "$CI_REGISTRY/libfprint/$CI_PROJECT_NAME/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG"
  DEPENDENCIES: dbus-glib-devel
                gcc
                gcovr
                gettext
                git
                glibc-devel
                gtk-doc
                libasan
                libfprint-devel
                meson
                pam-devel
                polkit-devel
                python3-dbusmock
                python3-libpamtest
                systemd-devel

image: "$FEDORA_IMAGE"

stages:
  - check-source
  - build
  - test

.fprintd_build_preconditions:
  except:
    variables:
      - $FPRINT_CRON_TASK == "BUILD_CI_IMAGES"

.install_libfprint_dev:
  before_script:
    # Make sure we don't build or link against the system libfprint
    - dnf remove -y libfprint-devel
    - git clone https://gitlab.freedesktop.org/libfprint/libfprint.git
    - cd libfprint
    - meson . _build --prefix=/usr -Ddrivers=virtual_image -Ddoc=false
    - ninja -C _build
    - ninja -C _build install
    - cd ..
    # So we don't get error about this libfprint file
    - echo "libfprint/demo/gtk-libfprint-test.ui" >> po/POTFILES.skip

test_indent:
  stage: check-source
  extends: .fprintd_build_preconditions
  script:
    - scripts/uncrustify.sh
    - git diff
    - "! git status -s | grep -q ."

build_stable:
  extends: .fprintd_build_preconditions
  stage: build
  script:
    - meson _build
    - ninja -C _build -v
    - ninja -C _build -v install

build_dev:
  extends:
    - .fprintd_build_preconditions
    - .install_libfprint_dev
  stage: build
  script:
    - meson _build --werror -Dgtk_doc=true
    - ninja -C _build -v
    - ninja -C _build -v install
  artifacts:
    name: log
    when: on_failure
    paths:
      - _build/meson-logs/*.txt

test_dev:
  extends:
    - .fprintd_build_preconditions
    - .install_libfprint_dev
  stage: test
  script:
    - meson _build -Db_coverage=true
    - meson test -C _build --verbose --no-stdsplit --timeout-multiplier 3
    - ninja -C _build coverage
    - cat _build/meson-logs/coverage.txt
  artifacts:
    name: log-and-coverage
    when: always
    paths:
      - _build/meson-logs

test_dev_with_sanitizer:
  extends:
    - .fprintd_build_preconditions
    - .install_libfprint_dev
  stage: test
  script:
    - meson _build -Db_sanitize=address
    - meson test -C _build --verbose --no-stdsplit --timeout-multiplier 5
  artifacts:
    name: meson-logs
    when: on_failure
    paths:
      - _build/meson-logs

# CONTAINERS creation stage
container_fedora_build:
  extends: .fdo.container-build@fedora
  only:
    variables:
      - $FPRINT_CRON_TASK == "BUILD_CI_IMAGES"
  variables:
    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
    # a list of packages to install
    FDO_DISTRIBUTION_PACKAGES:
      $DEPENDENCIES
      $LIBFPRINT_DEPENDENCIES