Fix configure to work on debian sid with vulkan. #2124
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: master | |
on: # yamllint disable-line rule:truthy | |
push: | |
branches: [master] | |
pull_request: | |
branches: [master] | |
workflow_dispatch: | |
jobs: | |
build: | |
name: build | |
strategy: | |
matrix: | |
os: ['ubuntu-20.04', 'ubuntu-22.04', 'macos-12', 'macos-13', 'macos-14'] | |
arch: ['x86_64', 'arm64'] | |
cc: ['gcc', 'clang'] | |
include: | |
- cc: 'gcc' | |
cxx: 'g++' | |
- cc: 'clang' | |
cxx: 'clang++' | |
exclude: | |
- os: 'ubuntu-20.04' | |
arch: 'arm64' | |
- os: 'ubuntu-22.04' | |
arch: 'arm64' | |
- os: 'macos-12' | |
arch: 'arm64' | |
- os: 'macos-13' | |
arch: 'arm64' | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout master | |
uses: actions/checkout@v3 | |
- name: Setup build environment | |
run: | | |
echo "MYTHTV_CONFIG=--prefix=${{ github.workspace }}/build/install --cc=${{ matrix.cc }} --cxx=${{ matrix.cxx }}" >> $GITHUB_ENV | |
echo "CCACHE_DIR=$HOME/.ccache" >> $GITHUB_ENV | |
# As some OSes can cross-compile, establish defaule configrue/make | |
# commands which can be overided as appropriate | |
echo "CONFIGURE_CMD=./configure" >> $GITHUB_ENV | |
echo "MAKE_CMD=make" >> $GITHUB_ENV | |
# GitHub caches are immutable, so to update a cache, use a unique key with | |
# a prefixed restore-key. GitHub will rotate the caches within their 10 GB | |
# storage limit. | |
# See https://github.com/actions/cache/blob/471fb0c87e5d7210f339d8ea2e01505ddafd793d/workarounds.md#update-a-cache | |
- name: Check ccache | |
uses: actions/cache@v3 | |
with: | |
path: ~/.ccache | |
key: ${{ matrix.os }}-${{ matrix.cc }}-ccache-${{ github.sha }} | |
restore-keys: ${{ matrix.os }}-${{ matrix.cc }}-ccache | |
# macOS based github runners starting with macos-14 only run on the arm64 | |
# architecture. To generate x86_64 based executable, the arch -x86_64 | |
# command is needed before any brew commands, make, and install to run | |
# as x86_64 via Rosetta2. | |
- name: Check cross-compile environment (macOS) | |
env: | |
ARCH: ${{ matrix.arch }} | |
run: | | |
SYSARCH=$(/usr/bin/uname -m) | |
PKGMGR_CMD='brew' | |
if [ "$SYSARCH" = "$ARCH" ]; then | |
# this is a cross-compile | |
PKGMGR_CMD="arch -${ARCH} $PKGMGR_CMD" | |
echo "CONFIGURE_CMD=arch -${ARCH} $CONFIGURE_CMD" >> $GITHUB_ENV | |
echo "MAKE_CMD=arch -${ARCH} $MAKE_CMD" >> $GITHUB_ENV | |
fi | |
echo "PKGMGR_CMD=$PKGMGR_CMD" >> $GITHUB_ENV | |
if: runner.os == 'macOS' | |
# N.B. These dependencies are for the master branch. Unlike the ansible | |
# playlists they do not include old dependencies that may be required for | |
# older versions. The list is intended to provide as much code coverage as | |
# possible (i.e. enable as many options as possible) | |
- name: Install core dependencies (linux) | |
run: | | |
sudo apt update | |
sudo apt install ccache qt5-qmake qtscript5-dev nasm libsystemd-dev \ | |
libfreetype6-dev libmp3lame-dev libx264-dev libx265-dev \ | |
libxrandr-dev libxml2-dev libavahi-compat-libdnssd-dev \ | |
libasound2-dev liblzo2-dev libhdhomerun-dev libsamplerate0-dev \ | |
libva-dev libdrm-dev libvdpau-dev libass-dev libpulse-dev \ | |
libcec-dev libssl-dev libtag1-dev libbluray-dev libbluray-bdj \ | |
libgnutls28-dev libqt5webkit5-dev libvpx-dev python3-mysqldb \ | |
python3-lxml python3-setuptools libdbi-perl libdbd-mysql-perl \ | |
libnet-upnp-perl libio-socket-inet6-perl libxml-simple-perl \ | |
libqt5sql5-mysql libwayland-dev qtbase5-private-dev libzip-dev \ | |
libsoundtouch-dev | |
if: runner.os == 'Linux' | |
- name: Install core dependencies (macOS) | |
env: | |
OS_VERS: ${{ matrix.os }} | |
run: | | |
brew update | |
${PKGMGR_CMD} install pkg-config ccache qt5 nasm libsamplerate taglib\ | |
lzo libcec libbluray libass libhdhomerun dav1d x264 x265 libvpx \ | |
openssl sound-touch lame freetype libass libiconv libxml2 libzip \ | |
XviD zlib pyenv-virtualenv python-lxml python-requests \ | |
python-setuptools | |
${PKGMGR_CMD} link qt5 --force | |
# macos-14 updated the linker and needs to be run in "classic" mode | |
case $OS_VERS in | |
macos-14) | |
LDFLAGS="-Wl,-ld_classic" | |
;; | |
esac | |
# homebrew uses different prefixes on x86_64 and arm64, find the | |
# correct one and setup the correct build variables | |
HB_PREFIX=$(${PKGMGR_CMD} --prefix) | |
C_INCLUDE_PATH=$HB_PREFIX/include:$C_INCLUDE_PATH | |
echo "C_INCLUDE_PATH=$C_INCLUDE_PATH" >> $GITHUB_ENV | |
CPLUS_INCLUDE_PATH=$HB_PREFIX/include:$CPLUS_INCLUDE_PATH | |
echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV | |
LDFLAGS="-L$HB_PREFIX/lib $LDFLAGS" | |
echo "LDFLAGS=$LDFLAGS" >> $GITHUB_ENV | |
LIBRARY_PATH=$HB_PREFIX/lib:$LIBRARY_PATH | |
echo "LIBRARY_PATH=$LIBRARY_PATH" >> $GITHUB_ENV | |
PKG_CONFIG_PATH=$HB_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH | |
echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >> $GITHUB_ENV | |
if: runner.os == 'macOS' | |
- name: ccache statistics [pre] | |
run: | | |
ccache -sV | |
- name: Configure core | |
working-directory: ./mythtv | |
run: ${CONFIGURE_CMD} $MYTHTV_CONFIG --enable-libmp3lame --enable-libvpx | |
--enable-libx264 --enable-libx265 --enable-bdjava --enable-vulkan | |
- name: Make core | |
working-directory: ./mythtv | |
run: ${MAKE_CMD} all_no_test -j4 | |
- name: Install core | |
working-directory: ./mythtv | |
run: ${MAKE_CMD} install | |
# QTest requires a QT SQL plugin - but there are currently none available | |
# via brew on macOS | |
- name: Unit test core | |
working-directory: ./mythtv | |
run: ${MAKE_CMD} test | |
if: runner.os == 'Linux' | |
- name: Install plugin dependencies (linux) | |
run: sudo apt install libvorbis-dev libflac++-dev libminizip-dev | |
libcdio-dev libcdio-paranoia-dev python3-pycurl libxml-xpath-perl | |
libdate-manip-perl libdatetime-format-iso8601-perl | |
libsoap-lite-perl libjson-perl libimage-size-perl | |
if: runner.os == 'Linux' | |
- name: Install plugin dependencies (ubuntu-20.04) | |
run: sudo apt install python3-oauth | |
if: matrix.os == 'ubuntu-20.04' | |
- name: Install plugin dependencies (ubuntu-22.04) | |
run: sudo apt install python3-oauthlib | |
if: matrix.os == 'ubuntu-22.04' | |
- name: Install plugin dependencies (macOS) | |
run: ${PKGMGR_CMD} install minizip flac libvorbis libcdio python-pycurl | |
python-oauthlib | |
if: runner.os == 'macOS' | |
- name: Configure plugins | |
working-directory: ./mythplugins | |
run: ${CONFIGURE_CMD} $MYTHTV_CONFIG | |
- name: Make plugins | |
working-directory: ./mythplugins | |
run: ${MAKE_CMD} -j4 | |
- name: ccache statistics [post] | |
run: | | |
ccache -sV |