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