diff options
-rw-r--r-- | .gitlab-ci.yml | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..bf25434 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,174 @@ +# 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 34f4ade99434043f88e164933f570301fd18b125 # 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 + + +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/libXvMC' + # 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: '2022-03-26.1' + BASE_PACKAGES: 'git meson ninja gcc autoconf automake make xorg-util-macros pkgconf xorgproto libx11 libxext libxv' + # extra packages we need for various tests + EXTRA_PACKAGES: 'jq' + FDO_DISTRIBUTION_PACKAGES: $BASE_PACKAGES $EXTRA_PACKAGES + +# +# Verify that commit messages are as expected, signed-off, etc. +# +check-commits: + extends: + - .fdo.ci-fairy + stage: prep + script: + - ci-fairy check-commits --signed-off-by --junit-xml=results.xml + except: + - master@xorg/lib/libXvMC + 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 + + +# +# 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 builddir --prefix="$PWD/../_inst" $MESON_OPTIONS + - meson configure builddir + - ninja -C builddir test + - ninja -C builddir install + +autotools: + extends: + - .fdo.distribution-image@arch + stage: build + script: + - mkdir -p ../_inst _build + - autoreconf -ivf + - pushd _build + - ../configure --prefix="$PWD/../_inst" $CONFIGURE_OPTIONS + - make check + - make install + - make distcheck + - mv libXvMC*.tar.gz .. + - popd + artifacts: + paths: + - libXvMC*.tar.gz + +meson from tarball: + extends: + - .fdo.distribution-image@arch + stage: test + script: + - mkdir -p _tarball_build + - tar xf libXvMC-*.tar.gz -C _tarball_build + - pushd _tarball_build/libXvMC-* + - meson builddir + - meson configure builddir + - ninja -C builddir test + needs: + - autotools + variables: + GIT_STRATEGY: none + +# +# Unlike the xproto version this was copied from, this just compares +# the ls output to make sure the same files were installed, since +# comparing file contents lists mismatches with the ELF binaries and +# in the generated pkg-config files that are not issues here. +# +compare meson and autotools: + extends: + - .fdo.distribution-image@arch + stage: test + script: + - mkdir -p $PWD/_meson_inst + - mkdir -p $PWD/_autotools_inst + # the prefix ends up in the pkgconfig files, so we use a symlink + # to use the same --prefix for meson and autotools + - ln -sf $PWD/_meson_inst $PWD/_inst + - meson builddir + - meson configure builddir --prefix=$PWD/_inst + - ninja -C builddir install + - ls -R _inst > _meson_inst.ls + - rm $PWD/_inst + - ln -sf $PWD/_autotools_inst $PWD/_inst + - autoreconf -ivf + - ./configure --prefix=$PWD/_inst + - make && make install + - rm -f $PWD/_inst/lib/lib*.la + - ls -R _inst > _autotools_inst.ls + - diff -u $PWD/_meson_inst.ls $PWD/_autotools_inst.ls + +check versions are in sync: + extends: + - .fdo.distribution-image@arch + stage: test + script: + - autoreconf -ivf + - ./configure --version | head -n 1 | sed -e 's/libXvMC configure //' > autotools.version + - | + meson builddir + pushd builddir + meson introspect --projectinfo | jq -r '.version' > ../meson.version + popd + - diff -u autotools.version meson.version || (echo "ERROR - autotools and meson versions not in sync" && false) |