1#!/bin/bash -e 2 3BOARD=$(echo ${RK_KERNEL_DTS_NAME:-$(echo "$RK_DEFCONFIG" | \ 4 sed -n "s/.*\($RK_CHIP.*\)_defconfig/\1/p")} | \ 5 tr '[:lower:]' '[:upper:]') 6 7build_all() 8{ 9 echo "==========================================" 10 echo " Start building all images" 11 echo "==========================================" 12 13 rm -rf "$RK_FIRMWARE_DIR" "$RK_SECURITY_FIRMWARE_DIR" 14 mkdir -p "$RK_FIRMWARE_DIR" "$RK_SECURITY_FIRMWARE_DIR" 15 16 if [ "$RK_RTOS" ]; then 17 "$SCRIPTS_DIR/mk-loader.sh" 18 "$SCRIPTS_DIR/mk-rtos.sh" 19 "$SCRIPTS_DIR/mk-firmware.sh" 20 finish_build 21 return 0 22 fi 23 24 if [ "$RK_SECURITY" ]; then 25 "$SCRIPTS_DIR/mk-security.sh" security_check 26 fi 27 28 if [ "$RK_KERNEL_CFG" ]; then 29 "$SCRIPTS_DIR/mk-kernel.sh" 30 if [ "$RK_ROOTFS_SYSTEM" == "ubuntu" ]; then 31 "$SCRIPTS_DIR/mk-rootfs.sh" ubuntu 32 else 33 "$SCRIPTS_DIR/mk-rootfs.sh" linuxfs 34 fi 35 "$SCRIPTS_DIR/mk-linuxrecovery.sh" 36 fi 37 38 if [ "$RK_SECURITY" ]; then 39 "$SCRIPTS_DIR/mk-security.sh" security_ramboot 40 fi 41 42 # Will repack boot and recovery images when security enabled 43 "$SCRIPTS_DIR/mk-loader.sh" 44 45 "$SCRIPTS_DIR/mk-firmware.sh" 46 "$SCRIPTS_DIR/mk-updateimg.sh" 47 48 finish_build 49} 50 51build_save() 52{ 53 echo "==========================================" 54 echo " Start saving images and build info" 55 echo "==========================================" 56 57 shift 58 SAVE_BASE_DIR="$RK_OUTDIR/$BOARD${1:+/$1}" 59 case "$(grep "^ID=" "$RK_OUTDIR/os-release" 2>/dev/null)" in 60 ID=buildroot) SAVE_DIR="$SAVE_BASE_DIR/BUILDROOT" ;; 61 ID=debian) SAVE_DIR="$SAVE_BASE_DIR/DEBIAN" ;; 62 ID=poky) SAVE_DIR="$SAVE_BASE_DIR/YOCTO" ;; 63 *) SAVE_DIR="$SAVE_BASE_DIR" ;; 64 esac 65 [ "$1" ] || SAVE_DIR="$SAVE_DIR/$(date +%Y%m%d_%H%M%S)" 66 mkdir -p "$SAVE_DIR" 67 rm -rf "$SAVE_BASE_DIR/latest" 68 ln -rsf "$SAVE_DIR" "$SAVE_BASE_DIR/latest" 69 70 echo "Saving into $SAVE_DIR..." 71 72 if [ "$RK_KERNEL_CFG" ]; then 73 mkdir -p "$SAVE_DIR/kernel" 74 75 echo "Saving linux-headers..." 76 "$SCRIPTS_DIR/mk-kernel.sh" linux-headers \ 77 "$SAVE_DIR/kernel" 78 79 echo "Saving kernel files..." 80 cp kernel/.config kernel/System.map kernel/vmlinux \ 81 $RK_KERNEL_DTB "$SAVE_DIR/kernel" 82 fi 83 84 echo "Saving images..." 85 mkdir -p "$SAVE_DIR/IMAGES" 86 cp "$RK_FIRMWARE_DIR"/* "$SAVE_DIR/IMAGES/" 87 88 echo "Saving build info..." 89# if yes | ${PYTHON3:-python3} .repo/repo/repo manifest -r \ 90# -o "$SAVE_DIR/manifest.xml"; then 91 # Only do this when repositories are available 92# echo "Saving patches..." 93# PATCHES_DIR="$SAVE_DIR/PATCHES" 94# mkdir -p "$PATCHES_DIR" 95# .repo/repo/repo forall -j $(( $CPUS + 1 )) -c \ 96# "\"$SCRIPTS_DIR/save-patches.sh\" \ 97# \"$PATCHES_DIR/\$REPO_PATH\" \$REPO_PATH \$REPO_LREV" 98# install -D -m 0755 "$RK_DATA_DIR/apply-all.sh" "$PATCHES_DIR" 99# fi 100 101 cp "$RK_FINAL_ENV" "$RK_CONFIG" "$RK_DEFCONFIG_LINK" "$SAVE_DIR/" 102 cp "$RK_CONFIG" "$SAVE_DIR/build_info" 103 104 echo "Saving build logs..." 105 cp -rp "$RK_LOG_BASE_DIR" "$SAVE_DIR/" 106 107 finish_build 108} 109 110build_allsave() 111{ 112 echo "==========================================" 113 echo " Start building allsave" 114 echo "==========================================" 115 116 build_all 117 build_save $@ 118 119 finish_build 120} 121 122# Hooks 123 124usage_hook() 125{ 126 echo -e "all \tbuild all images" 127 echo -e "save \tsave images and build info" 128 echo -e "allsave \tbuild all images and save them" 129} 130 131clean_hook() 132{ 133 rm -rf "$RK_OUTDIR"/$BOARD* 134} 135 136BUILD_CMDS="all allsave" 137build_hook() 138{ 139 case "$1" in 140 all) build_all ;; 141 allsave) build_allsave $@ ;; 142 esac 143} 144 145POST_BUILD_CMDS="save" 146post_build_hook() 147{ 148 build_save $@ 149} 150 151source "${BUILD_HELPER:-$(dirname "$(realpath "$0")")/../build-hooks/build-helper}" 152 153case "${1:-allsave}" in 154 all) build_all ;; 155 allsave) build_allsave $@ ;; 156 save) build_save $@ ;; 157 *) usage ;; 158esac 159