############################################################################# # # Author: Jia Tan # # This file has been put into the public domain. # You can do whatever you want with this file. # ############################################################################# name: CI on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [ master ] pull_request: branches: [ master ] # Allows running workflow manually workflow_dispatch: jobs: POSIX: strategy: matrix: os: [ubuntu-latest, macos-latest] build_system: [autotools, cmake] runs-on: ${{ matrix.os }} steps: - 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. # # 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. 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 ${{ matrix.build_system }} -p build - name: Test with 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 ${{ matrix.build_system }} -d encoders,shared -p build - name: Test without 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 ${{ matrix.build_system }} -d decoders,shared -p build - name: Test without 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 if: ${{ matrix.build_system == 'autotools' }} run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -d threads,shared -p build - name: Test without 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 ${{ matrix.build_system }} -d bcj,shared,nls -p build - name: Test without BCJ filters 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 ${{ matrix.build_system }} -d delta,shared,nls -p build - name: Test without Delta filters 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 ${{ matrix.build_system }} -c crc32,crc64 -d shared,nls -p build - name: Test without sha256 check 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 ${{ matrix.build_system }} -c crc32,sha256 -d shared,nls -p build - name: Test without crc64 check 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: ${{ matrix.os }} ${{ matrix.build_system }} Test Logs path: build-aux/artifacts