DO NOT MERGE - RFC for changes to xmltv.dtd for audio description of visuals #260
Workflow file for this run
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 | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
schedule: | |
- cron: "0 0 * * 0" | |
jobs: | |
linux-build: | |
name: Build on ${{ matrix.name }} | |
runs-on: ubuntu-latest | |
env: | |
RPM_PKG_MGR: dnf | |
DEBIAN_FRONTEND: noninteractive | |
TZ: Etc/UTC | |
strategy: | |
matrix: | |
include: | |
- container: ubuntu:16.04 | |
name: Ubuntu 16.04 LTS (Xenial Xerus) | |
- container: ubuntu:18.04 | |
name: Ubuntu 18.04 LTS (Bionic Beaver) | |
- container: ubuntu:20.04 | |
name: Ubuntu 20.04 LTS (Focal Fossa) | |
- container: ubuntu:22.04 | |
name: Ubuntu 22.04 LTS (Jammy Jellyfish) | |
- container: ubuntu:23.04 | |
name: Ubuntu 23.04 (Lunar Lobster) | |
- container: ubuntu:23.10 | |
name: Ubuntu 23.10 (Mantic Minotaur) | |
- container: ubuntu:24.04 | |
name: Ubuntu 24.04 LTS (Noble Numbat) | |
- container: ubuntu:latest | |
name: Ubuntu Latest (LTS) | |
- container: ubuntu:rolling | |
name: Ubuntu Interim (rolling) | |
- container: ubuntu:devel | |
name: Ubuntu Testing (development) | |
- container: debian:buster | |
name: Debian 10 (Buster) | |
- container: debian:bullseye | |
name: Debian 11 (Bullseye) | |
- container: debian:bookworm | |
name: Debian 12 (Bookworm) | |
- container: debian:stable | |
name: Debian Stable | |
- container: debian:testing | |
name: Debian Testing | |
- container: fedora:34 | |
name: Fedora 34 | |
- container: fedora:35 | |
name: Fedora 35 | |
- container: fedora:36 | |
name: Fedora 36 | |
- container: fedora:37 | |
name: Fedora 37 | |
- container: fedora:38 | |
name: Fedora 38 | |
- container: fedora:39 | |
name: Fedora 39 | |
- container: fedora:latest | |
name: Fedora Latest | |
- container: fedora:rawhide | |
name: Fedora Testing (aka Rawhide) | |
- container: quay.io/centos/centos:centos7 | |
name: CentOS 7 | |
- container: quay.io/centos/centos:stream8 | |
name: CentOS Stream 8 | |
- container: quay.io/centos/centos:stream9 | |
name: CentOS Stream 9 | |
- container: quay.io/centos/centos:stream10 | |
name: CentOS Stream 10 | |
- container: alpine:3.17 | |
name: Alpine Linux 3.17 | |
- container: alpine:latest | |
name: Alpine Linux Latest | |
- container: alpine:edge | |
name: Alpine Linux Testing | |
fail-fast: false | |
container: | |
image: ${{ matrix.container }} | |
steps: | |
- name: Detect OS release | |
run: | | |
. /etc/os-release && echo "OS_RELEASE_ID=$ID" >> $GITHUB_ENV | |
. /etc/os-release && echo "OS_RELEASE_VERSION=$VERSION_ID" >> $GITHUB_ENV | |
. /etc/os-release && echo "OS_RELEASE_VERSION_MAJOR=${VERSION_ID%%.*}" >> $GITHUB_ENV | |
- name: Use archived repositories on EL 7 | |
run: | | |
# CentOS 7 reached EOL 30 June 2024. | |
# The repositories configured in the container are not working any more. | |
# Use vault.centos.org package archive instead. | |
find /etc/yum.repos.d/ -type f -exec sed -i 's/mirrorlist=/#mirrorlist=/g' {} + | |
find /etc/yum.repos.d/ -type f -exec sed -i 's/#baseurl=/baseurl=/g' {} + | |
find /etc/yum.repos.d/ -type f -exec sed -i 's/mirror.centos.org/vault.centos.org/g' {} + | |
if: | | |
env.OS_RELEASE_ID == 'centos' && env.OS_RELEASE_VERSION == '7' | |
- name: Use archived repositories on EL 8 | |
run: | | |
# CentOS 8 reached EOL 31 December 2021. | |
# The repositories configured in the container are not working any more. | |
# Use vault.centos.org package archive instead. | |
find /etc/yum.repos.d/ -type f -exec sed -i 's/mirrorlist=/#mirrorlist=/g' {} + | |
find /etc/yum.repos.d/ -type f -exec sed -i 's/#baseurl=/baseurl=/g' {} + | |
find /etc/yum.repos.d/ -type f -exec sed -i 's/mirror.centos.org/vault.centos.org/g' {} + | |
if: | | |
env.OS_RELEASE_ID == 'centos' && env.OS_RELEASE_VERSION == '8' | |
- name: Use archived repositories on older Ubuntu releases | |
run: | | |
# Ubuntu removes the release archives from the main location | |
# when the release is no longer supported. Redirect to the | |
# old-releases distribution location in those cases. | |
sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list | |
if: | | |
env.OS_RELEASE_ID == 'ubuntu' && | |
( env.OS_RELEASE_VERSION == '23.04' || | |
env.OS_RELEASE_VERSION == '23.10' ) | |
- name: Adjust package manager for EL 7 | |
run: echo "RPM_PKG_MGR=yum" >> $GITHUB_ENV | |
if: | | |
env.OS_RELEASE_ID == 'centos' && env.OS_RELEASE_VERSION == '7' | |
- name: Add dnf plugins for recent EL | |
run: ${{env.RPM_PKG_MGR}} install -y dnf-plugins-core | |
if: | | |
env.OS_RELEASE_ID == 'centos' && env.RPM_PKG_MGR == 'dnf' | |
- name: Add powertools repo for EL 8 | |
run: ${{env.RPM_PKG_MGR}} config-manager --set-enabled powertools | |
if: | | |
env.OS_RELEASE_ID == 'centos' && env.OS_RELEASE_VERSION == '8' | |
- name: Add CRB repo for EL 9+ | |
run: ${{env.RPM_PKG_MGR}} config-manager --set-enabled crb | |
if: | | |
env.OS_RELEASE_ID == 'centos' && env.OS_RELEASE_VERSION >= 9 | |
- name: Add EPEL repo for EL linux | |
run: ${{env.RPM_PKG_MGR}} -y install epel-release | |
if: | | |
env.OS_RELEASE_ID == 'centos' | |
- name: Update Debian OS | |
run: | | |
apt-get update -q -y | |
apt-get upgrade -q -y | |
if: | | |
env.OS_RELEASE_ID == 'debian' || env.OS_RELEASE_ID == 'ubuntu' | |
- name: Update Redhat OS | |
run: ${{env.RPM_PKG_MGR}} upgrade -y | |
if: | | |
env.OS_RELEASE_ID == 'centos' || env.OS_RELEASE_ID == 'fedora' | |
- name: Update Alpine Linux | |
run: | | |
apk update | |
apk upgrade | |
if: | | |
env.OS_RELEASE_ID == 'alpine' | |
- name: Install perl requirements for Debian systems | |
run: > | |
apt-get install -q -y | |
libarchive-zip-perl | |
libcgi-pm-perl | |
libdata-dump-perl | |
libdate-calc-perl | |
libdate-manip-perl | |
libdatetime-format-iso8601-perl | |
libdatetime-format-sqlite-perl | |
libdatetime-format-strptime-perl | |
libdatetime-perl | |
libdatetime-timezone-perl | |
libdbd-sqlite3-perl | |
libdbi-perl | |
libfile-chdir-perl | |
libfile-homedir-perl | |
libfile-slurp-perl | |
libfile-which-perl | |
libhtml-parser-perl | |
libhtml-tree-perl | |
libhttp-cache-transparent-perl | |
libhttp-cookies-perl | |
libhttp-message-perl | |
libio-stringy-perl | |
libjson-perl | |
libjson-xs-perl | |
liblingua-preferred-perl | |
liblinux-dvb-perl | |
liblist-moreutils-perl | |
liblog-tracemessages-perl | |
liblwp-protocol-https-perl | |
liblwp-useragent-determined-perl | |
libperlio-gzip-perl | |
libsoap-lite-perl | |
libterm-progressbar-perl | |
libterm-readkey-perl | |
libtimedate-perl | |
libtk-tablematrix-perl | |
libtry-tiny-perl | |
libunicode-string-perl | |
liburi-encode-perl | |
liburi-perl | |
libwww-perl | |
libxml-dom-perl | |
libxml-libxml-perl | |
libxml-libxslt-perl | |
libxml-parser-perl | |
libxml-simple-perl | |
libxml-treepp-perl | |
libxml-twig-perl | |
libxml-writer-perl | |
make | |
perl | |
perl-tk | |
if: | | |
env.OS_RELEASE_ID == 'debian' || env.OS_RELEASE_ID == 'ubuntu' | |
- name: Install perl requirements for Redhat systems | |
run: > | |
${{env.RPM_PKG_MGR}} install -y | |
make | |
perl | |
perl-Archive-Zip | |
perl-CGI | |
perl-Data-Dumper | |
perl-Date-Calc | |
perl-Date-Manip | |
perl-DateTime | |
perl-DateTime-Format-ISO8601 | |
perl-DateTime-Format-SQLite | |
perl-DateTime-Format-Strptime | |
perl-DBD-SQLite | |
perl-DBI | |
perl-Digest-SHA | |
perl-ExtUtils-MakeMaker | |
perl-File-chdir | |
perl-File-HomeDir | |
perl-File-Slurp | |
perl-File-Temp | |
perl-File-Which | |
perl-Getopt-Long | |
perl-HTML-Parser | |
perl-HTML-Tree | |
perl-HTTP-Cache-Transparent | |
perl-HTTP-Cookies | |
perl-HTTP-Message | |
perl-IO-stringy | |
perl-JSON | |
perl-JSON-XS | |
perl-libwww-perl | |
perl-Lingua-Preferred | |
perl-List-MoreUtils | |
perl-LWP-Protocol-https | |
perl-LWP-UserAgent-Determined | |
perl-Memoize | |
perl-PerlIO-gzip | |
perl-SOAP-Lite | |
perl-Term-ProgressBar | |
perl-TermReadKey | |
perl-Time-HiRes | |
perl-Time-Local | |
perl-Time-Piece | |
perl-TimeDate | |
perl-Tk | |
perl-Tk-TableMatrix | |
perl-Try-Tiny | |
perl-Unicode-String | |
perl-URI | |
perl-URI-Encode | |
perl-XML-DOM | |
perl-XML-LibXML | |
perl-XML-LibXSLT | |
perl-XML-Parser | |
perl-XML-Simple | |
perl-XML-TreePP | |
perl-XML-Twig | |
perl-XML-Writer | |
if: | | |
env.OS_RELEASE_ID == 'centos' || env.OS_RELEASE_ID == 'fedora' | |
- name: Install perl requirements for Alpine Linux | |
run: > | |
apk add | |
perl-archive-zip | |
perl-compress-raw-zlib | |
perl-date-manip | |
perl-datetime-format-iso8601 | |
perl-datetime-format-strptime | |
perl-dbd-sqlite | |
perl-dbi | |
perl-file-which | |
perl-file-slurp | |
perl-html-parser | |
perl-io-gzip | |
perl-io-stringy | |
perl-json | |
perl-json-xs | |
perl-libwww | |
perl-lingua-en-numbers-ordinate | |
perl-lingua-preferred | |
perl-list-moreutils | |
perl-lwp-protocol-https | |
perl-lwp-useragent-determined | |
perl-term-progressbar | |
perl-term-readkey | |
perl-timedate | |
perl-xml-dom | |
perl-xml-libxml | |
perl-xml-libxslt | |
perl-xml-parser | |
perl-xml-treepp | |
perl-xml-twig | |
perl-xml-writer | |
perl-unicode-string | |
perl-uri-encode | |
perl-dev | |
make | |
perl-app-cpanminus | |
perl-module-build | |
perl-test-fatal | |
perl-test-requiresinternet | |
if: | | |
env.OS_RELEASE_ID == 'alpine' | |
- name: Build missing perl requirements from CPAN for Alpine Linux | |
run: > | |
cpanm | |
DateTime::Format::SQLite | |
File::HomeDir | |
HTML::Tree | |
HTTP::Cache::Transparent | |
if: | | |
env.OS_RELEASE_ID == 'alpine' | |
- name: Checkout using legacy v1 checkout (does not use node) for legacy distros | |
uses: actions/checkout@v1 | |
if: | | |
( ( ( env.OS_RELEASE_ID == 'centos' && env.OS_RELEASE_VERSION_MAJOR < 8 ) || | |
( env.OS_RELEASE_ID == 'ubuntu' && env.OS_RELEASE_VERSION_MAJOR < 20 ) ) ) | |
- name: Checkout | |
uses: actions/checkout@v4 | |
if: | | |
( ! ( ( env.OS_RELEASE_ID == 'centos' && env.OS_RELEASE_VERSION_MAJOR < 8 ) || | |
( env.OS_RELEASE_ID == 'ubuntu' && env.OS_RELEASE_VERSION_MAJOR < 20 ) ) ) | |
- name: perl Makefile.PL | |
run: perl Makefile.PL -default NO_PACKLIST=1 NO_PERLLOCAL=1 | |
- name: make | |
run: make | |
- name: make test | |
run: make test | |
windows-build: | |
name: Build on Windows | |
# Build Windows self-extracting executables. | |
# Build 32-bit and 64-bit versions. | |
# Strictly speaking we only need the 32-bit version (since that will also run | |
# on 64-bit) but there may be some benefit in the 64-bit Perl for machine- | |
# intensive operations, such as tv_imdb. | |
strategy: | |
matrix: | |
target: [win64, win32] | |
uses: ./.github/workflows/winbuild.yml | |
with: | |
arch: ${{ matrix.target }} | |
secrets: inherit | |
macos-build: | |
name: Build on macOS | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- name: Install dependencies | |
run: brew install perl cpanminus openssl sqlite tcl-tk | |
- name: Create compiler ccflags C std override for older sources | |
run: | | |
echo "package CCflagsConfig;" >> /tmp/CCflagsConfig.pm | |
echo "use warnings;" >> /tmp/CCflagsConfig.pm | |
echo "use Config;" >> /tmp/CCflagsConfig.pm | |
echo "my \$ccflags = \$Config{ccflags};" >> /tmp/CCflagsConfig.pm | |
echo "\$ccflags .= ' -std=c89';" >> /tmp/CCflagsConfig.pm | |
echo "my \$obj = tied %Config;" >> /tmp/CCflagsConfig.pm | |
echo "\$obj->{ccflags} = \$ccflags;" >> /tmp/CCflagsConfig.pm | |
echo "1;" >> /tmp/CCflagsConfig.pm | |
- name: Install perl requirements that require older C standard | |
run: > | |
PERL5LIB="/tmp" PERL5OPT="-MCCflagsConfig" perl /opt/homebrew/bin/cpanm --notest --no-interactive | |
Tk | |
- name: Install perl requirements | |
run: > | |
perl /opt/homebrew/bin/cpanm --notest --no-interactive | |
Archive::Zip | |
CGI | |
CGI::Carp | |
Date::Manip | |
DateTime | |
DateTime::Format::ISO8601 | |
DateTime::Format::SQLite | |
DBD::SQLite | |
DBI | |
File::HomeDir | |
File::Slurp | |
HTML::FormatText | |
HTTP::Cache::Transparent | |
IO::Scalar | |
JSON | |
Lingua::EN::Numbers::Ordinate | |
Lingua::Preferred | |
List::MoreUtils | |
LWP::Protocol::https | |
LWP::UserAgent::Determined | |
Memoize | |
SOAP::Lite | |
Term::ProgressBar | |
Tk::TableMatrix | |
Unicode::String | |
Unicode::UTF8simple | |
URI::Encode | |
XML::DOM | |
XML::LibXML | |
XML::LibXSLT | |
XML::TreePP | |
XML::Twig | |
XML::Writer | |
- name: Show content of log files on failure | |
if: ${{ failure() }} | |
run: cat /Users/runner/.cpanm/work/*/build.log | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: perl Makefile.PL | |
run: perl Makefile.PL -default NO_PACKLIST=1 NO_PERLLOCAL=1 | |
- name: make | |
run: make | |
- name: make test | |
run: make test | |