summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2023-06-20 15:46:23 -0700
committerDylan Baker <dylan@pnwbakers.com>2023-07-13 15:26:17 -0700
commit68e74d37b99f56bbd1a5f2fb8cb4ad6116f27bd3 (patch)
treeaab43287eff02394981c905bfef7b30f7d8fdb60 /.gitlab-ci.yml
parentdf1bf4fe528a5a9eef420f78efb225e4696ac467 (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.yml74
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)