blob: 7a7039f6fc07fd3134c8fa45a86d83e9b5f35949 [file] [log] [blame]
wanwei.jiang91776952021-11-19 13:10:32 +08001#!/bin/bash
2
3function pre_defconfig_cmds() {
wanwei.jiang91776952021-11-19 13:10:32 +08004 KCONFIG_CONFIG=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${FRAGMENT_CONFIG}
5}
6export -f pre_defconfig_cmds
7
8function post_defconfig_cmds() {
wanwei.jiang1482c872022-05-13 20:33:51 +08009 if [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
10 check_defconfig
11 fi
wanwei.jiang91776952021-11-19 13:10:32 +080012 rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080013}
14export -f post_defconfig_cmds
15
16function read_ext_module_config() {
17 ALL_LINE=""
18 while read LINE
19 do
20 if [[ $LINE != \#* && $LINE != "" ]]; then
21 ALL_LINE="$ALL_LINE"" ""$LINE"
22 fi
23 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080024
25 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080026}
27
28function read_ext_module_predefine() {
29 PRE_DEFINE=""
30
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080031 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080032 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
33 done
34
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080035 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080036 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
37 done
38
wanwei.jiang5c861ae2022-04-21 00:51:50 +080039 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080040}
41
wanwei.jiang8d4a5132022-04-28 16:43:54 +080042top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +080043function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080044 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080045 if [[ -z ${IN_KERNEL_MODULES} ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +080046 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
47 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
48 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
49 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +080050 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +080051
52 for ext_module_config in ${EXT_MODULES_CONFIG}; do
53 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
54 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
55 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
56 done
57 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
58 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
59 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
60
61 local flag=0
wanwei.jiangcb5c4c82022-04-25 16:47:24 +080062 ext_modules=
63 for ext_module in ${EXT_MODULES}; do
64 ext_modules="${ext_modules} ${ext_module}"
65 done
wanwei.jiang8d4a5132022-04-28 16:43:54 +080066 if [[ -d ${top_ext_drivers} ]]; then
67 rm -rf ${top_ext_drivers}
68 fi
69 mkdir -p ${top_ext_drivers}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080070 for ext_module_path in ${EXT_MODULES_PATH}; do
71 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080072 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
73 while read LINE
74 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +080075 module_abs_path=`readlink -e ${LINE}`
76 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
77 if [[ `echo ${module_rel_path} | grep "\.\."` ]]; then
78 cp -rf ${module_abs_path} ${top_ext_drivers}
79 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
80 fi
81 ext_modules="${ext_modules} ${module_rel_path}"
82
83 ext_mod_rel=$(rel_path ${module_rel_path} ${KERNEL_DIR})
wanwei.jiang5c861ae2022-04-21 00:51:50 +080084 if [[ ${flag} -eq "1" ]]; then
wanwei.jiang8d4a5132022-04-28 16:43:54 +080085 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${module_rel_path}/Makefile
86 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${module_rel_path}/Makefile
87 sed -i "2 i ${extra_symbols}" ${module_rel_path}/Makefile
88 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${module_rel_path}/Makefile
89 echo "${module_rel_path}/Makefile add: ${extra_symbols}"
wanwei.jiang5c861ae2022-04-21 00:51:50 +080090 fi
91 flag=1
92 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
93 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080094 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +080095 EXT_MODULES=${ext_modules}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080096 export EXT_MODULES
97 echo EXT_MODULES=${EXT_MODULES}
98
99 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800100}
101
102export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800103
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800104function extra_cmds() {
105 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
106 local flag=0
107
108 for ext_module_path in ${EXT_MODULES_PATH}; do
109 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
110 while read LINE
111 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800112 module_abs_path=`readlink -e ${LINE}`
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800113 if [[ ${flag} -eq "1" ]]; then
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800114 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${module_abs_path}/Makefile
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800115 fi
116 flag=1
117 done < ${temp_file}
118 done
119
120 rm ${temp_file}
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800121 if [[ -d ${top_ext_drivers} ]]; then
122 rm -rf ${top_ext_drivers}
123 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800124
125 for FILE in ${FILES}; do
126 if [[ "${FILE}" =~ \.dtbo ]] && \
127 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
128 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
129 fi
130 done
131 export MKDTIMG_DTBOS
132
133 modules_install
134
135 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
136 pushd ${src_dir}
137 : > modules.order
138 while read LINE
139 do
140 find -name ${LINE} >> modules.order
141 done < ${DIST_DIR}/modules/modules.order
142 sed -i 's/..//' modules.order
143 for EXT_MOD in ${EXT_MODULES}; do
144 ext_modules_order_file=$(ls extra/${EXT_MOD}/modules.order.*)
145 : > ${ext_modules_order_file}
146 done
147 popd
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800148}
149
150export -f extra_cmds
151
wanwei.jiang612a8882021-11-23 17:12:23 +0800152function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800153 local ko=$1
154 local loop
155 for loop in `grep "$ko:" modules.dep | sed 's/.*://'`; do
156 mod_probe $loop
157 echo insmod $loop >> __install.sh
158 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800159}
160
wanwei.jiangb12abc82021-12-25 22:17:10 +0800161function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800162 if [[ -n $1 ]]; then
163 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800164 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800165
166 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
167 cp modules.dep modules.dep.temp
168
169 soc_module=()
170 for chip in ${chips[@]}; do
171 chip_module=`ls amlogic-*-soc-${chip}.ko`
172 soc_module=(${soc_module[@]} ${chip_module[@]})
173 done
174 echo soc_module=${soc_module[*]}
175
176 delete_soc_module=()
177 if [[ ${#soc_module[@]} == 0 ]]; then
178 echo "Use all soc module"
179 else
180 for module in `ls amlogic-*-soc-*`; do
181 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
182 echo Delete soc module: ${module}
183 sed -n "/${module}:/p" modules.dep.temp
184 sed -i "/${module}:/d" modules.dep.temp
185 delete_soc_module=(${delete_soc_module[@]} ${module})
186 fi
187 done
188 echo delete_soc_module=${delete_soc_module[*]}
189 fi
190
191 delete_module=()
wanwei.jiang50759e12022-03-24 12:36:17 +0800192 for module in ${MODULES_LOAD_BLACK_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800193 modules=`ls ${module}*`
194 delete_module=(${delete_module[@]} ${modules[@]})
195 done
196 if [[ ${#delete_module[@]} == 0 ]]; then
wanwei.jiang50759e12022-03-24 12:36:17 +0800197 echo "No delete module, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800198 else
199 echo delete_module=${delete_module[*]}
200 for module in ${delete_module[@]}; do
201 echo Delete module: ${module}
202 sed -n "/${module}:/p" modules.dep.temp
203 sed -i "/${module}:/d" modules.dep.temp
204 done
205 fi
206
207 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
208 delete_modules=(${delete_soc_module[@]} ${delete_module[@]})
209 for module in ${delete_modules[@]}; do
210 match=`sed -n "/${module}/=" modules.dep.temp1`
211 for match in ${match[@]}; do
212 match_count=(${match_count[@]} $match)
213 done
214 if [[ ${#match_count[@]} != 0 ]]; then
215 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800216 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800217 exit
218 fi
219 rm -f ${module}
220 done
221 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800222 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800223
224 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
225 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800226 sed -n "/${module}:/p" modules.dep.temp
227 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
228 sed -i "/${module}:/d" modules.dep.temp
229 sed -n "/${module}.*\.ko:/p" modules.dep.temp
230 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
231 sed -i "/${module}.*\.ko:/d" modules.dep.temp
232 done
233
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800234 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
235 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
236 sed -n "/${module}:/p" modules.dep.temp
237 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
238 sed -i "/${module}:/d" modules.dep.temp
239 sed -n "/${module}.*\.ko:/p" modules.dep.temp
240 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
241 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800242 done
243
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800244 if [ -f modules.dep.temp2 ]; then
245 rm modules.dep.temp2
246 fi
247 touch modules.dep.temp2
248 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
249 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
250 sed -n "/${module}:/p" modules.dep.temp
251 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
252 sed -i "/${module}:/d" modules.dep.temp
253 sed -n "/${module}.*\.ko:/p" modules.dep.temp
254 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
255 sed -i "/${module}.*\.ko:/d" modules.dep.temp
256 done
257
258 cat modules.dep.temp >> modules.dep.temp1
259 cat modules.dep.temp2 >> modules.dep.temp1
260
wanwei.jiangb12abc82021-12-25 22:17:10 +0800261 cp modules.dep.temp1 modules.dep
262 rm modules.dep.temp
263 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800264 rm modules.dep.temp2
265}
266
wanwei.jiang50759e12022-03-24 12:36:17 +0800267create_ramdis_vendor() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800268 install_temp=$1
269 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
270 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
271 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
272 for line in ${last_ramdisk_module_line}; do
273 ramdisk_last_line=${line}
274 done
275 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800276 mkdir ramdisk
277 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800278
279 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' ramdisk_install.sh
280 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
281 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800282 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800283
284 file_last_line=`sed -n "$=" ${install_temp}`
285 let line=${file_last_line}-${ramdisk_last_line}
286 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800287 mkdir vendor
288 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800289
290 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' vendor_install.sh
291 echo "echo Install vendor modules success!" >> vendor_install.sh
292 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800293 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800294}
295
wanwei.jiang612a8882021-11-23 17:12:23 +0800296function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800297 arg1=$1
298
wanwei.jiang236e9a32021-12-07 16:34:14 +0800299 pushd ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800300 rm modules -rf
301 mkdir modules
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800302 local modules_list=$(find ${MODULES_STAGING_DIR}/lib/modules -type f -name "*.ko")
wanwei.jiang67a191d2022-04-18 20:39:13 +0800303 #cp ${modules_list} modules
304 for module in ${modules_list}; do
305 cp ${module} modules/
306 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800307
308 local stagin_module=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
309 echo stagin_module=${stagin_module}
310 cp ${stagin_module}/modules.dep modules
311
312 cd modules
313 sed -i 's#[^ ]*/##g' modules.dep
314
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800315 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800316
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800317 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800318 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800319 for loop in `cat modules.dep | sed 's/:.*//'`; do
320 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800321 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800322 echo insmod $loop >> __install.sh
323 done
324
325 cat __install.sh | awk ' {
326 if (!cnt[$2]) {
327 print $0;
328 cnt[$2]++;
329 }
330 }' > __install.sh.tmp
331
wanwei.jiang50759e12022-03-24 12:36:17 +0800332 create_ramdis_vendor __install.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800333
wanwei.jiang612a8882021-11-23 17:12:23 +0800334 cp __install.sh.tmp __install.sh
335
wanwei.jiang50759e12022-03-24 12:36:17 +0800336 #sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' __install.sh
337 #echo "echo Install modules success!" >> __install.sh
338 #chmod 755 __install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800339
340 echo "#!/bin/sh" > install.sh
341 # echo "./__install.sh || reboot" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800342 # echo "./__install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800343 echo "cd ramdisk" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800344 echo "./ramdisk_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800345 echo "cd ../vendor" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800346 echo "./vendor_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800347 echo "cd ../" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800348 chmod 755 install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800349
350 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
wanwei.jiang50759e12022-03-24 12:36:17 +0800351 rm __install.sh __install.sh.tmp modules.dep
wanwei.jiang612a8882021-11-23 17:12:23 +0800352
353 cd ../
wanwei.jiang236e9a32021-12-07 16:34:14 +0800354 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800355}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800356export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800357
358function rebuild_rootfs() {
359 pushd ${DIST_DIR}
360
Lei Zhang475c17b2022-03-03 11:08:50 +0800361 local ARCH=arm64
362 if [[ -n $1 ]]; then
363 ARCH=$1
364 fi
365
wanwei.jiang612a8882021-11-23 17:12:23 +0800366 rm rootfs -rf
367 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800368 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800369 cd rootfs
370 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
371 gunzip rootfs_base.cpio.gz
372 mkdir rootfs
373 cd rootfs
374 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800375 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
376 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800377 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800378 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800379
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800380 #modules_modules=`ls modules/*.ko`
381 ramdisk_modules=`ls modules/ramdisk/*.ko`
382 vendor_modules=`ls modules/vendor/*.ko`
383 strip_modules=(${modules_modules[@]} ${ramdisk_modules[@]} ${vendor_modules[@]})
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800384 if [[ -n ${LLVM} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800385 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800386 ${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-objcopy --strip-debug ${module}
387 done
388 elif [[ -n ${CROSS_COMPILE} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800389 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800390 ${CROSS_COMPILE}objcopy --strip-debug ${module}
391 done
392 else
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800393 echo "can't find compile tool"
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800394 fi
395
wanwei.jiang612a8882021-11-23 17:12:23 +0800396 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
397 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800398 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 +0800399 mv rootfs_new.cpio.gz.uboot ../
400 cd ../
401
402 popd
403}
404export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800405
406function check_undefined_symbol() {
wanwei.jiang236e9a32021-12-07 16:34:14 +0800407 pushd ${DIST_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800408 echo
409 echo "========================================================"
410 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800411 if [[ -n ${LLVM} ]]; then
412 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
413 elif [[ -n ${CROSS_COMPILE} ]]; then
414 compile_tool=${CROSS_COMPILE}
415 else
416 echo "can't find compile tool"
417 fi
418 ${compile_tool}nm ../vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
419 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
420 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
421 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
422 cp ramdisk/*.ko .
423 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800424 while read LINE
425 do
426 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800427 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 +0800428 do
429 #echo ${U}
430 U_v=`grep -w ${U} vmlinux_T.txt`
431 in_vmlinux=0
432 if [ -n "${U_v}" ];
433 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800434 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800435 in_vmlinux=1
436 continue
437 fi
438 in_module=0
439 MODULE=
440 while read LINE1
441 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800442 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 +0800443 if [ -n "${U_m}" ];
444 then
445 in_module=1
446 MODULE=${LINE1}
447 fi
448 done < module_list.txt
449 if [ ${in_module} -eq "1" ];
450 then
451 printf "\t%-50s <== %s\n" ${U} ${MODULE}
452 continue
453 else
454 printf "\t%-50s <== none\n" ${U}
455 fi
456 done
457 echo
458 echo
459 done < module_list.txt
460 rm vmlinux_T.txt
461 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800462 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800463 popd
464}
465export -f check_undefined_symbol