blob: b40939e8f6dd8752c7c8ee889233069e2e160a5e [file] [log] [blame]
wanwei.jiang91776952021-11-19 13:10:32 +08001#!/bin/bash
2
3function pre_defconfig_cmds() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +08004 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
Lei Zhang2853aa52022-08-23 09:40:06 +08005 if [ "${ARCH}" = "arm" ]; then
6 export PATH=${PATH}:/usr/bin/
7 fi
wanwei.jiangff4dccd2022-08-14 01:14:51 +08008
Wanwei Jiang51217812022-11-01 20:23:03 +08009 if [[ -z ${ANDROID_PROJECT} ]]; then
10 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
11 echo "CONFIG_AMLOGIC_SERIAL_MESON=y" > ${temp_file}
qinglin.li931a53f2022-11-23 11:09:03 +080012 echo "CONFIG_DEVTMPFS=y" >> ${temp_file}
Wanwei Jiang51217812022-11-01 20:23:03 +080013 if [[ ${GKI_CONFIG} == gki_20 ]]; then
14 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${temp_file}
15 elif [[ ${GKI_CONFIG} == gki_10 ]]; then
16 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_GKI10} ${temp_file}
17 elif [[ ${GKI_CONFIG} == gki_debug ]]; then
18 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_GKI10} ${ROOT_DIR}/${FRAGMENT_CONFIG_DEBUG} ${temp_file}
19 fi
20 rm ${temp_file}
21 else
22 if [[ ${GKI_CONFIG} == gki_20 ]]; then
qinglin.li8d41aaf2023-02-07 19:49:44 +080023 if [[ -n ${CHECK_GKI_20} ]]; then
24 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
25 echo "CONFIG_STMMAC_ETH=n" > ${temp_file}
26 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${temp_file}
27 rm ${temp_file}
28 else
29 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG}
30 fi
Wanwei Jiang51217812022-11-01 20:23:03 +080031 elif [[ ${GKI_CONFIG} == gki_10 ]]; then
32 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_GKI10}
33 elif [[ ${GKI_CONFIG} == gki_debug ]]; then
34 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_GKI10} ${ROOT_DIR}/${FRAGMENT_CONFIG_DEBUG}
35 fi
wanwei.jiang6fdd3152022-08-01 20:35:05 +080036 fi
qinglin.li7a994a02022-12-05 15:04:40 +080037
38 if [[ -n ${UPGRADE_PROJECT} ]]; then
39 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE}
40 fi
Dezhen Wangab7ba642023-03-15 14:10:44 +080041
42 if [[ -n ${DEV_CONFIG} ]]; then
43 config_list=$(echo ${CONFIG_GROUP}|sed 's/+/ /g')
44 #verify the extra config is in the right path and merge the config
45 CONFIG_DIR=arch/${ARCH}/configs
46 for config_name in ${config_list[@]}
47 do
48 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/${CONFIG_DIR}/${config_name} ]]; then
49 echo "ERROR: config file ${config_name} is not in the right path!!"
50 exit
51 else
52 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/${CONFIG_DIR}/${config_name}
53 fi
54 done
55 fi
wanwei.jiang91776952021-11-19 13:10:32 +080056}
57export -f pre_defconfig_cmds
58
59function post_defconfig_cmds() {
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080060 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080061}
62export -f post_defconfig_cmds
63
64function read_ext_module_config() {
65 ALL_LINE=""
66 while read LINE
67 do
68 if [[ $LINE != \#* && $LINE != "" ]]; then
69 ALL_LINE="$ALL_LINE"" ""$LINE"
70 fi
71 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080072
73 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080074}
75
76function read_ext_module_predefine() {
77 PRE_DEFINE=""
78
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080079 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080080 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
81 done
82
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080083 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080084 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
85 done
86
wanwei.jiang5c861ae2022-04-21 00:51:50 +080087 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080088}
89
wanwei.jiang8d4a5132022-04-28 16:43:54 +080090top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +080091function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080092 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
Wanwei Jiang0a74fb12022-12-09 16:27:40 +080093 if [[ ! `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +080094 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
95 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
96 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
97 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +080098 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +080099
100 for ext_module_config in ${EXT_MODULES_CONFIG}; do
101 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
102 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
103 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
104 done
105 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
106 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
107 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
108
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800109 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
110 if [[ -d ${top_ext_drivers} ]]; then
111 rm -rf ${top_ext_drivers}
112 fi
113 mkdir -p ${top_ext_drivers}
114 fi
115
116 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
117 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
118 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800119 ext_modules=
120 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800121 module_abs_path=`readlink -e ${ext_module}`
122 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
123 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
124 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
125 cp -rf ${module_abs_path} ${top_ext_drivers}
126 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
127 fi
128 fi
129 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800130 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800131
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800132 for ext_module_path in ${EXT_MODULES_PATH}; do
133 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800134 while read LINE
135 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800136 module_abs_path=`readlink -e ${LINE}`
137 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800138 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
139 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
140 cp -rf ${module_abs_path} ${top_ext_drivers}
141 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
142 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800143 fi
144 ext_modules="${ext_modules} ${module_rel_path}"
145
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800146 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800147 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800148 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800149
150 local flag=0
151 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
152 for ext_module in ${EXT_MODULES}; do
153 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
154 if [[ ${flag} -eq "1" ]]; then
155 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
156 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
157 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
158 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
159 echo "${ext_module}/Makefile add: ${extra_symbols}"
160 fi
161 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
162 flag=1
163 done
164 fi
165
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800166 export EXT_MODULES
167 echo EXT_MODULES=${EXT_MODULES}
168
169 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800170}
171
172export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800173
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800174function extra_cmds() {
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800175 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
176 for ext_module in ${EXT_MODULES}; do
177 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
178 done
179 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800180
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800181 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
182 if [[ -d ${top_ext_drivers} ]]; then
183 rm -rf ${top_ext_drivers}
184 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800185 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800186
187 for FILE in ${FILES}; do
188 if [[ "${FILE}" =~ \.dtbo ]] && \
189 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
190 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
191 fi
192 done
193 export MKDTIMG_DTBOS
194
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800195 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800196 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800197 set -x
198
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800199 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
200 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800201 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800202 : > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800203 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800204 while read LINE
205 do
206 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800207 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800208 set -x
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800209 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800210 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800211 ext_modules=
212 for ext_module in ${EXT_MODULES}; do
213 if [[ ${ext_module} =~ "../" ]]; then
214 ext_module_old=${ext_module}
215 ext_module=${ext_module//\.\.\//}
216 ext_dir=$(dirname ${ext_module})
217 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
218 mkdir -p extra/${ext_dir}
219 cp -rf extra/${ext_module_old} extra/${ext_dir}
220
221 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
222 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800223 sed -i "s/\.\.\///g" ${ext_modules_order_file}
224 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800225 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800226 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800227 else
228 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800229 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800230 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800231 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800232 fi
233 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800234 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800235 EXT_MODULES=${ext_modules}
236 echo EXT_MODULES=${EXT_MODULES}
237 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800238
239 head -n ${ramdisk_last_line} modules.order > system_dlkm_modules
240 file_last_line=`sed -n "$=" modules.order`
241 let line=${file_last_line}-${ramdisk_last_line}
242 tail -n ${line} modules.order > vendor_dlkm_modules
243 export MODULES_LIST=${src_dir}/system_dlkm_modules
Wanwei Jianga5edc532022-12-18 17:25:59 +0800244 if [ "${ARCH}" = "arm64" -a -z ${FAST_BUILD} ]; then
Lei Zhang96efea62022-09-02 14:55:06 +0800245 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
246 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800247
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800248 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800249
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800250 if [[ -z ${ANDROID_PROJECT} ]] && [[ -d ${OUT_DIR}/${DTS_EXT_DIR} ]]; then
wanwei.jiang1d154992022-05-30 14:56:26 +0800251 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
252 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800253
254 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
255 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800256 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800257 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
258 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
259 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800260 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800261 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
262 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
263 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
264 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
265 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
266 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800267 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800268
269 for module_path in ${PREBUILT_MODULES_PATH}; do
270 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
271 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800272}
273
274export -f extra_cmds
275
wanwei.jiang612a8882021-11-23 17:12:23 +0800276function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800277 local ko=$1
278 local loop
qinglin.lia284a932022-09-21 18:07:38 +0800279 for loop in `grep "^$ko:" modules.dep | sed 's/.*://'`; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800280 mod_probe $loop
281 echo insmod $loop >> __install.sh
282 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800283}
284
Wanwei Jiang571dde62022-11-17 14:37:41 +0800285function mod_probe_recovery() {
286 local ko=$1
287 local loop
288 for loop in `grep "^$ko:" modules_recovery.dep | sed 's/.*://'`; do
289 mod_probe_recovery $loop
290 echo insmod $loop >> __install_recovery.sh
291 done
292}
293
wanwei.jiangb12abc82021-12-25 22:17:10 +0800294function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800295 if [[ -n $1 ]]; then
296 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800297 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800298
299 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
300 cp modules.dep modules.dep.temp
301
302 soc_module=()
303 for chip in ${chips[@]}; do
304 chip_module=`ls amlogic-*-soc-${chip}.ko`
305 soc_module=(${soc_module[@]} ${chip_module[@]})
306 done
307 echo soc_module=${soc_module[*]}
308
309 delete_soc_module=()
310 if [[ ${#soc_module[@]} == 0 ]]; then
311 echo "Use all soc module"
312 else
313 for module in `ls amlogic-*-soc-*`; do
314 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
315 echo Delete soc module: ${module}
316 sed -n "/${module}:/p" modules.dep.temp
317 sed -i "/${module}:/d" modules.dep.temp
318 delete_soc_module=(${delete_soc_module[@]} ${module})
319 fi
320 done
321 echo delete_soc_module=${delete_soc_module[*]}
322 fi
323
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800324 if [[ -n ${CLK_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800325 delete_clk_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800326 for module in `ls amlogic-clk-soc-*`; do
327 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
328 echo Delete clk soc module: ${module}
329 sed -n "/${module}:/p" modules.dep.temp
330 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800331 delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800332 fi
333 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800334 echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800335 fi
336
337 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800338 delete_pinctrl_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800339 for module in `ls amlogic-pinctrl-soc-*`; do
340 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
341 echo Delete pinctrl soc module: ${module}
342 sed -n "/${module}:/p" modules.dep.temp
343 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800344 delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800345 fi
346 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800347 echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800348 fi
349
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800350 in_line_i=a
351 delete_type_modules=()
352 echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
353 mkdir temp_dir
354 cd temp_dir
355 in_temp_dir=y
356 for element in ${TYPE_MODULE_SELECT_MODULE}; do
357 if [[ ${in_temp_dir} = y ]]; then
358 cd ../
359 rm -r temp_dir
360 in_temp_dir=
361 fi
362 if [[ ${in_line_i} = a ]]; then
363 in_line_i=b
364 type_module=${element}
365 select_modules_i=0
366 select_modules_count=
367 select_modules=
368 elif [[ ${in_line_i} = b ]]; then
369 in_line_i=c
370 select_modules_count=${element}
371 else
372 let select_modules_i+=1
373 select_modules="${select_modules} ${element}"
374 if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
375 in_line_i=a
376 echo type_module=$type_module select_modules=$select_modules
377 for module in `ls ${type_module}`; do
378 dont_delete_module=0
379 for select_module in ${select_modules}; do
380 if [[ "${select_module}" == "${module}" ]] ; then
381 dont_delete_module=1
382 break;
383 fi
384 done
385 if [[ ${dont_delete_module} != 1 ]]; then
386 echo Delete module: ${module}
387 sed -n "/${module}:/p" modules.dep.temp
388 sed -i "/${module}:/d" modules.dep.temp
389 delete_type_modules=(${delete_type_modules[@]} ${module})
390 fi
391 done
392 echo delete_type_modules=${delete_type_modules[*]}
393 fi
394 fi
395 done
396 if [[ -n ${in_temp_dir} ]]; then
397 cd ../
398 rm -r temp_dir
399 fi
400
401 black_modules=()
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800402 mkdir service_module
403 echo MODULES_SERVICE_LOAD_LIST=${MODULES_SERVICE_LOAD_LIST[@]}
404 BLACK_AND_SERVICE_LIST=(${MODULES_LOAD_BLACK_LIST[@]} ${MODULES_SERVICE_LOAD_LIST[@]})
405 echo ${BLACK_AND_SERVICE_LIST[@]}
406 for module in ${BLACK_AND_SERVICE_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800407 modules=`ls ${module}*`
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800408 black_modules=(${black_modules[@]} ${modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800409 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800410 if [[ ${#black_modules[@]} == 0 ]]; then
411 echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800412 else
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800413 echo black_modules=${black_modules[*]}
414 for module in ${black_modules[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800415 echo Delete module: ${module}
416 sed -n "/${module}:/p" modules.dep.temp
417 sed -i "/${module}:/d" modules.dep.temp
418 done
419 fi
420
421 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800422 delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_modules[@]} ${delete_pinctrl_soc_modules[@]} ${delete_type_modules[@]} ${black_modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800423 for module in ${delete_modules[@]}; do
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800424 if [[ ! `ls $module` ]]; then
425 continue
426 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800427 match=`sed -n "/${module}/=" modules.dep.temp1`
428 for match in ${match[@]}; do
429 match_count=(${match_count[@]} $match)
430 done
431 if [[ ${#match_count[@]} != 0 ]]; then
432 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800433 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800434 exit
435 fi
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800436 if [[ -n ${ANDROID_PROJECT} ]]; then
437 for service_module_temp in ${MODULES_SERVICE_LOAD_LIST[@]}; do
438 if [[ ${module} = ${service_module_temp} ]]; then
439 mv ${module} service_module
440 fi
441 done
442 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800443 rm -f ${module}
444 done
445 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800446 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800447
448 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
449 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800450 sed -n "/${module}:/p" modules.dep.temp
451 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
452 sed -i "/${module}:/d" modules.dep.temp
453 sed -n "/${module}.*\.ko:/p" modules.dep.temp
454 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
455 sed -i "/${module}.*\.ko:/d" modules.dep.temp
456 done
457
Wanwei Jiang571dde62022-11-17 14:37:41 +0800458 if [[ -n ${ANDROID_PROJECT} ]]; then
459 cp modules.dep.temp modules_recovery.dep.temp
460 cp modules.dep.temp1 modules_recovery.dep.temp1
461 fi
462
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800463 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
464 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
465 sed -n "/${module}:/p" modules.dep.temp
466 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
467 sed -i "/${module}:/d" modules.dep.temp
468 sed -n "/${module}.*\.ko:/p" modules.dep.temp
469 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
470 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800471 done
472
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800473 if [ -f modules.dep.temp2 ]; then
474 rm modules.dep.temp2
475 fi
476 touch modules.dep.temp2
477 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
478 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
479 sed -n "/${module}:/p" modules.dep.temp
480 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
481 sed -i "/${module}:/d" modules.dep.temp
482 sed -n "/${module}.*\.ko:/p" modules.dep.temp
483 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
484 sed -i "/${module}.*\.ko:/d" modules.dep.temp
485 done
486
487 cat modules.dep.temp >> modules.dep.temp1
488 cat modules.dep.temp2 >> modules.dep.temp1
489
wanwei.jiangb12abc82021-12-25 22:17:10 +0800490 cp modules.dep.temp1 modules.dep
491 rm modules.dep.temp
492 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800493 rm modules.dep.temp2
Wanwei Jiang571dde62022-11-17 14:37:41 +0800494
495 if [[ -n ${ANDROID_PROJECT} ]]; then
496 for module in ${RECOVERY_MODULES_LOAD_LIST[@]}; do
497 echo RECOVERY_MODULES_LOAD_LIST: $module
498 sed -n "/${module}:/p" modules_recovery.dep.temp
499 sed -n "/${module}:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
500 sed -i "/${module}:/d" modules_recovery.dep.temp
501 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp
502 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
503 sed -i "/${module}.*\.ko:/d" modules_recovery.dep.temp
504 done
505
506 cat modules_recovery.dep.temp >> modules_recovery.dep.temp1
507
508 cp modules_recovery.dep.temp1 modules_recovery.dep
509 rm modules_recovery.dep.temp
510 rm modules_recovery.dep.temp1
511 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800512}
513
Wanwei Jiang571dde62022-11-17 14:37:41 +0800514create_ramdisk_vendor_recovery() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800515 install_temp=$1
Wanwei Jiang571dde62022-11-17 14:37:41 +0800516 if [[ -n ${ANDROID_PROJECT} ]]; then
517 recovery_install_temp=$2
518 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800519 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
Wanwei Jiang9173e462022-09-29 00:58:33 +0800520 ramdisk_module_i=${#RAMDISK_MODULES_LOAD_LIST[@]}
521 while [ ${ramdisk_module_i} -gt 0 ]; do
522 let ramdisk_module_i--
523 echo ramdisk_module_i=$ramdisk_module_i ${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
524 if [[ `grep "${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}" ${install_temp}` ]]; then
525 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
526 break;
527 fi
528 done
529 # last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800530 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
531 for line in ${last_ramdisk_module_line}; do
532 ramdisk_last_line=${line}
533 done
wanwei.jiangf73b2202022-07-23 16:00:44 +0800534 export ramdisk_last_line
Wanwei Jiang571dde62022-11-17 14:37:41 +0800535
536 if [[ -n ${ANDROID_PROJECT} ]]; then
537 recovery_module_i=${#RECOVERY_MODULES_LOAD_LIST[@]}
qinglin.lidba324f2023-03-02 19:56:21 +0800538 #when RECOVERY_MODULES_LOAD_LIST is NULL
539 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -eq 0 ]; then
540 last_recovery_module=${last_ramdisk_module}
541 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800542 while [ ${recovery_module_i} -gt 0 ]; do
543 let recovery_module_i--
544 echo recovery_module_i=$recovery_module_i ${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
545 if [[ `grep "${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}" ${recovery_install_temp}` ]]; then
546 last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
547 break;
548 fi
549 done
550 # last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${#RECOVERY_MODULES_LOAD_LIST[@]}-1]}
551 last_recovery_module_line=`sed -n "/${last_recovery_module}/=" ${recovery_install_temp}`
552 for line in ${last_recovery_module_line}; do
553 recovery_last_line=${line}
554 done
555
556 sed -n "${ramdisk_last_line},${recovery_last_line}p" ${recovery_install_temp} > recovery_install.sh
557 sed -i "1d" recovery_install.sh
558 mkdir recovery
559 cat recovery_install.sh | cut -d ' ' -f 2 > recovery/recovery_modules.order
qinglin.lidba324f2023-03-02 19:56:21 +0800560 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -ne 0 ]; then
561 cat recovery_install.sh | cut -d ' ' -f 2 | xargs cp -t recovery/
562 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800563 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' recovery_install.sh
564 echo "echo Install recovery modules success!" >> recovery_install.sh
565 chmod 755 recovery_install.sh
566 mv recovery_install.sh recovery/
567 fi
568
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800569 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800570 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800571 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800572 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800573
qinglin.lie5b951e2022-06-07 16:13:44 +0800574 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800575 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
576 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800577 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800578
579 file_last_line=`sed -n "$=" ${install_temp}`
580 let line=${file_last_line}-${ramdisk_last_line}
581 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800582 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800583 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800584 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800585
qinglin.lie5b951e2022-06-07 16:13:44 +0800586 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800587 echo "echo Install vendor modules success!" >> vendor_install.sh
588 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800589 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800590}
591
wanwei.jiang612a8882021-11-23 17:12:23 +0800592function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800593 arg1=$1
594
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800595 rm -rf ${OUT_AMLOGIC_DIR}
596 mkdir -p ${OUT_AMLOGIC_DIR}
597 mkdir -p ${OUT_AMLOGIC_DIR}/modules
598 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800599 mkdir -p ${OUT_AMLOGIC_DIR}/symbols
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800600
601 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
602 pushd ${MODULES_ROOT_DIR}
603 local common_drivers=${COMMON_DRIVERS_DIR##*/}
604 local modules_list=$(find -type f -name "*.ko")
wanwei.jiang67a191d2022-04-18 20:39:13 +0800605 for module in ${modules_list}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800606 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
607 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800608 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800609 else
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800610 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800611 fi
612 else # copy all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800613 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800614 fi
wanwei.jiang67a191d2022-04-18 20:39:13 +0800615 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800616
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800617 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800618 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800619 else # all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800620 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800621 fi
622 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800623
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800624 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800625 sed -i 's#[^ ]*/##g' modules.dep
626
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800627 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800628
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800629 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800630 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800631 for loop in `cat modules.dep | sed 's/:.*//'`; do
632 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800633 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800634 echo insmod $loop >> __install.sh
635 done
636
637 cat __install.sh | awk ' {
638 if (!cnt[$2]) {
639 print $0;
640 cnt[$2]++;
641 }
642 }' > __install.sh.tmp
643
Wanwei Jiangbf119d22022-10-27 09:49:49 +0800644 cp modules.order modules.order.back
645 cut -d ' ' -f 2 __install.sh.tmp > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800646
647 if [[ -n ${ANDROID_PROJECT} ]]; then
648 touch __install_recovery.sh
649 touch modules_recovery.order
650 for loop in `cat modules_recovery.dep | sed 's/:.*//'`; do
651 mod_probe_recovery $loop
652 echo $loop >> modules_recovery.order
653 echo insmod $loop >> __install_recovery.sh
654 done
655
656 cat __install_recovery.sh | awk ' {
657 if (!cnt[$2]) {
658 print $0;
659 cnt[$2]++;
660 }
661 }' > __install_recovery.sh.tmp
662
663 cut -d ' ' -f 2 __install_recovery.sh.tmp > modules_recovery.order
664 fi
665 create_ramdisk_vendor_recovery __install.sh.tmp __install_recovery.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800666
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800667 if [[ -n ${MANUAL_INSMOD_MODULE} ]]; then
668 install_file=manual_install.sh
669 else
670 install_file=install.sh
671 fi
672 echo "#!/bin/sh" > ${install_file}
673 echo "cd ramdisk" >> ${install_file}
674 echo "./ramdisk_install.sh" >> ${install_file}
675 echo "cd ../vendor" >> ${install_file}
676 echo "./vendor_install.sh" >> ${install_file}
677 echo "cd ../" >> ${install_file}
678 chmod 755 ${install_file}
wanwei.jiang612a8882021-11-23 17:12:23 +0800679
680 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800681 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800682
Wanwei Jiang571dde62022-11-17 14:37:41 +0800683 if [[ -n ${ANDROID_PROJECT} ]]; then
684 rm __install_recovery.sh __install_recovery.sh.tmp
685 fi
686
wanwei.jiang236e9a32021-12-07 16:34:14 +0800687 popd
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800688
689 cp ${OUT_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
690 find ${OUT_DIR} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
691 for ext_module in ${EXT_MODULES}; do
692 find ${COMMON_OUT_DIR}/${ext_module} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
693 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800694}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800695export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800696
697function rebuild_rootfs() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800698 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800699
Lei Zhang475c17b2022-03-03 11:08:50 +0800700 local ARCH=arm64
701 if [[ -n $1 ]]; then
702 ARCH=$1
703 fi
704
wanwei.jiang612a8882021-11-23 17:12:23 +0800705 rm rootfs -rf
706 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800707 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800708 cd rootfs
709 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
710 gunzip rootfs_base.cpio.gz
711 mkdir rootfs
712 cd rootfs
713 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800714 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
715 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800716 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800717 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800718
wanwei.jiang612a8882021-11-23 17:12:23 +0800719 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
720 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800721 mkimage -A ${ARCH} -O linux -T ramdisk -C none -d rootfs_new.cpio.gz rootfs_new.cpio.gz.uboot
wanwei.jiang612a8882021-11-23 17:12:23 +0800722 mv rootfs_new.cpio.gz.uboot ../
723 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800724 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800725
726 popd
727}
728export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800729
730function check_undefined_symbol() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800731 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800732 echo
733 echo "========================================================"
734 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800735 if [[ -n ${LLVM} ]]; then
736 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
737 elif [[ -n ${CROSS_COMPILE} ]]; then
738 compile_tool=${CROSS_COMPILE}
739 else
740 echo "can't find compile tool"
741 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800742 ${compile_tool}nm ${DIST_DIR}/vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800743 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
744 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
745 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
746 cp ramdisk/*.ko .
747 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800748 while read LINE
749 do
750 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800751 for U in `${compile_tool}nm ${LINE} | grep " U " | sed -e 's/^\s*//' -e 's/\s*$//' | cut -d ' ' -f 2`
wanwei.jiang403c9942021-11-30 18:29:02 +0800752 do
753 #echo ${U}
754 U_v=`grep -w ${U} vmlinux_T.txt`
755 in_vmlinux=0
756 if [ -n "${U_v}" ];
757 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800758 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800759 in_vmlinux=1
760 continue
761 fi
762 in_module=0
763 MODULE=
764 while read LINE1
765 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800766 U_m=`${compile_tool}nm ${LINE1} | grep -E " T | D | B | R " | grep -v "\.cfi_jt" | grep "${U}"`
wanwei.jiang403c9942021-11-30 18:29:02 +0800767 if [ -n "${U_m}" ];
768 then
769 in_module=1
770 MODULE=${LINE1}
771 fi
772 done < module_list.txt
773 if [ ${in_module} -eq "1" ];
774 then
775 printf "\t%-50s <== %s\n" ${U} ${MODULE}
776 continue
777 else
778 printf "\t%-50s <== none\n" ${U}
779 fi
780 done
781 echo
782 echo
783 done < module_list.txt
784 rm vmlinux_T.txt
785 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800786 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800787 popd
788}
789export -f check_undefined_symbol