Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/actions/setup-env/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Setup environment
inputs:
arch:
required: false
default: x86_64
runs:
using: composite
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Get and install necessary toolchains
shell: bash
run: |
sudo apt-get update

# sudo apt-get build-dep linux linux-image-unsigned-$(uname -r)
sudo apt-get install gcc build-essential libfdt-dev device-tree-compiler \
libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev \
libpci-dev libiberty-dev autoconf llvm \
texlive texlive-latex-extra

if [[ "${{matrix.arch}}" == "arm"* ]]; then
sudo apt-get install gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu qemu-system-arm
fi

pip install sphinx pyyaml

if [[ "$ARCH" == "arm64" ]]; then
export CROSS_COMPILE=aarch64-linux-gnu-
export IMAGE=Image.gz
elif [[ "${{matrix.arch}}" == "arm" ]]; then
export CROSS_COMPILE=arm-linux-gnueabihf-
export IMAGE=zImage
else
export IMAGE=bzImage
fi
echo "CROSS_COMPILE=${CROSS_COMPILE}" >> $GITHUB_ENV
echo "IMAGE=${IMAGE}" >> $GITHUB_ENV
163 changes: 80 additions & 83 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,23 @@ jobs:
strategy:
fail-fast: false
matrix:
target: [ 'htmldocs', 'xmldocs', 'latexdocs', 'pdfdocs', 'epubdocs', 'texinfodocs', 'linkcheckdocs' ]
target: [ 'htmldocs', 'xmldocs', 'latexdocs', 'pdfdocs', 'epubdocs', 'texinfodocs' ] # linkcheckdocs
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Get and install necessary toolchains
run: |
sudo apt-get update
sudo apt-get install texlive texlive-latex-extra

pip install sphinx pyyaml
timeout-minutes: 15

- uses: actions/checkout@v4
with:
fetch-depth: 1
clean: true

- name: Setup environment
uses: ./.github/actions/setup-env

- name: Build documentation
run: |
mkdir ${{github.workspace}}/build
make O=${{github.workspace}}/build -j$(nproc --all) ${{matrix.target}}
pip install -r Documentation/sphinx/requirements.txt

./scripts/sphinx-pre-install
make SPHINXOPTS=-v O=${{github.workspace}}/build -j$(nproc --all) ${{matrix.target}}

- name: Package build artifacts
run: tar -cvf docs_${{matrix.target}}.tar -C ${{github.workspace}}/build .
Expand All @@ -47,26 +41,86 @@ jobs:
path: docs_${{matrix.target}}.tar
retention-days: 90

check:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [ 'alldefconfig', 'allmodconfig', 'allnoconfig', 'allyesconfig' ]
arch: [ 'arm64', 'x86' ] # arm

env:
ARCH: ${{matrix.arch}}

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
clean: true

- name: Setup environment
uses: ./.github/actions/setup-env
with:
arch: ${{matrix.arch}}

- name: Get Raspberry Pi device-tree overlay checker
run: |
git clone https://github.com/raspberrypi/utils "${{github.workspace}}/rpi-utils"
cd "${{github.workspace}}/rpi-utils"
pwd
mkdir build
cd build
pwd
cmake ..
make -j$(nproc --all)
sudo make install

- name: Precheck configuration
run: |
cd ${{github.workspace}}
mkdir ${{github.workspace}}/build

make O=${{github.workspace}}/build -j$(nproc --all) ${{matrix.target}}
make O=${{github.workspace}}/build -j$(nproc --all) archprepare

# Disabled checks
# make O=${{github.workspace}}/build -j$(nproc --all) includecheck
# make O=${{github.workspace}}/build -j$(nproc --all) kselftest

- name: Build device-tree overlays
run: |
if [[ "$ARCH" == "arm"* ]]; then
mkdir -p ${{github.workspace}}/install/boot/overlays

make O=${{github.workspace}}/build -j$(nproc --all) dtbs

cp ${{github.workspace}}/build/scripts/dtc/dtc ${{github.workspace}}/scripts/dtc/dtc
${{github.workspace}}/rpi-utils/overlaycheck/overlaycheck
else
echo Skipping device-tree overlays build for "$ARCH"
fi

kernel:
needs: check
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- arch: arm
defconfig: bcm2835_defconfig
- arch: arm
defconfig: bcmrpi_defconfig
# - arch: arm
# defconfig: bcmrpi_defconfig
- arch: arm
defconfig: bcm2709_defconfig
- arch: arm
defconfig: bcm2711_defconfig
- arch: arm
defconfig: multi_v4t_defconfig
# - arch: arm
# defconfig: multi_v4t_defconfig
- arch: arm
defconfig: multi_v5_defconfig
- arch: arm
defconfig: multi_v7_defconfig
# - arch: arm
# defconfig: multi_v7_defconfig
- arch: arm
defconfig: mvebu_v5_defconfig
- arch: arm
Expand All @@ -92,71 +146,25 @@ jobs:
ARCH: ${{matrix.arch}}

steps:
- name: Get and install necessary toolchains
run: |
sudo apt-get update

# sudo apt-get build-dep linux linux-image-unsigned-$(uname -r)
sudo apt-get install gcc build-essential libfdt-dev device-tree-compiler \
libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev \
libpci-dev libiberty-dev autoconf llvm

if [[ "${{matrix.arch}}" == "arm"* ]]; then
sudo apt-get install gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu qemu-system-arm
fi
timeout-minutes: 15

- uses: actions/checkout@v4
with:
fetch-depth: 1
clean: true

- name: Get Raspberry Pi device-tree overlay checker
run: |
git clone https://github.com/raspberrypi/utils "${{github.workspace}}/rpi-utils"
cd "${{github.workspace}}/rpi-utils"
pwd
mkdir build
cd build
pwd
cmake ..
make -j$(nproc --all)
sudo make install
- name: Setup environment
uses: ./.github/actions/setup-env
with:
arch: ${{matrix.arch}}

- name: Prepare build
run: |
mkdir ${{github.workspace}}/build

if [[ "$ARCH" == "arm64" ]]; then
export CROSS_COMPILE=aarch64-linux-gnu-
export IMAGE=Image.gz
elif [[ "${{matrix.arch}}" == "arm" ]]; then
export CROSS_COMPILE=arm-linux-gnueabihf-
export IMAGE=zImage
else
export IMAGE=bzImage
fi
echo "CROSS_COMPILE=${CROSS_COMPILE}" >> $GITHUB_ENV
echo "IMAGE=${IMAGE}" >> $GITHUB_ENV
make O=${{github.workspace}}/build -j$(nproc --all) ${{matrix.defconfig}}
make O=${{github.workspace}}/build -j$(nproc --all) archprepare

make O=${{github.workspace}}/build ${{matrix.defconfig}}
scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y

make O=${{github.workspace}}/build archprepare

- name: Build device-tree overlays
run: |
if [[ "$ARCH" == "arm"* ]]; then
mkdir -p ${{github.workspace}}/install/boot/overlays

make O=${{github.workspace}}/build -j$(nproc --all) dtbs

cp ${{github.workspace}}/build/scripts/dtc/dtc ${{github.workspace}}/scripts/dtc/dtc
${{github.workspace}}/rpi-utils/overlaycheck/overlaycheck
else
echo Skipping device-tree overlays build for "$ARCH"
fi

- name: Build kernel
run: make O=${{github.workspace}}/build -j$(nproc --all) vmlinux

Expand All @@ -177,17 +185,6 @@ jobs:
INSTALL_PATH=${{github.workspace}}/install \
install

- name: Run kunit testsuite
run: |
if [[ "$ARCH" == "arm"* ]]; then
./tools/testing/kunit/kunit.py run \
--kunitconfig=drivers/gpu/drm/vc4/tests \
--cross_compile=$CROSS_COMPILE --arch=$ARCH
else
./tools/testing/kunit/kunit.py run \
--kunitconfig=drivers/gpu/drm/tests
fi

- name: Package build artifacts
run: tar -cvf kernel_${{matrix.arch}}_${{matrix.defconfig}}.tar -C ${{github.workspace}}/install .

Expand Down
64 changes: 64 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Testing

on:
pull_request:
branches: [ "main" ]
push:
branches: [ "main" ]
workflow_dispatch:

jobs:
kunit:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arch: [ 'arm', 'arm64', 'x86' ]
suite:
- drivers/gpu/drm/vc4/tests
- drivers/gpu/drm/tests
- drivers/fpga/tests
- drivers/base/test
- drivers/input/tests
- drivers/hid
- drivers/gpu/drm/ttm/tests
- fs/ext4
- fs/fat
- net/handshake
exclude:
- arch: arm
suite: drivers/gpu/drm/ttm/tests
- arch: arm64
suite: drivers/gpu/drm/ttm/tests
- arch: x86
suite: drivers/gpu/drm/vc4/tests

env:
ARCH: ${{matrix.arch}}

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
clean: true

- name: Setup environment
uses: ./.github/actions/setup-env
with:
arch: ${{matrix.arch}}

- name: Run kunit testsuite
run: |
mkdir ${{github.workspace}}/build

if [[ "$ARCH" == "arm"* ]]; then
./tools/testing/kunit/kunit.py run \
--build_dir=${{github.workspace}}/build \
--kunitconfig=${{matrix.suite}} \
--cross_compile=$CROSS_COMPILE --arch=$ARCH
else
./tools/testing/kunit/kunit.py run \
--build_dir=${{github.workspace}}/build \
--kunitconfig=${{matrix.suite}}
fi