Browse Source

ci: auto-resolve clone repos and add root flavor to main build

TheWildJames 3 weeks ago
parent
commit
e6f766dae8

+ 14 - 0
.github/actions/droidspaces/action.yml

@@ -16,6 +16,10 @@ inputs:
   sublevel:
     description: 'Kernel sublevel'
     required: true
+  droidspaces_commit:
+    description: 'Pinned Droidspaces-OSS commit (empty = main tip)'
+    required: false
+    default: ''
 
 runs:
   using: composite
@@ -29,6 +33,16 @@ runs:
         delay: 5
         workdir: ${{ github.workspace }}
 
+    - name: Pin Droidspaces-OSS to resolved commit
+      shell: bash
+      working-directory: ${{ github.workspace }}
+      run: |
+        if [ -n "${{ inputs.droidspaces_commit }}" ]; then
+          git -C Droidspaces-OSS fetch --depth=1 origin "${{ inputs.droidspaces_commit }}"
+          git -C Droidspaces-OSS checkout "${{ inputs.droidspaces_commit }}"
+          [ "$(git -C Droidspaces-OSS rev-parse HEAD)" = "${{ inputs.droidspaces_commit }}" ] || { echo "Droidspaces pin mismatch" >&2; exit 1; }
+        fi
+
     - name: Apply the SYSVIPC kABI fix
       shell: bash
       working-directory: ${{ github.workspace }}/kernel/common

+ 18 - 0
.github/actions/setup-build-environment/action.yml

@@ -8,6 +8,14 @@ inputs:
   sublevel:
     description: 'Kernel sublevel'
     required: true
+  kernel_patches_commit:
+    description: 'Pinned kernel_patches commit (empty = main tip)'
+    required: false
+    default: ''
+  anykernel3_commit:
+    description: 'Pinned AnyKernel3 commit (empty = gki-2.0 tip)'
+    required: false
+    default: ''
 
 runs:
   using: composite
@@ -38,9 +46,19 @@ runs:
 
         if [ -d "${{ github.workspace }}/kernel_patches" ]; then rm -rf "${{ github.workspace }}/kernel_patches"; fi
         retry git clone https://github.com/WildKernels/kernel_patches.git "${{ github.workspace }}/kernel_patches"
+        if [ -n "${{ inputs.kernel_patches_commit }}" ]; then
+          git -C "${{ github.workspace }}/kernel_patches" fetch --depth=1 origin "${{ inputs.kernel_patches_commit }}"
+          git -C "${{ github.workspace }}/kernel_patches" checkout "${{ inputs.kernel_patches_commit }}"
+          [ "$(git -C "${{ github.workspace }}/kernel_patches" rev-parse HEAD)" = "${{ inputs.kernel_patches_commit }}" ] || { echo "kernel_patches pin mismatch" >&2; exit 1; }
+        fi
 
         if [ -d "${{ github.workspace }}/AnyKernel3" ]; then rm -rf "${{ github.workspace }}/AnyKernel3"; fi
         retry git clone https://github.com/WildKernels/AnyKernel3.git -b gki-2.0 "${{ github.workspace }}/AnyKernel3"
+        if [ -n "${{ inputs.anykernel3_commit }}" ]; then
+          git -C "${{ github.workspace }}/AnyKernel3" fetch --depth=1 origin "${{ inputs.anykernel3_commit }}"
+          git -C "${{ github.workspace }}/AnyKernel3" checkout "${{ inputs.anykernel3_commit }}"
+          [ "$(git -C "${{ github.workspace }}/AnyKernel3" rev-parse HEAD)" = "${{ inputs.anykernel3_commit }}" ] || { echo "AnyKernel3 pin mismatch" >&2; exit 1; }
+        fi
 
     - name: Install build deps for BTF generation (android12-5.10)
       shell: bash

+ 15 - 0
.github/workflows/build.yml

@@ -47,6 +47,18 @@ on:
         required: false
         type: string
         default: ""
+      kernel_patches_commit:
+        required: false
+        type: string
+        default: ""
+      anykernel3_commit:
+        required: false
+        type: string
+        default: ""
+      droidspaces_commit:
+        required: false
+        type: string
+        default: ""
       preserve_abi:
         required: false
         type: boolean
@@ -96,6 +108,8 @@ jobs:
       with:
         version: ${{ inputs.version }}
         sublevel: ${{ inputs.sublevel }}
+        kernel_patches_commit: ${{ inputs.kernel_patches_commit }}
+        anykernel3_commit: ${{ inputs.anykernel3_commit }}
       env:
         BOOT_SIGN_KEY: ${{ secrets.BOOT_SIGN_KEY }}
           
@@ -216,6 +230,7 @@ jobs:
       with:
         version: ${{ inputs.version }}
         kernel_version: ${{ inputs.kernel_version }}
+        droidspaces_commit: ${{ inputs.droidspaces_commit }}
 
     - name: Apply NTSync Patches
       uses: ./.github/actions/ntsync

+ 89 - 71
.github/workflows/main.yml

@@ -46,46 +46,15 @@ on:
           - NONE
           - FULL
         default: FULL
-      ksu_branch:
-        description: "KernelSU branch or commit (empty = latest dev-susfs branch tip)"
-        type: string
-        required: false
-        default: ""
-      susfs_commit_android12-5-10:
-        description: "SUSFS commit for android12-5.10 (empty = latest branch tip)"
-        type: string
-        required: false
-        default: ""
-      susfs_commit_android13-5-10:
-        description: "SUSFS commit for android13-5.10 (empty = latest branch tip)"
-        type: string
-        required: false
-        default: ""
-      susfs_commit_android13-5-15:
-        description: "SUSFS commit for android13-5.15 (empty = latest branch tip)"
-        type: string
-        required: false
-        default: ""
-      susfs_commit_android14-5-15:
-        description: "SUSFS commit for android14-5.15 (empty = latest branch tip)"
-        type: string
-        required: false
-        default: ""
-      susfs_commit_android14-6-1:
-        description: "SUSFS commit for android14-6.1 (empty = latest branch tip)"
-        type: string
-        required: false
-        default: ""
-      susfs_commit_android15-6-6:
-        description: "SUSFS commit for android15-6.6 (empty = latest branch tip)"
-        type: string
-        required: false
-        default: ""
-      susfs_commit_android16-6-12:
-        description: "SUSFS commit for android16-6.12 (empty = latest branch tip)"
-        type: string
-        required: false
-        default: ""
+      root_flavor:
+        description: "Root implementation (classic/next/resukisu = pinned root-setup; none = legacy KernelSU-Next path)"
+        type: choice
+        options:
+          - none
+          - classic
+          - next
+          - resukisu
+        default: none
 
 jobs:
   prepare-ccache:
@@ -128,6 +97,7 @@ jobs:
       nomount_commit: ${{ steps.resolve.outputs.nomount_commit }}
       kernelsu_commit: ${{ steps.resolve.outputs.kernelsu_commit }}
       kernelsu_branch: ${{ steps.resolve.outputs.kernelsu_branch }}
+      root_commit: ${{ steps.resolve.outputs.root_commit }}
       susfs_commit_android12_5_10: ${{ steps.resolve.outputs.susfs_commit_android12_5_10 }}
       susfs_commit_android13_5_10: ${{ steps.resolve.outputs.susfs_commit_android13_5_10 }}
       susfs_commit_android13_5_15: ${{ steps.resolve.outputs.susfs_commit_android13_5_15 }}
@@ -135,6 +105,9 @@ jobs:
       susfs_commit_android14_6_1: ${{ steps.resolve.outputs.susfs_commit_android14_6_1 }}
       susfs_commit_android15_6_6: ${{ steps.resolve.outputs.susfs_commit_android15_6_6 }}
       susfs_commit_android16_6_12: ${{ steps.resolve.outputs.susfs_commit_android16_6_12 }}
+      kernel_patches_commit: ${{ steps.resolve.outputs.kernel_patches_commit }}
+      anykernel3_commit: ${{ steps.resolve.outputs.anykernel3_commit }}
+      droidspaces_commit: ${{ steps.resolve.outputs.droidspaces_commit }}
     steps:
       - name: Resolve latest component commits
         id: resolve
@@ -169,10 +142,7 @@ jobs:
           emit nomount_commit "$(resolve_sha https://github.com/maxsteeel/nomount.git refs/heads/dev)"
 
           # KernelSU-Next (pershoot dev-susfs; fall back to official dev for the manager)
-          KSU_INPUT="${{ inputs.ksu_branch }}"
-          if [ -z "$KSU_INPUT" ]; then
-            KSU_INPUT="dev-susfs"
-          fi
+          KSU_INPUT="dev-susfs"
           KSU_REF="refs/heads/$KSU_INPUT"
           if ! retry git ls-remote --heads https://github.com/KernelSU-Next/KernelSU-Next.git "$KSU_INPUT" | grep -q .; then
             # Treat the input as an official-dev commit SHA when it's not a fork branch
@@ -184,6 +154,23 @@ jobs:
             emit kernelsu_branch "$KSU_INPUT"
           fi
 
+          # Selected root implementation (classic / next / resukisu) at its branch tip.
+          # No need to resolve a commit for 'none' (uses legacy KernelSU-Next path).
+          case "${{ inputs.root_flavor }}" in
+            classic)
+              emit root_commit "$(resolve_sha https://github.com/tiann/KernelSU.git refs/heads/main)"
+              ;;
+            next)
+              emit root_commit "$(resolve_sha https://github.com/KernelSU-Next/KernelSU-Next.git refs/heads/dev)"
+              ;;
+            resukisu)
+              emit root_commit "$(resolve_sha https://github.com/ReSukiSU/ReSukiSU.git refs/heads/main)"
+              ;;
+            *)
+              echo "root_commit=" >> "$GITHUB_OUTPUT"
+              ;;
+          esac
+
           # SUSFS per supported Android/kernel branch (gitlab simonpunk/susfs4ksu)
           declare -A SUSFS_BRANCHES=(
             [susfs_commit_android12_5_10]="gki-android12-5.10"
@@ -198,8 +185,13 @@ jobs:
             emit "$key" "$(resolve_sha https://gitlab.com/simonpunk/susfs4ksu.git refs/heads/${SUSFS_BRANCHES[$key]})"
           done
 
+          # Tracked build helpers (resolved automatically, before the run)
+          emit kernel_patches_commit "$(resolve_sha https://github.com/WildKernels/kernel_patches.git refs/heads/main)"
+          emit anykernel3_commit   "$(resolve_sha https://github.com/WildKernels/AnyKernel3.git refs/heads/gki-2.0)"
+          emit droidspaces_commit  "$(resolve_sha https://github.com/ravindu644/Droidspaces-OSS.git refs/heads/main)"
+
           echo "Resolved:"
-          env | grep -E '^(nomount_commit|kernelsu_commit|kernelsu_branch|susfs_commit_)' | sort
+          env | grep -E '^(nomount_commit|kernelsu_commit|kernelsu_branch|root_commit|susfs_commit_|kernel_patches_commit|anykernel3_commit|droidspaces_commit)' | sort
 
       - name: Clone shared source repos once
         if: ${{ contains(inputs.feature_set, 'NOMOUNT') || inputs.feature_set == 'FULL' }}
@@ -257,9 +249,13 @@ jobs:
     with:
       config_file: .github/config/android12-5.10.json
       feature_set: ${{ inputs.feature_set || 'FULL' }}
-      ksu_branch: ${{ inputs.ksu_branch }}
-      susfs_commit: ${{ inputs.susfs_commit_android12-5-10 || needs.resolve-sources.outputs.susfs_commit_android12_5_10 }}
+      susfs_commit: ${{ needs.resolve-sources.outputs.susfs_commit_android12_5_10 }}
       nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
+      kernel_patches_commit: ${{ needs.resolve-sources.outputs.kernel_patches_commit }}
+      root_flavor: ${{ inputs.root_flavor == 'none' && '' || inputs.root_flavor }}
+      root_commit: ${{ needs.resolve-sources.outputs.root_commit }}
+      anykernel3_commit: ${{ needs.resolve-sources.outputs.anykernel3_commit }}
+      droidspaces_commit: ${{ needs.resolve-sources.outputs.droidspaces_commit }}
     secrets: inherit
 
   build-android13-5-10:
@@ -271,9 +267,13 @@ jobs:
     with:
       config_file: .github/config/android13-5.10.json
       feature_set: ${{ inputs.feature_set || 'FULL' }}
-      ksu_branch: ${{ inputs.ksu_branch }}
-      susfs_commit: ${{ inputs.susfs_commit_android13-5-10 || needs.resolve-sources.outputs.susfs_commit_android13_5_10 }}
+      susfs_commit: ${{ needs.resolve-sources.outputs.susfs_commit_android13_5_10 }}
       nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
+      kernel_patches_commit: ${{ needs.resolve-sources.outputs.kernel_patches_commit }}
+      root_flavor: ${{ inputs.root_flavor == 'none' && '' || inputs.root_flavor }}
+      root_commit: ${{ needs.resolve-sources.outputs.root_commit }}
+      anykernel3_commit: ${{ needs.resolve-sources.outputs.anykernel3_commit }}
+      droidspaces_commit: ${{ needs.resolve-sources.outputs.droidspaces_commit }}
     secrets: inherit
 
   build-android13-5-15:
@@ -285,9 +285,13 @@ jobs:
     with:
       config_file: .github/config/android13-5.15.json
       feature_set: ${{ inputs.feature_set || 'FULL' }}
-      ksu_branch: ${{ inputs.ksu_branch }}
-      susfs_commit: ${{ inputs.susfs_commit_android13-5-15 || needs.resolve-sources.outputs.susfs_commit_android13_5_15 }}
+      susfs_commit: ${{ needs.resolve-sources.outputs.susfs_commit_android13_5_15 }}
       nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
+      kernel_patches_commit: ${{ needs.resolve-sources.outputs.kernel_patches_commit }}
+      root_flavor: ${{ inputs.root_flavor == 'none' && '' || inputs.root_flavor }}
+      root_commit: ${{ needs.resolve-sources.outputs.root_commit }}
+      anykernel3_commit: ${{ needs.resolve-sources.outputs.anykernel3_commit }}
+      droidspaces_commit: ${{ needs.resolve-sources.outputs.droidspaces_commit }}
     secrets: inherit
 
   build-android14-5-15:
@@ -299,9 +303,13 @@ jobs:
     with:
       config_file: .github/config/android14-5.15.json
       feature_set: ${{ inputs.feature_set || 'FULL' }}
-      ksu_branch: ${{ inputs.ksu_branch }}
-      susfs_commit: ${{ inputs.susfs_commit_android14-5-15 || needs.resolve-sources.outputs.susfs_commit_android14_5_15 }}
+      susfs_commit: ${{ needs.resolve-sources.outputs.susfs_commit_android14_5_15 }}
       nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
+      kernel_patches_commit: ${{ needs.resolve-sources.outputs.kernel_patches_commit }}
+      root_flavor: ${{ inputs.root_flavor == 'none' && '' || inputs.root_flavor }}
+      root_commit: ${{ needs.resolve-sources.outputs.root_commit }}
+      anykernel3_commit: ${{ needs.resolve-sources.outputs.anykernel3_commit }}
+      droidspaces_commit: ${{ needs.resolve-sources.outputs.droidspaces_commit }}
     secrets: inherit
 
   build-android14-6-1:
@@ -313,9 +321,13 @@ jobs:
     with:
       config_file: .github/config/android14-6.1.json
       feature_set: ${{ inputs.feature_set || 'FULL' }}
-      ksu_branch: ${{ inputs.ksu_branch }}
-      susfs_commit: ${{ inputs.susfs_commit_android14-6-1 || needs.resolve-sources.outputs.susfs_commit_android14_6_1 }}
+      susfs_commit: ${{ needs.resolve-sources.outputs.susfs_commit_android14_6_1 }}
       nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
+      kernel_patches_commit: ${{ needs.resolve-sources.outputs.kernel_patches_commit }}
+      root_flavor: ${{ inputs.root_flavor == 'none' && '' || inputs.root_flavor }}
+      root_commit: ${{ needs.resolve-sources.outputs.root_commit }}
+      anykernel3_commit: ${{ needs.resolve-sources.outputs.anykernel3_commit }}
+      droidspaces_commit: ${{ needs.resolve-sources.outputs.droidspaces_commit }}
     secrets: inherit
 
   build-android15-6-6:
@@ -327,9 +339,13 @@ jobs:
     with:
       config_file: .github/config/android15-6.6.json
       feature_set: ${{ inputs.feature_set || 'FULL' }}
-      ksu_branch: ${{ inputs.ksu_branch }}
-      susfs_commit: ${{ inputs.susfs_commit_android15-6-6 || needs.resolve-sources.outputs.susfs_commit_android15_6_6 }}
+      susfs_commit: ${{ needs.resolve-sources.outputs.susfs_commit_android15_6_6 }}
       nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
+      kernel_patches_commit: ${{ needs.resolve-sources.outputs.kernel_patches_commit }}
+      root_flavor: ${{ inputs.root_flavor == 'none' && '' || inputs.root_flavor }}
+      root_commit: ${{ needs.resolve-sources.outputs.root_commit }}
+      anykernel3_commit: ${{ needs.resolve-sources.outputs.anykernel3_commit }}
+      droidspaces_commit: ${{ needs.resolve-sources.outputs.droidspaces_commit }}
     secrets: inherit
 
   build-android16-6-12:
@@ -341,9 +357,13 @@ jobs:
     with:
       config_file: .github/config/android16-6.12.json
       feature_set: ${{ inputs.feature_set || 'FULL' }}
-      ksu_branch: ${{ inputs.ksu_branch }}
-      susfs_commit: ${{ inputs.susfs_commit_android16-6-12 || needs.resolve-sources.outputs.susfs_commit_android16_6_12 }}
+      susfs_commit: ${{ needs.resolve-sources.outputs.susfs_commit_android16_6_12 }}
       nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
+      kernel_patches_commit: ${{ needs.resolve-sources.outputs.kernel_patches_commit }}
+      root_flavor: ${{ inputs.root_flavor == 'none' && '' || inputs.root_flavor }}
+      root_commit: ${{ needs.resolve-sources.outputs.root_commit }}
+      anykernel3_commit: ${{ needs.resolve-sources.outputs.anykernel3_commit }}
+      droidspaces_commit: ${{ needs.resolve-sources.outputs.droidspaces_commit }}
     secrets: inherit
 
   rej:
@@ -439,6 +459,7 @@ jobs:
       actions: write
       contents: read
     needs:
+    - resolve-sources
     - build-android12-5-10
     - build-android13-5-10
     - build-android13-5-15
@@ -461,7 +482,7 @@ jobs:
           echo "# 📋 Build Summary — $(date -u '+%Y-%m-%d %H:%M UTC')"
           echo
           echo "**Feature Set:** ${{ inputs.feature_set }}"
-          echo "**KSU Branch:** ${{ inputs.ksu_branch || 'latest dev' }}"
+          echo "**Root Flavor:** ${{ inputs.root_flavor || 'none' }}"
           echo
           
           # Count successes and failures
@@ -498,13 +519,13 @@ jobs:
           
           echo
           echo "> **SUSFS Commits:**"
-          echo "> - android12-5.10: ${{ inputs.susfs_commit_android12-5-10 || 'latest' }}"
-          echo "> - android13-5.10: ${{ inputs.susfs_commit_android13-5-10 || 'latest' }}"
-          echo "> - android13-5.15: ${{ inputs.susfs_commit_android13-5-15 || 'latest' }}"
-          echo "> - android14-5.15: ${{ inputs.susfs_commit_android14-5-15 || 'latest' }}"
-          echo "> - android14-6.1: ${{ inputs.susfs_commit_android14-6-1 || 'latest' }}"
-          echo "> - android15-6.6: ${{ inputs.susfs_commit_android15-6-6 || 'latest' }}"
-          echo "> - android16-6.12: ${{ inputs.susfs_commit_android16-6-12 || 'latest' }}"
+          echo "> - android12-5.10: ${{ needs.resolve-sources.outputs.susfs_commit_android12_5_10 }}"
+          echo "> - android13-5.10: ${{ needs.resolve-sources.outputs.susfs_commit_android13_5_10 }}"
+          echo "> - android13-5.15: ${{ needs.resolve-sources.outputs.susfs_commit_android13_5_15 }}"
+          echo "> - android14-5.15: ${{ needs.resolve-sources.outputs.susfs_commit_android14_5_15 }}"
+          echo "> - android14-6.1: ${{ needs.resolve-sources.outputs.susfs_commit_android14_6_1 }}"
+          echo "> - android15-6.6: ${{ needs.resolve-sources.outputs.susfs_commit_android15_6_6 }}"
+          echo "> - android16-6.12: ${{ needs.resolve-sources.outputs.susfs_commit_android16_6_12 }}"
         } >> "$GITHUB_STEP_SUMMARY"
 
     - name: 🧹 Cleanup Summary Files
@@ -646,10 +667,7 @@ jobs:
         set -euo pipefail
 
         KSU_REPO="https://github.com/pershoot/KernelSU-Next.git"
-        KSU_INPUT="${{ inputs.ksu_branch }}"
-        if [ -z "$KSU_INPUT" ]; then
-          KSU_INPUT="dev-susfs"
-        fi
+        KSU_INPUT="dev-susfs"
 
         # Try as branch first, fall back to commit
         if git ls-remote --heads "$KSU_REPO" "$KSU_INPUT" | grep -q .; then

+ 18 - 0
.github/workflows/prepare.yml

@@ -36,6 +36,21 @@ on:
         required: false
         type: string
         default: ""
+      kernel_patches_commit:
+        description: "Exact kernel_patches commit (resolved automatically)"
+        required: false
+        type: string
+        default: ""
+      anykernel3_commit:
+        description: "Exact AnyKernel3 commit (resolved automatically)"
+        required: false
+        type: string
+        default: ""
+      droidspaces_commit:
+        description: "Exact Droidspaces-OSS commit (resolved automatically)"
+        required: false
+        type: string
+        default: ""
       preserve_abi:
         description: "Keep ABI/KMI protection files intact and verify their hashes"
         required: false
@@ -155,6 +170,9 @@ jobs:
       root_flavor: ${{ inputs.root_flavor }}
       root_commit: ${{ inputs.root_commit }}
       nomount_commit: ${{ inputs.nomount_commit }}
+      kernel_patches_commit: ${{ inputs.kernel_patches_commit }}
+      anykernel3_commit: ${{ inputs.anykernel3_commit }}
+      droidspaces_commit: ${{ inputs.droidspaces_commit }}
       preserve_abi: ${{ inputs.preserve_abi }}
       build_bypass: ${{ inputs.build_bypass }}
     secrets: inherit