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