Skip to content

Compile rockchip rk35xx kernel #77

Compile rockchip rk35xx kernel

Compile rockchip rk35xx kernel #77

#==========================================================================
# Description: Compile rockchip rk35xx kernel
# Copyright (C) 2023 https://github.com/unifreq/linux-5.10.y-rk35xx
# Copyright (C) 2023 https://github.com/ophub/kernel
#==========================================================================
name: Compile rockchip rk35xx 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: "-rk35xx-ophub"
type: choice
options:
- -rk35xx-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/rk35xx"
type: choice
options:
- kernel-config/release/rk35xx
- 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-rk35xx-${{ inputs.kernel_toolchain }}-${{ inputs.kernel_version }}-${{ env.source_hash }}
restore-keys: |
kernel-rk35xx-${{ 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_rk35xx
artifacts: ${{ env.PACKAGED_OUTPUTPATH }}/*
allowUpdates: true
removeArtifacts: false
replacesArtifacts: true
makeLatest: true
token: ${{ secrets.GITHUB_TOKEN }}
body: |
- These are dedicated BSP kernels for `Rockchip rk3528/rk3566/rk3568` 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 rk3528/rk3566/rk3568` 专用 BSP 内核,和其他系列不通用。
- 其中名字里带有 `flippy` 的是手动上传的由 [flippy](https://github.com/unifreq) 大佬维护制作分享的内核,其他是在线自动编译的。