From 2327ea8e237ee5fcf2fbf344b251eac2974edc50 Mon Sep 17 00:00:00 2001 From: Matt Jolly Date: Sat, 6 Apr 2024 02:37:08 +1000 Subject: [PATCH] CI: Update for meson build We now include a Meson build that uses Clang + lld as the build system to catch bugs and warningsthat our traditional autotools + GCC builds might miss. This commit changes the autotools build to be more like the meson build path: We no longer build a docker image, rather directly executing the fvwm3-build container as a github action. Factor out the GH Actions steps into a common set, and use them as a matrix set to apply to Ubuntu (glibc) and Alpine (musl). The Go version in fvwm3-build has been updated to enable use with meson and eliminate the need for a complex envvar setup and invocation, however older golang is still supported (>=1.14); we're just relying on users to tell us if something is broken. While the issue with LTO builds has been resolved in this PR, it was incidental and the introduced changes will catch LTO errors before they make it into a release. Closes: https://github.com/fvwmorg/fvwm3/issues/1056 Co-authored-by: Thomas Adam Signed-off-by: Matt Jolly --- .github/workflows/ccpp.yml | 45 ++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 7862ea23f..a5dcc1f95 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -10,13 +10,44 @@ on: jobs: build: runs-on: ubuntu-latest + container: + image: ${{ matrix.os == 'alpine' && 'fvwmorg/fvwm3-build-alpine:latest' || 'fvwmorg/fvwm3-build:latest' }} + env: + GO111MODULE: "on" + + strategy: + matrix: + os: [ubuntu-latest, alpine] + build-system: [autotools, meson] + compiler: [gcc, clang] steps: - - uses: actions/checkout@v2 - - name: Pulling docker image - run: docker pull fvwmorg/fvwm3-build:latest - - name: Build Package - run: 'docker build -t fvwm3 .' + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set git safe directory + run: git config --global --add safe.directory ${GITHUB_WORKSPACE} + + - name: Configure and Build + run: | + if [ "${{ matrix.build-system }}" = "autotools" ]; then + if [ "${{ matrix.compiler }}" = "gcc" ]; then + export CFLAGS="-flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing" + else + export CC_LD=lld + fi + export CC=${{ matrix.compiler }} + ./autogen.sh && ./configure --enable-mandoc --enable-golang && make -j + fi + if [ "${{ matrix.build-system }}" = "meson" ]; then + if [ "${{ matrix.compiler }}" = "gcc" ]; then + export CFLAGS="-flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing" + else + export CC_LD=lld + fi + export CC=${{ matrix.compiler }} + meson setup builddir -Dhtmldoc=true -Dmandoc=true && ninja -C builddir + fi notification: runs-on: ubuntu-20.04 @@ -26,7 +57,7 @@ jobs: uses: Gottox/irc-message-action@v2.1.3 if: github.event_name == 'pull_request' with: - server: "irc.libera.chat" + server: irc.libera.chat notice: false channel: "#fvwm" nickname: fvwm3-gh-pr @@ -35,7 +66,7 @@ jobs: uses: Gottox/irc-message-action@v2.1.3 if: github.event_name == 'create' && github.event.ref_type == 'tag' with: - server: "irc.libera.chat" + server: irc.libera.chat notice: false channel: "#fvwm" nickname: fvwm-gh