name: build-scheds run-name: ${{ github.actor }} PR run on: [pull_request] jobs: build-schedulers: runs-on: ubuntu-22.04 steps: ### OTHER REPOS #### # Hard turn-off interactive mode - run: echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections # Refresh packages list - run: sudo apt update ### DOWNLOAD AND INSTALL DEPENDENCIES ### # Download dependencies packaged by Ubuntu - run: sudo apt -y install bison busybox-static cargo cmake coreutils cpio elfutils file flex gcc gcc-multilib git iproute2 jq kbd kmod libcap-dev libelf-dev libunwind-dev libvirt-clients libzstd-dev linux-headers-generic linux-tools-common linux-tools-generic make ninja-build pahole pkg-config python3-dev python3-pip python3-requests qemu-kvm rsync rustc udev zstd # clang 17 # Use a custom llvm.sh script which includes the -y flag for # add-apt-repository. Otherwise, the CI job will hang. If and when # https://github.com/opencollab/llvm-jenkins.debian.net/pull/26 is # merged, we can go back to using https://apt.llvm.org/llvm.sh. - run: wget https://raw.githubusercontent.com/Decave/llvm-jenkins.debian.net/fix_llvmsh/llvm.sh - run: chmod +x llvm.sh - run: sudo ./llvm.sh all - run: sudo ln -sf /usr/bin/clang-17 /usr/bin/clang - run: sudo ln -sf /usr/bin/llvm-strip-17 /usr/bin/llvm-strip - uses: actions/checkout@v4 # meson - run: pip install meson # Install virtme-ng - run: pip install virtme-ng # Get the latest sched-ext enabled kernel directly from the git # repository (try the sched_ext-ci branch first, if it doesn't exist use # sched_ext) - run: git clone --single-branch -b sched_ext-ci --depth 1 https://github.com/sched-ext/sched_ext.git linux || git clone --single-branch -b sched_ext --depth 1 https://github.com/sched-ext/sched_ext.git linux # Print the latest commit of the checked out sched-ext kernel - run: cd linux && git log -1 --pretty=format:"%h %ad %s" --date=short # Build a minimal kernel (with sched-ext enabled) using virtme-ng - run: cd linux && vng -v --build --config .github/workflows/sched-ext.config # Generate kernel headers - run: cd linux && make headers ### END DEPENDENCIES ### # The actual build: - run: meson setup build -Dkernel=$(pwd)/linux -Dkernel_headers=./linux/usr/include - run: meson compile -C build --jobs=1 # Print CPU model before running the tests (this can be useful for # debugging purposes) - run: grep 'model name' /proc/cpuinfo | head -1 # Setup KVM support - run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm # Test schedulers - run: meson compile -C build test_sched