Compile rockchip rk3588 kernel #75
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #========================================================================== | |
| # Description: Compile rockchip rk3588 kernel | |
| # Copyright (C) 2023 https://github.com/unifreq/linux-5.10.y-rk35xx | |
| # Copyright (C) 2023 https://github.com/ophub/kernel | |
| #========================================================================== | |
| name: Compile rockchip rk3588 kernel | |
| on: | |
| repository_dispatch: | |
| workflow_dispatch: | |
| inputs: | |
| kernel_source: | |
| description: "Select the kernel source" | |
| required: false | |
| default: "unifreq/linux-6.1.y-rockchip" | |
| type: choice | |
| options: | |
| - unifreq/linux-6.1.y-rockchip | |
| - unifreq/linux-5.10.y-rk35xx | |
| - codesnas/linux-6.1.y-rockchip | |
| - codesnas/linux-5.10.y-rk35xx | |
| - armbian/[email protected] | |
| - armbian/[email protected] | |
| kernel_version: | |
| description: "Select kernel version" | |
| required: false | |
| default: "6.1.y" | |
| type: choice | |
| options: | |
| - 6.1.y | |
| - 5.10.y | |
| kernel_auto: | |
| description: "Auto use the latest kernel" | |
| required: false | |
| default: true | |
| type: boolean | |
| delete_source: | |
| description: "Delete the source after compilation" | |
| required: false | |
| default: true | |
| type: boolean | |
| kernel_package: | |
| description: "Select compile package list" | |
| required: false | |
| default: "all" | |
| type: choice | |
| options: | |
| - all | |
| - dtbs | |
| kernel_toolchain: | |
| description: "Select the compilation toolchain" | |
| required: false | |
| default: "gcc" | |
| type: choice | |
| options: | |
| - gcc | |
| - gcc-14.2 | |
| - gcc-14.3 | |
| ccache_clear: | |
| description: "Set whether to clear the cache" | |
| required: false | |
| default: false | |
| type: boolean | |
| kernel_sign: | |
| description: "Set the kernel custom signature" | |
| required: false | |
| default: "-rk3588-ophub" | |
| type: choice | |
| options: | |
| - -rk3588-ophub | |
| - -happy-new-year | |
| - -dragon-boat-festival | |
| - -mid-autumn-festival | |
| - -happy-national-day | |
| - -merry-christmas | |
| - -spring-plowing | |
| - -summer-growing | |
| - -autumn-harvesting | |
| - -winter-storing | |
| - -yourname | |
| kernel_config: | |
| description: "Set the path of kernel .config" | |
| required: false | |
| default: "kernel-config/release/rk3588" | |
| type: choice | |
| options: | |
| - kernel-config/release/rk3588 | |
| - false | |
| env: | |
| TZ: Etc/UTC | |
| CCACHE_DIR: /builder/ccache | |
| jobs: | |
| build: | |
| runs-on: ubuntu-24.04-arm | |
| if: ${{ github.event.repository.owner.id }} == ${{ github.event.sender.id }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Initialization environment | |
| id: init | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| run: | | |
| docker rmi -f $(docker images -q) 2>/dev/null || true | |
| [[ -n "${AGENT_TOOLSDIRECTORY}" ]] && sudo rm -rf "${AGENT_TOOLSDIRECTORY}" | |
| sudo rm -rf /usr/share/dotnet /usr/local/lib/android 2>/dev/null | |
| sudo swapoff -a | |
| sudo rm -f /swapfile /mnt/swapfile | |
| sudo -E apt-get -y update | |
| sudo -E apt-get -y purge azure-cli ghc* zulu* llvm* firefox google* dotnet* powershell openjdk* mongodb* moby* || true | |
| sudo -E apt-get -y install $(curl -fsSL https://ophub.org/ubuntu2404-build-armbian-depends) | |
| sudo -E systemctl daemon-reload | |
| #sudo -E apt-get -y full-upgrade | |
| sudo -E apt-get -y autoremove --purge | |
| sudo -E apt-get clean | |
| sudo sed -i '/NVM_DIR/d;/skel/d' /root/{.bashrc,.profile} | |
| sudo rm -rf ~/{.cargo,.dotnet,.rustup} | |
| sudo -E timedatectl set-timezone "${TZ:-Etc/UTC}" | |
| sudo -E ntpdate ntp.ubuntu.com 0.pool.ntp.org || true | |
| sudo -E timedatectl set-ntp true | |
| date -u | |
| timedatectl status || true | |
| echo "status=success" >> ${GITHUB_OUTPUT} | |
| - name: Create simulated physical disk | |
| id: disk | |
| run: | | |
| mnt_size=$(expr $(df -h /mnt | tail -1 | awk '{print $4}' | sed 's/[[:alpha:]]//g' | sed 's/\..*//') - 1) | |
| root_size=$(expr $(df -h / | tail -1 | awk '{print $4}' | sed 's/[[:alpha:]]//g' | sed 's/\..*//') - 4) | |
| sudo truncate -s "${mnt_size}"G /mnt/mnt.img | |
| sudo truncate -s "${root_size}"G /root.img | |
| sudo losetup /dev/loop6 /mnt/mnt.img | |
| sudo losetup /dev/loop7 /root.img | |
| sudo pvcreate /dev/loop6 | |
| sudo pvcreate /dev/loop7 | |
| sudo vgcreate github /dev/loop6 /dev/loop7 | |
| sudo lvcreate -n runner -l 100%FREE github | |
| sudo mkfs.xfs -f -i sparse=0 -b size=4096 /dev/github/runner | |
| sudo mkdir -p /builder | |
| sudo mount /dev/github/runner /builder | |
| sudo chown -R runner:runner /builder | |
| df -Th | |
| echo "status=success" >> ${GITHUB_OUTPUT} | |
| - name: Create a mapped directory | |
| id: mapped | |
| working-directory: /builder | |
| run: | | |
| df -hT ${PWD} | |
| mkdir -p /builder/{kernel,output,ccache} | |
| ln -sf /builder/kernel /home/runner/work/_actions/ophub/amlogic-s9xxx-armbian/main/compile-kernel/kernel | |
| ln -sf /builder/output /home/runner/work/_actions/ophub/amlogic-s9xxx-armbian/main/compile-kernel/output | |
| sudo rm -rf /root/.ccache | |
| sudo ln -sf /builder/ccache /root/.ccache | |
| echo "status=success" >> ${GITHUB_OUTPUT} | |
| - name: Get kernel source hash | |
| id: kernelhash | |
| if: ${{ steps.mapped.outputs.status }} == 'success' && !cancelled() | |
| run: | | |
| # Parse the kernel source and branch | |
| input_source="${{ inputs.kernel_source }}" | |
| kernel_repo="${input_source%%@*}" | |
| [[ "${input_source}" =~ @ ]] && kernel_branch="${input_source#*@}" || kernel_branch="main" | |
| api_url="https://api.github.com/repos/${kernel_repo}/git/ref/heads/${kernel_branch}" | |
| # Get the latest source hash from the kernel repository | |
| source_hash=$(curl -fsSL -m 20 \ | |
| -H "Accept: application/vnd.github+json" \ | |
| -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ | |
| ${api_url} | | |
| jq -r '.object.sha' | |
| ) | |
| [[ -z "${source_hash}" || "${source_hash}" == "null" ]] && source_hash="${{ github.sha }}" | |
| echo "source_hash=${source_hash}" >> ${GITHUB_ENV} | |
| echo "status=success" >> ${GITHUB_OUTPUT} | |
| - name: Cache ccache | |
| uses: actions/cache@v4 | |
| with: | |
| path: /builder/ccache | |
| key: kernel-rk3588-${{ inputs.kernel_toolchain }}-${{ inputs.kernel_version }}-${{ env.source_hash }} | |
| restore-keys: | | |
| kernel-rk3588-${{ inputs.kernel_toolchain }}-${{ inputs.kernel_version }}- | |
| - name: Compile the kernel [ ${{ inputs.kernel_version }} ] | |
| uses: ophub/amlogic-s9xxx-armbian@main | |
| if: ${{ steps.mapped.outputs.status }} == 'success' && !cancelled() | |
| with: | |
| build_target: kernel | |
| kernel_source: ${{ inputs.kernel_source }} | |
| kernel_version: ${{ inputs.kernel_version }} | |
| kernel_auto: ${{ inputs.kernel_auto }} | |
| delete_source: ${{ inputs.delete_source }} | |
| kernel_package: ${{ inputs.kernel_package }} | |
| kernel_toolchain: ${{ inputs.kernel_toolchain }} | |
| kernel_sign: ${{ inputs.kernel_sign }} | |
| kernel_config: ${{ inputs.kernel_config }} | |
| ccache_clear: ${{ inputs.ccache_clear }} | |
| - name: Upload Kernel to Release | |
| uses: ncipollo/release-action@main | |
| if: ${{ env.PACKAGED_STATUS }} == 'success' && !cancelled() | |
| with: | |
| tag: kernel_rk3588 | |
| artifacts: ${{ env.PACKAGED_OUTPUTPATH }}/* | |
| allowUpdates: true | |
| removeArtifacts: false | |
| replacesArtifacts: true | |
| makeLatest: true | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| body: | | |
| - These are dedicated BSP kernels for `Rockchip rk3588` and are not compatible with other series. | |
| - Those with `flippy` in the filename are manually uploaded kernels maintained and shared by [flippy](https://github.com/unifreq), while the others are automatically compiled online. | |
| - 这些是 `Rockchip rk3588` 专用 BSP 内核,和其他系列不通用。 | |
| - 其中名字里带有 `flippy` 的是手动上传的由 [flippy](https://github.com/unifreq) 大佬维护制作分享的内核,其他是在线自动编译的。 |