2023-07-22 06:55:42 +00:00
|
|
|
#############################################################################
|
|
|
|
#
|
|
|
|
# Author: Jia Tan
|
|
|
|
#
|
|
|
|
# This file has been put into the public domain.
|
|
|
|
# You can do whatever you want with this file.
|
|
|
|
#
|
|
|
|
#############################################################################
|
|
|
|
|
|
|
|
name: Windows-CI
|
|
|
|
|
|
|
|
# Only run the Windows CI manually since it takes much longer than the others.
|
|
|
|
on: workflow_dispatch
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
POSIX:
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
# Test different environments since the code may change between
|
|
|
|
# them and we want to ensure that we support all potential users.
|
|
|
|
# clang64 currently fails due to a warning, so support will be
|
|
|
|
# added later.
|
|
|
|
system:
|
|
|
|
- mingw64
|
|
|
|
- mingw32
|
|
|
|
- ucrt64
|
2023-07-24 15:11:45 +00:00
|
|
|
- clang64
|
2023-07-22 06:55:42 +00:00
|
|
|
- msys
|
|
|
|
|
|
|
|
# Set the shell to be msys2 as a default to avoid setting it for
|
|
|
|
# every individual run command.
|
|
|
|
defaults:
|
|
|
|
run:
|
|
|
|
shell: msys2 {0}
|
|
|
|
|
|
|
|
runs-on: windows-latest
|
|
|
|
|
|
|
|
steps:
|
|
|
|
#####################
|
|
|
|
# Setup Environment #
|
|
|
|
#####################
|
|
|
|
|
|
|
|
# Rely on the msys2 GitHub Action to set up the msys2 environment.
|
|
|
|
- name: Setup MSYS2
|
|
|
|
uses: msys2/setup-msys2@v2
|
|
|
|
with:
|
|
|
|
msystem: ${{ matrix.system }}
|
|
|
|
update: true
|
|
|
|
install: pactoys
|
|
|
|
|
|
|
|
- name: Checkout code
|
|
|
|
# Need to explicitly set the shell here since we set the default
|
|
|
|
# shell as msys2 earlier. This avoids an extra msys2 dependency on
|
|
|
|
# git.
|
|
|
|
shell: powershell
|
|
|
|
# Avoid Windows line endings. Otherwise test_scripts.sh will fail
|
|
|
|
# because the expected output is stored in the test framework as a
|
|
|
|
# text file and will not match the output from xzgrep.
|
|
|
|
run: git config --global core.autocrlf false
|
|
|
|
|
|
|
|
- uses: actions/checkout@v3
|
|
|
|
|
|
|
|
|
|
|
|
########################
|
|
|
|
# Install Dependencies #
|
|
|
|
########################
|
|
|
|
|
|
|
|
# The pacman repository has a different naming scheme for default
|
|
|
|
# msys packages than the others. The pacboy tool allows installing
|
|
|
|
# the packages possible in matrix setup without a burdensome amount
|
|
|
|
# of ifs.
|
|
|
|
- name: Install Dependencies
|
|
|
|
if: ${{ matrix.system == 'msys' }}
|
|
|
|
run: pacman --noconfirm -S --needed autotools base-devel doxygen gettext-devel gcc
|
|
|
|
|
|
|
|
- name: Install Dependencies
|
|
|
|
if: ${{ matrix.system != 'msys' }}
|
|
|
|
run: pacboy --noconfirm -S --needed autotools:p gcc:p clang:p make:p doxygen:p
|
|
|
|
|
|
|
|
|
|
|
|
##################
|
|
|
|
# Build and Test #
|
|
|
|
##################
|
|
|
|
|
|
|
|
- name: Build with full features
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -p build
|
|
|
|
- name: Test with full features
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -p test -n full_features
|
|
|
|
|
|
|
|
- name: Build without threads
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -d threads,shared -p build
|
|
|
|
- name: Test without threads
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -d threads,shared -p test -n no_threads
|
|
|
|
|
|
|
|
- name: Build without encoders
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -d encoders,shared -p build
|
|
|
|
- name: Test without encoders
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -d encoders,shared -p test -n no_encoders
|
|
|
|
|
|
|
|
- name: Build without decoders
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -d decoders,shared -p build
|
|
|
|
- name: Test without decoders
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -d decoders,shared -p test -n no_decoders
|
|
|
|
|
|
|
|
- name: Build with only crc32 check
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -c crc32 -d shared,nls -p build
|
|
|
|
- name: Test with only crc32 check
|
|
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b autotools -c crc32 -d shared,nls -p test -n crc32_only
|
|
|
|
|
|
|
|
|
|
|
|
###############
|
|
|
|
# Upload Logs #
|
|
|
|
###############
|
|
|
|
|
|
|
|
# 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
|