build: optimize fatload build speed [1/1]

PD#SWPL-172042

Problem:
optimize fatload build speed

Solution:
1. use --lto=none
2. use --notrim
3. use --nokmi_symbol_list_strict_mode
4. reduce unnecessary constructions, such as system_dlkm and initramfs
5. modules, modules.dep and other files are copied from intermediate files

Verify:
local

Change-Id: Idb5c57a9a6ab357351341efb93fb6a79aeca5d0c
Signed-off-by: Wanwei Jiang <wanwei.jiang@amlogic.com>
This commit is contained in:
Wanwei Jiang
2024-07-09 17:37:37 +08:00
committed by Luan Yuan
parent cb2dc2550b
commit 3fcd3bc04a
4 changed files with 78 additions and 18 deletions
+17 -5
View File
@@ -23,6 +23,8 @@ load("//build/kernel/kleaf/impl:gki_artifacts.bzl", "gki_artifacts", "gki_artifa
load("//build/kernel/kleaf:print_debug.bzl", "print_debug")
load("@kernel_toolchain_info//:dict.bzl", "BRANCH", "common_kernel_package")
load("//common:common_drivers/project/project.bzl", "FAST_BUILD")
# Always collect_unstripped_modules for common kernels.
_COLLECT_UNSTRIPPED_MODULES = True
@@ -88,8 +90,8 @@ def define_common_amlogic(
module_outs = module_outs,
build_config = build_config,
# Enable mixed build.
base_kernel = ":kernel_aarch64_download_or_build",
kmi_symbol_list = kmi_symbol_list,
base_kernel = ":kernel_aarch64" if FAST_BUILD else ":kernel_aarch64_download_or_build",
kmi_symbol_list = None if FAST_BUILD else kmi_symbol_list,
collect_unstripped_modules = _COLLECT_UNSTRIPPED_MODULES,
strip_modules = True,
make_goals = make_goals,
@@ -103,9 +105,9 @@ def define_common_amlogic(
kernel_abi(
name = name + "_abi",
kernel_build = name,
define_abi_targets = define_abi_targets,
define_abi_targets = False if FAST_BUILD else define_abi_targets,
kernel_modules = _kernel_modules,
kmi_symbol_list_add_only = kmi_symbol_list_add_only,
kmi_symbol_list_add_only = False if FAST_BUILD else kmi_symbol_list_add_only,
module_grouping = module_grouping,
unstripped_modules_archive = unstripped_modules_archive,
)
@@ -142,9 +144,19 @@ def define_common_amlogic(
name + "_merged_kernel_uapi_headers",
]
fast_build_dist_targets = [
name,
# name + "_images",
name + "_modules_install",
# Mixed build: Additional GKI artifacts.
# ":kernel_aarch64_download_or_build",
# ":kernel_aarch64_additional_artifacts_download_or_build",
# name + "_merged_kernel_uapi_headers",
]
copy_to_dist_dir(
name = name + "_dist",
data = dist_targets,
data = fast_build_dist_targets if FAST_BUILD else dist_targets,
dist_dir = dist_dir,
flat = True,
log = "info",
+47 -5
View File
@@ -339,6 +339,10 @@ export -f extra_cmds
function bazel_extra_cmds() {
modules_install
if [[ -n ${FAST_BUILD} ]]; then
return
fi
if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
: > ${KERNEL_BUILD_VAR_FILE}
echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
@@ -554,7 +558,11 @@ function adjust_sequence_modules_loading() {
if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" && "${ARCH}" == "arm64" ]]; then
gki_modules_temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
if [[ ${BAZEL} == "1" ]]; then
cp $DIST_DIR/system_dlkm.modules.load ${gki_modules_temp_file}
if [[ -n ${FAST_BUILD} ]]; then
cp ${BAZEL_OUT}/kernel_aarch64_all_module_names/kernel_aarch64_modules ${gki_modules_temp_file}
else
cp ${DIST_DIR}/system_dlkm.modules.load ${gki_modules_temp_file}
fi
else
rm -f ${gki_modules_temp_file}
cat ${ROOT_DIR}/${KERNEL_DIR}/modules.bzl |grep ko | while read LINE
@@ -777,7 +785,17 @@ function modules_install() {
mkdir -p ${OUT_AMLOGIC_DIR}/symbols
if [[ ${BAZEL} == "1" ]]; then
BAZEL_OUT=bazel-out/
BAZEL_OUT=${ROOT_DIR}/bazel-out/k8-fastbuild/bin/common
if [[ -n ${FAST_BUILD} ]]; then
kernel_release=`cat ${BAZEL_OUT}/kernel_aarch64/include/config/kernel.release`
mkdir -p ${OUT_AMLOGIC_DIR}/fast_build/amlogic
tar -zxf ${BAZEL_OUT}/amlogic/modules_staging_dir_self.tar.gz -C ${OUT_AMLOGIC_DIR}/fast_build/amlogic
cp ${BAZEL_OUT}/amlogic_kbuild_mixed_tree/System.map ${OUT_AMLOGIC_DIR}/fast_build/amlogic
pushd ${OUT_AMLOGIC_DIR}/fast_build/amlogic
depmod -e -F System.map -b . ${kernel_release}
cp ${OUT_AMLOGIC_DIR}/fast_build/amlogic/lib/modules/${kernel_release}/modules.order ${DIST_DIR}/modules.load
popd
fi
while read module
do
module_name=${module##*/}
@@ -785,7 +803,21 @@ function modules_install() {
if [[ -f ${DIST_DIR}/${module_name} ]]; then
cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/modules
else
module=`find ${BAZEL_OUT} -name ${module_name} | grep "amlogic_modules_install"`
if [[ -n ${FAST_BUILD} ]]; then
module_f=
for module_l in `find ${BAZEL_OUT}/kernel_aarch64 -name ${module_name}`; do
if [[ ${module_l} =~ ${module#*/} ]]; then
module_f=${module_l}
break
fi
done
module=${module_f}
if [[ -z ${module_f} ]]; then
module=`find ${OUT_AMLOGIC_DIR}/fast_build/amlogic/lib/modules/ -name ${module_name}`
fi
else
module=`find ${BAZEL_OUT}/amlogic_modules_install/staging/lib/modules/ -name ${module_name}`
fi
cp ${module} ${OUT_AMLOGIC_DIR}/modules
fi
elif [[ `echo ${module} | grep "^extra\/"` ]]; then
@@ -807,7 +839,11 @@ function modules_install() {
fi
done < ${DIST_DIR}/modules.load
dep_file=`find ${BAZEL_OUT} -name *.dep | grep "amlogic"`
if [[ -n ${FAST_BUILD} ]]; then
dep_file=${OUT_AMLOGIC_DIR}/fast_build/amlogic/lib/modules/${kernel_release}/modules.dep
else
dep_file=`find ${BAZEL_OUT}/amlogic_modules_install -name *.dep | grep "amlogic"`
fi
cp ${dep_file} ${OUT_AMLOGIC_DIR}/modules/full_modules.dep
if [[ -n ${ANDROID_PROJECT} ]]; then
grep -E "^kernel\/" ${dep_file} > ${OUT_AMLOGIC_DIR}/modules/modules.dep
@@ -909,7 +945,13 @@ function modules_install() {
popd
if [[ ${BAZEL} == "1" ]]; then
cp ${DIST_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
if [[ -n ${FAST_BUILD} ]]; then
cp ${BAZEL_OUT}/kernel_aarch64/vmlinux ${OUT_AMLOGIC_DIR}/symbols
cp ${BAZEL_OUT}/kernel_aarch64/vmlinux ${DIST_DIR}/
cp ${BAZEL_OUT}/kernel_aarch64/Image* ${DIST_DIR}/
else
cp ${DIST_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
fi
find ${BAZEL_OUT} -name *.ko | grep "unstripped" | while read module; do
cp ${module} ${OUT_AMLOGIC_DIR}/symbols
+1 -1
View File
@@ -10,7 +10,7 @@ echo "Base Kernel parm: LTO=${LTO} GKI_CONFIG=${GKI_CONFIG} ANDROID_PROJECT=${AN
DEFCONFIG=amlogic_gki_defconfig
function pre_defconfig_cmds() {
KCONFIG_DEFCONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/arm64/configs/${DEFCONFIG}
KCONFIG_DEFCONFIG=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}
local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
if [[ ${GKI_CONFIG} == gki_20 ]]; then
+13 -7
View File
@@ -111,8 +111,12 @@ build_part_of_kernel
if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" && "${ARCH}" = "arm64" && ${BAZEL} == 1 ]]; then
args=$@
[[ -z ${PREBUILT_GKI} ]] && args="${args} --lto=${LTO}"
[[ -z ${GKI_CONFIG} ]] && args="${args} --notrim --nokmi_symbol_list_strict_mode"
if [[ -n ${FAST_BUILD} ]]; then
args="${args} --config=fast --lto=none"
else
[[ -z ${PREBUILT_GKI} ]] && args="${args} --lto=${LTO}"
fi
[[ -z ${GKI_CONFIG} || -n ${FAST_BUILD} ]] && args="${args} --notrim --nokmi_symbol_list_strict_mode"
PROJECT_DIR=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/project
[[ -d ${PROJECT_DIR} ]] || mkdir -p ${PROJECT_DIR}
@@ -180,6 +184,8 @@ if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" && "${ARCH}" = "arm64" && ${BA
sed -i "/UPGRADE_PROJECT/d" ${PROJECT_DIR}/project.bzl
echo "UPGRADE_PROJECT = \"${UPGRADE_PROJECT}\"" >> ${PROJECT_DIR}/project.bzl
echo "FAST_BUILD = \"${FAST_BUILD}\"" >> ${PROJECT_DIR}/project.bzl
[[ -f ${PROJECT_DIR}/dtb.bzl ]] || touch ${PROJECT_DIR}/dtb.bzl
echo "# SPDX-License-Identifier: GPL-2.0" > ${PROJECT_DIR}/dtb.bzl
echo >> ${PROJECT_DIR}/dtb.bzl
@@ -212,13 +218,13 @@ if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" && "${ARCH}" = "arm64" && ${BA
fi
${GOOGLE_BAZEL_BUILD_COMMAND_LINE}
elif [[ "${ABI}" -eq "1" ]]; then
tools/bazel run //common:amlogic_abi_update_symbol_list --sandbox_debug --verbose_failures ${args}
tools/bazel run //common:kernel_aarch64_abi_dist --sandbox_debug --verbose_failures ${args}
tools/bazel run //common:amlogic_abi_update_symbol_list --verbose_failures ${args}
tools/bazel run //common:kernel_aarch64_abi_dist --verbose_failures ${args}
exit
elif [[ -n ${PREBUILT_GKI} ]]; then
tools/bazel run --use_prebuilt_gki=${PREBUILT_GKI} //common:amlogic_dist --sandbox_debug --verbose_failures ${args}
tools/bazel run --use_prebuilt_gki=${PREBUILT_GKI} //common:amlogic_dist --verbose_failures ${args}
else
tools/bazel run //common:amlogic_dist --sandbox_debug --verbose_failures ${args}
tools/bazel run //common:amlogic_dist --verbose_failures ${args}
fi
set +x
@@ -307,6 +313,6 @@ check_undefined_symbol
abi_symbol_list_detect
if [[ ${ARCH} = "arm64" ]]; then
if [[ ${ARCH} = "arm64" && -z ${FAST_BUILD} ]]; then
generate_lzma_format_image
fi