From 9fc23137bbf80dd02f05edaaa7c347214f594d68 Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Mon, 9 Mar 2026 21:28:36 +0100 Subject: [PATCH] Extend CI matrix: add FUSE 2, FUSE 3 legacy/current/forky build jobs Replaces single build job with four jobs covering all tested FUSE configs: - fuse2: debian:trixie + libfuse-dev (FUSE_USE_VERSION=26) - fuse3-legacy: ubuntu:20.04 + libfuse3-dev 3.9.x (fuse_loop_mt_31 path) - fuse3-current: ubuntu:22.04 + libfuse3-dev 3.12.x - fuse3-forky: debian:forky + libfuse3-dev 3.18.1 Each job verifies correct symbol linkage after build. Runtime mount tests are outside CI scope (require privileged containers with /dev/fuse). Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/c-cpp.yml | 79 +++++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 4 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index c0617d2..43586f2 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -7,7 +7,8 @@ on: branches: [ "main" ] jobs: - build: + fuse2: + name: FUSE 2 (debian:trixie) runs-on: ubuntu-latest container: image: debian:trixie @@ -16,6 +17,76 @@ jobs: - name: Install dependencies run: | apt-get update - apt-get install -y build-essential libreadline-dev libudev-dev libfuse-dev libsqlite3-dev zlib1g-dev libboost-dev libboost-system-dev libboost-program-options-dev libmbedtls-dev - - name: make - run: make + apt-get install -y build-essential pkg-config libreadline-dev libudev-dev \ + libfuse-dev libsqlite3-dev zlib1g-dev \ + libboost-dev libboost-program-options-dev libmbedtls-dev + - name: Build (FUSE 2) + run: make FORCE_FUSE=2 BUILD=release + - name: Verify symbols + run: | + nm pcloudcc | grep -E 'fuse_loop_mt@|fuse_mount@|psync_fuse_channel' + ldd pcloudcc | grep libfuse.so.2 + + fuse3-legacy: + name: FUSE 3 legacy / <3.12 (ubuntu:20.04) + runs-on: ubuntu-latest + container: + image: ubuntu:20.04 + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + env: + DEBIAN_FRONTEND: noninteractive + run: | + apt-get update + apt-get install -y build-essential pkg-config libreadline-dev libudev-dev \ + libfuse3-dev libsqlite3-dev zlib1g-dev \ + libboost-dev libboost-program-options-dev libmbedtls-dev + - name: Build (FUSE 3 legacy) + run: make FORCE_FUSE=3 BUILD=release + - name: Verify symbols + run: | + nm pcloudcc | grep 'fuse_loop_mt_31' + ldd pcloudcc | grep libfuse3 + + fuse3-current: + name: FUSE 3 current / 3.12+ (ubuntu:22.04) + runs-on: ubuntu-latest + container: + image: ubuntu:22.04 + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + env: + DEBIAN_FRONTEND: noninteractive + run: | + apt-get update + apt-get install -y build-essential pkg-config libreadline-dev libudev-dev \ + libfuse3-dev libsqlite3-dev zlib1g-dev \ + libboost-dev libboost-program-options-dev libmbedtls-dev + - name: Build (FUSE 3 current) + run: make FORCE_FUSE=3 BUILD=release + - name: Verify symbols + run: | + nm pcloudcc | grep 'fuse_loop_mt_31' + ldd pcloudcc | grep libfuse3 + + fuse3-forky: + name: FUSE 3.18+ (debian:forky) + runs-on: ubuntu-latest + container: + image: debian:forky + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + run: | + apt-get update + apt-get install -y build-essential pkg-config libreadline-dev libudev-dev \ + libfuse3-dev libsqlite3-dev zlib1g-dev \ + libboost-dev libboost-program-options-dev libmbedtls-dev + - name: Build (FUSE 3.18+) + run: make FORCE_FUSE=3 BUILD=release + - name: Verify symbols + run: | + nm pcloudcc | grep 'fuse_loop_mt_31' + ldd pcloudcc | grep libfuse3