85 lines
3.0 KiB
YAML
85 lines
3.0 KiB
YAML
name: Build KernelSU Kernel Module
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
kmi:
|
|
description: 'KMI version'
|
|
required: true
|
|
type: string
|
|
ddk_release:
|
|
description: 'DDK release version'
|
|
required: false
|
|
default: '20251016'
|
|
type: string
|
|
|
|
jobs:
|
|
build-kernelsu-ko:
|
|
name: Build kernelsu.ko for ${{ inputs.kmi }}
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: ghcr.io/ylarod/ddk:${{ inputs.kmi }}-${{ inputs.ddk_release }}
|
|
options: --privileged
|
|
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Get version info from GitHub API
|
|
id: version
|
|
run: |
|
|
REPO_OWNER="SukiSU-Ultra"
|
|
REPO_NAME="SukiSU-Ultra"
|
|
REPO_BRANCH="${GITHUB_HEAD_REF:-${GITHUB_REF_NAME}}"
|
|
KSU_VERSION_API="3.2.0"
|
|
|
|
GITHUB_VERSION=$(curl -s "https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
|
|
GITHUB_COMMIT_COUNT=$(curl -sI "https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/commits?sha=$REPO_BRANCH&per_page=1" | grep -i '^link:' | sed -n 's/.*page=\([0-9]*\)>; rel="last".*/\1/p')
|
|
|
|
KSU_VERSION=$((10000 + GITHUB_COMMIT_COUNT + 700))
|
|
|
|
FAKE_HASH=$(curl -s "https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/commits/$REPO_BRANCH" | grep '"sha":' | head -n 1 | sed -E 's/.*"([^"]+)".*/\1/' | cut -c1-8)
|
|
|
|
KSU_VERSION_FULL="v${GITHUB_VERSION:-$KSU_VERSION_API}-${FAKE_HASH}@$REPO_BRANCH"
|
|
|
|
echo "KSU_VERSION=$KSU_VERSION" >> $GITHUB_ENV
|
|
echo "KSU_VERSION_FULL=$KSU_VERSION_FULL" >> $GITHUB_ENV
|
|
|
|
echo "Branch: $REPO_BRANCH"
|
|
echo "Version: $KSU_VERSION"
|
|
echo "Full Version: $KSU_VERSION_FULL"
|
|
|
|
- name: Build kernelsu.ko
|
|
env:
|
|
CI_KSU_VERSION: ${{ env.KSU_VERSION }}
|
|
CI_KSU_VERSION_FULL: ${{ env.KSU_VERSION_FULL }}
|
|
run: |
|
|
git config --global --add safe.directory /__w/SukiSU-Ultra/SukiSU-Ultra
|
|
|
|
cd kernel
|
|
|
|
echo "=== Building kernelsu.ko for KMI: ${{ inputs.kmi }} ==="
|
|
|
|
CONFIG_KSU=m CONFIG_KPROBES=y CONFIG_KSU_KPROBES_HOOK=y CONFIG_KSU_MANUAL_SU=y make
|
|
|
|
echo "=== Build completed ==="
|
|
|
|
# Create output directory in GitHub workspace
|
|
mkdir -p /github/workspace/out
|
|
|
|
# Copy with KMI-specific naming
|
|
OUTPUT_NAME="${{ inputs.kmi }}_kernelsu.ko"
|
|
cp kernelsu.ko "/github/workspace/out/$OUTPUT_NAME"
|
|
|
|
echo "Copied to: /github/workspace/out/$OUTPUT_NAME"
|
|
ls -la "/github/workspace/out/$OUTPUT_NAME"
|
|
echo "Size: $(du -h "/github/workspace/out/$OUTPUT_NAME" | cut -f1)"
|
|
llvm-strip -d "/github/workspace/out/$OUTPUT_NAME"
|
|
echo "Size after stripping: $(du -h "/github/workspace/out/$OUTPUT_NAME" | cut -f1)"
|
|
|
|
- name: Upload kernelsu.ko artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ inputs.kmi }}-lkm
|
|
path: /github/workspace/out/${{ inputs.kmi }}_kernelsu.ko
|