diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2023-06-20 15:46:23 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2023-07-13 15:26:17 -0700 |
commit | 68e74d37b99f56bbd1a5f2fb8cb4ad6116f27bd3 (patch) | |
tree | aab43287eff02394981c905bfef7b30f7d8fdb60 /.gitlab-ci.yml | |
parent | df1bf4fe528a5a9eef420f78efb225e4696ac467 (diff) |
add Meson build system
This is, I think, equal to the autotools build-system in every practical
way. The man pages have hardcoded numbers. I think this is okay, as all
modern operating systems seem to use the same man page numbering now.
I've also chosen to not generate a config.h file with Meson. This makes
using libXau as a subproject safer, since we don't have to worry about
conflicting config.h files, plus there are only a couple of declarations
that are actually used. This also saves some configure time in writing
out an additional file.
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r-- | .gitlab-ci.yml | 74 |
1 files changed, 69 insertions, 5 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c85d2e4..074c23d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,5 @@ # 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/ @@ -30,8 +30,8 @@ variables: # 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-07-09.1' - FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake libtool make xorg-util-macros xorgproto' + FDO_DISTRIBUTION_TAG: '2023-06-21' + FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake libtool make xorg-util-macros xorgproto meson ninja jq' # @@ -81,9 +81,9 @@ container-prep: # -# The default build, runs on the image built above. +# The autotools build, runs on the image built above. # -build: +autotools: stage: build extends: - .fdo.distribution-image@arch @@ -95,4 +95,68 @@ build: - make - make check - make distcheck + - mv libXau*.tar.gz .. - popd > /dev/null + artifacts: + paths: + - libXau*.tar.gz + +# +# The meson build, runs on the image built above. +# +meson: + stage: build + extends: + - .fdo.distribution-image@arch + script: + - meson setup _builddir --prefix="$PWD/_install" + - meson configure _builddir + - ninja -C _builddir test + - ninja -C _builddir install + +meson from tarball: + extends: + - .fdo.distribution-image@arch + stage: test + script: + - mkdir -p _tarball_build + - tar xf libXau-*.tar.gz -C _tarball_build + - cd _tarball_build/libXau-* + - meson setup _builddir + - meson configure _builddir + - ninja -C _builddir test + needs: + - autotools + +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 setup 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/libXau configure //' > autotools.version + - meson introspect meson.build --projectinfo | jq -r '.version' > meson.version + - diff -u autotools.version meson.version || (echo "ERROR - autotools and meson versions not in sync" && false) |