summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJia Tan <jiat0218@gmail.com>2023-03-24 23:05:48 +0800
committerJia Tan <jiat0218@gmail.com>2023-03-24 23:41:06 +0800
commit20cd905d898c1494dee42b78530769bb9c9f8076 (patch)
tree659a2c447ca8b5f5437e178655c762199cdbc169
parent4fabdb269f1fc5624b3b94a170c4efb329d1d229 (diff)
downloadxz-20cd905d898c1494dee42b78530769bb9c9f8076.tar.gz
CI: Runs CMake feature tests.
Now, CMake will run similar feature disable tests that the Autotools version did before. In order to do this without repeating lines in ci.yml, it now makes sense to use the GitHub Workflow matrix to create a loop.
-rw-r--r--.github/workflows/ci.yml169
1 files changed, 55 insertions, 114 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8ce082d..1691b5a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -20,18 +20,43 @@ on:
workflow_dispatch:
jobs:
- # When CMake can support disabling check types and
- # encoders/decoders/threads, it will be combined to one Linux job
- # and another matrix list.
- Linux-Autotools:
- # Just run on latest ubuntu
- runs-on: ubuntu-latest
+ POSIX:
+ strategy:
+ matrix:
+ os: [ubuntu-latest, macos-latest]
+ build_system: [autotools, cmake]
+ runs-on: ${{ matrix.os }}
steps:
- # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
+
+ ########################
+ # Install Dependencies #
+ ########################
+
+ # Install Autotools on Linux
- name: Install Dependencies
+ if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
run: sudo apt-get install -y autoconf automake build-essential po4a autopoint gcc-multilib doxygen
+ # Install Autotools on Mac
+ - name: Install Dependencies
+ if: ${{ matrix.os == 'macos-latest' && matrix.build_system == 'autotools' }}
+ run: brew install autoconf automake libtool po4a doxygen
+
+ # Install CMake on Linux
+ - name: Install Dependencies
+ if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'cmake' }}
+ run: sudo apt-get install -y build-essential cmake
+
+ # Install CMake on Mac
+ - name: Install Dependencies
+ if: ${{ matrix.os == 'macos-latest' && matrix.build_system == 'cmake' }}
+ run: brew install cmake
+
+ ##################
+ # Build and Test #
+ ##################
+
# -b specifies the build system to use.
# -p specifies the phase (build or test) to help narrow down an error
# if one occurs.
@@ -39,146 +64,62 @@ jobs:
# Start with the 32-bit build because the autoconf cache must be reset
# after the build because the 32-bit build sets the CFLAGS env variable.
# By starting with the 32-bit build, we only have to clear the
- # cache once.
+ # cache once. The 32-bit build is only tested on Autotools Linux.
- name: Build 32-bit
+ if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
run: ./build-aux/ci_build.sh -b autotools -p build -f "-m32"
- name: Test 32-bit
+ if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
run: |
./build-aux/ci_build.sh -b autotools -p test -f "-m32" -n 32_bit
cd ../xz_build && make distclean
- name: Build with full features
- run: ./build-aux/ci_build.sh -b autotools -p build
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -p build
- name: Test with full features
- run: ./build-aux/ci_build.sh -b autotools -p test -n full_features
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -p test -n full_features
- name: Build without encoders
- run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p build
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d encoders,shared -p build
- name: Test without encoders
- run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p test -n no_encoders
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d encoders,shared -p test -n no_encoders
- name: Build without decoders
- run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p build
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d decoders,shared -p build
- name: Test without decoders
- run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p test -n no_decoders
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d decoders,shared -p test -n no_decoders
+ # Our CMake build cannot disable threads yet.
- name: Build without threads
- run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p build
+ if: ${{ matrix.build_system == 'autotools' }}
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d threads,shared -p build
- name: Test without threads
- run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p test -n no_threads
+ if: ${{ matrix.build_system == 'autotools' }}
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d threads,shared -p test -n no_threads
- name: Build without BCJ filters
- run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p build
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d bcj,shared,nls -p build
- name: Test without BCJ filters
- run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p test -n no_bcj
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d bcj,shared,nls -p test -n no_bcj
- name: Build without Delta filters
- run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p build
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d delta,shared,nls -p build
- name: Test without Delta filters
- run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p test -n no_delta
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d delta,shared,nls -p test -n no_delta
- name: Build without sha256 check
- run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p build
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -c crc32,crc64 -d shared,nls -p build
- name: Test without sha256 check
- run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p test -n no_sha256
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -c crc32,crc64 -d shared,nls -p test -n no_sha256
- name: Build without crc64 check
- run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p build
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -c crc32,sha256 -d shared,nls -p build
- name: Test without crc64 check
- run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p test -n no_crc64
-
- # Attempt to upload the test logs as artifacts if any step has failed
- - uses: actions/upload-artifact@v3
- if: ${{ failure() }}
- with:
- name: Linux Autotools Test Logs
- path: build-aux/artifacts
+ run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -c crc32,sha256 -d shared,nls -p test -n no_crc64
- Linux-CMake:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Install Dependencies
- run: sudo apt-get install -y build-essential cmake
- - name: Build
- run: ./build-aux/ci_build.sh -b cmake -p build
- - name: Test
- run: ./build-aux/ci_build.sh -b cmake -p test
- # Attempt to upload the test logs as artifacts if any step has failed
- - uses: actions/upload-artifact@v3
- if: ${{ failure() }}
- with:
- name: Linux CMake Test Logs
- path: build-aux/artifacts
-
- MacOS-Autotools:
- runs-on: macos-latest
- steps:
- # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- - uses: actions/checkout@v2
- - name: Install Dependencies
- run: brew install autoconf automake libtool po4a doxygen
-
- - name: Build with full features
- run: ./build-aux/ci_build.sh -b autotools -p build
- - name: Test with full features
- run: ./build-aux/ci_build.sh -b autotools -p test -n full_features
-
- - name: Build without encoders
- run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p build
- - name: Test without encoders
- run: ./build-aux/ci_build.sh -b autotools -d encoders,shared -p test -n no_encoders
-
- - name: Build without decoders
- run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p build
- - name: Test without decoders
- run: ./build-aux/ci_build.sh -b autotools -d decoders,shared -p test -n no_decoders
-
- - name: Build without threads
- run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p build
- - name: Test without threads
- run: ./build-aux/ci_build.sh -b autotools -d threads,shared -p test -n no_threads
-
- - name: Build without BCJ filters
- run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p build
- - name: Test without BCJ filters
- run: ./build-aux/ci_build.sh -b autotools -d bcj,shared,nls -p test -n no_bcj
-
- - name: Build without Delta filters
- run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p build
- - name: Test without Delta filters
- run: ./build-aux/ci_build.sh -b autotools -d delta,shared,nls -p test -n no_delta
-
- - name: Build without sha256 check
- run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p build
- - name: Test without sha256 check
- run: ./build-aux/ci_build.sh -b autotools -c crc32,crc64 -d shared,nls -p test -n no_sha256
-
- - name: Build without crc64 check
- run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p build
- - name: Test without crc64 check
- run: ./build-aux/ci_build.sh -b autotools -c crc32,sha256 -d shared,nls -p test -n no_crc64
-
- # Attempt to upload the test logs as artifacts if any step has failed
- - uses: actions/upload-artifact@v3
- if: ${{ failure() }}
- with:
- name: MacOS Autotools Test Logs
- path: build-aux/artifacts
-
- MacOS-CMake:
- runs-on: macos-latest
- steps:
- - uses: actions/checkout@v2
- - name: Install Dependencies
- run: brew install cmake
- - name: Build
- run: ./build-aux/ci_build.sh -b cmake -p build
- - name: Test
- run: ./build-aux/ci_build.sh -b cmake -p test
# Attempt to upload the test logs as artifacts if any step has failed
- uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
- name: MacOS CMake Test Logs
+ name: ${{ matrix.os }} ${{ matrix.build_system }} Test Logs
path: build-aux/artifacts