+++ /dev/null
-# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
-# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
-#
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-name: 'setup Alpine'
-description: 'Setup an Alpine container for running CI'
-runs:
- using: 'composite'
- steps:
- - name: Install dependencies
- shell: sh
- run: |
- apk update
- apk add \
- bash \
- build-base \
- coreutils \
- clang \
- git \
- gtk-doc \
- linux-edge-dev \
- meson \
- openssl-dev \
- scdoc \
- tar \
- xz-dev \
- zlib-dev \
- zstd-dev
+++ /dev/null
-# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
-# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
-#
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-name: 'setup Archlinux'
-description: 'Setup an Archlinux container for running CI'
-runs:
- using: 'composite'
- steps:
- - name: Install dependencies
- shell: bash
- run: |
- # Semi-regularly the packager key may have (temporarily) expired.
- # Somewhat robust solution is to wipe the local keyring and
- # regenerate/reinstall it prior to any other packages on the system.
- rm -rf /etc/pacman.d/gnupg
- pacman-key --init
- pacman-key --populate
- pacman --noconfirm -Sy archlinux-keyring
-
- pacman --noconfirm -Su \
- clang \
- git \
- gtk-doc \
- linux-headers \
- lld \
- meson \
- scdoc
+++ /dev/null
-# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
-# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
-#
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-name: 'setup Debian'
-description: 'Setup a Debian container for running CI'
-runs:
- using: 'composite'
- steps:
- - name: Install dependencies
- shell: bash
- run: |
- export DEBIAN_FRONTEND=noninteractive
- export TZ=Etc/UTC
-
- . /etc/os-release
-
- backports_pkgs=()
- if [[ "$VERSION_CODENAME" == "bullseye" ]]; then
- echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list
- backports_pkgs=("meson" "ninja-build")
- fi
-
- apt-get update
- apt-get install --yes \
- build-essential \
- clang \
- gcc-multilib \
- git \
- gtk-doc-tools \
- liblzma-dev \
- libssl-dev \
- libzstd-dev \
- linux-headers-generic \
- meson \
- scdoc \
- zlib1g-dev \
- zstd
-
- if (( ${#backports_pkgs[@]} )); then
- apt-get install --yes -t ${VERSION_CODENAME}-backports "${backports_pkgs[@]}"
- fi
+++ /dev/null
-# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
-# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
-#
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-name: 'setup Fedora'
-description: 'Setup a Fedora container for running CI'
-runs:
- using: 'composite'
- steps:
- - name: Install dependencies
- shell: bash
- run: |
- dnf update -y
- dnf install -y \
- clang \
- compiler-rt \
- gcc \
- git \
- gtk-doc \
- kernel-devel \
- libasan \
- libhwasan \
- liblsan \
- libtsan \
- libubsan \
- libzstd-devel \
- make \
- meson \
- openssl-devel \
- scdoc \
- xz-devel \
- zlib-devel
- # CI builds with KDIR pointing to /usr/lib/modules/*/build
- # so just a foo/build pointing to the right place, assuming
- # just one kernel installed
- mkdir -p /usr/lib/modules/foo/
- ln -s /usr/src/kernels/* /usr/lib/modules/foo/build
--- /dev/null
+# SPDX-FileCopyrightText: 2025 Lucas De Marchi <lucas.de.marchi@gmail.com>
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+name: 'Setup OS'
+description: 'Setup an OS container for running CI'
+runs:
+ using: 'composite'
+ steps:
+ - name: Detect distro
+ shell: sh
+ run: |
+ . /etc/os-release
+ DISTRO=$ID
+ echo "Distro: $DISTRO"
+ echo DISTRO="$DISTRO" >> $GITHUB_ENV
+
+ - name: Setup distro
+ shell: sh
+ run: ${GITHUB_ACTION_PATH}/setup-${DISTRO}.sh
--- /dev/null
+#!/bin/sh
+# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
+# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+apk update
+apk add \
+ bash \
+ build-base \
+ coreutils \
+ clang \
+ git \
+ gtk-doc \
+ linux-edge-dev \
+ meson \
+ openssl-dev \
+ scdoc \
+ tar \
+ xz-dev \
+ zlib-dev \
+ zstd-dev
--- /dev/null
+#!/bin/bash
+# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
+# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+# Semi-regularly the packager key may have (temporarily) expired. Somewhat
+# robust solution is to wipe the local keyring and regenerate/reinstall it
+# prior to any other packages on the system.
+rm -rf /etc/pacman.d/gnupg
+pacman-key --init
+pacman-key --populate
+pacman --noconfirm -Sy archlinux-keyring
+
+pacman --noconfirm -Su \
+ clang \
+ git \
+ gtk-doc \
+ linux-headers \
+ lld \
+ meson \
+ scdoc
--- /dev/null
+#!/bin/bash
+# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
+# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+export DEBIAN_FRONTEND=noninteractive
+export TZ=Etc/UTC
+
+. /etc/os-release
+
+backports_pkgs=()
+if [[ "$VERSION_CODENAME" == "bullseye" ]]; then
+ echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list
+ backports_pkgs=("meson" "ninja-build")
+fi
+
+apt-get update
+apt-get install --yes \
+ build-essential \
+ clang \
+ gcc-multilib \
+ git \
+ gtk-doc-tools \
+ liblzma-dev \
+ libssl-dev \
+ libzstd-dev \
+ linux-headers-generic \
+ meson \
+ scdoc \
+ zlib1g-dev \
+ zstd
+
+if (( ${#backports_pkgs[@]} )); then
+ apt-get install --yes -t "${VERSION_CODENAME}"-backports "${backports_pkgs[@]}"
+fi
--- /dev/null
+#!/bin/bash
+# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
+# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+dnf update -y
+dnf install -y \
+ clang \
+ compiler-rt \
+ gcc \
+ git \
+ gtk-doc \
+ kernel-devel \
+ libasan \
+ libhwasan \
+ liblsan \
+ libtsan \
+ libubsan \
+ libzstd-devel \
+ make \
+ meson \
+ openssl-devel \
+ scdoc \
+ xz-devel \
+ zlib-devel
+
+ # CI builds with KDIR pointing to /usr/lib/modules/*/build
+ # so just a foo/build pointing to the right place, assuming
+ # just one kernel installed
+ mkdir -p /usr/lib/modules/foo/
+ ln -s /usr/src/kernels/* /usr/lib/modules/foo/build
--- /dev/null
+#!/bin/bash
+# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
+# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+export DEBIAN_FRONTEND=noninteractive
+export TZ=Etc/UTC
+apt-get update
+apt-get install --yes \
+ build-essential \
+ clang \
+ gcc-multilib \
+ gcovr \
+ git \
+ gtk-doc-tools \
+ liblzma-dev \
+ libssl-dev \
+ libzstd-dev \
+ linux-headers-generic \
+ meson \
+ scdoc \
+ zlib1g-dev \
+ zstd
+++ /dev/null
-# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
-# SPDX-FileCopyrightText: 2024 Lucas De Marchi <lucas.de.marchi@gmail.com>
-#
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-name: 'setup Ubuntu'
-description: 'Setup an Ubuntu container for running CI'
-runs:
- using: 'composite'
- steps:
- - name: Install dependencies
- shell: bash
- run: |
- export DEBIAN_FRONTEND=noninteractive
- export TZ=Etc/UTC
- apt-get update
- apt-get install --yes \
- build-essential \
- clang \
- gcc-multilib \
- gcovr \
- git \
- gtk-doc-tools \
- liblzma-dev \
- libssl-dev \
- libzstd-dev \
- linux-headers-generic \
- meson \
- scdoc \
- zlib1g-dev \
- zstd
with:
sparse-checkout: .github
- - uses: ./.github/actions/setup-ubuntu
- if: ${{ startsWith(matrix.container.name, 'ubuntu') }}
+ - name: Setup OS
+ uses: ./.github/actions/setup-os
- name: Checkout the whole project
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
sparse-checkout: .github
- - uses: ./.github/actions/setup-ubuntu
- if: ${{ startsWith(matrix.container.name, 'ubuntu') }}
+ - name: Setup OS
+ uses: ./.github/actions/setup-os
- name: Checkout the whole project
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - name: Setup Ubuntu
- uses: ./.github/actions/setup-ubuntu
+ - name: Setup OS
+ uses: ./.github/actions/setup-os
- name: Build docs
run: |
with:
sparse-checkout: .github
- - uses: ./.github/actions/setup-alpine
- if: ${{ startsWith(matrix.container, 'alpine') }}
- - uses: ./.github/actions/setup-archlinux
- if: ${{ startsWith(matrix.container, 'archlinux') }}
- - uses: ./.github/actions/setup-debian
- if: ${{ startsWith(matrix.container, 'debian') }}
- - uses: ./.github/actions/setup-fedora
- if: ${{ startsWith(matrix.container, 'fedora') }}
- - uses: ./.github/actions/setup-ubuntu
- if: ${{ startsWith(matrix.container, 'ubuntu') }}
+ - name: Setup OS
+ uses: ./.github/actions/setup-os
- name: Checkout the whole project
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2