envsetup: Add build_kernel function for Pixel OOT kernel build

Change-Id: Ib2840cb2bf236a6d25906b60256ef521dd6a2c8a
This commit is contained in:
Michael Bestas
2025-10-21 22:18:02 +03:00
committed by Zabuka_zuzu
parent 8abbce4c65
commit 2b7335eaa3

View File

@@ -930,6 +930,89 @@ function fixup_common_out_dir() {
fi
}
function build_kernel() {
local lineage_version="lineage-$(_get_build_var_cached PRODUCT_VERSION_MAJOR).$(_get_build_var_cached PRODUCT_VERSION_MINOR)"
local target_kernel_device="$(_get_build_var_cached TARGET_KERNEL_DEVICE)"
local target_kernel_dir="${ANDROID_BUILD_TOP}/$(_get_build_var_cached TARGET_KERNEL_DIR)"
local target_kernel_source="$(_get_build_var_cached TARGET_KERNEL_PLATFORM_SOURCE)"
local KERNEL_BUILD_TOP="${ANDROID_BUILD_TOP}/out-kernel/${target_kernel_source}"
# Make sure we have the kernel source folder structure in place
if [ ! -d "${KERNEL_BUILD_TOP}/.repo" ]; then
echo "Kernel source ${KERNEL_BUILD_TOP} is missing, preparing folder structure"
# Copy .repo/repo from Android tree to allow nested `repo init`
mkdir -p "${KERNEL_BUILD_TOP}/.repo"
cp -R "${ANDROID_BUILD_TOP}/.repo/repo" "${KERNEL_BUILD_TOP}/.repo/repo"
# Allow custom .repo/project-objects dir
if [ -n "${KERNEL_REPO_PROJECT_OBJECTS_DIR}" ]; then
if [ ! -d "${KERNEL_REPO_PROJECT_OBJECTS_DIR}" ]; then
mkdir "${KERNEL_REPO_PROJECT_OBJECTS_DIR}"
fi
ln -sf "${KERNEL_REPO_PROJECT_OBJECTS_DIR}" "${KERNEL_BUILD_TOP}/.repo/project-objects"
fi
# Allow custom .repo/projects dir
if [ -n "${KERNEL_REPO_PROJECTS_DIR}" ]; then
if [ ! -d "${KERNEL_REPO_PROJECTS_DIR}" ]; then
mkdir "${KERNEL_REPO_PROJECTS_DIR}"
fi
ln -sf "${KERNEL_REPO_PROJECTS_DIR}" "${KERNEL_BUILD_TOP}/.repo/projects"
fi
# Mark as out dir to prevent build system from scanning it
touch "${KERNEL_BUILD_TOP}/.out-dir"
fi
# Init, sync, remove previous build output & build kernel
pushd "${KERNEL_BUILD_TOP}" > /dev/null
if [[ "${SKIP_KERNEL_SYNC}" != "true" && "${SKIP_KERNEL_SYNC}" != "1" ]]; then
echo "Syncing ${KERNEL_BUILD_TOP}"
local target_kernel_manifest=$(echo android_kernel_${target_kernel_source}_manifest | tr / _)
local repo_init_args=("-b" "${lineage_version}")
if [ -n "${LINEAGE_MIRROR}" ]; then
repo_init_args+=("--reference" "${LINEAGE_MIRROR}")
fi
if [ -n "${REPO_VERSION}" ]; then
repo_init_args+=("--repo-rev" "${REPO_VERSION}")
fi
yes | repo init -u https://github.com/LineageOS/${target_kernel_manifest}.git ${repo_init_args[@]} || [ $? -eq 141 ]
if [ $? -ne 0 ]; then
echo "Kernel source repo init failed"
popd > /dev/null
return 1
fi
if ! repo sync --detach --force-sync; then
echo "Kernel source repo sync failed"
popd > /dev/null
return 1
fi
fi
if [ -d "${KERNEL_BUILD_TOP}/out/${target_kernel_device}/dist" ]; then
rm -rf "${KERNEL_BUILD_TOP}/out/${target_kernel_device}/dist"
fi
if ! ./build_"${target_kernel_device}".sh; then
popd > /dev/null
return 1
fi
popd > /dev/null
# Remove previous kernel prebuilts
if [ -d "${target_kernel_dir}" ]; then
find "${target_kernel_dir}" -maxdepth 1 ! \( -name .gitignore \) -type f -delete
fi
# Copy the new kernel prebuilts
mkdir -p "${target_kernel_dir}"
cp -a "${KERNEL_BUILD_TOP}/out/${target_kernel_device}/dist/"* "${target_kernel_dir}/"
chmod -x "${target_kernel_dir}/"*
echo "Kernel build output copied to ${target_kernel_dir}/"
}
function generate_host_overrides() {
export BUILD_USERNAME=android-build
HEX=$(openssl rand -hex 8)
@@ -942,4 +1025,3 @@ function generate_host_overrides() {
generate_host_overrides
export SKIP_ABI_CHECKS=true