From c394106c560ae896e2becb4fdf6c70cc1ca06b7c Mon Sep 17 00:00:00 2001 From: Eremey Valetov Date: Sat, 13 Jun 2026 02:27:56 -0400 Subject: [PATCH] ci: build and test the libarchive plugin on Linux New job fetches libarchive 3.7.7 (sha256-pinned), builds it as a dependency-free static library, then configures UC2 with the plugin and runs the libarchive_roundtrip test. Keeps the plugin's source-tree build path verified on every push without adding a libarchive dependency to the default matrix. --- .github/workflows/build.yml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 92a8357..179526a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,3 +34,40 @@ jobs: run: .\build\cli\Release\uc2.exe -h - name: Test run: ctest --test-dir build --output-on-failure -C Release + + libarchive: + runs-on: ubuntu-latest + name: libarchive plugin + env: + LIBARCHIVE_VERSION: 3.7.7 + LIBARCHIVE_SHA256: 4cc540a3e9a1eebdefa1045d2e4184831100667e6d7d5b315bb1cbc951f8ddff + steps: + - uses: actions/checkout@v4 + - name: Fetch libarchive source + run: | + curl -fsSLO "https://github.com/libarchive/libarchive/releases/download/v${LIBARCHIVE_VERSION}/libarchive-${LIBARCHIVE_VERSION}.tar.gz" + echo "${LIBARCHIVE_SHA256} libarchive-${LIBARCHIVE_VERSION}.tar.gz" | sha256sum -c - + tar xzf "libarchive-${LIBARCHIVE_VERSION}.tar.gz" + - name: Build libarchive static (dependency-free) + run: | + cmake -S "libarchive-${LIBARCHIVE_VERSION}" -B larch-build \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ + -DBUILD_SHARED_LIBS=OFF -DENABLE_TEST=OFF -DENABLE_TAR=OFF \ + -DENABLE_CPIO=OFF -DENABLE_CAT=OFF -DENABLE_UNZIP=OFF \ + -DENABLE_WERROR=OFF -DENABLE_ZLIB=OFF -DENABLE_BZip2=OFF \ + -DENABLE_LZMA=OFF -DENABLE_ZSTD=OFF -DENABLE_LZ4=OFF \ + -DENABLE_LIBXML2=OFF -DENABLE_EXPAT=OFF -DENABLE_OPENSSL=OFF \ + -DENABLE_LIBB2=OFF -DENABLE_ICONV=OFF -DENABLE_ACL=OFF \ + -DENABLE_XATTR=OFF -DENABLE_CNG=OFF -DENABLE_MBEDTLS=OFF \ + -DENABLE_NETTLE=OFF -DENABLE_PCREPOSIX=OFF -DENABLE_PCRE2POSIX=OFF + cmake --build larch-build --target archive_static -j + - name: Configure UC2 with libarchive plugin + run: | + cmake -B build -DCMAKE_BUILD_TYPE=Release \ + -DUC2_BUILD_LIBARCHIVE_PLUGIN=ON \ + -DLIBARCHIVE_SOURCE_DIR="$PWD/libarchive-${LIBARCHIVE_VERSION}" \ + -DLIBARCHIVE_LIBRARY="$PWD/larch-build/libarchive/libarchive.a" + - name: Build + run: cmake --build build -j + - name: Round-trip test + run: ctest --test-dir build --output-on-failure -R libarchive_roundtrip