summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2025-02-23 17:28:28 -0800
committerAlan Coopersmith <alan.coopersmith@oracle.com>2025-02-23 18:12:17 -0800
commit61b84c2d424f363fb0983cb478937de87084ef54 (patch)
tree52a0335d06d6d06c2dbf6ae9d131a913020b8aa9 /.gitlab-ci.yml
parent8ae6cf61b18ecddf26f72a07bbfbd1ea9f022c36 (diff)
meson: Add option to build with mesonHEADmaster
Also updates the gitlab CI config to test both build types and compare the generated output/installed files. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxcursor/-/merge_requests/24>
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml92
1 files changed, 88 insertions, 4 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bffb9f1..f4819a7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -30,8 +30,15 @@ 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-04-03.0'
- FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake libtool make xorg-util-macros libxrender libxfixes libx11 xorgproto'
+ FDO_DISTRIBUTION_TAG: '2025-02-15.0'
+ # minimal set of packages required to build and install either way
+ BASE_PACKAGES: 'git gcc clang pkgconf libxrender libxfixes libx11 xorgproto'
+ # packages needed to build and install with each set of tools
+ AUTOTOOLS_PACKAGES: 'autoconf automake libtool make xorg-util-macros'
+ MESON_PACKAGES: 'meson ninja'
+ # extra packages we need for comparing autotools & meson builds
+ EXTRA_PACKAGES: 'diffoscope diffutils findutils jq'
+ FDO_DISTRIBUTION_PACKAGES: $BASE_PACKAGES $AUTOTOOLS_PACKAGES $MESON_PACKAGES $EXTRA_PACKAGES
#
@@ -81,9 +88,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 +102,81 @@ build:
- make
- make check
- make distcheck
+ - mv libXcursor*.tar.gz ..
- popd > /dev/null
+ artifacts:
+ paths:
+ - libXcursor*.tar.gz
+
+#
+# The meson build, runs on the image built above.
+#
+.meson_build:
+ stage: build
+ extends:
+ - .fdo.distribution-image@arch
+ script:
+ - CC="${CC}" meson setup _builddir --prefix="$PWD/_install"
+ - meson compile -C _builddir
+ - meson test -C _builddir
+ - meson install -C _builddir
+
+# Run meson build with different compilers
+meson:
+ extends:
+ - .meson_build
+ parallel:
+ matrix:
+ - CC: ["gcc", "clang"]
+
+
+meson from tarball:
+ extends:
+ - .fdo.distribution-image@arch
+ stage: test
+ script:
+ - mkdir -p _tarball_build
+ - tar xf libXcursor-*.tar.gz -C _tarball_build
+ - cd _tarball_build/libXcursor-*
+ - meson setup _builddir
+ - meson compile -C _builddir
+ - meson test -C _builddir
+ needs:
+ - autotools
+
+compare meson and autotools:
+ extends:
+ - .fdo.distribution-image@arch
+ stage: test
+ script:
+ - mkdir -p $PWD/_meson_inst $PWD/_autotools_inst
+ - CFLAGS="-O2"
+ meson setup builddir --prefix=/usr --buildtype=plain
+ -Ddefault_library=shared
+ - meson compile -C builddir -v
+ - DESTDIR=$PWD/_meson_inst meson install -C builddir
+ - ./autogen.sh --prefix=/usr --enable-shared --disable-static
+ CFLAGS="-O2 -D_FILE_OFFSET_BITS=64" XCURSOR_LIBS="-lXrender -lX11 -lXfixes"
+ - make V=1 && make install DESTDIR=$PWD/_autotools_inst
+ # get rid of expected differences between the two
+ - rm -f $PWD/_autotools_inst/usr/lib/lib*.la
+ - rm -f $PWD/_autotools_inst/usr/lib/libXcursor.so
+ - ln -s libXcursor.so.1 $PWD/_autotools_inst/usr/lib/libXcursor.so
+ - sed -i -e '/Generated from Xcursor.h.in by configure/d'
+ _autotools_inst/usr/include/X11/Xcursor/Xcursor.h
+ - sed -i -e 's/{exec_prefix}/{prefix}/' -e '/exec_prefix/d'
+ _autotools_inst/usr/lib/pkgconfig/xcursor.pc
+ - find $PWD/_meson_inst $PWD/_autotools_inst
+ -exec touch -h -r $PWD/_meson_inst/ {} \+
+ - diffoscope --text-color=always _autotools_inst _meson_inst
+
+check versions are in sync:
+ extends:
+ - .fdo.distribution-image@arch
+ stage: test
+ script:
+ - autoreconf -ivf
+ - ./configure --version | head -n 1 | sed -e 's/libXcursor 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)