Skip to content

Commit

Permalink
Use composite actions
Browse files Browse the repository at this point in the history
  • Loading branch information
vrabaud committed May 22, 2024
1 parent 99c288a commit 9895b53
Show file tree
Hide file tree
Showing 17 changed files with 314 additions and 336 deletions.
28 changes: 28 additions & 0 deletions .github/actions/cache/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: 'Cache setup '
description: 'Caches cargo and external dependencies.'
inputs:
codec-rav1e:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
default: 'OFF'
runs:
using: "composite"
steps:
- name: Cache cargo registry
if: ${{ inputs.codec-rav1e == 'LOCAL' }}
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
continue-on-error: true
with:
path: ~/.cargo/registry/cache
key: cargo-registry-${{ runner.os }}-${{ hashFiles('CMakeLists.txt', 'cmake/Modules/*', 'ext/*.cmd', 'ext/*.sh') }}-${{ github.job }}
restore-keys: |
cargo-registry-${{ runner.os }}-${{ hashFiles('CMakeLists.txt', 'cmake/Modules/*', 'ext/*.cmd', 'ext/*.sh') }}-
cargo-registry-${{ runner.os }}-
- name: Cache external dependencies
id: cache-ext
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ext, build/_deps
key: ext-${{ runner.os }}-${{ hashFiles('CMakeLists.txt', 'cmake/Modules/*', 'ext/*.cmd', 'ext/*.sh') }}-${{ github.job }}
restore-keys: |
ext-${{ runner.os }}-${{ hashFiles('CMakeLists.txt', 'cmake/Modules/*', 'ext/*.cmd', 'ext/*.sh') }}-
ext-${{ runner.os }}-
52 changes: 52 additions & 0 deletions .github/actions/setup-common/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: 'Setup for all OSes'
description: 'Installs dependencies for all OSes'
inputs:
codec-aom:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
default: 'OFF'
codec-dav1d:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
default: 'OFF'
codec-rav1e:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
default: 'OFF'
recent-cmake:
description: 'Can take the values: true, false. Only useful on Linux'
default: false
runs:
using: "composite"
steps:
- name: Set up Python
uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0
with:
python-version: '3.x'
- name: Set up CMake < 3.18
if: ${{ runner.os == 'Linux' && !inputs.recent-cmake }}
uses: jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be # v2.0.2
with:
cmake-version: '3.13.x'
- name: Set up CMake >= 3.18
if: ${{ runner.os == 'Linux' && inputs.recent-cmake }}
uses: jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be # v2.0.2
with:
cmake-version: '3.18.x'
- name: Print CMake version
run: cmake --version
shell: bash
- name: Set up ninja
uses: seanmiddleditch/gha-setup-ninja@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # v4

- name: Set up nasm
if: ${{ inputs.codec-aom == 'LOCAL' }}
uses: ilammy/setup-nasm@13cbeb366c45c4379d3478cdcbadd8295feb5028 # v1.5.1
- name: Set up meson
if: ${{ inputs.codec-dav1d == 'LOCAL' }}
run: pip install meson
shell: bash
- name: Set up rust
uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # v1.0.7
if: ${{ inputs.codec-rav1e == 'LOCAL' }}
with:
profile: minimal
toolchain: stable
override: true
76 changes: 76 additions & 0 deletions .github/actions/setup-linux/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: 'Setup on Linux'
description: 'Installs dependencies and sets up env variables'
inputs:
codec-aom:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
default: 'OFF'
codec-dav1d:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
edfault: 'OFF'
codec-rav1e:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
default: 'OFF'
gcc-version:
description: 'Can be empty, in which case CC and CXX are not overriden'
default: ''
libxml2:
default: 'OFF'
libyuv:
default: 'OFF'
recent-cmake:
description: 'Can take the values: true, false'
default: false
runs:
using: "composite"
steps:
- name: Install non-library dependencies
run: |
sudo apt update
sudo apt install imagemagick libjpeg-turbo8-dev libpng-dev
shell: bash
- name: Install libaom library
if: ${{ inputs.codec-aom == 'SYSTEM' }}
run:
sudo apt install libaom-dev
shell: bash
- name: Install libdav1d library
if: ${{ inputs.codec-dav1d == 'SYSTEM' }}
run:
sudo apt install libdav1d-dev
shell: bash
- name: Install rav1e library
if: ${{ inputs.codec-rav1e == 'SYSTEM' }}
run:
sudo apt install librav1e-dev
shell: bash
- name: Install libxml2 library
if: ${{ inputs.libxml2 == 'SYSTEM' }}
run:
sudo apt install libxml2
shell: bash
- name: Install libyuv library
if: ${{ inputs.libyuv == 'SYSTEM' }}
run:
sudo apt install libyuv-dev
shell: bash

- name: Install cargo-c
if: ${{ inputs.codec-rav1e == 'LOCAL' }}
env:
LINK: https://github.com/lu-zero/cargo-c/releases/latest/download
CARGO_C_FILE: cargo-c-x86_64-unknown-linux-musl.tar.gz
run: |
curl -L $LINK/$CARGO_C_FILE | tar xz -C ~/.cargo/bin
shell: bash

- uses: ./.github/actions/setup-common
with:
codec-aom: ${{ inputs.codec-aom }}
codec-dav1d: ${{ inputs.codec-dav1d }}
codec-rav1e: ${{ inputs.codec-rav1e }}
recent-cmake: ${{ inputs.recent-cmake }}

- name: Set GCC & G++ compiler
if: ${{ inputs.gcc-version != '' }}
run: echo "CC=gcc-${{ inputs.gcc-version }}" >> $GITHUB_ENV && echo "CXX=g++-${{ inputs.gcc-version }}" >> $GITHUB_ENV
shell: bash
44 changes: 44 additions & 0 deletions .github/actions/setup-macos/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: 'Setup on Linux'
description: 'Installs dependencies and sets up env variables'
inputs:
codec-aom:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
default: 'OFF'
codec-dav1d:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
default: 'OFF'
codec-rav1e:
description: 'Can take the values: OFF, LOCAL, SYSTEM'
default: 'OFF'
runs:
using: "composite"
steps:
- name: Install non-library dependencies
run: brew install imagemagick
shell: bash
- name: Install AOM library
if: ${{ inputs.codec-aom == 'SYSTEM' }}
run: brew install aom
shell: bash
- name: Install dav1d library
if: ${{ inputs.codec-dav1d == 'SYSTEM' }}
run: brew install dav1d
shell: bash

- name: Install cargo-c
if: ${{ inputs.codec-rav1e == 'LOCAL' }}
env:
LINK: https://github.com/lu-zero/cargo-c/releases/latest/download
CARGO_C_FILE: cargo-c-macos.zip
run: |
curl -sLo $CARGO_C_FILE $LINK/$CARGO_C_FILE
unzip -o $CARGO_C_FILE -d ~/.cargo/bin
rm $CARGO_C_FILE
shell: bash

- uses: ./.github/actions/setup-common
with:
codec-aom: ${{ inputs.codec-aom }}
codec-dav1d: ${{ inputs.codec-dav1d }}
codec-rav1e: ${{ inputs.codec-rav1e }}
recent-cmake: true
17 changes: 4 additions & 13 deletions .github/workflows/ci-android-emulator-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,11 @@ jobs:
# r25c is the same as 25.2.9519653.
ndk-version: r25c
add-to-path: false
- name: Setup ninja
uses: seanmiddleditch/gha-setup-ninja@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # v4
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be # v2.0.2
- uses: ./.github/actions/setup-common
with:
cmake-version: "3.19.x"
- name: Setup python
uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0
with:
python-version: '3.x'
- name: Setup meson
run: pip install meson
- name: Setup nasm
uses: ilammy/setup-nasm@13cbeb366c45c4379d3478cdcbadd8295feb5028 # v1.5.1
codec-aom: 'LOCAL'
codec-dav1d: 'LOCAL'
recent-cmake: true
- name: Setup JDK
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
with:
Expand Down
17 changes: 4 additions & 13 deletions .github/workflows/ci-android-jni.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,11 @@ jobs:
# r25c is the same as 25.2.9519653.
ndk-version: r25c
add-to-path: false
- name: Setup ninja
uses: seanmiddleditch/gha-setup-ninja@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # v4
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be # v2.0.2
- uses: ./.github/actions/setup-common
with:
cmake-version: "3.19.x"
- name: Setup python
uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0
with:
python-version: '3.x'
- name: Setup meson
run: pip install meson
- name: Setup nasm
uses: ilammy/setup-nasm@13cbeb366c45c4379d3478cdcbadd8295feb5028 # v1.5.1
codec-aom: 'LOCAL'
codec-dav1d: 'LOCAL'
recent-cmake: true
- name: Setup JDK
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
with:
Expand Down
50 changes: 9 additions & 41 deletions .github/workflows/ci-disable-gtest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,40 +36,14 @@ jobs:

steps:
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
- name: Set GCC & G++ compiler (on Linux)
if: runner.os == 'Linux'
run: echo "CC=gcc-${{matrix.gcc}}" >> $GITHUB_ENV && echo "CXX=g++-${{matrix.gcc}}" >> $GITHUB_ENV
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0
- uses: ./.github/actions/setup-linux
with:
python-version: '3.x'
- uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # v1.0.7
with:
profile: minimal
toolchain: stable
override: true

- name: Install cargo-c
env:
LINK: https://github.com/lu-zero/cargo-c/releases/latest/download
CARGO_C_FILE: cargo-c-x86_64-unknown-linux-musl.tar.gz
run: |
curl -L $LINK/$CARGO_C_FILE | tar xz -C ~/.cargo/bin
- name: Cache external dependencies
id: cache-ext
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ext, build/_deps
key: ${{ runner.os }}-disable-gtest-${{ hashFiles('cmake/Modules/*', 'ext/*.cmd', 'ext/*.sh') }}
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be # v2.0.2
with:
# CMake version 3.17 is required to build libwebp (which libsharpyuv is part of) on macOS.
cmake-version: '3.17.x'
- name: Print cmake version
run: cmake --version
- uses: ilammy/setup-nasm@13cbeb366c45c4379d3478cdcbadd8295feb5028 # v1.5.1
- uses: seanmiddleditch/gha-setup-ninja@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # v4
- run: pip install meson
codec-aom: 'LOCAL'
codec-dav1d: 'LOCAL'
codec-rav1e: 'LOCAL'
gcc-version: ${{ matrix.gcc }}
libyuv: 'LOCAL'
recent-cmake: true

- name: Prepare libavif (cmake)
run: >
Expand All @@ -83,15 +57,9 @@ jobs:
-DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
-DAVIF_BUILD_TESTS=ON -DAVIF_ENABLE_GTEST=OFF
-DAVIF_ENABLE_WERROR=ON
- name: Cache cargo registry
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
continue-on-error: true
- uses: ./.github/actions/cache
with:
path: ~/.cargo/registry/cache
key: cargo-registry-${{ runner.os }}-${{ hashFiles('ext/rav1e/Cargo.lock') }}-disable-gtest
restore-keys: |
cargo-registry-${{ runner.os }}-${{ hashFiles('ext/rav1e/Cargo.lock') }}-
cargo-registry-${{ runner.os }}-
codec-rav1e: 'LOCAL'
- name: Build libavif (ninja)
working-directory: ./build
run: ninja
Expand Down
27 changes: 8 additions & 19 deletions .github/workflows/ci-linux-golden-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,14 @@ jobs:

steps:
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
- name: Set GCC & G++ compiler (on Linux)
run: echo "CC=gcc-${{matrix.gcc}}" >> $GITHUB_ENV && echo "CXX=g++-${{matrix.gcc}}" >> $GITHUB_ENV
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0
- uses: ./.github/actions/setup-linux
with:
python-version: '3.x'
- name: Cache external dependencies
id: cache-ext
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ext, build/_deps
key: ${{ runner.os }}-golden-tests-${{ hashFiles('cmake/Modules/*', 'ext/*.cmd', 'ext/*.sh') }}
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be
with:
# CMake 3.18 or higher is required for libxml2
cmake-version: '3.18.x'
- name: Print cmake version
run: cmake --version
- uses: ilammy/setup-nasm@13cbeb366c45c4379d3478cdcbadd8295feb5028 # v1.5.1
- uses: seanmiddleditch/gha-setup-ninja@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # v4
codec-aom: 'LOCAL'
codec-dav1d: 'LOCAL'
gcc-version: ${{ matrix.gcc }}
libxml2: 'LOCAL'
libyuv: 'LOCAL'
recent-cmake: true
- name: Build mp4box
if: steps.cache-ext.outputs.cache-hit != 'true'
working-directory: ./ext
Expand All @@ -65,6 +53,7 @@ jobs:
-DAVIF_BUILD_TESTS=ON -DAVIF_ENABLE_GOLDEN_TESTS=ON
-DAVIF_ENABLE_GTEST=OFF -DAVIF_ENABLE_WERROR=ON
-DGOLDEN_TESTS_OUTPUT_DIR=${{ runner.temp }}/golden_tests
- uses: ./.github/actions/cache
- name: Build libavif (ninja)
working-directory: ./build
run: ninja
Expand Down
Loading

0 comments on commit 9895b53

Please sign in to comment.