macOS: move pip packages to macOS.yaml #77
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: Build MythTV core variants | |
# | |
# This workflow is intended to provide good coverage | |
# quickly to insure that the build "basically" works. | |
# | |
# The containers are selected to be from the set of | |
# linux distributions and versions that are currently | |
# among the list (or will soon be for beta/rc) of the | |
# MythTV project lists of supported variants (which | |
# are Ubuntu LTS and current, Debian stable, and Fedora | |
# current and current-1. | |
# | |
# If the github cache (used for the compiler ccache) | |
# has not been flushed, this job should run in about | |
# 10 minutes. If it has been flushed it may take | |
# around an hour to run. | |
# | |
on: # yamllint disable-line rule:truthy | |
push: | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
build-mythtv-linux: | |
name: Building ${{ matrix.branch.desc }} on ${{ matrix.container.desc }} | |
runs-on: ubuntu-latest | |
env: | |
TZ: Etc/UTC | |
MYTHTV_CONFIG_PREFIX: ${{ github.workspace }}/build/install | |
MYTHTV_CONFIG_EXTRA: | |
CCACHE_DIR: $HOME/.ccache | |
CCACHE_COMPRESS: true | |
CCACHE_MAXSIZE: 250M | |
strategy: | |
matrix: | |
container: | |
# Ubuntu group | |
- desc: 'Ubuntu 22.04 LTS (Jammy Jellyfish)' | |
image: 'ubuntu:22.04' | |
ansibleopts: '--limit localhost' | |
configureopts: '' | |
- desc: 'Ubuntu 24.04 LTS (Noble Numbat)' | |
image: 'ubuntu:24.04' | |
ansibleopts: '--limit localhost' | |
configureopts: '' | |
# Debian group | |
- desc: 'Debian 11 (Bullseye)' | |
image: 'debian:bullseye' | |
ansibleopts: '--limit localhost' | |
configureopts: '' | |
- desc: 'Debian 12 (Bookworm)' | |
image: 'debian:bookworm' | |
ansibleopts: '--limit localhost' | |
configureopts: '' | |
# Fedora group | |
- desc: 'Fedora 39' | |
image: 'quay.io/fedora/fedora:39' | |
ansibleopts: '--limit localhost' | |
configureopts: '' | |
- desc: 'Fedora 40' | |
image: 'quay.io/fedora/fedora:40' | |
ansibleopts: '--limit localhost' | |
configureopts: '' | |
- desc: 'Fedora 41' | |
image: 'quay.io/fedora/fedora:41' | |
ansibleopts: '--limit localhost' | |
configureopts: '' | |
branch: | |
- desc: 'MythTV master' | |
repository: 'MythTV/mythtv' | |
ref: 'master' | |
ansibleopts: '' | |
configureopts: '' | |
fail-fast: false | |
container: | |
image: ${{ matrix.container.image }} | |
steps: | |
- name: Detect OS release | |
run: | | |
. /etc/os-release | |
echo "OS_RELEASE_ID=$ID" >> $GITHUB_ENV | |
echo "OS_RELEASE_VERSION=$VERSION_ID" >> $GITHUB_ENV | |
echo "OS_RELEASE_VERSION_MAJOR=${VERSION_ID%%.*}" >> $GITHUB_ENV | |
echo "OS_RELEASE_VERSION_CODENAME=$VERSION_CODENAME" >> $GITHUB_ENV | |
- name: Debian OS obtain codename for prerelease vesions | |
run: echo "OS_RELEASE_VERSION_CODENAME=`dpkg --status tzdata | grep 'Provides' | cut -f2 -d'-'`" >> $GITHUB_ENV | |
if: env.OS_RELEASE_ID == 'debian' && env.OS_RELEASE_VERSION_CODENAME == '' | |
- name: Debian/Ubuntu OS update | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
apt update -y | |
apt upgrade -y | |
if: env.OS_RELEASE_ID == 'debian' || env.OS_RELEASE_ID == 'ubuntu' | |
- name: Debian/Ubuntu OS install ansible | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: apt install ansible apt-utils -y | |
if: env.OS_RELEASE_ID == 'debian' || env.OS_RELEASE_ID == 'ubuntu' | |
- name: Redhat OS - add EPEL repo for EL linux (for ansible) | |
run: dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-${{ env.OS_RELEASE_VERSION_MAJOR }}.noarch.rpm | |
if: env.OS_RELEASE_ID == 'centos' || env.OS_RELEASE_ID == 'rocky' | |
- name: Redhat/Fedora OS update | |
run: dnf upgrade -y | |
if: env.OS_RELEASE_ID == 'fedora' || env.OS_RELEASE_ID == 'centos' || env.OS_RELEASE_ID == 'rocky' | |
- name: Redhat/Fedora OS install ansible | |
run: dnf install ansible dnf-plugins-core -y | |
if: env.OS_RELEASE_ID == 'fedora' || env.OS_RELEASE_ID == 'centos' || env.OS_RELEASE_ID == 'rocky' | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.workflow_run.head_branch }} | |
path: ansible | |
- name: Run ansible to install build requirements | |
working-directory: ansible | |
run: ansible-playbook ${{ matrix.container.ansibleopts }} ${{ matrix.branch.ansibleopts }} mythtv.yml | |
- name: Checkout Mythtv/mythtv repository | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ matrix.branch.repository }} | |
ref: ${{ matrix.branch.ref }} | |
path: mythtv | |
- name: Checkout ccache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.ccache | |
key: ${{ matrix.container.image }}-build-core-ccache-${{ github.sha }} | |
restore-keys: ${{ matrix.container.image }}-build-core-ccache | |
- name: ccache statistics [pre] | |
run: ccache -s | |
- name: Configure core | |
working-directory: mythtv/mythtv | |
run: ./configure --compile-type=release --enable-debug=0 --disable-debug --prefix=${{ env.MYTHTV_CONFIG_PREFIX }} ${{ env.MYTHTV_CONFIG_EXTRA }} ${{ matrix.container.configureopts }} ${{ matrix.branch.configureopts }} | |
- name: Make core | |
working-directory: mythtv/mythtv | |
run: make all_no_test -j4 | |
- name: Install core | |
working-directory: mythtv/mythtv | |
run: make install | |
- name: Configure plugins | |
working-directory: mythtv/mythplugins | |
run: ./configure --prefix=${{ env.MYTHTV_CONFIG_PREFIX }} | |
- name: Make plugins | |
working-directory: mythtv/mythplugins | |
run: make -j4 | |
- name: Install plugins | |
working-directory: mythtv/mythplugins | |
run: make install | |
- name: ccache statistics [post] | |
run: ccache -s |