Composite GHA action with caching

This adds caching for apt and should make things a bit more stable and
faster.
This commit is contained in:
Andrew Hutchings
2026-03-20 13:59:21 +00:00
parent 4b8c5247fe
commit 36de828dc0
30 changed files with 320 additions and 154 deletions
@@ -0,0 +1,92 @@
name: 'Install apt dependencies'
description: 'Install apt packages with retry logic and caching'
inputs:
packages:
description: 'Space-separated list of apt packages to install'
required: true
retries:
description: 'Number of retry attempts'
required: false
default: '3'
retry-delay:
description: 'Initial delay between retries (seconds, doubles each attempt)'
required: false
default: '5'
no-install-recommends:
description: 'Pass --no-install-recommends to apt-get install'
required: false
default: 'false'
cache:
description: 'Cache apt archives (disable for dynamic package names)'
required: false
default: 'true'
runs:
using: 'composite'
steps:
- name: Compute cache key
if: inputs.cache == 'true'
id: cache-key
shell: bash
run: |
SORTED_PKGS=$(echo "${{ inputs.packages }}" | tr ' ' '\n' | sort -u | tr '\n' ' ')
PKG_HASH=$(echo "$SORTED_PKGS" | sha256sum | cut -d' ' -f1 | head -c 16)
OS_VERSION=$(lsb_release -rs 2>/dev/null || echo "unknown")
echo "key=apt-deps-${{ runner.os }}-${{ runner.arch }}-${OS_VERSION}-${PKG_HASH}" >> $GITHUB_OUTPUT
echo "restore-key=apt-deps-${{ runner.os }}-${{ runner.arch }}-${OS_VERSION}-" >> $GITHUB_OUTPUT
- name: Restore apt cache
if: inputs.cache == 'true'
id: apt-cache
uses: actions/cache/restore@v4
with:
path: ~/apt-cache
key: ${{ steps.cache-key.outputs.key }}
restore-keys: ${{ steps.cache-key.outputs.restore-key }}
- name: Pre-seed apt archives from cache
if: inputs.cache == 'true' && steps.apt-cache.outputs.cache-hit == 'true'
shell: bash
run: |
if [ -d ~/apt-cache ] && ls ~/apt-cache/*.deb >/dev/null 2>&1; then
sudo cp ~/apt-cache/*.deb /var/cache/apt/archives/
echo "Restored $(ls ~/apt-cache/*.deb | wc -l) cached .deb files"
fi
- name: Install packages
shell: bash
run: |
export DEBIAN_FRONTEND=noninteractive
RETRIES=${{ inputs.retries }}
DELAY=${{ inputs.retry-delay }}
NO_REC=""
if [ "${{ inputs.no-install-recommends }}" = "true" ]; then
NO_REC="--no-install-recommends"
fi
for i in $(seq 1 $RETRIES); do
if sudo apt-get update -q && \
sudo apt-get install -y $NO_REC ${{ inputs.packages }}; then
exit 0
fi
if [ "$i" -eq "$RETRIES" ]; then
echo "::error::apt-get failed after $RETRIES attempts"
exit 1
fi
echo "::warning::apt-get failed (attempt $i/$RETRIES), retrying in ${DELAY}s..."
sleep $DELAY
DELAY=$((DELAY * 2))
done
- name: Collect .deb files for cache
if: inputs.cache == 'true' && steps.apt-cache.outputs.cache-hit != 'true'
shell: bash
run: |
mkdir -p ~/apt-cache
cp /var/cache/apt/archives/*.deb ~/apt-cache/ 2>/dev/null || true
echo "Cached $(ls ~/apt-cache/*.deb 2>/dev/null | wc -l) .deb files"
- name: Save apt cache
if: inputs.cache == 'true' && steps.apt-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ~/apt-cache
key: ${{ steps.cache-key.outputs.key }}
+5 -2
View File
@@ -56,11 +56,14 @@ jobs:
if: ${{ failure() && steps.examples.outcome == 'failure' }}
run: cat ./wrapper/Ada/examples/server.log
- name: Install valgrind
uses: ./.github/actions/install-apt-deps
with:
packages: valgrind
- name: Run Ada wrapper tests (valgrind)
working-directory: ./wrapper/Ada/tests
run: |
sudo apt-get update
sudo apt-get install -y valgrind
valgrind --leak-check=full --error-exitcode=1 \
--suppressions=valgrind.supp ./bin/tests
+9 -6
View File
@@ -52,6 +52,12 @@ jobs:
timeout-minutes: 10
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Download lib
uses: actions/download-artifact@v4
with:
@@ -61,12 +67,9 @@ jobs:
run: tar -xf build-dir.tgz
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
# hostap dependencies
sudo apt-get install -y libuv1-dev libnghttp2-dev libcap-dev libcmocka-dev liburcu-dev
uses: ./.github/actions/install-apt-deps
with:
packages: libuv1-dev libnghttp2-dev libcap-dev libcmocka-dev liburcu-dev
- name: Checkout OSP
uses: actions/checkout@v4
+4 -5
View File
@@ -15,11 +15,10 @@ jobs:
# pull wolfSSL
- uses: actions/checkout@v4
# install cmake and autotools
- name: Install cmake
run: |
sudo apt-get update
sudo apt-get install -y cmake autoconf automake libtool
- name: Install cmake and autotools
uses: ./.github/actions/install-apt-deps
with:
packages: cmake autoconf automake libtool
# build and install wolfssl via autotools for CMake consumer test
- name: Build wolfssl with autotools
+3 -4
View File
@@ -15,11 +15,10 @@ jobs:
# pull wolfSSL
- uses: actions/checkout@v4
# install cmake
- name: Install cmake
run: |
sudo apt-get update
sudo apt-get install -y cmake
uses: ./.github/actions/install-apt-deps
with:
packages: cmake
# build wolfssl
- name: Build wolfssl
+9 -3
View File
@@ -49,10 +49,16 @@ jobs:
matrix:
curl_ref: [ 'master', 'curl-8_4_0' ]
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install test dependencies
run: |
sudo apt-get update
sudo apt-get install nghttp2 libpsl5 libpsl-dev python3-impacket apache2 apache2-dev
uses: ./.github/actions/install-apt-deps
with:
packages: nghttp2 libpsl5 libpsl-dev python3-impacket apache2 apache2-dev
- name: Download lib
uses: actions/download-artifact@v4
+9 -6
View File
@@ -53,13 +53,16 @@ jobs:
timeout-minutes: 4
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install krb5-kdc krb5-otp libkrb5-dev \
libsocket-wrapper libnss-wrapper krb5-admin-server libdb5.3-dev
uses: ./.github/actions/install-apt-deps
with:
packages: krb5-kdc krb5-otp libkrb5-dev libsocket-wrapper libnss-wrapper krb5-admin-server libdb5.3-dev
- name: Download lib
uses: actions/download-artifact@v4
+9 -2
View File
@@ -62,9 +62,16 @@ jobs:
ip addr list lo | grep 'inet '
ip addr list lo | grep 'inet6 '
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install prereqs
run:
sudo apt-get install build-essential autoconf libtool pkg-config cmake clang libc++-dev
uses: ./.github/actions/install-apt-deps
with:
packages: build-essential autoconf libtool pkg-config cmake clang libc++-dev
- name: Download lib
uses: actions/download-artifact@v4
+9 -3
View File
@@ -49,10 +49,16 @@ jobs:
matrix:
haproxy_ref: [ 'v3.1.0', 'v3.2.0']
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install test dependencies
run: |
sudo apt-get update
sudo apt-get install libpcre2-dev
uses: ./.github/actions/install-apt-deps
with:
packages: libpcre2-dev
- name: Download lib
uses: actions/download-artifact@v4
+6 -9
View File
@@ -211,15 +211,12 @@ jobs:
run: tar -xf build-dir.tgz
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
# hostap dependencies
sudo apt-get install -y libpcap0.8 libpcap-dev curl libcurl4-openssl-dev \
libnl-3-dev binutils-dev libssl-dev libiberty-dev libnl-genl-3-dev \
libnl-route-3-dev libdbus-1-dev bridge-utils tshark python3-pycryptodome
sudo pip install pycryptodome
uses: ./wolfssl/.github/actions/install-apt-deps
with:
packages: libpcap0.8 libpcap-dev curl libcurl4-openssl-dev libnl-3-dev binutils-dev libssl-dev libiberty-dev libnl-genl-3-dev libnl-route-3-dev libdbus-1-dev bridge-utils tshark python3-pycryptodome
- name: Install pip dependencies
run: sudo pip install pycryptodome
- name: Checking if we have hostap in cache
uses: actions/cache/restore@v4
+8 -1
View File
@@ -51,8 +51,15 @@ jobs:
runs-on: ubuntu-24.04
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install dependencies
run: export DEBIAN_FRONTEND=noninteractive && sudo apt-get update && sudo apt-get install -y libreadline-dev
uses: ./.github/actions/install-apt-deps
with:
packages: libreadline-dev
- name: Download lib
uses: actions/download-artifact@v4
with:
+9 -5
View File
@@ -54,12 +54,16 @@ jobs:
runs-on: ${{ matrix.config.runner }}
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install libgtest-dev
uses: ./.github/actions/install-apt-deps
with:
packages: libgtest-dev
- name: Download lib
uses: actions/download-artifact@v4
+10 -2
View File
@@ -31,8 +31,16 @@ jobs:
- name: Prepare target kernel for module builds
run: |
echo "updating linux-headers"
sudo apt-get update || $(exit 2)
sudo apt-get install linux-headers-$(uname -r) -y || $(exit 3)
apt_ok=false
for i in 1 2 3; do
if sudo apt-get update && sudo apt-get install -y linux-headers-$(uname -r); then
apt_ok=true
break
fi
echo "::warning::apt-get failed (attempt $i/3), retrying..."
sleep $((5 * i))
done
if [ "$apt_ok" != true ]; then exit 2; fi
echo "preparing target kernel $(uname -r)"
pushd "/lib/modules/$(uname -r)/build" || $(exit 4)
if [ -f /proc/config.gz ]; then gzip -dc /proc/config.gz > /tmp/.config && sudo mv /tmp/.config . || $(exit 5); elif [ -f "/boot/config-$(uname -r)" ]; then sudo cp -p "/boot/config-$(uname -r)" .config || $(exit 6); fi
+9 -4
View File
@@ -51,6 +51,12 @@ jobs:
runs-on: ubuntu-24.04
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Download lib
uses: actions/download-artifact@v4
with:
@@ -66,10 +72,9 @@ jobs:
path: osp
- name: Install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y libevent-dev libevent-2.1-7 automake pkg-config make libio-socket-ssl-perl
uses: ./.github/actions/install-apt-deps
with:
packages: libevent-dev libevent-2.1-7 automake pkg-config make libio-socket-ssl-perl
- name: Checkout memcached
uses: actions/checkout@v4
+9 -3
View File
@@ -20,6 +20,12 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
# Build wolfSSL using the user_settings.h from the C# wrapper directory
- name: Build wolfSSL
uses: wolfSSL/actions-build-autotools-project@v1
@@ -30,9 +36,9 @@ jobs:
check: false
- name: Install mono-complete
run: |
sudo apt-get update
sudo apt-get install -y mono-complete
uses: ./.github/actions/install-apt-deps
with:
packages: mono-complete
- name: Copy wolfSSL.dll to C# wrapper directory
run: |
+9 -4
View File
@@ -50,6 +50,12 @@ jobs:
timeout-minutes: 4
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Download lib
uses: actions/download-artifact@v4
with:
@@ -65,10 +71,9 @@ jobs:
path: osp
- name: Install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y build-essential libev-dev libssl-dev automake python3-docutils libcunit1 libcunit1-doc libcunit1-dev pkg-config make python3-psutil
uses: ./.github/actions/install-apt-deps
with:
packages: build-essential libev-dev libssl-dev automake python3-docutils libcunit1 libcunit1-doc libcunit1-dev pkg-config make python3-psutil
- name: Checkout mosquitto
uses: actions/checkout@v4
+9 -5
View File
@@ -50,6 +50,12 @@ jobs:
timeout-minutes: 10
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Download lib
uses: actions/download-artifact@v4
with:
@@ -65,11 +71,9 @@ jobs:
path: osp
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
autoconf automake libtool pkg-config gettext \
libidn2-dev libsecret-1-dev autopoint
uses: ./.github/actions/install-apt-deps
with:
packages: autoconf automake libtool pkg-config gettext libidn2-dev libsecret-1-dev autopoint
- name: Checkout msmtp
uses: actions/checkout@v4
+4 -2
View File
@@ -42,9 +42,11 @@ jobs:
# This should be a safe limit for the tests to run.
timeout-minutes: 4
steps:
- name: Install dependencies
run: export DEBIAN_FRONTEND=noninteractive && sudo apt-get update && sudo apt-get install -y ${{ matrix.CC }}
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/install-apt-deps
with:
packages: ${{ matrix.CC }}
- name: Build
env:
CC: ${{ matrix.CC }}
+9 -6
View File
@@ -25,6 +25,12 @@ jobs:
# This should be a safe limit for the tests to run.
timeout-minutes: 30
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Checking if we have nss in cache
uses: actions/cache@v4
id: cache
@@ -35,12 +41,9 @@ jobs:
- name: Install dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
# hostap dependencies
sudo apt-get install -y gyp ninja-build
uses: ./.github/actions/install-apt-deps
with:
packages: gyp ninja-build
- name: Checkout nss
if: steps.cache.outputs.cache-hit != 'true'
+9 -5
View File
@@ -51,6 +51,12 @@ jobs:
timeout-minutes: 10
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Download lib
uses: actions/download-artifact@v4
with:
@@ -60,11 +66,9 @@ jobs:
run: tar -xf build-dir.tgz
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install liblzo2-dev libpam0g-dev liblz4-dev libcap-ng-dev \
linux-libc-dev man2html libcmocka-dev python3-docutils \
libtool automake autoconf libnl-genl-3-dev libnl-genl-3-200
uses: ./.github/actions/install-apt-deps
with:
packages: liblzo2-dev libpam0g-dev liblz4-dev libcap-ng-dev linux-libc-dev man2html libcmocka-dev python3-docutils libtool automake autoconf libnl-genl-3-dev libnl-genl-3-200
- name: workaround high-entropy ASLR
# not needed after either an update to llvm or runner is done
+9 -5
View File
@@ -51,12 +51,16 @@ jobs:
runs-on: ubuntu-24.04
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install libpam-dev ninja-build meson
uses: ./.github/actions/install-apt-deps
with:
packages: libpam-dev ninja-build meson
- name: Download lib
uses: actions/download-artifact@v4
+9 -7
View File
@@ -98,14 +98,16 @@ jobs:
timeout-minutes: 60
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential autoconf automake autoconf-archive pkgconf \
libffi-dev libbz2-dev libreadline-dev libsqlite3-dev \
zlib1g-dev libncursesw5-dev libgdbm-dev libnss3-dev \
liblzma-dev uuid-dev pkg-config
uses: ./.github/actions/install-apt-deps
with:
packages: build-essential autoconf automake autoconf-archive pkgconf libffi-dev libbz2-dev libreadline-dev libsqlite3-dev zlib1g-dev libncursesw5-dev libgdbm-dev libnss3-dev liblzma-dev uuid-dev pkg-config
- name: Download wolfSSL
uses: actions/download-artifact@v4
+9 -21
View File
@@ -37,20 +37,10 @@ jobs:
uses: actions/checkout@v4
- name: Set up build environment
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
cmake \
ninja-build \
python3 \
git \
gcc-arm-none-eabi \
libnewlib-arm-none-eabi \
libstdc++-arm-none-eabi-newlib \
wget \
unzip
uses: ./.github/actions/install-apt-deps
with:
packages: build-essential ca-certificates cmake ninja-build python3 git gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib wget unzip
no-install-recommends: 'true'
- name: Cache CMSIS Device
id: cache-cmsis-device
@@ -89,13 +79,11 @@ jobs:
renode-1.15.3-
- name: Install Renode dependencies
run: |
# Install Mono and other dependencies needed for Renode (always needed, even when cached)
sudo apt-get install -y --no-install-recommends \
mono-runtime \
libmono-cil-dev \
screen \
policykit-1 || true
uses: ./.github/actions/install-apt-deps
with:
packages: mono-runtime libmono-cil-dev screen policykit-1
no-install-recommends: 'true'
continue-on-error: true
- name: Install Renode (if not cached)
if: steps.cache-renode.outputs.cache-hit != 'true'
+9 -5
View File
@@ -52,12 +52,16 @@ jobs:
timeout-minutes: 4
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev libjansson-dev libp11-dev librtlsdr-dev libcap-dev
uses: ./.github/actions/install-apt-deps
with:
packages: libcurl4-openssl-dev libjansson-dev libp11-dev librtlsdr-dev libcap-dev
- name: Download lib
uses: actions/download-artifact@v4
+9 -2
View File
@@ -52,9 +52,16 @@ jobs:
- socat_version: "1.8.0.3"
expect_fail: "146,386,399,402,459,460,467,468,475,478,491,492,495,528"
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install prereqs
run:
sudo apt-get install build-essential autoconf libtool pkg-config clang libc++-dev
uses: ./.github/actions/install-apt-deps
with:
packages: build-essential autoconf libtool pkg-config clang libc++-dev
- name: Download lib
uses: actions/download-artifact@v4
+9 -5
View File
@@ -52,12 +52,16 @@ jobs:
timeout-minutes: 20
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y libcppunit-dev
uses: ./.github/actions/install-apt-deps
with:
packages: libcppunit-dev
- name: Download lib
uses: actions/download-artifact@v4
+10 -6
View File
@@ -56,13 +56,17 @@ jobs:
timeout-minutes: 20
needs: build_wolfssl
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y build-essential autoconf libldb-dev \
libldb2 python3-ldb bc libcap-dev
uses: ./.github/actions/install-apt-deps
with:
packages: build-essential autoconf libldb-dev libldb2 python3-ldb bc libcap-dev
cache: 'false'
- name: Setup env
run: |
+3 -4
View File
@@ -43,10 +43,9 @@ jobs:
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update -q
sudo apt-get install -y build-essential autoconf automake libtool jq psmisc || \
sudo apt-get install -y build-essential autoconf automake libtool jq
uses: ./.github/actions/install-apt-deps
with:
packages: build-essential autoconf automake libtool jq psmisc
- name: Pull TLS-Anvil Docker image
run: docker pull ghcr.io/tls-attacker/tlsanvil:latest
+4 -5
View File
@@ -39,11 +39,10 @@ jobs:
- uses: actions/checkout@v4
name: Checkout wolfSSL
- name: install_multilib
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y gcc-multilib
- name: Install multilib
uses: ./.github/actions/install-apt-deps
with:
packages: gcc-multilib
- name: Build wolfCrypt with extra type conversion warnings
run: |
+9 -17
View File
@@ -30,24 +30,16 @@ jobs:
# This should be a safe limit for the tests to run.
timeout-minutes: 45
steps:
- name: Checkout wolfSSL CI actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
fetch-depth: 1
- name: Install dependencies
run: |
# Don't prompt for anything
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
# most of the ci-base zephyr docker image packages
sudo apt-get install -y zip bridge-utils uml-utilities \
git cmake ninja-build gperf ccache dfu-util device-tree-compiler wget \
python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \
make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1 \
autoconf automake bison build-essential ca-certificates cargo ccache chrpath cmake \
cpio device-tree-compiler dfu-util diffstat dos2unix doxygen file flex g++ gawk gcc \
gcovr git git-core gnupg gperf gtk-sharp3 help2man iproute2 lcov libcairo2-dev \
libglib2.0-dev libgtk2.0-0 liblocale-gettext-perl libncurses5-dev libpcap-dev \
libpopt0 libsdl1.2-dev libsdl2-dev libssl-dev libtool libtool-bin locales make \
net-tools ninja-build openssh-client parallel pkg-config python3-dev python3-pip \
python3-ply python3-setuptools python-is-python3 qemu-kvm rsync socat srecord sudo \
texinfo unzip wget ovmf xz-utils
uses: ./.github/actions/install-apt-deps
with:
packages: zip bridge-utils uml-utilities git cmake ninja-build gperf ccache dfu-util device-tree-compiler wget python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1 autoconf automake bison build-essential ca-certificates cargo ccache chrpath cmake cpio device-tree-compiler dfu-util diffstat dos2unix doxygen file flex g++ gawk gcc gcovr git git-core gnupg gperf gtk-sharp3 help2man iproute2 lcov libcairo2-dev libglib2.0-dev libgtk2.0-0 liblocale-gettext-perl libncurses5-dev libpcap-dev libpopt0 libsdl1.2-dev libsdl2-dev libssl-dev libtool libtool-bin locales make net-tools ninja-build openssh-client parallel pkg-config python3-dev python3-pip python3-ply python3-setuptools python-is-python3 qemu-kvm rsync socat srecord sudo texinfo unzip wget ovmf xz-utils
- name: Setup cmake version
uses: jwlawson/actions-setup-cmake@v2