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
31 changes: 18 additions & 13 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ jobs:
echo 'MAKE_ARCH=ARCH=x86_64' >> $GITHUB_ENV
echo 'IMAGE_PATH=arch/x86/boot/bzImage' >> $GITHUB_ENV
echo 'QEMU_ARCH=x86_64' >> $GITHUB_ENV
echo 'QEMU_PACKAGE=qemu-system-x86' >> $GITHUB_ENV
echo 'QEMU_ARGS=-append console=ttyS0' >> $GITHUB_ENV
echo 'GCC_DEB=gcc-15.deb' >> $GITHUB_ENV
echo 'LIBGCCJIT_TARGETS=x86_64-linux-gnu x86_64-unknown-linux-gnu' >> $GITHUB_ENV
Expand All @@ -55,6 +56,7 @@ jobs:
echo 'MAKE_ARCH=ARCH=arm64' >> $GITHUB_ENV
echo 'IMAGE_PATH=arch/arm64/boot/Image.gz' >> $GITHUB_ENV
echo 'QEMU_ARCH=aarch64' >> $GITHUB_ENV
echo 'QEMU_PACKAGE=qemu-system-arm ipxe-qemu' >> $GITHUB_ENV
echo 'QEMU_ARGS=-machine virt -cpu cortex-a72' >> $GITHUB_ENV
echo 'GCC_DEB=gcc-15-aarch64.deb' >> $GITHUB_ENV
echo 'LIBGCCJIT_TARGETS=aarch64-unknown-linux-gnu aarch64-unknown-none-softfloat' >> $GITHUB_ENV
Expand All @@ -73,7 +75,7 @@ jobs:

- run: |
sudo apt-get -y update
sudo apt-get -y --no-install-recommends install bc file git make flex bison libelf-dev libssl-dev curl python3 llvm clang lld binutils qemu-system-x86 qemu-system-arm
sudo apt-get -y --no-install-recommends install bc file git make flex bison libelf-dev libssl-dev curl python3 llvm clang lld binutils $QEMU_PACKAGE

# Setup: checkout Linux source tree.
- if: matrix.tree == 'torvalds'
Expand All @@ -97,7 +99,7 @@ jobs:
- run: |
git clone --depth 1 -b 1_30_1 https://github.com/mirror/busybox
mv ci/busybox.config busybox/.config
make -C busybox ${{ env.MAKE_CROSS_COMPILE }} ${{ env.JOBS }} busybox
make -C busybox ${{ env.JOBS }} busybox

# Setup: Rust.
- run: |
Expand Down Expand Up @@ -158,23 +160,26 @@ jobs:
sed -i 's:linux/samples/rust/:${{ env.OUTPUT_DIR }}samples/rust/:' ci/qemu-initramfs.desc

# Make sure Rust is available.
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rustavailable
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rustavailable

# Configure kernel.
- run: cp ci/*.config linux/kernel/configs/

- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} defconfig rfl-${{ matrix.arch }}.config rfl-rust.config
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} defconfig rfl-${{ matrix.arch }}.config rfl-rust.config

- if: matrix.arch == 'arm64' && matrix.backend == 'gcc'
run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rfl-arm64-gcc.config

- if: matrix.config == 'defconfig+debug'
run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rfl-debug.config
run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rfl-debug.config

# Dump kernel configuration before the build and save it.
- run: |
cat ${{ env.OUTPUT_DIR }}.config
cp ${{ env.OUTPUT_DIR }}.config config-before

# Build.
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }}
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }}

# Check the kernel configuration did not change, just in case.
- run: diff -u config-before ${{ env.OUTPUT_DIR }}.config
Expand Down Expand Up @@ -265,30 +270,30 @@ jobs:
- run: python ci/check_panics.py qemu-stdout

# Re-build with Clippy.
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} CLIPPY=1
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} CLIPPY=1

# Generate Rust documentation.
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rustdoc
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rustdoc

# Check `#[test]`s.
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rusttest
- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rusttest

# Check formatting.
# TODO: re-enable when fixed upstream.
#- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rustfmtcheck
#- run: make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} rustfmtcheck

# Test single targets.
- run: |
rm ${{ env.OUTPUT_DIR }}samples/rust/rust_minimal.o
make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} samples/rust/rust_minimal.o
make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} samples/rust/rust_minimal.o
file ${{ env.OUTPUT_DIR }}samples/rust/rust_minimal.o | grep -F 'ELF'

- run: |
make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} samples/rust/rust_minimal.rsi
make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} samples/rust/rust_minimal.rsi
grep -F '#![feature(prelude_import)]' ${{ env.OUTPUT_DIR }}samples/rust/rust_minimal.rsi

- run: |
make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} samples/rust/rust_minimal.s
make -C linux ${{ env.MAKE_ARCH }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_KRUSTFLAGS }} ${{ env.JOBS }} samples/rust/rust_minimal.s
grep -F '.text' ${{ env.OUTPUT_DIR }}samples/rust/rust_minimal.s

# Test Rust host programs.
Expand Down
2 changes: 2 additions & 0 deletions rfl-arm64-gcc.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# cg_gcc emits symbol names containing `::` unquoted, which the aarch64 assembler rejects.
# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
6 changes: 3 additions & 3 deletions rfl-rust.config
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ CONFIG_SAMPLE_RUST_PRINT=y

CONFIG_SAMPLE_RUST_HOSTPROGS=y

RUST_PHYLIB_ABSTRACTIONS=y
AX88796B_PHY=y
AX88796B_RUST_PHY=y
CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
CONFIG_AX88796B_PHY=y
CONFIG_AX88796B_RUST_PHY=y

CONFIG_KUNIT=y
CONFIG_RUST_KERNEL_DOCTESTS=y
Expand Down
Loading