1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
# 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/libpciaccess'
# 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-04-02.0'
BASE_PACKAGES: 'git meson ninja gcc autoconf automake libtool make xorg-util-macros pkgconf zlib'
# 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 --junit-xml=results.xml
except:
- master@xorg/lib/libpciaccess
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
parallel:
matrix:
- MESON_OPTIONS: ['-Dzlib=disabled', '-Dzlib=enabled']
script:
- mkdir -p ../_inst
- meson builddir --prefix="$PWD/../_inst" -Dwarning_level=3 $MESON_OPTIONS
- meson configure builddir
- ninja -C builddir test
- ninja -C builddir install
autotools:
extends:
- .fdo.distribution-image@arch
stage: build
parallel:
matrix:
- CONFIGURE_OPTIONS: ['', '--with-zlib']
script:
- mkdir -p ../_inst _build
- autoreconf -ivf
- pushd _build
- ../configure --prefix="$PWD/../_inst" $CONFIGURE_OPTIONS
- make check
- make install
- make distcheck
- mv libpciaccess*.tar.gz ..
- popd
artifacts:
paths:
- libpciaccess*.tar.gz
meson from tarball:
extends:
- .fdo.distribution-image@arch
stage: test
script:
- mkdir -p _tarball_build
- tar xf libpciaccess-*.tar.gz -C _tarball_build
- pushd _tarball_build/libpciaccess-*
- 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 --enable-shared --disable-static
- 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/libpciaccess 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)
|