scripts: optimize build time [1/1]
PD#SWPL-172042
Problem:
optimize autopatch run time
Solution:
autopatch Asynchronous loading based on directory.
Fetch git information only once, based on directory.
mod_probe function use array instead of file can save time
Verify:
local
Change-Id: Ica47d23a867ce1aa5b534d7bfa0a85db33a37f5f
Signed-off-by: qinglin.li <qinglin.li@amlogic.com>
diff --git a/amlogic_utils.sh b/amlogic_utils.sh
index 33a78b0..a057ffc 100644
--- a/amlogic_utils.sh
+++ b/amlogic_utils.sh
@@ -376,12 +376,18 @@
local dep_file=$1
local ko=$2
local install_sh=$3
+
+ if [[ ${loaded_modules[$ko]} ]]; then
+ return
+ fi
+
local loop
- for loop in `grep "^${ko}:" ${dep_file} | sed 's/.*://'`; do
- [[ `grep "^${loop}" ${install_sh}` ]] && continue
- mod_probe ${dep_file} ${loop} ${install_sh}
- echo insmod ${loop} >> ${install_sh}
+ for loop in $(grep "^${ko}:" $dep_file | sed 's/.*://'); do
+ mod_probe $dep_file $loop $install_sh
done
+
+ echo insmod $ko >> $install_sh
+ loaded_modules[$ko]=1
}
function create_install_and_order_filles() {
@@ -399,11 +405,10 @@
[[ -f ${modules_order_file}.tmp ]] && rm -f ${modules_order_file}.tmp
touch ${modules_order_file}.tmp
+ declare -A loaded_modules
for loop in `cat ${modules_dep_file} | sed 's/:.*//'`; do
echo ${loop} >> ${modules_order_file}.tmp
- [[ `grep "^${loop}" ${install_file}.tmp` ]] && continue
mod_probe ${modules_dep_file} ${loop} ${install_file}.tmp
- echo insmod ${loop} >> ${install_file}.tmp
done
cat ${install_file}.tmp | awk ' {
@@ -584,13 +589,13 @@
done
fi
- cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
+ cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp0
delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_modules[@]} ${delete_pinctrl_soc_modules[@]} ${delete_type_modules[@]} ${black_modules[@]} ${GKI_MODULES_LOAD_BLACK_LIST[@]})
for module in ${delete_modules[@]}; do
if [[ ! -f $module ]]; then
continue
fi
- match=`sed -n "/${module}/=" modules.dep.temp1`
+ match=`sed -n "/${module}/=" modules.dep.temp0`
for match in ${match[@]}; do
match_count=(${match_count[@]} $match)
done
@@ -613,9 +618,9 @@
done
rm -f ${module}
done
- rm -f modules.dep.temp1
- touch modules.dep.temp1
+ rm -f modules.dep.temp0
+ touch modules.dep.temp1
for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
echo RAMDISK_MODULES_LOAD_LIST: $module
sed -n "/${module}:/p" modules.dep.temp
@@ -2011,9 +2016,16 @@
export -f clear_files_compressed_with_lzma_in_last_build
function generate_lzma_format_image () {
- pushd ${DIST_DIR}
- lzma -z -k -f -9 Image
- lzma -z -k -f -9 boot.img
- popd
+ {
+ pushd ${DIST_DIR}
+ lzma -z -k -f -9 Image
+ popd
+ } &
+
+ {
+ pushd ${DIST_DIR}
+ lzma -z -k -f -9 boot.img
+ popd
+ } &
}
export -f generate_lzma_format_image