2024-02-12 15:09:10 +00:00
|
|
|
# SPDX-License-Identifier: 0BSD
|
|
|
|
|
2022-12-22 16:34:48 +00:00
|
|
|
#############################################################################
|
|
|
|
#
|
|
|
|
# Author: Jia Tan
|
|
|
|
#
|
|
|
|
#############################################################################
|
|
|
|
|
|
|
|
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:
|
2023-03-24 15:05:48 +00:00
|
|
|
POSIX:
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
os: [ubuntu-latest, macos-latest]
|
|
|
|
build_system: [autotools, cmake]
|
|
|
|
runs-on: ${{ matrix.os }}
|
2022-12-22 16:34:48 +00:00
|
|
|
steps:
|
2024-06-03 05:16:23 +00:00
|
|
|
- uses: actions/checkout@v4.1.6
|
2023-03-24 15:05:48 +00:00
|
|
|
|
|
|
|
########################
|
|
|
|
# Install Dependencies #
|
|
|
|
########################
|
|
|
|
|
|
|
|
# Install Autotools on Linux
|
2022-12-22 16:34:48 +00:00
|
|
|
- name: Install Dependencies
|
2023-03-24 15:05:48 +00:00
|
|
|
if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
|
2023-06-06 16:18:30 +00:00
|
|
|
run: |
|
|
|
|
sudo apt-get update
|
2024-04-10 10:43:10 +00:00
|
|
|
sudo apt-get install -y autoconf automake build-essential po4a autopoint gcc-multilib doxygen musl-tools valgrind
|
2023-01-07 03:16:55 +00:00
|
|
|
|
2023-03-24 15:05:48 +00:00
|
|
|
# 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' }}
|
2023-06-06 16:18:30 +00:00
|
|
|
run: |
|
|
|
|
sudo apt-get update
|
2024-07-02 16:39:05 +00:00
|
|
|
sudo apt-get install -y build-essential cmake gettext musl-tools
|
2023-03-24 15:05:48 +00:00
|
|
|
|
|
|
|
# Install CMake on Mac
|
|
|
|
- name: Install Dependencies
|
|
|
|
if: ${{ matrix.os == 'macos-latest' && matrix.build_system == 'cmake' }}
|
2024-07-02 16:39:05 +00:00
|
|
|
run: brew install cmake gettext
|
2023-03-24 15:05:48 +00:00
|
|
|
|
|
|
|
##################
|
|
|
|
# Build and Test #
|
|
|
|
##################
|
|
|
|
|
2023-01-07 03:16:55 +00:00
|
|
|
# -b specifies the build system to use.
|
|
|
|
# -p specifies the phase (build or test) to help narrow down an error
|
|
|
|
# if one occurs.
|
2023-01-18 14:11:05 +00:00
|
|
|
#
|
2023-06-28 13:01:22 +00:00
|
|
|
# The first two builds/tests are only run on Autotools Linux and
|
|
|
|
# affect the CFLAGS. Resetting the CFLAGS requires clearing the
|
|
|
|
# config cache between runs, so the tests that require CFLAGS are
|
|
|
|
# done first.
|
2023-01-18 14:11:05 +00:00
|
|
|
- name: Build 32-bit
|
2023-03-24 15:05:48 +00:00
|
|
|
if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
|
2024-06-24 12:24:52 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b autotools -p build -m "gcc -m32"
|
2023-01-18 14:11:05 +00:00
|
|
|
- name: Test 32-bit
|
2023-03-24 15:05:48 +00:00
|
|
|
if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
|
2023-01-18 14:11:05 +00:00
|
|
|
run: |
|
2024-06-24 12:24:52 +00:00
|
|
|
./build-aux/ci_build.bash -b autotools -p test -m "gcc -m32" -n 32_bit
|
2023-01-18 14:11:05 +00:00
|
|
|
cd ../xz_build && make distclean
|
|
|
|
|
2024-04-09 14:47:01 +00:00
|
|
|
# The sandbox must be disabled because it will prevent access to
|
2023-10-23 16:50:08 +00:00
|
|
|
# the /proc/ filesystem on Linux, which is used by the sanitizer's
|
|
|
|
# instrumentation.
|
2023-06-28 13:01:22 +00:00
|
|
|
- name: Build with -fsanitize=address,undefined
|
|
|
|
if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b autotools -p build -f "-fsanitize=address,undefined" -d sandbox
|
2023-06-28 13:01:22 +00:00
|
|
|
- name: Test with -fsanitize=address,undefined
|
|
|
|
if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
|
|
|
|
run: |
|
2024-04-10 11:38:51 +00:00
|
|
|
export UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1
|
2024-04-10 17:33:55 +00:00
|
|
|
./build-aux/ci_build.bash -b autotools -p test -f "-fsanitize=address,undefined" -d sandbox
|
2023-06-28 13:01:22 +00:00
|
|
|
cd ../xz_build && make distclean
|
|
|
|
|
2024-04-10 10:43:10 +00:00
|
|
|
- name: Build with Valgrind
|
|
|
|
if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b autotools -p build -d sandbox
|
2024-04-10 10:43:10 +00:00
|
|
|
- name: Test with Valgrind
|
|
|
|
if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
|
|
|
|
run: |
|
2024-06-28 11:18:35 +00:00
|
|
|
./build-aux/ci_build.bash -b autotools -p test -d sandbox -w "valgrind --quiet --trace-children=yes --trace-children-skip-by-arg=ls,cp,sed,grep,bash,sh --exit-on-first-error=yes --error-exitcode=1"
|
2024-04-10 10:43:10 +00:00
|
|
|
cd ../xz_build && make distclean
|
|
|
|
|
2023-11-22 13:20:12 +00:00
|
|
|
- name: Build with musl libc
|
|
|
|
if: ${{ matrix.os == 'ubuntu-latest'}}
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -p build -m "/usr/bin/musl-gcc"
|
2023-11-22 13:20:12 +00:00
|
|
|
- name: Test with musl libc
|
|
|
|
if: ${{ matrix.os == 'ubuntu-latest'}}
|
|
|
|
run: |
|
2024-04-10 17:33:55 +00:00
|
|
|
./build-aux/ci_build.bash -b ${{ matrix.build_system }} -p test -m "/usr/bin/musl-gcc"
|
2023-11-22 13:20:12 +00:00
|
|
|
- name: Clean up musl libc run
|
|
|
|
if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
|
|
|
|
run: cd ../xz_build && make distclean
|
|
|
|
|
2023-01-07 03:16:55 +00:00
|
|
|
- name: Build with full features
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -p build
|
2023-01-07 03:16:55 +00:00
|
|
|
- name: Test with full features
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -p test -n full_features
|
2023-01-07 03:16:55 +00:00
|
|
|
|
|
|
|
- name: Build without encoders
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d encoders,shared -p build
|
2023-01-07 03:16:55 +00:00
|
|
|
- name: Test without encoders
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d encoders,shared -p test -n no_encoders
|
2023-01-07 03:16:55 +00:00
|
|
|
|
|
|
|
- name: Build without decoders
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d decoders,shared -p build
|
2023-01-07 03:16:55 +00:00
|
|
|
- name: Test without decoders
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d decoders,shared -p test -n no_decoders
|
2023-01-07 03:16:55 +00:00
|
|
|
|
|
|
|
- name: Build without threads
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d threads,shared -p build
|
2023-01-07 03:16:55 +00:00
|
|
|
- name: Test without threads
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d threads,shared -p test -n no_threads
|
2023-01-07 03:16:55 +00:00
|
|
|
|
|
|
|
- name: Build without BCJ filters
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d bcj,shared,nls -p build
|
2023-01-07 03:16:55 +00:00
|
|
|
- name: Test without BCJ filters
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d bcj,shared,nls -p test -n no_bcj
|
2023-01-07 03:16:55 +00:00
|
|
|
|
|
|
|
- name: Build without Delta filters
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d delta,shared,nls -p build
|
2023-01-07 03:16:55 +00:00
|
|
|
- name: Test without Delta filters
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d delta,shared,nls -p test -n no_delta
|
2023-01-07 03:16:55 +00:00
|
|
|
|
|
|
|
- name: Build without sha256 check
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -c crc32,crc64 -d shared,nls -p build
|
2023-01-07 03:16:55 +00:00
|
|
|
- name: Test without sha256 check
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -c crc32,crc64 -d shared,nls -p test -n no_sha256
|
2023-01-07 03:16:55 +00:00
|
|
|
|
|
|
|
- name: Build without crc64 check
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -c crc32,sha256 -d shared,nls -p build
|
2023-01-07 03:16:55 +00:00
|
|
|
- name: Test without crc64 check
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -c crc32,sha256 -d shared,nls -p test -n no_crc64
|
2022-12-22 16:34:48 +00:00
|
|
|
|
2023-04-25 12:06:15 +00:00
|
|
|
- name: Build small
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d small -p build
|
2023-04-25 12:06:15 +00:00
|
|
|
- name: Test small
|
2024-04-10 17:33:55 +00:00
|
|
|
run: ./build-aux/ci_build.bash -b ${{ matrix.build_system }} -d small -p test -n small
|
2023-04-25 12:06:15 +00:00
|
|
|
|
2023-02-01 13:36:22 +00:00
|
|
|
# Attempt to upload the test logs as artifacts if any step has failed
|
2024-06-03 05:16:23 +00:00
|
|
|
- uses: actions/upload-artifact@v4.3.3
|
2023-02-01 13:36:22 +00:00
|
|
|
if: ${{ failure() }}
|
|
|
|
with:
|
2023-03-24 15:05:48 +00:00
|
|
|
name: ${{ matrix.os }} ${{ matrix.build_system }} Test Logs
|
2023-02-01 13:36:22 +00:00
|
|
|
path: build-aux/artifacts
|