Skip to content

Commit 46b6b2b

Browse files
committed
Add OnePlus 15 Support
1 parent ed5567a commit 46b6b2b

File tree

6 files changed

+224
-1512
lines changed

6 files changed

+224
-1512
lines changed

.github/actions/action.yml

Lines changed: 140 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ runs:
215215
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
216216
git curl ca-certificates build-essential clang lld flex bison \
217217
libelf-dev libssl-dev libncurses-dev zlib1g-dev liblz4-tool \
218-
libxml2-utils rsync unzip dwarves file python3 ccache jq bc dos2unix
218+
libxml2-utils rsync unzip dwarves file python3 ccache jq bc dos2unix kmod libdw-dev elfutils
219219
sudo apt-get clean
220220
echo "✅ Dependencies installed"
221221
echo "::endgroup::"
@@ -343,30 +343,49 @@ runs:
343343
echo " User: $BUILD_USER"
344344
echo " Host: $BUILD_HOST"
345345
echo "::endgroup::"
346-
347-
- name: Detect Clang
346+
347+
- name: Detect Clang and Rust
348348
shell: bash
349349
run: |
350350
set -euo pipefail
351351
echo "::group::Detect Clang"
352352
KP="$GITHUB_WORKSPACE/$CONFIG/kernel_platform"
353353
CLANG_FOUND=false
354+
RUSTC_FOUND=false
354355
for base in "$KP/prebuilts" "$KP/prebuilts-master"; do
355356
[ -d "$base/clang/host/linux-x86" ] || continue
356-
latest=$(ls -d "$base"/clang/host/linux-x86/clang-r*/ 2>/dev/null | sort -V | tail -n1 || true)
357+
latest=$(ls -d "$base"/clang/host/linux-x86/clang-r*/ 2>/dev/null | sort -V | head -n1 || true)
357358
if [ -n "$latest" ] && [ -x "$latest/bin/clang" ]; then
358359
CLANG_BIN="$latest/bin"
359360
CLANG_FOUND=true
360361
break
361362
fi
362363
done
364+
for base in "$KP/prebuilts" "$KP/prebuilts-master"; do
365+
[ -d "$base/rust/linux-x86/" ] || continue
366+
ls -la "$base/rust/linux-x86/"
367+
latest=$(ls -d "$base/rust/linux-x86/1."* 2>/dev/null | sort -V | head -n1 || true)
368+
if [ -n "$latest" ] && [ -x "$latest/bin/rustc" ]; then
369+
RUSTC_BIN="$latest/bin"
370+
RUSTC_FOUND=true
371+
break
372+
fi
373+
done
363374
if ! $CLANG_FOUND && command -v clang >/dev/null 2>&1; then
364375
CLANG_BIN="$(dirname "$(command -v clang)")"
365376
CLANG_FOUND=true
366377
echo "Using system clang."
367378
fi
368379
$CLANG_FOUND || { echo "::error::No clang toolchain found"; exit 1; }
380+
$RUSTC_FOUND || { echo "::warning::No RUST toolchain found! Ignoring";}
369381
echo "CLANG_BIN_PATH=$CLANG_BIN" >> "$GITHUB_ENV"
382+
if [ "$RUSTC_FOUND" = true ]; then
383+
echo "RUSTC_BIN_PATH=$RUSTC_BIN" >> "$GITHUB_ENV"
384+
RUSTC_VERSION="$("$RUSTC_BIN/rustc" --version | head -n1)"
385+
echo "RUSTC_VERSION=$RUSTC_VERSION" >> "$GITHUB_ENV"
386+
echo "✅ Detected RUSTC: $RUSTC_VERSION"
387+
fi
388+
370389
CLANG_VERSION="$("$CLANG_BIN/clang" --version | head -n1)"
371390
echo "CLANG_VERSION=$CLANG_VERSION" >> "$GITHUB_ENV"
372391
echo "✅ Detected Clang: $CLANG_VERSION"
@@ -1027,8 +1046,94 @@ runs:
10271046
echo "CUSTOM_LOCALVERSION=$CUSTOM_LOCALVERSION" >> "$GITHUB_ENV"
10281047
echo "::endgroup::"
10291048
1049+
- name: Run sed and perl Commands
1050+
shell: bash
1051+
if: ${{ env.OP_KERNEL_VERSION == '6.12' }}
1052+
run: |
1053+
echo "Changing to configuration directory: $CONFIG..."
1054+
cd "$CONFIG/kernel_platform"
1055+
1056+
echo "Running sed commands..."
1057+
1058+
sed -i 's/CONFIG_LTO=n/CONFIG_LTO=y/' "./common/arch/arm64/configs/gki_defconfig"
1059+
sed -i 's/CONFIG_LTO_CLANG_FULL=y/CONFIG_LTO_CLANG_NONE=y/' "./common/arch/arm64/configs/gki_defconfig"
1060+
sed -i 's/CONFIG_LTO_CLANG_THIN=y/CONFIG_LTO_CLANG_NONE=y/' "./common/arch/arm64/configs/gki_defconfig"
1061+
echo "CONFIG_ANDROID_BINDER_IPC_RUST=m" >> ./common/arch/arm64/configs/gki_defconfig
1062+
echo "CONFIG_LOCALVERSION=\"-OP-Wild\"" >> ./common/arch/arm64/configs/gki_defconfig
1063+
1064+
sed -i '/_ARM64_GKI_MODULES_LIST = \[/,/\]/ {
1065+
/\]/i\
1066+
"net/ipv4/tcp_bic.ko",\
1067+
"net/ipv4/tcp_htcp.ko",\
1068+
"net/ipv4/tcp_westwood.ko",
1069+
}' ./common/modules.bzl
1070+
1071+
sed -i "s/$(printf '\044'){{kernelrelease}}/\"$(printf '\044'){{kernelrelease}}\"/g" ./build/kernel/kleaf/impl/kernel_modules_install.bzl
1072+
sed -i -e '/_GKI_AARCH64_MAKE_GOALS/,/]/ s/"modules",\?//g' -e '/_GKI_AARCH64_MAKE_GOALS/,/]/ {/^[[:space:]]*$/d}' -e 's/module_implicit_outs = get_gki_modules_list("arm64") + get_kunit_modules_list("arm64")/module_implicit_outs = []/' common/BUILD.bazel
1073+
sed -i -e 's/":tests_zip_arm64",//' -e '/extra_dist/,/]/ {/^[[:space:]]*$/d}' -e 's/kmi_enforced = True,/kmi_enforced = False,/' -e 's/kmi_symbol_list_strict_mode = True,/kmi_symbol_list_strict_mode = False,/' -e 's/trim_nonlisted_kmi = True,/trim_nonlisted_kmi = False,/' common/BUILD.bazel
1074+
1075+
# Run sed commands for modifications
1076+
sed -i 's/check_defconfig//' ./common/build.config.gki
1077+
1078+
if [[ "$OP_KERNEL_VERSION" == "6.12" ]]; then
1079+
sed -i '/check_defconfig = select({/,/}/c\ check_defconfig = "disabled"' ./build/kernel/kleaf/common_kernels.bzl
1080+
fi
1081+
1082+
# sed -i 's/echo "${KERNELVERSION}${file_localversion}${config_localversion}${LOCALVERSION}${scm_version}"/echo "${KERNEL_FULL_VER}${config_localversion}"/' ./common/scripts/setlocalversion
1083+
# chmod +x ./common/scripts/setlocalversion
1084+
sed -i "/stable_scmversion_cmd/s/-maybe-dirty//g" ./build/kernel/kleaf/impl/stamp.bzl || echo "No stamp.bzl!"
1085+
sed -i 's/-dirty//' ./build/kernel/kleaf/workspace_status_stamp.py || echo "No workspace_status_stamp.py!"
1086+
1087+
# Run perl command to modify UTS_VERSION
1088+
DATESTR=$(date -u)
1089+
perl -pi -e 's{UTS_VERSION="\$\(echo \$UTS_VERSION \$CONFIG_FLAGS \$TIMESTAMP \| cut -b -\$UTS_LEN\)"}{UTS_VERSION="#1 SMP PREEMPT $DATESTR"}' ./common/scripts/mkcompile_h
1090+
1091+
- name: Build the Kernel
1092+
shell: bash
1093+
if: ${{ env.OP_KERNEL_VERSION == '6.12' }}
1094+
run: |
1095+
echo "Changing to configuration directory: $CONFIG..."
1096+
cd "$CONFIG"
1097+
1098+
echo "Building the kernel..."
1099+
# Clear Cache
1100+
sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
1101+
1102+
rm ./kernel_platform/common/android/abi_gki_protected_exports_* || echo "No protected exports!"
1103+
1104+
(stdbuf -oL bash -c '
1105+
while true; do
1106+
echo "=== $(date) ==="
1107+
free -h
1108+
echo "======"
1109+
df -h
1110+
echo "======"
1111+
top -b -n 1 | head -n 15
1112+
echo ""
1113+
sleep 60
1114+
done
1115+
') &
1116+
MONITOR_PID=$!
1117+
trap "kill $MONITOR_PID" EXIT
1118+
1119+
KERNEL_PATH="$GITHUB_WORKSPACE/$CONFIG/kernel_platform"
1120+
BASE_PATH="/usr/lib/ccache:${CLANG_BIN_PATH}:${KERNEL_PATH}/prebuilts/kernel-build-tools/linux-x86/bin/:${KERNEL_PATH}/prebuilts/kernel-build-tools/linux_musl-x86/bin/"
1121+
export PATH="${BASE_PATH}:${PATH}"
1122+
1123+
BUILD_START=$(date +%s)
1124+
cd kernel_platform
1125+
./tools/bazel build --config=fast --config=stamp --lto=none //common:kernel_aarch64_dist --disk_cache="$CCACHE_DIR" --sandbox_writable_path="$CCACHE_DIR" --verbose_failures --sandbox_debug || exit 1
1126+
1127+
BUILD_END=$(date +%s)
1128+
BUILD_TIME=$((BUILD_END - BUILD_START))
1129+
1130+
echo "BUILD_START=$BUILD_START" >> "$GITHUB_ENV"
1131+
echo "BUILD_END=$BUILD_END" >> "$GITHUB_ENV"
1132+
echo "BUILD_TIME=$BUILD_TIME" >> "$GITHUB_ENV"
1133+
10301134
- name: Build Kernel
10311135
shell: bash
1136+
if: ${{ env.OP_KERNEL_VERSION != '6.12' }}
10321137
env:
10331138
PYTHONWARNINGS: "ignore:invalid escape sequence"
10341139
run: |
@@ -1059,15 +1164,6 @@ runs:
10591164
echo "👤 Build user: $KBUILD_BUILD_USER"
10601165
echo "🖥️ Build host: $KBUILD_BUILD_HOST"
10611166
1062-
export PATH="/usr/lib/ccache:${CLANG_BIN_PATH}:${PATH}"
1063-
1064-
if [ "${{ inputs.clean }}" = "true" ]; then
1065-
echo "🧹 Clean build mode - ccache disabled"
1066-
export CCACHE_DISABLE=1
1067-
else
1068-
echo "🚀 ccache-accelerated build"
1069-
fi
1070-
10711167
WORKSPACE="${GITHUB_WORKSPACE}"
10721168
MAP="-fdebug-prefix-map=${WORKSPACE}=."
10731169
MPMAP="-fmacro-prefix-map=${WORKSPACE}=."
@@ -1084,11 +1180,26 @@ runs:
10841180
export LLVM=1 LLVM_IAS=1
10851181
export ARCH=arm64 SUBARCH=arm64
10861182
export CROSS_COMPILE=aarch64-linux-gnu-
1087-
export RUSTC="$KERNEL_PATH/prebuilts/rust/linux-x86/1.73.0b/bin/rustc"
10881183
export PAHOLE="$KERNEL_PATH/prebuilts/kernel-build-tools/linux-x86/bin/pahole"
10891184
export LD=ld.lld HOSTLD=ld.lld AR=llvm-ar NM=llvm-nm
10901185
export OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump STRIP=llvm-strip
10911186
1187+
BASE_PATH="/usr/lib/ccache:${CLANG_BIN_PATH}:${KERNEL_PATH}/prebuilts/kernel-build-tools/linux-x86/bin/"
1188+
1189+
if [ -n "${RUSTC_BIN_PATH:-}" ]; then
1190+
export PATH="${BASE_PATH}:${RUSTC_BIN_PATH}:${PATH}"
1191+
export RUSTC="$RUSTC_BIN_PATH/rustc"
1192+
else
1193+
export PATH="${BASE_PATH}:${PATH}"
1194+
fi
1195+
1196+
if [ "${{ inputs.clean }}" = "true" ]; then
1197+
echo "🧹 Clean build mode - ccache disabled"
1198+
export CCACHE_DISABLE=1
1199+
else
1200+
echo "🚀 ccache-accelerated build"
1201+
fi
1202+
10921203
OUT=out
10931204
mkdir -p "$OUT"
10941205
@@ -1271,6 +1382,12 @@ runs:
12711382
OUT="$COMMON/out"
12721383
IMG="$OUT/arch/arm64/boot/Image"
12731384
1385+
if [ -f "$KERNEL_PATH/out/$OP_ANDROID_VERSION-$OP_KERNEL_VERSION/dist/Image" ]; then
1386+
IMG="$KERNEL_PATH/out/$OP_ANDROID_VERSION-$OP_KERNEL_VERSION/dist/Image"
1387+
elif [ -f "$KERNEL_PATH/bazel-bin/common/kernel_aarch64/Image" ]; then
1388+
IMG="$KERNEL_PATH/bazel-bin/common/kernel_aarch64/Image"
1389+
fi
1390+
12741391
if [ -f "$COMMON/build.log" ]; then
12751392
WARNINGS_COUNT="$(grep -ciE '\bwarning:' "$COMMON/build.log" || true)"
12761393
[ -n "$WARNINGS_COUNT" ] || WARNINGS_COUNT="0"
@@ -1320,9 +1437,16 @@ runs:
13201437
set -euo pipefail
13211438
echo "::group::Create kernel ZIP package"
13221439
1440+
KERNEL_PATH="$GITHUB_WORKSPACE/$CONFIG/kernel_platform"
13231441
CONFIG_DIR="$GITHUB_WORKSPACE/$CONFIG"
13241442
IMAGE_PATH="$CONFIG_DIR/kernel_platform/common/out/arch/arm64/boot/Image"
13251443
1444+
if [ -f "$KERNEL_PATH/out/$OP_ANDROID_VERSION-$OP_KERNEL_VERSION/dist/Image" ]; then
1445+
IMAGE_PATH="$KERNEL_PATH/out/$OP_ANDROID_VERSION-$OP_KERNEL_VERSION/dist/Image"
1446+
elif [ -f "$KERNEL_PATH/bazel-bin/common/kernel_aarch64/Image" ]; then
1447+
IMAGE_PATH="$KERNEL_PATH/bazel-bin/common/kernel_aarch64/Image"
1448+
fi
1449+
13261450
if [ ! -f "$IMAGE_PATH" ]; then
13271451
echo "::error::Built Image not found at: $IMAGE_PATH"
13281452
exit 1
@@ -1386,10 +1510,10 @@ runs:
13861510
echo "Build Host: ${{ env.BUILD_HOST }}"
13871511
if [ "${{ inputs.ksu_type }}" = "KSUN" ]; then
13881512
echo "KSUN Version: ${KSUVER:-unknown}"
1389-
echo "KSUN commit SHA: $KSU_SHA"
1513+
echo "KSUN commit SHA: ${KSU_SHA:-unknown}"
13901514
else
13911515
echo "KSU Version: ${KSUVER:-unknown}"
1392-
echo "KSU commit SHA: $KSU_SHA"
1516+
echo "KSU commit SHA: ${KSU_SHA:-unknown}"
13931517
fi
13941518
if [ "${{ env.OP_SUSFS }}" = true ]; then
13951519
echo "SUSFS Version: ${SUSVER:-unknown}"

0 commit comments

Comments
 (0)