mirror of
https://github.com/hardkernel/kernel_common_drivers.git
synced 2026-06-25 12:03:48 +09:00
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:
+17
-5
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user