From 2a5d72be62de912a946320ebe73c03024d9f2b03 Mon Sep 17 00:00:00 2001 From: Han Gao Date: Fri, 28 Apr 2023 21:32:09 +0800 Subject: [PATCH] Add kernel build ci Signed-off-by: Han Gao --- .github/workflows/kernel.yml | 104 +++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 .github/workflows/kernel.yml diff --git a/.github/workflows/kernel.yml b/.github/workflows/kernel.yml new file mode 100644 index 000000000..c90de1d56 --- /dev/null +++ b/.github/workflows/kernel.yml @@ -0,0 +1,104 @@ +name: revyos-kernel-build + +on: + push: + workflow_dispatch: + schedule: + - cron: "0 2 * * *" + +env: + xuetie_toolchain: https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663142514282 + toolchain_file_name: Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1-20220906.tar.gz + toolchain_tripe: riscv64-unknown-linux-gnu- + ARCH: riscv + +jobs: + kernel: + runs-on: ubuntu-22.04 + + steps: + - name: Install software + run: | + sudo apt update && \ + sudo apt install -y gdisk dosfstools g++-12-riscv64-linux-gnu build-essential \ + libncurses-dev gawk flex bison openssl libssl-dev tree \ + dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf device-tree-compiler + sudo update-alternatives --install \ + /usr/bin/riscv64-linux-gnu-gcc riscv64-gcc /usr/bin/riscv64-linux-gnu-gcc-12 10 + sudo update-alternatives --install \ + /usr/bin/riscv64-linux-gnu-g++ riscv64-g++ /usr/bin/riscv64-linux-gnu-g++-12 10 + + - name: Checkout kernel + uses: actions/checkout@v3 + with: + path: 'kernel' + + - name: Checkout img + uses: actions/checkout@v3 + with: + repository: 'revyos/gpu_bxm_4_64-kernel' + ref: 'master' + path: 'img_module' + + - name: Configure toolchains + run: | + mkdir rootfs && mkdir rootfs/boot + wget ${xuetie_toolchain}/${toolchain_file_name} + tar -xvf ${toolchain_file_name} -C /opt + + - name: Compile Kernel && Install + run: | + export PATH="/opt/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1/bin:$PATH" + + pushd kernel + make CROSS_COMPILE=${toolchain_tripe} ARCH=${ARCH} revyos_defconfig + make CROSS_COMPILE=${toolchain_tripe} ARCH=${ARCH} -j$(nproc) + make CROSS_COMPILE=${toolchain_tripe} ARCH=${ARCH} -j$(nproc) dtbs + if [ x"$(cat .config | grep CONFIG_MODULES=y)" = x"CONFIG_MODULES=y" ]; then + sudo make CROSS_COMPILE=${toolchain_tripe} ARCH=${ARCH} INSTALL_MOD_PATH=${GITHUB_WORKSPACE}/rootfs/ modules_install -j$(nproc) + fi + sudo make CROSS_COMPILE=${toolchain_tripe} ARCH=${ARCH} INSTALL_PATH=${GITHUB_WORKSPACE}/rootfs/boot zinstall -j$(nproc) + + # Install Kernel + sudo cp -v arch/riscv/boot/Image ${GITHUB_WORKSPACE}/rootfs/boot/ + # sudo cp -v arch/riscv/boot/Image.gz ${GITHUB_WORKSPACE}/rootfs/boot/ + + # Install DTB + sudo cp -v arch/riscv/boot/dts/thead/*.dtb ${GITHUB_WORKSPACE}/rootfs/boot/ + popd + + - name: IMG_MODULE compile + run: | + export PATH="/opt/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1/bin:$PATH" + + export PVR_BUILD_DIR=thead_linux + export PVR_ARCH=rogue + export RGX_BVNC=36.52.104.182 + export RGX_BNC=36.52.104.182 + export CROSS_COMPILE=${toolchain_tripe} + + pushd img_module/rogue_km + export KERNELDIR=${GITHUB_WORKSPACE}/kernel/ + make + for kernel_version in $(ls ${GITHUB_WORKSPACE}/rootfs/lib/modules/); + do + sudo install -D -p -m 644 binary_thead_linux_wayland_release/target_riscv64/kbuild/drm_nulldisp.ko \ + "${GITHUB_WORKSPACE}/rootfs/lib/modules/${kernel_version}/extra/drm_nulldisp.ko" + sudo install -D -p -m 644 binary_thead_linux_wayland_release/target_riscv64/kbuild/pvrsrvkm.ko \ + "${GITHUB_WORKSPACE}/rootfs/lib/modules/${kernel_version}/extra/pvrsrvkm.ko" + sudo depmod -a -b "${GITHUB_WORKSPACE}/rootfs" "${kernel_version}" + done + # cp -vr output/lib/firmware ${GITHUB_WORKSPACE}/rootfs/ + popd + tree ${GITHUB_WORKSPACE}/rootfs + + - name: compress + run: tar -zcvf kernel.tar.gz rootfs + + - name: 'Upload Artifact' + uses: actions/upload-artifact@v3 + with: + name: kernel.tar.gz + path: kernel.tar.gz + retention-days: 30 + \ No newline at end of file