init: make a build script [1/1]
PD#SWPL-64232
Problem:
it is inconvenient to use directly build_abi.sh and build.sh
Solution:
1. automatically add drivers to the root file system
2. directly build Image, dtb and modules
3. add abi standard file
Verify:
local build
Change-Id: I8cfcd777b691f1e23fc00aef1aa63a7b8ea73c69
Signed-off-by: wanwei.jiang <wanwei.jiang@amlogic.com>
diff --git a/amlogic_utils.sh b/amlogic_utils.sh
index a2ba689..407f917 100644
--- a/amlogic_utils.sh
+++ b/amlogic_utils.sh
@@ -13,7 +13,7 @@
export -f pre_defconfig_cmds
function post_defconfig_cmds() {
- check_defconfig
+ # check_defconfig
rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}
pushd ${ROOT_DIR}/common_drivers
git checkout ${ROOT_DIR}/${FRAGMENT_CONFIG}
@@ -57,3 +57,78 @@
}
export -f prepare_module_build
+
+function mod_probe() {
+ local ko=$1
+ local loop
+ for loop in `grep "$ko:" modules.dep | sed 's/.*://'`;
+ do
+ mod_probe $loop
+ echo insmod $loop >> __install.sh
+ done
+}
+
+function modules_install() {
+ rm modules -rf
+ mkdir modules
+ cp *.ko modules
+
+ local stagin_module=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
+ echo stagin_module=${stagin_module}
+ cp ${stagin_module}/modules.dep modules
+
+ cd modules
+ sed -i 's#[^ ]*/##g' modules.dep
+
+ for loop in `cat modules.dep | sed 's/:.*//'`; do
+ mod_probe $loop
+ echo insmod $loop >> __install.sh
+ done
+
+ cat __install.sh | awk ' {
+ if (!cnt[$2]) {
+ print $0;
+ cnt[$2]++;
+ }
+ }' > __install.sh.tmp
+
+ cp __install.sh.tmp __install.sh
+
+ sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' __install.sh
+ echo "echo Install modules success!" >> __install.sh
+ chmod 777 __install.sh
+
+ echo "#!/bin/sh" > install.sh
+ # echo "./__install.sh || reboot" >> install.sh
+ echo "./__install.sh" >> install.sh
+ chmod 777 install.sh
+
+ echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
+
+ cd ../
+}
+
+function rebuild_rootfs() {
+ pushd ${DIST_DIR}
+
+ modules_install
+
+ rm rootfs -rf
+ mkdir rootfs
+ cp ${ROOT_DIR}/common_drivers/rootfs_base.cpio.gz.uboot rootfs
+ cd rootfs
+ dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
+ gunzip rootfs_base.cpio.gz
+ mkdir rootfs
+ cd rootfs
+ cpio -i -F ../rootfs_base.cpio
+ cp -rf ../../modules .
+ find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
+ cd ../
+ mkimage -A arm64 -O linux -T ramdisk -C none -d rootfs_new.cpio.gz rootfs_new.cpio.gz.uboot
+ mv rootfs_new.cpio.gz.uboot ../
+ cd ../
+
+ popd
+}
+export -f rebuild_rootfs