#!/bin/bash # ============================================================================= # @module: BootLoader stable branch tools: checkout, pull, push ... # @author: Li Dongqing (dongqing.li@amlogic.com) # @License: Copyright (c) 2019 Amlogic, Inc. All rights reserved. # @Changes: # 1. 2022.05.25 v0.1 - Creat stable sub version update tools. # 2. 2022.07.13 v0.2 - Add option for s4 branch in bl2/core. # 3. 2022.09.18 v0.3 - Support submitting uboot.bin to Android dir. # ============================================================================= # # Settings # #set -e # Set these ENV externally, cmd: export ENV=${ENV} if [[ -z "${STABLE_MAJOR_VERSION}" ]]; then STABLE_MAJOR_VERSION="3.5.0" else echo "External settings env: STABLE_MAJOR_VERSION=${STABLE_MAJOR_VERSION}" fi if [[ -z "${ANDROID_ROOT_DIR}" ]]; then ANDROID_ROOT_DIR="/mnt/fileroot/wenbo.wang/Android/android_U" else echo "External settings env: ANDROID_ROOT_DIR=${ANDROID_ROOT_DIR}" fi if [[ -z "${ANDROID_TARGET_BRANCH}" ]]; then ANDROID_TARGET_BRANCH="openlinux/ott/u-amlogic" else echo "External settings env: ANDROID_TARGET_BRANCH=${ANDROID_TARGET_BRANCH}" fi # update, show. 1/s:stable; 2/t:trunk SWITCH_TARGET_BRANCH=0 SHOW_STABLE_VERSION=0 SHOW_LAST_COMMIT=0 STABLE_OPTION_TYPE=0 # modify, push MODIFY_STABLE_VERSION=0 ADD_COMMIT_MESSAGE=0 PUSH_TOPIC_COMMON=0 # openlinux stable branch BL2_SC2_BRANCH="projects/openlinux/bl-sc2-${STABLE_MAJOR_VERSION}" BL2_S4_BRANCH="projects/openlinux/bl-s4-${STABLE_MAJOR_VERSION}" BL2_S5_BRANCH="projects/openlinux/bl-s5-${STABLE_MAJOR_VERSION}" BL2_T7_BRANCH="projects/openlinux/bl-t7-${STABLE_MAJOR_VERSION}" BL2_S7_BRANCH="projects/openlinux/bl-s7-${STABLE_MAJOR_VERSION}" BL2_S7D_BRANCH="projects/openlinux/bl-s7d-${STABLE_MAJOR_VERSION}" BL2_S6_BRANCH="projects/openlinux/bl-s6-${STABLE_MAJOR_VERSION}" # push uboot.bin to android dir declare -a OPENLINUX_BOARD_TYPE=("ohm_wv4" "oppen_wv4" "tyson" "bluebell" "qurra" "ross" "raman") declare -a OPENLINUX_BOARD_BRANCH=("${BL2_SC2_BRANCH}" "${BL2_S4_BRANCH}" "${BL2_S5_BRANCH}" "${BL2_T7_BRANCH}" "${BL2_S7_BRANCH}" "${BL2_S7D_BRANCH}" "${BL2_S6_BRANCH}") declare -a OPENLINUX_BOARD_CONFIG=("sc2_ah212" "s4_ap222" "s5_ax201" "t7_an400_lpddr4x_bluebell" "s7_bh201" "s7d_bm201" "s6_bl201") ANDROID_DEV_DIR="device/amlogic" ANDROID_DIR_OHM="${ANDROID_ROOT_DIR}/${ANDROID_DEV_DIR}/${OPENLINUX_BOARD_TYPE[0]}" ANDROID_DIR_OPPEN="${ANDROID_ROOT_DIR}/${ANDROID_DEV_DIR}/${OPENLINUX_BOARD_TYPE[1]}" ANDROID_DIR_TYSON="${ANDROID_ROOT_DIR}/${ANDROID_DEV_DIR}/${OPENLINUX_BOARD_TYPE[2]}" ANDROID_DIR_T7="${ANDROID_ROOT_DIR}/${ANDROID_DEV_DIR}/${OPENLINUX_BOARD_TYPE[3]}" ANDROID_DIR_QURRA="${ANDROID_ROOT_DIR}/${ANDROID_DEV_DIR}/${OPENLINUX_BOARD_TYPE[4]}" ANDROID_DIR_ROSS="${ANDROID_ROOT_DIR}/${ANDROID_DEV_DIR}/${OPENLINUX_BOARD_TYPE[5]}" ANDROID_DIR_RAMAN="${ANDROID_ROOT_DIR}/${ANDROID_DEV_DIR}/${OPENLINUX_BOARD_TYPE[6]}" declare -a ANDROID_DIR_LIST=("${ANDROID_DIR_OHM}" "${ANDROID_DIR_OPPEN}" "${ANDROID_DIR_TYSON}" "${ANDROID_DIR_T7}" "${ANDROID_DIR_QURRA}" "${ANDROID_DIR_ROSS}" "${ANDROID_DIR_RAMAN}") # # Array # declare -a BLX_NAME=( \ "bl2 " \ "ddr " \ "bl2e " \ "bl2x " \ "bl30 " \ "rtos_sdk " \ "bl31_1.3 " \ "bl31_2.7 " \ "bl32_3.8 " \ "bl32_3.18 " \ "bl33_v2019 " \ "bl33_v2023 " \ "fip ") declare -a RTOS_NAME=( \ "rtos_arch" \ "rtos_boards" \ "rtos_build" \ "rtos_driver_aocpu" \ "rtos_freertos" \ "rtos_libc" \ "rtos_products_aocpu" \ "rtos_scripts" \ "rtos_soc" ) declare -a BLX_PATH=( \ "bl2/core" \ "bl2/core/ddr_src/ddr" \ "bl2/ree" \ "bl2/tee" \ "bl30/src_ao" \ "bl30/rtos_sdk" \ "bl31/bl31_1.3/src" \ "bl31/bl31_2.7/src" \ "bl32/bl32_3.8/src" \ "bl32/bl32_3.18/src" \ "bl33/v2019" \ "bl33/v2023" \ "fip" ) declare -a RTOS_PATH=( \ "bl30/rtos_sdk/arch/riscv" \ "bl30/rtos_sdk/boards/riscv" \ "bl30/rtos_sdk/build_system" \ "bl30/rtos_sdk/drivers_aocpu" \ "bl30/rtos_sdk/kernel/freertos" \ "bl30/rtos_sdk/lib/libc" \ "bl30/rtos_sdk/products/aocpu" \ "bl30/rtos_sdk/scripts" \ "bl30/rtos_sdk/soc/riscv" ) declare -a BLX_COMMIT=( \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " ") declare -a BLX_REMOTE=( \ "firmware" \ "firmware" \ "firmware" \ "firmware" \ "firmware" \ "origin" \ "firmware" \ "firmware" \ "firmware" \ "firmware" \ "uboot" \ "uboot" \ "fip") declare -a BLX_STABLE_BRANCH=( \ "projects/openlinux/bl-sc2-$STABLE_MAJOR_VERSION" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION-2.7" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION-3.18" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION-2023" \ "projects/openlinux/bl-$STABLE_MAJOR_VERSION") declare -a BLX_TRUNK_BRANCH=( \ "projects/sc2" \ "amlogic-ddr-core" \ "projects/amlogic-dev" \ "projects/amlogic-dev" \ "projects/amlogic-dev" \ "projects/amlogic-dev" \ "amlogic-dev-1.3" \ "amlogic-dev-2.7" \ "amlogic-dev-3.8.0" \ "amlogic-dev-3.18.0" \ "amlogic-dev-2019" \ "amlogic-dev-2023" \ "amlogic-dev") declare -a STABLE_VER_FILE=( \ "Makefile.gcc" \ "NULL" \ "Makefile.gcc" \ "Makefile.gcc" \ "demos/amlogic/makedefs" \ "build_system/Makefile" \ "Makefile" \ "Makefile" \ "core/arch/arm/plat-meson/conf.mk" \ "core/arch/arm/plat-meson/conf.mk" \ "Makefile" \ "Makefile" \ "NULL") declare -a STABLE_VER_INFO=(\ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " " \ " ") declare -a STABLE_VER_TOPIC=( \ "bl2-sc2" \ "NULL" \ "bl2e" \ "bl2x" \ "bl30" \ "rtos_sdk" \ "bl31" \ "bl31" \ "bl32" \ "bl32" \ "bl33" \ "bl33" \ "NULL") # # function # function go_proj() { cd $rootdir output="./pxp_output_$1/" if [ -d ${output} ] ; then rm -fr ${output} fi mkdir ${output} echo "go proj [ $1 ] !!!!!!!!!!!" echo "./mk $1_pxp --update-bl2 --update-bl2e --update-bl2x --update-bl31" echo "" sleep 2 ./mk $1_pxp --update-bl2 --update-bl2e --update-bl2x --update-bl31 if [ -f "./build/u-boot.bin" ]; then echo "run mk ok, found ./build/u-boot.bin" cp -f ./build/u-boot.bin ${output} else echo "run mk error, not find ./build/u-boot.bin" fi cp -f ./bl2/core/bl2.bin.sto ${output}bl2.bin cp -f ./bl2/ree/bl2e.bin ${output}bl2e.bin cp -f ./bl2/tee/bl2x.bin ${output}bl2x.bin cp -f ./bl31_1.3/src/bl31.bin ${output}bl31.bin cp -f ./fip/_tmp/device-fip.bin ${output}device-fip.bin cp -f ./bl33/v2019/build/u-boot.bin ${output}bl33.bin dd if=${output}bl2.bin of=${output}bl2-u1.bin bs=1 count=86016 dd if=${output}bl2.bin of=${output}bl2-u2.bin bs=1 skip=86016 ./fip/c1/aml_encrypt_c1 --bin2hex --input ${output}bl2-u1.bin --usize 32 --bsize 262144 --output ${output}bl2-sram-u1.hex ./fip/c1/aml_encrypt_c1 --bin2hex --input ${output}bl2-u2.bin --usize 32 --bsize 262144 --output ${output}bl2-sram-u2.hex rm -f ${output}bl2-u*.bin tar -czf pxp_output_$1.tar.gz ${output} echo "-------------------------------------------------------------------------" echo "all patterns for [$1] Z1 are ready in ${output}" echo "-------------------------------------------------------------------------" ls -la ${output} echo } function choose_whether_to_continue() { read -r -p "$1 [y/n] " input case $input in [yY][eE][sS]|[yY]) echo "ok, run continue ..." ;; [nN][oO]|[nN]) echo "ok, exit." exit 1 ;; *) echo "Invalid input..." exit 1 ;; esac } function err_exit() { echo "Error: $1" exit 1 } function sync_code() { #echo "begin sync branch: $1/$2" if [ -z $2 ]; then err_exit "branch($2) error !" fi git reset --hard cnt=`git branch |grep test1 -c` if [ $cnt -eq 0 ]; then git checkout -b test1 else git checkout test1 fi cnt=`git branch |grep $2 -c` if [ ! $cnt -eq 0 ]; then git branch -D $2 > /dev/null fi git checkout -t $1/$2 || err_exit "git checkout -t $1/$2 faild !" git fetch --all git reset --hard $1/$2 git pull git branch -D test1 echo } function show_setting_commit() { echo echo "git_show_setting_commit:" echo "===============================" for((i=0;i<${#BLX_NAME[@]};i++)); do echo "# ${BLX_NAME[$i]} : ${BLX_COMMIT[$i]}" done echo "===============================" echo } function show_setting_branch() { echo echo "show_setting_branch:" echo "===============================" for((i=0;i<${#BLX_NAME[@]};i++)); do echo "# ${BLX_NAME[$i]} : ${BLX_BRANCH[$i]}" done echo "===============================" echo } function show_stable_branch_version() { echo echo "show_stable_branch_version:" echo "===============================" #for i in $(seq 0 ${BLX_NAME[@]}); do for((i=0;i<${#BLX_NAME[@]}-1;i++)); do if [ -d $rootdir/${BLX_PATH[$i]} ]; then cd $rootdir/${BLX_PATH[$i]} # stable branch version format: bl-x.y.z; # x is major version, y is minor version, z is patch version if [ "${STABLE_VER_FILE[$i]}" != "NULL" ]; then VER_MAJOR=`grep 'MAJOR_VERSION ' ./${STABLE_VER_FILE[$i]} |grep '=' |awk '{print $3}'` VER_MINOR=`grep 'MINOR_VERSION ' ./${STABLE_VER_FILE[$i]} |grep '=' |awk '{print $3}'` VER_PATCH=`grep 'PATCH_VERSION ' ./${STABLE_VER_FILE[$i]} |grep '=' |awk '{print $3}'` STABLE_VER_INFO[$i]="bl-${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}" fi CURRENT_BRANCH=`git branch |grep "*"| awk '{print $2}'` if [ $i -eq 0 -a "${CURRENT_BRANCH}" = "${BLX_STABLE_BRANCH[0]}" ];then git checkout ${BL2_S4_BRANCH} > /dev/null 2>&1 VER_MAJOR=`grep 'MAJOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_MINOR=`grep 'MINOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_PATCH=`grep 'PATCH_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` STABLE_VER_EXT="bl-${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}" echo "# bl2-s4 : ${STABLE_VER_EXT}" git checkout ${BL2_S5_BRANCH} > /dev/null 2>&1 VER_MAJOR=`grep 'MAJOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_MINOR=`grep 'MINOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_PATCH=`grep 'PATCH_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` STABLE_VER_EXT="bl-${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}" echo "# bl2-s5 : ${STABLE_VER_EXT}" git checkout ${BL2_T7_BRANCH} > /dev/null 2>&1 VER_MAJOR=`grep 'MAJOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_MINOR=`grep 'MINOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_PATCH=`grep 'PATCH_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` STABLE_VER_EXT="bl-${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}" echo "# bl2-t7 : ${STABLE_VER_EXT}" git checkout ${BL2_S7_BRANCH} > /dev/null 2>&1 VER_MAJOR=`grep 'MAJOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_MINOR=`grep 'MINOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_PATCH=`grep 'PATCH_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` STABLE_VER_EXT="bl-${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}" echo "# bl2-s7 : ${STABLE_VER_EXT}" git checkout ${BL2_S7D_BRANCH} > /dev/null 2>&1 VER_MAJOR=`grep 'MAJOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_MINOR=`grep 'MINOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_PATCH=`grep 'PATCH_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` STABLE_VER_EXT="bl-${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}" echo "# bl2-s7d : ${STABLE_VER_EXT}" git checkout ${BL2_S6_BRANCH} > /dev/null 2>&1 VER_MAJOR=`grep 'MAJOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_MINOR=`grep 'MINOR_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` VER_PATCH=`grep 'PATCH_VERSION ' ./${STABLE_VER_FILE[0]} |grep '=' |awk '{print $3}'` STABLE_VER_EXT="bl-${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}" echo "# bl2-s6 : ${STABLE_VER_EXT}" git checkout ${BLX_STABLE_BRANCH[0]} > /dev/null 2>&1 fi fi done for((i=0;i<${#BLX_NAME[@]}-1;i++)); do echo "# ${BLX_NAME[$i]} : ${STABLE_VER_INFO[$i]}" done echo "===============================" echo } function modify_stable_branch_version_info() { local index=$1 # stable branch version format: bl-x.y.z; # x is major version, y is minor version, z is patch version if [ "${STABLE_VER_FILE[${index}]}" != "NULL" ]; then ######################### 1. modify version ############################ # major CURRENT_VER_MAJOG=`grep 'MAJOR_VERSION ' ./${STABLE_VER_FILE[${index}]} |grep '=' |awk '{print $3}'` MODIFY_VER_MAJOR=`echo $MODIFY_STABLE_VERSION | cut -d '.' -f 1` sed -i '/MAJOR_VERSION /s/'$CURRENT_VER_MAJOG'/'$MODIFY_VER_MAJOR'/g' ${STABLE_VER_FILE[${index}]} # minor CURRENT_VER_MINOR=`grep 'MINOR_VERSION ' ./${STABLE_VER_FILE[${index}]} |grep '=' |awk '{print $3}'` MODIFY_VER_MINOR=`echo $MODIFY_STABLE_VERSION | cut -d '.' -f 2` sed -i '/MINOR_VERSION /s/'$CURRENT_VER_MINOR'/'$MODIFY_VER_MINOR'/g' ${STABLE_VER_FILE[${index}]} # patch CURRENT_VER_PATCH=`grep 'PATCH_VERSION ' ./${STABLE_VER_FILE[${index}]} |grep '=' |awk '{print $3}'` MODIFY_VER_PATCH=`echo $MODIFY_STABLE_VERSION | cut -d '.' -f 3` sed -i '/PATCH_VERSION /s/'$CURRENT_VER_PATCH'/'$MODIFY_VER_PATCH'/g' ${STABLE_VER_FILE[${index}]} ######################### 1. modify version ############################ ######################### 2. git add file ############################ git add ${STABLE_VER_FILE[${index}]} CHECK_COMMIT_FORMAT=`echo $ADD_COMMIT_MESSAGE | grep -c '-'` if [ $CHECK_COMMIT_FORMAT -eq 1 ]; then ######################### 3. git commit -m ############################ git commit --sign -m " ${BLX_PATH[${index}]}: stable branch update version: bl-${MODIFY_VER_MAJOR}.${MODIFY_VER_MINOR}.${MODIFY_VER_PATCH} [1/1] PD#${ADD_COMMIT_MESSAGE} Problem: bootloader stable branch(openlinux/bl-${STABLE_MAJOR_VERSION}) update Solution: add version to build message: bl-${MODIFY_VER_MAJOR}.${MODIFY_VER_MINOR}.${MODIFY_VER_PATCH} Verify: ohm/oppen/tyson/t7c/s7/s7d" fi fi } function modify_stable_branch_version() { echo echo "modify_stable_branch_version to: bl-$MODIFY_STABLE_VERSION" #for i in $(seq 0 ${BLX_NAME[@]}); do for((i=0;i<${#BLX_NAME[@]}-1;i++)); do if [ -d $rootdir/${BLX_PATH[$i]} ]; then if [ ${BLX_NAME[$i]} == "rtos_sdk" ]; then cd $rootdir/${RTOS_PATH[2]} else cd $rootdir/${BLX_PATH[$i]} fi modify_stable_branch_version_info $i fi done } function push_stable_branch_version() { echo echo "push_stable_branch_version:" #for i in $(seq 0 ${BLX_NAME[@]}); do for((i=0;i<${#BLX_NAME[@]}-1;i++)); do if [ -d $rootdir/${BLX_PATH[$i]} ]; then if [ ${BLX_NAME[$i]} == "rtos_sdk" ]; then cd $rootdir/${RTOS_PATH[2]} else cd $rootdir/${BLX_PATH[$i]} fi #check bl2/core is at sc2 branch CURRENT_BRANCH=`git branch |grep "*"| awk '{print $2}'` if [ $i -eq 0 -a "${CURRENT_BRANCH}" != "${BLX_STABLE_BRANCH[0]}" ];then echo "bl2 core is not at sc2 branch. please switch branch first !" echo "" continue fi # stable branch version format: bl-x.y.z; # x is major version, y is minor version, z is patch version if [ "${STABLE_VER_TOPIC[$i]}" != "NULL" ]; then echo "" echo "PUSH ${STABLE_VER_TOPIC[$i]} ==>>" git push review HEAD:refs/for/${BLX_STABLE_BRANCH[$i]}%topic=${PUSH_TOPIC_COMMON}-${STABLE_VER_TOPIC[$i]} echo "" if [ "${STABLE_VER_TOPIC[$i]}" == "bl2-sc2" ];then echo "" echo "PUSH bl2-s4 ==>>" BL2_SC2_LAST_COMMIT=`git log --pretty=format:"%h" | head -1 | awk '{print $1}'` git checkout ${BL2_S4_BRANCH} > /dev/null git cherry-pick ${BL2_SC2_LAST_COMMIT} git push review HEAD:refs/for/${BL2_S4_BRANCH}%topic=${PUSH_TOPIC_COMMON}-bl2-s4 git checkout ${BLX_STABLE_BRANCH[$i]} > /dev/null echo "" echo "" echo "PUSH bl2-s5 ==>>" BL2_SC2_LAST_COMMIT=`git log --pretty=format:"%h" | head -1 | awk '{print $1}'` git checkout ${BL2_S5_BRANCH} > /dev/null git cherry-pick ${BL2_SC2_LAST_COMMIT} git push review HEAD:refs/for/${BL2_S5_BRANCH}%topic=${PUSH_TOPIC_COMMON}-bl2-s5 git checkout ${BLX_STABLE_BRANCH[$i]} > /dev/null echo "" echo "" echo "PUSH bl2-t7 ==>>" BL2_SC2_LAST_COMMIT=`git log --pretty=format:"%h" | head -1 | awk '{print $1}'` git checkout ${BL2_T7_BRANCH} > /dev/null git cherry-pick ${BL2_SC2_LAST_COMMIT} git push review HEAD:refs/for/${BL2_T7_BRANCH}%topic=${PUSH_TOPIC_COMMON}-bl2-t7 git checkout ${BLX_STABLE_BRANCH[$i]} > /dev/null echo "" echo "" echo "PUSH bl2-s7 ==>>" BL2_SC2_LAST_COMMIT=`git log --pretty=format:"%h" | head -1 | awk '{print $1}'` git checkout ${BL2_S7_BRANCH} > /dev/null git cherry-pick ${BL2_SC2_LAST_COMMIT} git push review HEAD:refs/for/${BL2_S7_BRANCH}%topic=${PUSH_TOPIC_COMMON}-bl2-s7 git checkout ${BLX_STABLE_BRANCH[$i]} > /dev/null echo "" echo "" echo "PUSH bl2-s7d ==>>" BL2_SC2_LAST_COMMIT=`git log --pretty=format:"%h" | head -1 | awk '{print $1}'` git checkout ${BL2_S7D_BRANCH} > /dev/null git cherry-pick ${BL2_SC2_LAST_COMMIT} git push review HEAD:refs/for/${BL2_S7D_BRANCH}%topic=${PUSH_TOPIC_COMMON}-bl2-s7d git checkout ${BLX_STABLE_BRANCH[$i]} > /dev/null echo "" echo "" echo "PUSH bl2-s6 ==>>" BL2_SC2_LAST_COMMIT=`git log --pretty=format:"%h" | head -1 | awk '{print $1}'` git checkout ${BL2_S6_BRANCH} > /dev/null git cherry-pick ${BL2_SC2_LAST_COMMIT} git push review HEAD:refs/for/${BL2_S6_BRANCH}%topic=${PUSH_TOPIC_COMMON}-bl2-s7d git checkout ${BLX_STABLE_BRANCH[$i]} > /dev/null echo "" fi fi fi done echo } function show_current_branch_info() { echo echo "show_current_branch_commit_info:" echo "===============================" #for i in $(seq 0 ${BLX_NAME[@]}); do for((i=0;i<${#BLX_NAME[@]};i++)); do if [ -d $rootdir/${BLX_PATH[$i]} ]; then if [ ${BLX_NAME[$i]} == "rtos_sdk" ]; then cd $rootdir/${RTOS_PATH[2]} else cd $rootdir/${BLX_PATH[$i]} fi commit=`git rev-parse HEAD` # compare setting commit with current commit if [ ${#BLX_COMMIT[$i]} -gt 20 ]; then if [ "${BLX_COMMIT[$i]}" == "$commit" ]; then echo "[eq] ${BLX_NAME[$i]}: [`git branch --show-current`] `git log --oneline -1`" else echo "[no] ${BLX_NAME[$i]}: [`git branch --show-current`] `git log --oneline -1`" fi else #echo "= ${BLX_NAME[$i]}: `git branch --show-current && git log --oneline -1 | tr -d '\n'`" echo "[--] ${BLX_NAME[$i]}: [`git branch --show-current`] `git log --abbrev=8 --oneline -1 `" CURRENT_BRANCH=`git branch |grep "*"| awk '{print $2}'` if [ $i -eq 0 -a "${CURRENT_BRANCH}" = "${BLX_STABLE_BRANCH[0]}" ];then git checkout ${BL2_S4_BRANCH} > /dev/null 2>&1 echo "[--] ${BLX_NAME[$i]}: [`git branch --show-current`] `git log --abbrev=8 --oneline -1 `" git checkout ${BL2_S5_BRANCH} > /dev/null 2>&1 echo "[--] ${BLX_NAME[$i]}: [`git branch --show-current`] `git log --abbrev=8 --oneline -1 `" git checkout ${BL2_T7_BRANCH} > /dev/null 2>&1 echo "[--] ${BLX_NAME[$i]}: [`git branch --show-current`] `git log --abbrev=8 --oneline -1 `" git checkout ${BL2_S7_BRANCH} > /dev/null 2>&1 echo "[--] ${BLX_NAME[$i]}: [`git branch --show-current`] `git log --abbrev=8 --oneline -1 `" git checkout ${BL2_S7D_BRANCH} > /dev/null 2>&1 echo "[--] ${BLX_NAME[$i]}: [`git branch --show-current`] `git log --abbrev=8 --oneline -1 `" git checkout ${BL2_S6_BRANCH} > /dev/null 2>&1 echo "[--] ${BLX_NAME[$i]}: [`git branch --show-current`] `git log --abbrev=8 --oneline -1 `" git checkout ${BLX_STABLE_BRANCH[0]} > /dev/null 2>&1 fi fi else echo "[--] ${BLX_NAME[$i]}: ------" fi done echo "===============================" echo } function switch_to_target_branch() { echo if [ $SWITCH_TARGET_BRANCH -eq 1 ] ; then echo "branch: trunk" BLX_BRANCH=(${BLX_TRUNK_BRANCH[*]}) elif [ $SWITCH_TARGET_BRANCH -eq 2 ]; then echo "branch: stable" BLX_BRANCH=(${BLX_STABLE_BRANCH[*]}) else exit fi show_setting_branch echo "switch_to_target_branch:" for((i=0;i<${#BLX_NAME[@]}-1;i++)); do if [ -d $rootdir/${BLX_PATH[$i]} ]; then echo "path: ${BLX_PATH[$i]}" cd $rootdir/${BLX_PATH[$i]} sync_code ${BLX_REMOTE[$i]} ${BLX_BRANCH[$i]} if [ ${#BLX_COMMIT[$i]} -gt 20 ]; then git reset --hard ${BLX_COMMIT[$i]} fi else echo "error, path($rootdir/${BLX_PATH[$i]}) not exist!" fi done echo } function modify_stable_sub_version() { echo "###modify_stable_sub_version" # 1. switch to target branch if [ $SWITCH_TARGET_BRANCH -ne 0 ]; then switch_to_target_branch fi # 2. show current branch branch and commit if [ $SHOW_LAST_COMMIT -eq 1 ]; then show_current_branch_info fi # 3. show stable branch last version if [ $SHOW_STABLE_VERSION -eq 1 ]; then show_stable_branch_version fi # 4. modify stable branch last version CHECK_VERSION_FORMAT=`echo $MODIFY_STABLE_VERSION | awk -F'.' '{print NF-1}'` if [ $CHECK_VERSION_FORMAT -eq 2 ]; then modify_stable_branch_version show_stable_branch_version fi # 5. push stable branch last version if [ "$PUSH_TOPIC_COMMON" != "0" ]; then push_stable_branch_version show_current_branch_info fi } function compile_stable_uboot_bin() { echo "# push_uboot_img_to_android_repo" for((i=0;i<${#OPENLINUX_BOARD_TYPE[@]};i++)); do echo echo "<$i.${OPENLINUX_BOARD_TYPE[$i]}>############################### push_uboot_img_to_android_repo." echo echo "#1. check android dev path" if [ -d ${ANDROID_DIR_LIST[$i]} ];then cd ${ANDROID_DIR_LIST[$i]} git reset --hard HEAD~3 git clean -df git fetch --all && git reset --hard && git pull git branch -D master git checkout -t trunk/master git branch -D $ANDROID_TARGET_BRANCH git checkout -t trunk/$ANDROID_TARGET_BRANCH git branch -D master git fetch --all && git reset --hard && git pull cd - else err_exit "Android dir is not exist! (${ANDROID_DIR_LIST[$i]})" fi if [ -f "./build-${OPENLINUX_BOARD_TYPE[i]}-${PUSH_TOPIC_COMMON}/u-boot.bin.signed" ]; then echo echo "# 2/3. build bootloader manual already, copy it directly" cp -fv ./build-${OPENLINUX_BOARD_TYPE[i]}-${PUSH_TOPIC_COMMON}/u-boot.bin.signed ${ANDROID_DIR_LIST[$i]}/bootloader.img cp -fv ./build-${OPENLINUX_BOARD_TYPE[i]}-${PUSH_TOPIC_COMMON}/u-boot.bin.usb.signed ${ANDROID_DIR_LIST[$i]}/upgrade/ cp -fv ./build-${OPENLINUX_BOARD_TYPE[i]}-${PUSH_TOPIC_COMMON}/u-boot.bin.sd.bin.signed ${ANDROID_DIR_LIST[$i]}/upgrade else echo echo "# 2. build booloader image" cd bl2/core && git checkout ${OPENLINUX_BOARD_BRANCH[$i]} || err_exit "cd bl2/core faild !" cd - runcmd="./mk ${OPENLINUX_BOARD_CONFIG[i]} --update-bl2 --update-bl2e --update-bl2x --update-bl31 --update-bl32 --avb2 --vab --fastboot-write" echo "[run cmd]: ${runcmd}" ${runcmd} || err_exit "./mk ${OPENLINUX_BOARD_CONFIG[i]} faild !" if [ -f "./build/u-boot.bin.signed" ];then echo "\n build booloader(${OPENLINUX_BOARD_TYPE[$i]}) SUCCESS." else err_exit "build booloader(${OPENLINUX_BOARD_TYPE[$i]}) FAILED." fi echo echo "# 3. copy booloader img to android dir" cp -fv ./build/u-boot.bin.signed ${ANDROID_DIR_LIST[$i]}/bootloader.img cp -fv ./build/u-boot.bin.usb.signed ${ANDROID_DIR_LIST[$i]}/upgrade/ cp -fv ./build/u-boot.bin.sd.bin.signed ${ANDROID_DIR_LIST[$i]}/upgrade/ fi echo echo "# 4. add commit message" cd ${ANDROID_DIR_LIST[$i]} if [ ! -f "${ANDROID_DIR_LIST[$i]}/bootloader.img" ]; then err_exit " copy bootloader img error, exit." fi git add -u git commit --sign -m " ${OPENLINUX_BOARD_TYPE[$i]}: bootloader stable branch bin for ${PUSH_TOPIC_COMMON} [1/1] PD#${ADD_COMMIT_MESSAGE} Problem: bootloader stable branch(openlinux/bl-${STABLE_MAJOR_VERSION}) update Solution: add version to build message: ${PUSH_TOPIC_COMMON} Verify: local ${OPENLINUX_BOARD_TYPE[$i]}" echo echo "# 5. push booloader img to device/amlogic" git push review HEAD:refs/for/${ANDROID_TARGET_BRANCH}%topic=${PUSH_TOPIC_COMMON} || err_exit " push bootloader img error." cd - echo "<$i.${OPENLINUX_BOARD_TYPE[$i]}># done." echo done } show_help() { echo -e "\e[1;35m [usage] V0.3 2022.09.18\e[0m" echo " $0 -[o:/s/t/c/v/m:/a:/p/j:/h]" echo "" echo -e "\e[1;35m [option] \e[0m" echo " -o : option type. 1:modify stable sub version; 2:compile stable uboot.bin" echo " -s : switch to stable branch, sync code." echo " -t : switch to trunk branch, sync code." echo " -c : print current branch last commit." echo " -v : print stable branch last version." echo " -m : modify stable branch last version x.y.z, eg: -m 3.4.5" echo " -a : add version change and commit message, eg: -a SWPL-83088" echo " -p : push stable branch with topic info. eg: -p BL3.4.4-20220620" echo " -j : set stable branch major version. eg: -j 3.4.0" echo " -h : show help" echo "" echo -e "\e[1;35m [external ENV] \e[0m" echo " Set these ENV externally(not necessary), cmd: export ENV=\${ENV}" echo " STABLE_MAJOR_VERSION (default:${STABLE_MAJOR_VERSION})" echo " ANDROID_ROOT_DIR (default:${ANDROID_ROOT_DIR})" echo " ANDROID_TARGET_BRANCH (default:${ANDROID_TARGET_BRANCH})" echo "" echo -e "\e[1;35m [example]\e[0m" echo " (1) modify stable sub version, and push to stable" echo " $0 -o 1 -m 3.4.9 -a SWPL-85641 -p BL3.4.9-20220912" echo "" echo " (2) compile stable uboot.bin, and push to android" echo " $0 -o 2 -m 3.4.9 -a SWPL-85641 -p BL3.4.9-20220912" echo "" echo " (3) manual compile stable uboot.bin (sc2_ah212 / s4_ap222)" echo " ./mk sc2_ah212 --update-bl2 --update-bl2e --update-bl2x --update-bl31 --update-bl32 --avb2 --vab" echo "" exit 1 } function parser() { if [ -z $1 ]; then show_help return fi while getopts sStThcCvVm:M:o:O:p:P:a:A:j:J:hH opt; do case ${opt} in o|O) STABLE_OPTION_TYPE=${OPTARG} ;; s|S) SWITCH_TARGET_BRANCH=2 ;; t|T) SWITCH_TARGET_BRANCH=1 ;; c|C) SHOW_LAST_COMMIT=1 ;; v|V) SHOW_STABLE_VERSION=1 ;; m|M) MODIFY_STABLE_VERSION=${OPTARG} ;; a|A) ADD_COMMIT_MESSAGE=${OPTARG} ;; j|J) STABLE_MAJOR_VERSION=${OPTARG} ;; p|P) PUSH_TOPIC_COMMON=${OPTARG} ;; h|H) show_help ;; *) show_help ;; esac done } function main() { if [ -f "build_bl2.sh" ]; then rootdir=`pwd -P`/../ fi if [ -d "fip" ]; then rootdir=`pwd -P` fi echo echo "Run start: $rootdir " echo parser $@ # check option type if [ "$STABLE_OPTION_TYPE" = "0" ]; then show_help elif [ "$STABLE_OPTION_TYPE" = "1" ]; then modify_stable_sub_version elif [ "$STABLE_OPTION_TYPE" = "2" ]; then compile_stable_uboot_bin fi echo echo "Run finish." echo } # # start here. # main $@