mirror of
https://git.tukaani.org/xz.git
synced 2024-04-04 12:36:23 +02:00
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.
This commit is contained in:
parent
4fabdb269f
commit
20cd905d89
1 changed files with 55 additions and 114 deletions
169
.github/workflows/ci.yml
vendored
169
.github/workflows/ci.yml
vendored
|
@ -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
|
||||
run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -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
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue