#!/bin/bash function get_branch() { local oldifs="$IFS" local find_base='0' local base_branch="" local tmp="" IFS=$'\n' tmp=`git branch` # Eg: * (HEAD detached at firmware/projects/sc2) if [[ "${tmp}" =~ "HEAD detached " ]]; then base_branch=${tmp%)*} base_branch=${base_branch##* } CURRENT_BL2_BRANCH=${base_branch} export CURRENT_BL2_BRANCH return fi # No valid information from 'git branch' command for line1 in `git show-branch --current --more=5`; do logmsg=${line1#* } for line2 in `git branch -l -v -a`; do tmp=${line2# } # Eg: * (HEAD detached from 65a3a6e) if [[ "${tmp}" =~ "HEAD detached from" ]]; then continue fi # Eg: remotes/firmware/master e1d4a6f Inital commit if [[ "${tmp}" =~ "${logmsg}" ]]; then base_branch=${tmp#* } base_branch=${base_branch%% *} find_base=1 break fi done if [ ${find_base} == 1 ]; then break fi done IFS="$oldifs" CURRENT_BL2_BRANCH=${base_branch} export CURRENT_BL2_BRANCH return } function check_branch() { local dest_branch="projects/$1" if [ "$1" == "s7d" ]; then dest_branch="projects/amlogic-dev" elif [ "$1" == "t6w" ] || [ "$1" == "t6x" ]; then dest_branch="projects/project_s5_family" fi local str=`git branch --remote | grep ${dest_branch}` if [ "" != "${BL2_BRANCH_ARG}" ]; then echo ==== BL2 BRANCH ${BL2_BRANCH_ARG} SPECIFIED ==== dest_branch="projects/${BL2_BRANCH_ARG}" fi # 1, check if existed amlogic git branch name format if [ "${str}" == "" ]; then echo "can't find ${dest_branch}" else local cur_branch='' local diff=`git diff` # 2, check current branch is based on target soc? get_branch echo ==== current BL2 branch:${CURRENT_BL2_BRANCH} ==== if [[ "${CURRENT_BL2_BRANCH}" == *"${dest_branch}" ]]; then echo ==== NO NEED TO SWITCH BRANCH ==== return fi # 3, if contains uncommitted local changes, stop compile # before branch switch, user must save their local # change. if [ "${diff}" == "" ]; then echo ==== switch branch to ${dest_branch} ==== git checkout "remotes/firmware/$dest_branch" else echo ==== bl2/core/ code is not clean!!! ==== echo ==== Please save your change first! ==== exit -1 fi fi } function build_bl2() { echo -n "Build bl2...Please wait..." local target="$1/bl2.bin" local targetv3="$1/bl2.v3.bin" # $1: src_folder, $2: bin_folder, $3: soc $4: times cd $1 set -e if [ "$ADVANCED_BOOTLOADER" == "1" ]; then if [ "$CONFIG_SKIP_SWITCHBRANCH" != "1" ]; then echo "check_branch $3" fi if [ "$4" == "0" ]; then /bin/bash mk $3 --ddrtype ${CONFIG_DDRFW_TYPE} --dsto elif [ "$4" == "1" ]; then /bin/bash mk $3 --ddrtype ${CONFIG_DDRFW_TYPE} --dusb fi target="$1/bl2.bin*" targetv3="$1/chip_acs.bin" targetvd="$1/ddr_param.bin" else /bin/bash mk $3 fi set +e if [ $? != 0 ]; then cd ${MAIN_FOLDER} echo "Error: Build bl2 failed... abort" exit -1 fi cd ${MAIN_FOLDER} cp ${target} $2 -f if [ -e ${targetv3} ]; then cp ${targetv3} $2 -f fi if [ -e ${targetvd} ]; then cp ${targetvd} $2 -f fi if [ -e ${1}/bl22/bl22.bin ]; then cp ${1}/bl22/bl22.bin $2 -f fi echo "...done" return } function build_bl2e() { echo -n "Build bl2e...Please wait..." local target="$1/bl2e.bin*" # $1: src_folder, $2: bin_folder, $3: soc $4: times if [ "$4" == "3" ]; then return fi cd $1 set -e /bin/bash mk $3 set +e if [ $? != 0 ]; then cd ${MAIN_FOLDER} echo "Error: Build bl2 failed... abort" exit -1 fi cd ${MAIN_FOLDER} cp ${target} $2 -f echo "...done" return } function build_bl2x() { echo -n "Build bl2...Please wait..." local target="$1/bl2x.bin" # $1: src_folder, $2: bin_folder, $3: soc cd $1 if [ "$3" == "c3" ]; then check_branch_bl2x_bl31 fi set -e /bin/bash mk $3 set +e if [ $? != 0 ]; then cd ${MAIN_FOLDER} echo "Error: Build bl2x failed... abort" exit -1 fi cd ${MAIN_FOLDER} cp ${target} $2 -f echo "...done" return }