Merge pull request #36 from xmms2/dependabot/github_actions/actions/c… #168
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build-and-test: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
# When set to true, GitHub cancels | |
# all in-progress jobs if any matrix job fails. | |
fail-fast: false | |
matrix: | |
include: | |
- name: linux-latest-gcc | |
os: ubuntu-latest | |
# local variables | |
build_mode: regular | |
os_name: linux | |
cc: gcc | |
cxx: g++ | |
- name: linux-latest-clang | |
os: ubuntu-latest | |
# local variables | |
build_mode: regular | |
os_name: linux | |
cc: clang | |
cxx: clang++ | |
- name: macos-latest-clang | |
os: macos-latest | |
# local variables | |
build_mode: regular | |
os_name: osx | |
cc: clang | |
cxx: clang++ | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 | |
with: | |
submodules: recursive | |
- name: Setup apt cache (Linux) | |
if: startsWith(runner.os, 'Linux') | |
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
with: | |
path: /var/cache/apt | |
key: ${{ runner.os }}-apt-cache-${{ matrix.os }}-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-apt-cache-${{ matrix.os }}- | |
${{ runner.os }}-apt-cache- | |
- name: Setup Prerequisites | |
run: | | |
case ${{ runner.os }} in | |
Linux*) | |
sudo apt update | |
packages=( | |
clang | |
cython3 | |
doxygen | |
lcov | |
libao-dev | |
libasound2-dev | |
#libavahi-client-dev | |
#libavahi-glib-dev | |
libavcodec-dev | |
libboost-dev | |
#libcdio-cdda-dev | |
libcunit1-dev | |
libcurl4-gnutls-dev | |
#libdiscid0-dev | |
#libefl-all-dev | |
libexpat1-dev | |
libfaad-dev | |
libfftw3-dev | |
libflac-dev | |
libfluidsynth-dev | |
libgamin-dev | |
libglib2.0-dev | |
libgme-dev | |
libjack-dev | |
libmad0-dev | |
libmms-dev | |
libmodplug-dev | |
libmpcdec-dev | |
#libmpg123-dev | |
libofa0-dev | |
#libopusfile-dev | |
libperl-dev | |
libpulse-dev | |
libreadline-dev | |
libresid-builder-dev | |
libsamplerate0-dev | |
libsdl1.2-dev | |
libshout3-dev | |
libsidplay2-dev | |
libsmbclient-dev | |
libsndfile1-dev | |
libsqlite3-dev | |
libssl-dev | |
libvisual-0.4-dev | |
libvorbis-dev | |
libwavpack-dev | |
libxml2-dev | |
# for podselect | |
libpod-parser-perl | |
python3-dev | |
python3-all-dev | |
ruby-all-dev | |
# CI's valgrind can't parse dwarf output produced by clang: | |
# # unhandled dwarf2 abbrev form code 0x1b | |
# Valgrind: debuginfo reader: Possibly corrupted debuginfo file. | |
# Disable it for now. | |
#valgrind | |
) | |
sudo apt install "${packages[@]}" || for p in "${packages[@]}"; do | |
# Install packages one by one if the whole bundle failed. | |
# That should ease detection of individual problematic package | |
# that pulls in conflicting depend. | |
echo "Installing $p" | |
sudo apt install "$p" || exit 1 | |
done | |
;; | |
macOS*) | |
# TODO | |
;; | |
esac | |
- name: Setup Python | |
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 | |
with: | |
python-version: 3.x | |
- name: Build | |
env: | |
BUILD_MODE: ${{ matrix.build_mode }} | |
TRAVIS_OS_NAME: ${{ matrix.os_name }} | |
CC: ${{ matrix.cc }} | |
CXX: ${{ matrix.cxx }} | |
run: utils/travis-build.sh build |