Files
i2c-imc-skylake/.github/workflows/ci.yml
T
Simone 77452d5697 ci: scope the documentation check to this file, and install graphviz
The htmldocs step failed on its own success criterion. The only diagnostic
in the log was

  WARNING: dot(1) not found, for better output quality install graphviz

which says nothing about this patch. Failing the job on any occurrence of
"warning" anywhere in a kernel documentation build is too blunt: that build
emits diagnostics that depend on what happens to be installed on the runner.

Install graphviz so the warning is gone for the right reason, and narrow the
check to diagnostics that actually name i2c-imc-skylake, which is what the
step was meant to verify.
2026-07-27 00:16:42 +02:00

145 lines
5.0 KiB
YAML

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
env:
I2C_TREE: https://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux.git
SPARSE_REPOSITORY: https://git.kernel.org/pub/scm/devel/sparse/sparse.git
SPARSE_COMMIT: 00c4b8e75cbf92003bc4a695a223045092b173f3
jobs:
out-of-tree:
name: Out-of-tree build
runs-on: ubuntu-latest
timeout-minutes: 30
# GCC only, deliberately. Building a module with LLVM=1 against the
# runner's distro headers fails before it reaches this source: those
# headers were built with GCC and their Makefiles pass flags clang does
# not accept (-fconserve-stack, -fsanitize=bounds-strict, -mrecord-mcount).
# Clang coverage belongs in the in-tree job below, which controls the
# whole kernel build.
steps:
- uses: actions/checkout@v4
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential linux-headers-$(uname -r) shellcheck
- name: Build module
run: make W=1 KCFLAGS=-W
- name: Run checkpatch
run: make checkpatch
- name: Check shell scripts
run: |
bash -n test-smoke.sh
for f in tools/*.sh; do bash -n "$f"; done
shellcheck -S warning test-smoke.sh tools/*.sh
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: i2c-imc-skylake-${{ github.ref_name }}
path: i2c-imc-skylake.ko
if-no-files-found: error
in-tree:
name: Current i2c-host integration
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- name: Install kernel build dependencies
run: |
sudo apt-get update
sudo apt-get install -y bc bison build-essential clang flex libelf-dev \
libssl-dev lld llvm
- name: Build pinned Sparse
run: |
git clone --filter=blob:none "$SPARSE_REPOSITORY" sparse
git -C sparse checkout "$SPARSE_COMMIT"
make -C sparse -j"$(nproc)"
echo "$PWD/sparse" >> "$GITHUB_PATH"
- name: Prepare current maintainer tree
run: |
git clone --depth=1 --branch i2c/i2c-host "$I2C_TREE" linux-i2c
cp i2c-imc-skylake.c linux-i2c/drivers/i2c/busses/
cat docs/submission/Kconfig.kernel >> linux-i2c/drivers/i2c/busses/Kconfig
printf '%s\n' 'obj-$(CONFIG_I2C_IMC_SKYLAKE) += i2c-imc-skylake.o' \
>> linux-i2c/drivers/i2c/busses/Makefile
git -C linux-i2c rev-parse HEAD
- name: Configure kernel
working-directory: linux-i2c
run: |
make O=../linux-out x86_64_defconfig
scripts/config --file ../linux-out/.config --enable I2C --module I2C_IMC_SKYLAKE
make O=../linux-out olddefconfig
grep '^CONFIG_I2C_IMC_SKYLAKE=m' ../linux-out/.config
- name: Build driver in-tree
working-directory: linux-i2c
run: make O=../linux-out W=1 drivers/i2c/busses/i2c-imc-skylake.o
- name: Build arm64 COMPILE_TEST with Clang
working-directory: linux-i2c
run: |
make O=../linux-out-arm64 ARCH=arm64 LLVM=1 defconfig
scripts/config --file ../linux-out-arm64/.config \
--enable COMPILE_TEST --enable PCI --enable I2C \
--module I2C_IMC_SKYLAKE
make O=../linux-out-arm64 ARCH=arm64 LLVM=1 olddefconfig
grep '^CONFIG_I2C_IMC_SKYLAKE=m' ../linux-out-arm64/.config
make O=../linux-out-arm64 ARCH=arm64 LLVM=1 W=1 \
drivers/i2c/busses/i2c-imc-skylake.o
- name: Run Sparse in-tree
working-directory: linux-i2c
run: |
make O=../linux-out C=2 CF=-D__CHECK_ENDIAN__ \
drivers/i2c/busses/i2c-imc-skylake.o
- name: Run current-tree checkpatch
working-directory: linux-i2c
run: |
scripts/checkpatch.pl --strict --no-tree -f \
drivers/i2c/busses/i2c-imc-skylake.c
- name: Build the documentation
working-directory: linux-i2c
run: |
sudo apt-get install -y graphviz python3-sphinx python3-sphinx-rtd-theme
cp ../docs/submission/i2c-imc-skylake.rst Documentation/i2c/busses/
sed -i 's|^ i2c-i801$| i2c-i801\n i2c-imc-skylake|' \
Documentation/i2c/busses/index.rst
grep -q i2c-imc-skylake Documentation/i2c/busses/index.rst
make O=../linux-out htmldocs SPHINXDIRS=i2c 2>&1 | tee doc.log | tail -20
# Only diagnostics naming this file should fail the job. The docs
# build emits environment-dependent warnings that say nothing about
# this patch.
if grep -Ei 'warning|error' doc.log | grep -i i2c-imc-skylake; then
echo "the documentation build complained about this file" >&2
exit 1
fi