Skip to content

dev version

dev version #451

Workflow file for this run

on:
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
name: Continuous Integration
env:
PYTHON_DEBUG_VERSION: 3.11.4
PYTHON_INSTALL_DIR: ~\AppData\Local\Programs\Python\Python311
jobs:
test:
name: Test Suite ${{ matrix.job.target }} (${{ matrix.job.libcec }} pkg-config=${{ matrix.job.pkg-config || false }})
runs-on: ${{ matrix.job.os }}
strategy:
matrix:
job:
- os: windows-latest
target: x86_64-pc-windows-msvc
use-cross: false
libcec: vendored-libcec
expected_libcec_abi: 6
- os: windows-latest
target: x86_64-pc-windows-msvc
use-cross: false
libcec: static-libcec
expected_libcec_abi: 6
additional_env:
LIBCEC_STATIC: "1"
- os: ubuntu-latest
target: arm-unknown-linux-gnueabi
use-cross: true
libcec: vendored-libcec
expected_libcec_abi: 6
additional_env:
LIBCEC_VENDORED: "1"
- os: ubuntu-latest
target: armv7-unknown-linux-gnueabihf
use-cross: true
libcec: vendored-libcec
expected_libcec_abi: 6
additional_env:
LIBCEC_VENDORED: "1"
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use-cross: false # Not run in cross so that EXPECTED_LIBCEC_VERSION_MAJOR shows inside the test
libcec: vendored-libcec
expected_libcec_abi: 6
additional_env:
LIBCEC_VENDORED: "1"
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
use-cross: true
libcec: static-libcec
expected_libcec_abi: 6
additional_env:
LIBCEC_STATIC: "1"
#
# libcec discovery with pkg config
#
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use-cross: false # Important that we do not run cross so package install shows up
libcec: "libcec4"
libcec-dev: "libcec-dev=4*"
pkg-config: true
expected_libcec_abi: 4
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use-cross: false # Important that we do not run cross so package install shows up
libcec: "libcec6"
libcec-dev: "libcec-dev=6*"
pkg-config: true
expected_libcec_abi: 6
#
# libcec discovery without pkg config
# We set LD_LIBRARY_PATH and C_INCLUDE_PATH for compiler to find the preinstalled libcec
#
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use-cross: false # Important that we do not run cross so package install shows up
libcec: "libcec4"
libcec-dev: "libcec-dev=4*"
pkg-config: false
expected_libcec_abi: 4
additional_env:
LD_LIBRARY_PATH: "/usr/lib/x86_64-linux-gnu/"
C_INCLUDE_PATH: "/usr/include/libcec/"
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use-cross: false # Important that we do not run cross so package install shows up
libcec: "libcec6"
libcec-dev: "libcec-dev=6*"
pkg-config: false
expected_libcec_abi: 6
additional_env:
LD_LIBRARY_PATH: "/usr/lib/x86_64-linux-gnu/"
C_INCLUDE_PATH: "/usr/include/libcec/"
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use-cross: false
libcec: "static-libcec"
pkg-config: false
expected_libcec_abi: 6
additional_env:
LIBCEC_STATIC: "1"
- os: macos-latest
target: aarch64-apple-darwin
use-cross: false
libcec: "static-libcec"
pkg-config: false
expected_libcec_abi: 6
additional_env:
LIBCEC_STATIC: "1"
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
submodules: recursive
- name: Installing Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
target: ${{ matrix.job.target }}
override: true
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3
- uses: Swatinem/rust-cache@v2
with:
# use additional cache key,
# ensure cache separation
key: ${{ matrix.job.target }}-${{ matrix.job.libcec }}-${{ matrix.job.pkg-config }}-${{ matrix.job.additional_env.LIBCEC_STATIC }}-${{ matrix.job.additional_env.LD_LIBRARY_PATH }}-${{ matrix.job.additional_env.C_INCLUDE_PATH }}
# libcec and p8-platform from apt repo
- if: ${{ startsWith(matrix.job.libcec, 'libcec') && runner.os == 'Linux' }}
name: Install libcec(-dev) and build dependencies
run: |
set -ex
# introduce Ubuntu 20.04 (Focal Fossa) repos as well for easy libcec4 installation
sudo sh -c 'echo "deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list'
sudo apt-get update # re-loads apt sources
apt show '${{ matrix.job.libcec }}'
apt show '${{ matrix.job.libcec-dev }}'
sudo apt install -yq libudev-dev libp8-platform2 libp8-platform-dev '${{ matrix.job.libcec }}' '${{ matrix.job.libcec-dev }}'
# additional build dependencies for non-cross builds with vendored libcec sources
# Also needed by static in linking
- if: ${{ (startsWith(matrix.job.libcec, 'vendored') || startsWith(matrix.job.libcec, 'static')) && !matrix.job.use-cross && runner.os == 'Linux' }}
name: Install libudev-dev for non-cross vendored builds as libcec build dependency
run: |
set -ex
sudo apt-get update -yq
sudo apt-get install -yq libudev-dev
# setup developer command prompt for Windows
- if: ${{ startsWith(matrix.job.libcec, 'vendored') && !matrix.job.use-cross && runner.os == 'Windows' }}
name: Setup developer command prompt
uses: ilammy/msvc-dev-cmd@v1
# pkg-config install
- if: ${{ startsWith(matrix.job.libcec, 'libcec') && matrix.job.pkg-config && runner.os == 'Linux' }}
name: Install pkg-config for utilizing libcec from apt build dependency
run: sudo apt-get install -yq pkg-config
# pkg-config remove
- if: ${{ startsWith(matrix.job.libcec, 'libcec') && !matrix.job.pkg-config && runner.os == 'Linux' }}
name: Remove pkg-config
run: sudo apt-get remove -yq pkg-config
# Windows: Patch build files such that they are compatible with sccache
- if: ${{ startsWith(matrix.job.libcec, 'vendored') && !matrix.job.use-cross && runner.os == 'Windows' }}
name: Make libcec build compatible with sccache for faster CI
shell: pwsh
run: |
.\scripts\ci\win_patch_sccache.ps1
- if: runner.os == 'Linux'
name: cmake version
run: cmake --version
- if: ${{ startsWith(matrix.job.libcec, 'vendored') && runner.os == 'Windows' }}
name: Sets additional sccache env vars for windows
# See https://github.com/orgs/community/discussions/26641
# for discussion on the syntax
run: |
echo "CMAKE_C_COMPILER_LAUNCHER=sccache.exe" >> $Env:GITHUB_ENV
echo "CMAKE_CXX_COMPILER_LAUNCHER=sccache.exe" >> $Env:GITHUB_ENV
echo "RUSTC_WRAPPER=sccache.exe" >> $Env:GITHUB_ENV
- if: ${{ startsWith(matrix.job.libcec, 'vendored') && runner.os != 'Windows' }}
name: Sets additional sccache env vars for non-windows
run: |
echo "CMAKE_C_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV"
echo "CMAKE_CXX_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV"
echo "RUSTC_WRAPPER=sccache" >> "$GITHUB_ENV"
- name: Cargo test
env:
EXPECTED_LIBCEC_VERSION_MAJOR: ${{ matrix.job.expected_libcec_abi }}
LD_LIBRARY_PATH: ${{ matrix.job.additional_env.LD_LIBRARY_PATH }}
C_INCLUDE_PATH: ${{ matrix.job.additional_env.C_INCLUDE_PATH }}
LIBCEC_STATIC: ${{ matrix.job.additional_env.LIBCEC_STATIC }}
LIBCEC_VENDORED: ${{ matrix.job.additional_env.LIBCEC_VENDORED }}
SCCACHE_GHA_ENABLED: "true"
uses: actions-rs/cargo@v1
with:
command: test
use-cross: ${{ matrix.job.use-cross }}
args: --target ${{ matrix.job.target }} -vv
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
submodules: recursive
- name: Rustfmt check
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Install libcec(-dev) and build dependencies
run: |
set -ex
# introduce Ubuntu 20.04 (Focal Fossa) repos as well for easy libcec4 installation
sudo sh -c 'echo "deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list'
sudo apt-get update # re-loads apt sources
apt show 'libcec6'
apt show 'libcec-dev=6*'
sudo apt install -yq libudev-dev libp8-platform2 libp8-platform-dev 'libcec6' 'libcec-dev=6*'
- name: Clippy Check
uses: actions-rs/cargo@v1
with:
use-cross: false
command: clippy
args: -- --target x86_64-unknown-linux-gnu -D warnings