-# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0:
+########################################
+# #
+# THIS FILE IS GENERATED, DO NOT EDIT #
+# #
+########################################
+
+.templates_sha: &template_sha 2469555cd0a6b621b988e100ddd746c2ad0cdd1d # see https://docs.gitlab.com/ee/ci/yaml/#includefile
+
+include:
+ # Alpine container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/alpine.yml'
+ # Arch container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/arch.yml'
+ # Centos container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/centos.yml'
+ # Debian container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/debian.yml'
+ # Fedora container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/fedora.yml'
+ # Ubuntu container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/ubuntu.yml'
+
+stages:
+ - prep # rebuild the container images if there is a change
+ - build # for actually building and testing things in a container
+ - VM # for running the test suite in a VM
+ - autotools # distribution builds with autotools
+ - meson # distribution builds with meson
+ - tarballs # tarball builds
+ - container_clean # clean up unused container images
variables:
- FEDORA_RPMS: 'gcc gcc-c++ automake libtool make pkgconfig python3 check-devel valgrind binutils doxygen xz'
- CENTOS_RPMS: $FEDORA_RPMS
- UBUNTU_DEBS: 'gcc g++ automake libtool make pkg-config python3 check valgrind binutils doxygen xz-utils'
- DEBIAN_DEBS: $UBUNTU_DEBS
+ # The upstrem repository we will check for images
+ FDO_UPSTREAM_REPO: libevdev/libevdev
LIBEVDEV_SKIP_ROOT_TESTS: 1
+ GIT_DEPTH: 1
+ MESON_BUILDDIR: 'build dir'
-.default_artifacts: &default_artifacts
+.default_artifacts:
artifacts:
paths:
- - test/test-suite.log
+ - _build/test/test-suite.log
+ - $MESON_BUILDDIR/meson-logs/
expire_in: 1 week
when: on_failure
+ reports:
+ junit: $MESON_BUILDDIR/junit-*.xml
-.default_build: &default_build
+.autotools_build:
+ extends:
+ - .default_artifacts
script:
- - autoreconf -ivf
- - ./configure --disable-silent-rules
+ - mkdir _build
+ - pushd _build > /dev/null
+ - ../autogen.sh --disable-silent-rules $CONFIGURE_FLAGS
- make
- make check
+ - if ! [[ -z "$MAKE_ARGS" ]]; then make $MAKE_ARGS; fi
+ - popd > /dev/null
-.default_build_distcheck: &default_build_distcheck
+.meson_build:
+ extends:
+ - .default_artifacts
script:
- - autoreconf -ivf
- - ./configure --disable-silent-rules
- - make
- - make check
- - make distcheck
+ - .gitlab-ci/meson-build.sh
-fedora:28:
- image: fedora:28
- before_script:
- - dnf upgrade -y
- - dnf install -y $FEDORA_RPMS
- <<: *default_build_distcheck
+.fedora:30:
+ extends: .fdo.distribution_image@fedora
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: '30'
+
+.fedora:31:
+ extends: .fdo.distribution_image@fedora
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: '31'
+
+.ubuntu:19.10:
+ extends: .fdo.distribution_image@ubuntu
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: '19.10'
+
+.ubuntu:19.04:
+ extends: .fdo.distribution_image@ubuntu
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: '19.04'
-centos:7:
- image: centos:7
+.debian:stable:
+ extends: .fdo.distribution_image@debian
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: 'stable'
+
+.debian:sid:
+ extends: .fdo.distribution_image@debian
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: 'sid'
+
+.centos:7:
+ extends: .fdo.distribution_image@centos
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: '7'
+
+.centos:8:
+ extends: .fdo.distribution_image@centos
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: '8'
+
+.arch:rolling:
+ extends: .fdo.distribution_image@arch
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: 'rolling'
+
+.alpine:latest:
+ extends: .fdo.distribution_image@alpine
+ variables:
+ FDO_DISTRIBUTION_TAG: '2020-03-13.0'
+ FDO_DISTRIBUTION_VERSION: 'latest'
+
+
+
+#################################################################
+# #
+# prep 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:
+ image: golang:alpine
+ stage: prep
before_script:
- - yum update -y
- - yum install -y $CENTOS_RPMS
- <<: *default_build_distcheck
+ - apk add python3 git
+ - pip3 install --user jinja2 PyYAML
+ script:
+ - python3 ./.gitlab-ci/generate-gitlab-ci.py
+ - git diff --exit-code && exit 0 || true
+ - echo "Committed gitlab-ci.yml differs from generated gitlab-ci.yml. Please verify"
+ - exit 1
-ubuntu:18.04:
- image: ubuntu:18.04
+check-commit:
+ image: golang:alpine
+ stage: prep
before_script:
- - apt-get update
- - apt-get upgrade -y
- - apt-get install -y $UBUNTU_DEBS
- <<: *default_build_distcheck
+ - apk add python3 git
+ script:
+ - pip3 install GitPython
+ - pip3 install pytest
+ - |
+ pytest --junitxml=results.xml \
+ --tb=line \
+ --assert=plain \
+ ./.gitlab-ci/check-commit.py
+ except:
+ - master@libevdev/libevdev
+ variables:
+ GIT_DEPTH: 100
+ artifacts:
+ expire_in: 1 week
+ when: on_failure
+ paths:
+ - results.xml
+ reports:
+ junit: results.xml
+
+.fedora.packages:
+ variables:
+ FDO_DISTRIBUTION_PACKAGES: 'git gcc gcc-c++ meson automake autoconf libtool make pkgconfig python3 check-devel valgrind binutils doxygen xz clang-analyzer'
+
+.ubuntu.packages:
+ variables:
+ FDO_DISTRIBUTION_PACKAGES: 'git gcc g++ meson automake autoconf libtool make pkg-config python3 check valgrind binutils doxygen xz-utils'
+
+.debian.packages:
+ variables:
+ FDO_DISTRIBUTION_PACKAGES: 'git gcc g++ meson automake autoconf libtool make pkg-config python3 check valgrind binutils doxygen xz-utils'
+
+.centos.packages:
+ variables:
+ FDO_DISTRIBUTION_PACKAGES: 'git gcc gcc-c++ automake autoconf libtool make pkgconfig python3 check-devel valgrind binutils xz'
+
+.arch.packages:
+ variables:
+ FDO_DISTRIBUTION_PACKAGES: 'git gcc meson automake autoconf libtool make pkgconfig python3 check valgrind binutils doxygen'
+
+.alpine.packages:
+ variables:
+ FDO_DISTRIBUTION_PACKAGES: 'git gcc g++ meson automake autoconf libtool make pkgconfig python3 check-dev valgrind binutils doxygen xz linux-headers'
+
+
+# Pulls in the qemu container from upstream or rebuilds it if missing
+.fedora:30@qemu-prep:
+ extends:
+ - .fedora:30
+ - .fedora.packages
+ - .fdo.qemu-ifnot-exists@fedora
+ stage: prep
+ tags:
+ - kvm
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_TAG: qemu-2020-03-13.0
+ allow_failure: true
+
+# Always rebuilds the container
+.fedora:30@qemu-forced-rebuild:
+ extends:
+ - .fedora:30
+ - .fedora.packages
+ - .fdo.qemu-ifnot-exists@fedora
+ stage: prep
+ tags:
+ - kvm
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_TAG: qemu-2020-03-13.0
+ allow_failure: true
+ only:
+ - schedules
+
+# Pulls in the qemu container from upstream or rebuilds it if missing
+.fedora:31@qemu-prep:
+ extends:
+ - .fedora:31
+ - .fedora.packages
+ - .fdo.qemu-ifnot-exists@fedora
+ stage: prep
+ tags:
+ - kvm
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_TAG: qemu-2020-03-13.0
+ allow_failure: true
+
+# Always rebuilds the container
+.fedora:31@qemu-forced-rebuild:
+ extends:
+ - .fedora:31
+ - .fedora.packages
+ - .fdo.qemu-ifnot-exists@fedora
+ stage: prep
+ tags:
+ - kvm
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_TAG: qemu-2020-03-13.0
+ allow_failure: true
+ only:
+ - schedules
+
+
+# This is the actual job
+fedora:31@qemu-prep:
+ extends: .fedora:31@qemu-prep
-debian:stable:
- image: debian:stable
+fedora:31@qemu-forced-rebuild:
+ extends: .fedora:31@qemu-forced-rebuild
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+fedora:30@container-prep:
+ extends:
+ - .fedora:30
+ - .fedora.packages
+ - .fdo.container-ifnot-exists@fedora
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+fedora:30@container-forced-rebuild:
+ extends:
+ - .fedora:30
+ - .fedora.packages
+ - .fdo.container-build@fedora
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+fedora:31@container-prep:
+ extends:
+ - .fedora:31
+ - .fedora.packages
+ - .fdo.container-ifnot-exists@fedora
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+fedora:31@container-forced-rebuild:
+ extends:
+ - .fedora:31
+ - .fedora.packages
+ - .fdo.container-build@fedora
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+ubuntu:19.10@container-prep:
+ extends:
+ - .ubuntu:19.10
+ - .ubuntu.packages
+ - .fdo.container-ifnot-exists@ubuntu
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+ubuntu:19.10@container-forced-rebuild:
+ extends:
+ - .ubuntu:19.10
+ - .ubuntu.packages
+ - .fdo.container-build@ubuntu
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+ubuntu:19.04@container-prep:
+ extends:
+ - .ubuntu:19.04
+ - .ubuntu.packages
+ - .fdo.container-ifnot-exists@ubuntu
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+ubuntu:19.04@container-forced-rebuild:
+ extends:
+ - .ubuntu:19.04
+ - .ubuntu.packages
+ - .fdo.container-build@ubuntu
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+debian:stable@container-prep:
+ extends:
+ - .debian:stable
+ - .debian.packages
+ - .fdo.container-ifnot-exists@debian
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+debian:stable@container-forced-rebuild:
+ extends:
+ - .debian:stable
+ - .debian.packages
+ - .fdo.container-build@debian
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+debian:sid@container-prep:
+ extends:
+ - .debian:sid
+ - .debian.packages
+ - .fdo.container-ifnot-exists@debian
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+debian:sid@container-forced-rebuild:
+ extends:
+ - .debian:sid
+ - .debian.packages
+ - .fdo.container-build@debian
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+centos:7@container-prep:
+ extends:
+ - .centos:7
+ - .centos.packages
+ - .fdo.container-ifnot-exists@centos
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+centos:7@container-forced-rebuild:
+ extends:
+ - .centos:7
+ - .centos.packages
+ - .fdo.container-build@centos
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+centos:8@container-prep:
+ extends:
+ - .centos:8
+ - .centos.packages
+ - .fdo.container-ifnot-exists@centos
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+centos:8@container-forced-rebuild:
+ extends:
+ - .centos:8
+ - .centos.packages
+ - .fdo.container-build@centos
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+arch:rolling@container-prep:
+ extends:
+ - .arch:rolling
+ - .arch.packages
+ - .fdo.container-ifnot-exists@arch
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+arch:rolling@container-forced-rebuild:
+ extends:
+ - .arch:rolling
+ - .arch.packages
+ - .fdo.container-build@arch
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+# Pulls in the container from upstream or rebuilds it if missing
+alpine:latest@container-prep:
+ extends:
+ - .alpine:latest
+ - .alpine.packages
+ - .fdo.container-ifnot-exists@alpine
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+
+# Always rebuilds the container
+alpine:latest@container-forced-rebuild:
+ extends:
+ - .alpine:latest
+ - .alpine.packages
+ - .fdo.container-build@alpine
+ stage: prep
+ only:
+ - schedules
+ variables:
+ GIT_STRATEGY: none
+
+
+#################################################################
+# #
+# 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:
+ stage: container_clean
+ image: golang:alpine
before_script:
- - apt-get update
- - apt-get upgrade -y
- - apt-get install -y $DEBIAN_DEBS
- <<: *default_build_distcheck
+ - apk add python3
+ - pip3 install --user python-gitlab
+ script:
+ - LATEST_TAG=$(echo $DISTRO_CONTAINER_IMAGE | cut -f2 -d:)
+ # Go to your Profile, Settings, Access Tokens
+ # Create a personal token with 'api' scope, copy the value.
+ # Go to Settings, CI/CD, Variables
+ # Define a variable of type File named AUTHFILE. Content is that token
+ # value.
+ - python3 .gitlab-ci/gitlab-container-delete $CI_SERVER_URL $CI_PROJECT_PATH
+ --repository $FDO_DISTRIBUTION_NAME/$FDO_DISTRIBUTION_VERSION
+ --authfile $AUTHFILE --exclude-tag "$LATEST_TAG"
+ dependencies: []
+ allow_failure: true
+ only:
+ - schedules
+
+### fedora 30
+fedora:30@container-clean:
+ extends:
+ - .fedora:30
+ - .container-clean
+ needs: ["fedora:30@container-prep"]
+
+### fedora 31
+fedora:31@container-clean:
+ extends:
+ - .fedora:31
+ - .container-clean
+ needs: ["fedora:31@container-prep"]
+
+### ubuntu 19.10
+ubuntu:19.10@container-clean:
+ extends:
+ - .ubuntu:19.10
+ - .container-clean
+ needs: ["ubuntu:19.10@container-prep"]
+
+### ubuntu 19.04
+ubuntu:19.04@container-clean:
+ extends:
+ - .ubuntu:19.04
+ - .container-clean
+ needs: ["ubuntu:19.04@container-prep"]
+
+### debian stable
+debian:stable@container-clean:
+ extends:
+ - .debian:stable
+ - .container-clean
+ needs: ["debian:stable@container-prep"]
+
+### debian sid
+debian:sid@container-clean:
+ extends:
+ - .debian:sid
+ - .container-clean
+ needs: ["debian:sid@container-prep"]
+
+### centos 7
+centos:7@container-clean:
+ extends:
+ - .centos:7
+ - .container-clean
+ needs: ["centos:7@container-prep"]
+
+### centos 8
+centos:8@container-clean:
+ extends:
+ - .centos:8
+ - .container-clean
+ needs: ["centos:8@container-prep"]
+
+### arch rolling
+arch:rolling@container-clean:
+ extends:
+ - .arch:rolling
+ - .container-clean
+ needs: ["arch:rolling@container-prep"]
+
+### alpine latest
+alpine:latest@container-clean:
+ extends:
+ - .alpine:latest
+ - .container-clean
+ needs: ["alpine:latest@container-prep"]
+
+
+#################################################################
+# #
+# build stage #
+# #
+#################################################################
+
+.autotools-build@template:
+ extends:
+ - .autotools_build
+ stage: build
+ dependencies: []
+ variables:
+ MAKE_ARGS: "distcheck"
+
+.meson-build@template:
+ extends:
+ - .meson_build
+ stage: build
+ dependencies: []
+ variables:
+ NINJA_ARGS: "dist"
+
+
+fedora:30@autotools-build:
+ extends:
+ - .fedora:30
+ - .autotools-build@template
+ stage: autotools
+ needs: ['fedora:30@container-prep']
+
+fedora:30@meson-build:
+ extends:
+ - .fedora:30
+ - .meson-build@template
+ stage: meson
+ needs: ['fedora:30@container-prep']
+
+
+fedora:31@autotools-build:
+ extends:
+ - .fedora:31
+ - .autotools-build@template
+ stage: autotools
+ needs: ['fedora:31@container-prep']
+
+fedora:31@meson-build:
+ extends:
+ - .fedora:31
+ - .meson-build@template
+ stage: meson
+ needs: ['fedora:31@container-prep']
+
+
+ubuntu:19.10@autotools-build:
+ extends:
+ - .ubuntu:19.10
+ - .autotools-build@template
+ stage: autotools
+ needs: ['ubuntu:19.10@container-prep']
+
+ubuntu:19.10@meson-build:
+ extends:
+ - .ubuntu:19.10
+ - .meson-build@template
+ stage: meson
+ needs: ['ubuntu:19.10@container-prep']
+
+
+ubuntu:19.04@autotools-build:
+ extends:
+ - .ubuntu:19.04
+ - .autotools-build@template
+ stage: autotools
+ needs: ['ubuntu:19.04@container-prep']
+
+ubuntu:19.04@meson-build:
+ extends:
+ - .ubuntu:19.04
+ - .meson-build@template
+ stage: meson
+ needs: ['ubuntu:19.04@container-prep']
+
+
+debian:stable@autotools-build:
+ extends:
+ - .debian:stable
+ - .autotools-build@template
+ stage: autotools
+ needs: ['debian:stable@container-prep']
+
+debian:stable@meson-build:
+ extends:
+ - .debian:stable
+ - .meson-build@template
+ stage: meson
+ needs: ['debian:stable@container-prep']
+
+
+debian:sid@autotools-build:
+ extends:
+ - .debian:sid
+ - .autotools-build@template
+ stage: autotools
+ needs: ['debian:sid@container-prep']
+
+debian:sid@meson-build:
+ extends:
+ - .debian:sid
+ - .meson-build@template
+ stage: meson
+ needs: ['debian:sid@container-prep']
+
+
+centos:7@autotools-build:
+ extends:
+ - .centos:7
+ - .autotools-build@template
+ stage: autotools
+ variables:
+ MAKE_ARGS: '' # disable distcheck, requires doxygen
+ needs: ['centos:7@container-prep']
+
+
+
+centos:8@autotools-build:
+ extends:
+ - .centos:8
+ - .autotools-build@template
+ stage: autotools
+ variables:
+ MAKE_ARGS: '' # disable distcheck, requires doxygen
+ needs: ['centos:8@container-prep']
+
+
+
+arch:rolling@autotools-build:
+ extends:
+ - .arch:rolling
+ - .autotools-build@template
+ stage: autotools
+ needs: ['arch:rolling@container-prep']
+
+arch:rolling@meson-build:
+ extends:
+ - .arch:rolling
+ - .meson-build@template
+ stage: meson
+ needs: ['arch:rolling@container-prep']
+
+
+alpine:latest@autotools-build:
+ extends:
+ - .alpine:latest
+ - .autotools-build@template
+ stage: autotools
+ needs: ['alpine:latest@container-prep']
+
+alpine:latest@meson-build:
+ extends:
+ - .alpine:latest
+ - .meson-build@template
+ stage: meson
+ needs: ['alpine:latest@container-prep']
+
# Build argument tests
#
-# We run the build option combinations on the Centos image
-# because it's the fastest one to yum update.
-centos:7:no-valgrind:
- image: centos:7
+# We only run the build option combinations on one image
+# because they're supposed to fail equally on all
+.fedora-custom-build@autotools-template:
+ extends:
+ - .fedora:31
+ - .autotools-build@template
+ stage: build
+ needs: ['fedora:31@container-prep']
+
+no-valgrind:autotools:
+ extends: .fedora-custom-build@autotools-template
before_script:
- - yum update -y
- - yum install -y $CENTOS_RPMS
- - yum remove -y valgrind
- <<: *default_build_distcheck
+ - dnf remove -y valgrind
-centos:7:no-check:
- image: centos:7
+no-check:autotools:
+ extends: .fedora-custom-build@autotools-template
before_script:
- - yum update -y
- - yum install -y $CENTOS_RPMS
- - yum remove -y check check-devel
- <<: *default_build_distcheck
+ - dnf remove -y check check-devel
-# doxygen is required for distcheck
-centos:7:no-doxygen:
- image: centos:7
+no-doxygen:autotools:
+ extends: .fedora-custom-build@autotools-template
before_script:
- - yum update -y
- - yum install -y $CENTOS_RPMS
- - yum remove -y doxygen
- <<: *default_build
+ - dnf remove -y doxygen
+ variables:
+ MAKE_ARGS: '' # disable distcheck, requires doxygen
# doxygen is required for distcheck
-centos:7:no-doxygen-check-valgrind:
- image: centos:7
+no-doxygen-check-valgrind:autotools:
+ extends: .fedora-custom-build@autotools-template
before_script:
- - yum update -y
- - yum install -y $CENTOS_RPMS
- - yum remove -y doxygen valgrind check check-devel
- <<: *default_build
+ - dnf remove -y doxygen valgrind check check-devel
+ variables:
+ MAKE_ARGS: '' # disable distcheck, requires doxygen
-centos:7:no-nm:
- image: centos:7
+no-nm:autotools:
+ extends: .fedora-custom-build@autotools-template
before_script:
- - yum update -y
- - yum install -y $CENTOS_RPMS
- mv /usr/bin/nm /usr/bin/nm.moved
- <<: *default_build_distcheck
-centos:7:enable-gcov:
- image: centos:7
+enable-gcov:autotools:
+ extends: .fedora-custom-build@autotools-template
+ variables:
+ CONFIGURE_FLAGS: "--enable-gcov"
+
+.fedora-custom-build@meson-template:
+ extends:
+ - .fedora:31
+ - .meson-build@template
+ stage: build
+ needs: ['fedora:31@container-prep']
+
+no-valgrind:meson:
+ extends: .fedora-custom-build@meson-template
+ before_script:
+ - dnf remove -y valgrind
+
+no-check:meson:
+ extends: .fedora-custom-build@meson-template
+ before_script:
+ - dnf remove -y check check-devel
+ variables:
+ MESON_ARGS: -Dtests=disabled
+ SKIP_MESON_TEST: 1
+
+# doxygen is required for dist
+no-doxygen:meson:
+ extends: .fedora-custom-build@meson-template
before_script:
- - yum update -y
- - yum install -y $CENTOS_RPMS
+ - dnf remove -y doxygen
+ variables:
+ MESON_ARGS: -Ddocumentation=disabled
+ NINJA_ARGS: ''
+
+# doxygen is required for dist
+no-doxygen-check-valgrind:meson:
+ extends: .fedora-custom-build@meson-template
+ before_script:
+ - dnf remove -y doxygen valgrind check check-devel
+ variables:
+ MESON_ARGS: -Dtests=disabled -Ddocumentation=disabled
+ NINJA_ARGS: ''
+ SKIP_MESON_TEST: 1
+
+enable-gcov:meson:
+ extends: .fedora-custom-build@meson-template
+ variables:
+ MESON_ARGS: '-Dcoverity=true'
+
+scan-build:meson:
+ extends: .fedora-custom-build@meson-template
+ variables:
+ NINJA_ARGS: 'scan-build'
+ SKIP_MESON_TEST: 1
+
+static-build:meson:
+ extends: .fedora-custom-build@meson-template
script:
- - autoreconf -ivf
- - ./configure --disable-silent-rules --enable-gcov
+ - meson "$MESON_BUILDDIR" --default-library=static --prefix=$PWD/prefix-meson/
+ - ninja -C "$MESON_BUILDDIR" install
+ - ls -l $PWD/prefix-meson/lib64/libevdev.a
+
+soname:
+ extends:
+ - .fedora:31
+ stage: build
+ script:
+ - ./autogen.sh --prefix=$PWD/prefix-autotools/
+ - make install
+ - ls -l $PWD/prefix-autotools/lib/libevdev.so.2.3.0
+ - meson "$MESON_BUILDDIR" --prefix=$PWD/prefix-meson/
+ - ninja -C "$MESON_BUILDDIR" install
+ - ls -l $PWD/prefix-meson/lib64/libevdev.so.2.3.0
+ needs: ['fedora:31@container-prep']
+
+#################################################################
+# #
+# VM stage #
+# #
+#################################################################
+
+.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
+
+.qemu@fedora:31:
+ extends:
+ - .fedora:31
+ stage: VM
+ image: $CI_REGISTRY_IMAGE/$FDO_DISTRIBUTION_NAME/$FDO_DISTRIBUTION_VERSION:qemu-$FDO_DISTRIBUTION_TAG
+ tags:
+ - kvm
+ variables:
+ MESON_BUILDDIR: build_dir
+ script:
+ # start our vm, no args required
+ - /app/start_vm.sh
+
+ - *check_tainted
+
+ - "scp -P 5555 -r $PWD localhost:"
+ - echo "CI_JOB_ID=\"$CI_JOB_ID\"" > sshenv
+ - echo "CI_JOB_NAME=\"$CI_JOB_NAME\"" >> sshenv
+ - echo "MESON_BUILDDIR=\"$MESON_BUILDDIR\"" >> sshenv
+ - echo "MESON_TEST_ARGS=\"$MESON_TEST_ARGS\"" >> sshenv
+ - echo "NINJA_ARGS=\"$NINJA_ARGS\"" >> sshenv
+ - "scp -P 5555 sshenv localhost:~/$CI_PROJECT_NAME/.meson_environment"
+ - ssh localhost -p 5555 "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 -P 5555 -r localhost:$CI_PROJECT_NAME/"$MESON_BUILDDIR" .
+
+ - *check_tainted
+
+ - ssh localhost -p 5555 halt || true
+ - sleep 2
+ - pkill qemu || true
+
+ - 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
+
+ retry:
+ max: 2
+ when: script_failure
+ needs: ['fedora:31@qemu-prep']
+
+qemu:meson:
+ extends: .qemu@fedora:31
+
+qemu:meson:valgrind:
+ extends: .qemu@fedora:31
+ variables:
+ MESON_TEST_ARGS: '--setup=valgrind'
+
+meson-from-tarball:
+ extends:
+ - .fedora:31
+ stage: tarballs
+ script:
+ - export INSTALLDIR="$PWD/_inst"
+ - mkdir _build
+ - pushd _build > /dev/null
+ - ../autogen.sh --disable-silent-rules $CONFIGURE_FLAGS
- make
- - make check
- make distcheck
+ - popd > /dev/null
+ - mkdir -p _tarball_dir
+ - tar xf _build/libevdev-*.tar.xz -C _tarball_dir
+ - pushd _tarball_dir/libevdev-*/ > /dev/null
+ - meson "$MESON_BUILDDIR" --prefix="$INSTALLDIR"
+ - ninja -C "$MESON_BUILDDIR" test
+ - ninja -C "$MESON_BUILDDIR" install
+ - popd > /dev/null
+ - ls -lR $INSTALLDIR
+ needs: ['fedora:31@container-prep']
+
+autotools-from-tarball:
+ extends:
+ - .fedora:31
+ stage: tarballs
+ script:
+ - export INSTALLDIR="$PWD/_inst"
+ - meson "$MESON_BUILDDIR"
+ - ninja -C "$MESON_BUILDDIR" dist
+ - mkdir -p _tarball_dir
+ - tar xf "$MESON_BUILDDIR"/meson-dist/libevdev-*.xz -C _tarball_dir
+ - pushd _tarball_dir/libevdev-*/ > /dev/null
+ - mkdir _build
+ - pushd _build > /dev/null
+ - ../autogen.sh --disable-silent-rules --prefix="$INSTALLDIR" $CONFIGURE_FLAGS
+ - make
+ - make install
+ - make distcheck
+ - popd > /dev/null
+ - popd > /dev/null
+ - ls -lR $INSTALLDIR
+ needs: ['fedora:31@container-prep']
\ No newline at end of file