124a8c2d6SJoseph Chen#!/bin/bash 224a8c2d6SJoseph Chenset -e 324a8c2d6SJoseph Chen 4acf80986SJoseph ChenARG_COMMIT=$1 56f2bc86dSJoseph ChenDIFF_SUBSET="scripts/.diff_*" 6f3572ad9SJoseph ChenDIFF_DOC_ALL="scripts/.diff_all.txt" 7f3572ad9SJoseph ChenDIFF_DOC_FIXED="scripts/.diff_fixed.txt" 82a884fcbSJoseph ChenLAST_SEVERITY= 92a884fcbSJoseph ChenLAST_DOC= 10f3572ad9SJoseph Chen 11f3572ad9SJoseph Chenfunction check_doc() 12f3572ad9SJoseph Chen{ 13f3572ad9SJoseph Chen local TOP_SEVERITY LANGUAGE=$1 14f3572ad9SJoseph Chen 15f3572ad9SJoseph Chen if [ "${LANGUAGE}" == "EN" ] ; then 16f3572ad9SJoseph Chen SVT_CRITIAL="critical" 17f3572ad9SJoseph Chen SVT_IMPORTANT="important" 18f3572ad9SJoseph Chen SVT_MODERATE="moderate" 19acf80986SJoseph Chen DOC=`git log ${ARG_COMMIT} -1 --name-only | sed -n "/_EN\.md/p"` 20f3572ad9SJoseph Chen else 21f3572ad9SJoseph Chen SVT_CRITIAL="紧急" 22f3572ad9SJoseph Chen SVT_IMPORTANT="重要" 23f3572ad9SJoseph Chen SVT_MODERATE="普通" 24acf80986SJoseph Chen DOC=`git log ${ARG_COMMIT} -1 --name-only | sed -n "/_CN\.md/p"` 25f3572ad9SJoseph Chen fi 26f3572ad9SJoseph Chen 27f3572ad9SJoseph Chen echo "Checking doc: ${DOC}" 28f3572ad9SJoseph Chen 296f2bc86dSJoseph Chen # check DOS encoding 30acf80986SJoseph Chen git show ${ARG_COMMIT} -1 ${DOC} | sed -n "/^+/p" > ${DIFF_DOC_ALL} 31acf80986SJoseph Chen git show ${ARG_COMMIT} -1 ${DOC} | sed -n "/^+/p" > ${DIFF_DOC_ALL}.dos 326f2bc86dSJoseph Chen dos2unix ${DIFF_DOC_ALL}.dos >/dev/null 2>&1 336f2bc86dSJoseph Chen CSUM1=`md5sum ${DIFF_DOC_ALL} | awk '{ print $1 }'` 346f2bc86dSJoseph Chen CSUM2=`md5sum ${DIFF_DOC_ALL}.dos | awk '{ print $1 }'` 356f2bc86dSJoseph Chen if [ "${CSUM1}" != "${CSUM2}" ]; then 366f2bc86dSJoseph Chen echo "ERROR: ${DOC} is DOS encoding. Fix it by: 'dos2unix ${DOC}'" 376f2bc86dSJoseph Chen exit 1 386f2bc86dSJoseph Chen fi 396f2bc86dSJoseph Chen 40f3572ad9SJoseph Chen TITLE=`sed -n "/^+## /p" ${DIFF_DOC_ALL} | tr -d " +#"` 4139a57210SJoseph Chen DATE=`sed -n "/^+| 20[0-9][0-9]-/p" ${DIFF_DOC_ALL} | tr -d " " | awk -F "|" '{ print $2 }'` 4239a57210SJoseph Chen YEAR=`sed -n "/^+| 20[0-9][0-9]-/p" ${DIFF_DOC_ALL} | tr -d " " | awk -F "|" '{ print $2 }' | awk -F "-" '{ print $1 }'` 43*f7909cbbSJoseph Chen MON=`sed -n "/^+| 20[0-9][0-9]-/p" ${DIFF_DOC_ALL} | tr -d " " | awk -F "|" '{ print $2 }' | awk -F "-" '{ print $2 }'` 44f3572ad9SJoseph Chen FILE=`sed -n "/^+| 20[0-9][0-9]-/p" ${DIFF_DOC_ALL} | tr -d " " | awk -F "|" '{ print $3 }'` 45f3572ad9SJoseph Chen COMMIT=`sed -n "/^+| 20[0-9][0-9]-/p" ${DIFF_DOC_ALL} | tr -d " " | awk -F "|" '{ print $4 }'` 46f3572ad9SJoseph Chen SEVERITY=`sed -n "/^+| 20[0-9][0-9]-/p" ${DIFF_DOC_ALL} | tr -d " " | awk -F "|" '{ print $5 }'` 471ba7d1c8SJoseph Chen END_LINE_3=`tail -n 3 ${DIFF_DOC_ALL} | sed -n '1p'` 481ba7d1c8SJoseph Chen END_LINE_2=`tail -n 3 ${DIFF_DOC_ALL} | sed -n '2p'` 491ba7d1c8SJoseph Chen END_LINE_1=`tail -n 3 ${DIFF_DOC_ALL} | sed -n '3p'` 50958c7bcfSJoseph Chen HOST_YEAR=`date +%Y` 51*f7909cbbSJoseph Chen HOST_MON=`date +%m` 52f3572ad9SJoseph Chen # echo "### ${COMMIT}, ${SEVERITY}, ${TITLE}, ${FILE}" 53f3572ad9SJoseph Chen 54407510a0SJoseph Chen # check blank line after Heading 1 55407510a0SJoseph Chen HEADING_1=`sed -n '1p' ${DOC}` 56407510a0SJoseph Chen if sed -n '2p' ${DOC} | grep -q [a-z,A-Z] ; then 57958c7bcfSJoseph Chen echo "ERROR: ${DOC}: Please add blank line after '${HEADING_1}'" 58407510a0SJoseph Chen exit 1 59407510a0SJoseph Chen fi 60407510a0SJoseph Chen 618e4858bdSJoseph Chen # check space 628e4858bdSJoseph Chen if sed -n "/##/p" ${DOC} | grep -v '## [a-z,A-Z]' ; then 63958c7bcfSJoseph Chen echo "ERROR: ${DOC}: Please only 1 space between '#' and word" 648e4858bdSJoseph Chen exit 1 658e4858bdSJoseph Chen fi 668e4858bdSJoseph Chen 670287fa94SJoseph Chen # check new content location 68acf80986SJoseph Chen if ! git show ${ARG_COMMIT} -1 ${DOC} | grep -q 'Release Note' ; then 69958c7bcfSJoseph Chen echo "ERROR: ${DOC}: Please add new content at the top but not bottom" 700287fa94SJoseph Chen exit 1 710287fa94SJoseph Chen fi 720287fa94SJoseph Chen 736c6cd5efSJoseph Chen # check title 742bef28e8SJoseph Chen if grep -Eq '### WARN|### WARNING|### Warning|### warn|### warning' ${DIFF_DOC_ALL} ; then 752bef28e8SJoseph Chen echo "ERROR: ${DOC}: Please use '### Warn'" 762bef28e8SJoseph Chen exit 1 772bef28e8SJoseph Chen fi 782bef28e8SJoseph Chen 796c6cd5efSJoseph Chen if grep -Eq '### NEW|### new' ${DIFF_DOC_ALL} ; then 806c6cd5efSJoseph Chen echo "ERROR: ${DOC}: Please use '### New'" 816c6cd5efSJoseph Chen exit 1 826c6cd5efSJoseph Chen fi 836c6cd5efSJoseph Chen 846c6cd5efSJoseph Chen if grep -Eq '### FIXED|### fixed' ${DIFF_DOC_ALL} ; then 856c6cd5efSJoseph Chen echo "ERROR: ${DOC}: Please use '### Fixed'" 866c6cd5efSJoseph Chen exit 1 876c6cd5efSJoseph Chen fi 886c6cd5efSJoseph Chen 89*f7909cbbSJoseph Chen # check year/month 9039a57210SJoseph Chen if [ "${HOST_YEAR}" != "${YEAR}" ]; then 9139a57210SJoseph Chen echo "ERROR: ${DOC}: '${DATE}' is wrong, the year should be ${HOST_YEAR}" 9239a57210SJoseph Chen exit 1 9339a57210SJoseph Chen fi 9439a57210SJoseph Chen 95*f7909cbbSJoseph Chen if [ "${HOST_MON}" != "${MON}" ]; then 96*f7909cbbSJoseph Chen echo "ERROR: ${DOC}: '${DATE}' is wrong, the month should be ${HOST_MON}" 97*f7909cbbSJoseph Chen exit 1 98*f7909cbbSJoseph Chen fi 99*f7909cbbSJoseph Chen 1000287fa94SJoseph Chen # check TAB before index of 'New' body 1010287fa94SJoseph Chen if grep -q $'\t[0-9]' ${DOC} ; then 1020287fa94SJoseph Chen echo "ERROR: ${DOC}: Don't add TAB before index:" 1030287fa94SJoseph Chen grep $'\t[0-9]' ${DOC} 1040287fa94SJoseph Chen exit 1 1050287fa94SJoseph Chen fi 1060287fa94SJoseph Chen 10777aaba73SJoseph Chen # check upper case and line end 10877aaba73SJoseph Chen if [ "${LANGUAGE}" == "EN" ] ; then 10977aaba73SJoseph Chen if grep -q '^[0-9]\. [a-z]' ${DOC} ; then 11077aaba73SJoseph Chen echo "ERROR: ${DOC}: Please use upper case of first word(i.e. \"1. add ..\" => \"1. Add ...\"):" 11177aaba73SJoseph Chen grep '^[0-9]\. [a-z]' ${DOC} 11277aaba73SJoseph Chen exit 1 11377aaba73SJoseph Chen fi 11477aaba73SJoseph Chen 11577aaba73SJoseph Chen # check end with '.' 11677aaba73SJoseph Chen if sed -n '/^[0-9]\. [A-Z]/p' ${DOC} | grep -q '[^.]$' ; then 11777aaba73SJoseph Chen echo "ERROR: ${DOC}: Please end line with '.'" 11877aaba73SJoseph Chen grep '^[0-9]\. [A-Z]' ${DOC} | grep '[^.]$' 11977aaba73SJoseph Chen exit 1 12077aaba73SJoseph Chen fi 12100951929SJoseph Chen 12200951929SJoseph Chen # check Chinese language 12300951929SJoseph Chen if grep -P '[\x{4e00}-\x{9fa5}]' ${DOC} ; then 12400951929SJoseph Chen echo "ERROR: ${DOC}: The Chinese language was found" 12500951929SJoseph Chen exit 1 12600951929SJoseph Chen fi 12777aaba73SJoseph Chen else 12877aaba73SJoseph Chen # check end with '。' 12977aaba73SJoseph Chen if sed -n '/^[0-9]\. /p' ${DOC} | grep -q '[^。]$' ; then 13077aaba73SJoseph Chen echo "ERROR: ${DOC}: Please end line with '。'" 13177aaba73SJoseph Chen grep '^[0-9]\. ' ${DOC} | grep '[^。]$' 13277aaba73SJoseph Chen exit 1 13377aaba73SJoseph Chen fi 13477aaba73SJoseph Chen fi 13577aaba73SJoseph Chen 1362d300a6dSJoseph Chen # check space after index of 'New' body 1372d300a6dSJoseph Chen SUM1=`grep '^[0-9]\.' ${DOC} | wc -l` 1382d300a6dSJoseph Chen SUM2=`grep '^[0-9]\.[[:blank:]]' ${DOC} | wc -l` 1392d300a6dSJoseph Chen if [ "$SUM1" != "$SUM2" ]; then 1402d300a6dSJoseph Chen echo "ERROR: ${DOC}: Please add space after index (e.g: '1. ' but not '1.'):" 1412d300a6dSJoseph Chen grep '^+[0-9]\.' ${DIFF_DOC_ALL} 1422d300a6dSJoseph Chen exit 1 1432d300a6dSJoseph Chen fi 1442d300a6dSJoseph Chen 145f3572ad9SJoseph Chen # check standalone file 146fd99385aSJoseph Chen if ! echo ${FILE} | grep -Eq '\.bin|\.elf|\.img' ; then 147fd99385aSJoseph Chen echo "ERROR: ${DOC}: '${FILE}' missing the file format suffix" 148fd99385aSJoseph Chen exit 1 149fd99385aSJoseph Chen fi 150f3572ad9SJoseph Chen if ! echo ${FILE} | grep -q { ; then 151acf80986SJoseph Chen if ! git log ${ARG_COMMIT} -1 --name-only | grep -q ${FILE}; then 1520f8ea74fSJoseph Chen echo "ERROR: ${DOC}: '${FILE}' is not updated in this patch" 153f3572ad9SJoseph Chen exit 1 154f3572ad9SJoseph Chen fi 155f3572ad9SJoseph Chen fi 156f3572ad9SJoseph Chen 157f3572ad9SJoseph Chen # check title 158f3572ad9SJoseph Chen if [ "${TITLE}" != "${FILE}" ]; then 159f3572ad9SJoseph Chen echo "ERROR: ${DOC}: Title '${TITLE}' is not match with '${FILE}'" 160f3572ad9SJoseph Chen exit 1 161f3572ad9SJoseph Chen fi 162f3572ad9SJoseph Chen 163f3572ad9SJoseph Chen # check commit 164f3572ad9SJoseph Chen COMMIT=${COMMIT//#/ } 165f3572ad9SJoseph Chen for LIST in ${COMMIT}; do 166f3572ad9SJoseph Chen CMT=`echo ${LIST} | cut -d : -f 2` 167acf80986SJoseph Chen if ! git log ${ARG_COMMIT} -1 | grep -q ${CMT} ; then 1682d300a6dSJoseph Chen echo "ERROR: ${DOC}: '${CMT}' is not match in commit message" 169f3572ad9SJoseph Chen exit 1 170f3572ad9SJoseph Chen fi 17139bfe203SJoseph Chen 17239bfe203SJoseph Chen if ! echo ${FILE} | grep -q { ; then 17339bfe203SJoseph Chen if echo ${FILE} | grep -Eq 'spl_|tpl_|bl31_|bl32_|tee_' ; then 17439bfe203SJoseph Chen FILE_PATH=`find -name ${FILE}` 175acf80986SJoseph Chen if [ -z "${FILE_PATH}" ]; then 176acf80986SJoseph Chen echo "ERROR: ${DOC}: No ${FILE}" 177acf80986SJoseph Chen exit 1 178acf80986SJoseph Chen fi 17939bfe203SJoseph Chen if ! strings ${FILE_PATH} | grep -q ${CMT} ; then 18039bfe203SJoseph Chen echo "ERROR: ${DOC}: ${FILE} is not build from '${CMT}'" 18139bfe203SJoseph Chen exit 1 18239bfe203SJoseph Chen fi 18339bfe203SJoseph Chen fi 18439bfe203SJoseph Chen fi 185f3572ad9SJoseph Chen done 186f3572ad9SJoseph Chen 187f3572ad9SJoseph Chen # check severity 188f3572ad9SJoseph Chen if [ "${SEVERITY}" != "${SVT_CRITIAL}" -a "${SEVERITY}" != "${SVT_IMPORTANT}" -a "${SEVERITY}" != "${SVT_MODERATE}" ]; then 189f3572ad9SJoseph Chen echo "ERROR: ${DOC}: Unknown main severity: ${SEVERITY}" 190f3572ad9SJoseph Chen exit 1 191f3572ad9SJoseph Chen fi 192f3572ad9SJoseph Chen 193f3572ad9SJoseph Chen # check horizontal line 1941ba7d1c8SJoseph Chen if [ "${END_LINE_2}" != "+------" ]; then 195958c7bcfSJoseph Chen echo "ERROR: ${DOC}: Please add horizontal line '------' at the last of new content" 196f3572ad9SJoseph Chen exit 1 197f3572ad9SJoseph Chen fi 1981ba7d1c8SJoseph Chen if [ "${END_LINE_3}" != "+" ]; then 199958c7bcfSJoseph Chen echo "ERROR: ${DOC}: Please add blank line before horizontal line '------'" 2001ba7d1c8SJoseph Chen exit 1 2011ba7d1c8SJoseph Chen fi 2021ba7d1c8SJoseph Chen if [ "${END_LINE_1}" != "+" ]; then 203958c7bcfSJoseph Chen echo "ERROR: ${DOC}: Please add blank line after horizontal line '------'" 2042c1affb8SJoseph Chen exit 1 2052c1affb8SJoseph Chen fi 2062c1affb8SJoseph Chen 207f3572ad9SJoseph Chen # check 'Fixed' content 208f3572ad9SJoseph Chen if grep -q "^+### Fixed" ${DIFF_DOC_ALL} ; then 209f3572ad9SJoseph Chen awk -v RS='### Fixed' 'END{printf "%s", $0}' ${DIFF_DOC_ALL} > ${DIFF_DOC_FIXED} 210f3572ad9SJoseph Chen sed -i "/^$/d" ${DIFF_DOC_FIXED} 211f3572ad9SJoseph Chen sed -i "/Index/d" ${DIFF_DOC_FIXED} 212f3572ad9SJoseph Chen sed -i "/---/d" ${DIFF_DOC_FIXED} 213f3572ad9SJoseph Chen sed -i "/^+$/d" ${DIFF_DOC_FIXED} 214f3572ad9SJoseph Chen 215f3572ad9SJoseph Chen while read LINE 216f3572ad9SJoseph Chen do 217f3572ad9SJoseph Chen EACH_SEVERITY=`echo "${LINE}" | awk -F "|" '{ print $3 }' | tr -d " "` 218f3572ad9SJoseph Chen if [ "${EACH_SEVERITY}" != "${SVT_CRITIAL}" -a "${EACH_SEVERITY}" != "${SVT_IMPORTANT}" -a "${EACH_SEVERITY}" != "${SVT_MODERATE}" ]; then 21913413eecSJoseph Chen if [ -z "${EACH_SEVERITY}" ]; then 22013413eecSJoseph Chen echo "ERROR: ${DOC}: No severity found, please use Table to list what you '### Fixed'" 22113413eecSJoseph Chen else 222f3572ad9SJoseph Chen echo "ERROR: ${DOC}: Unknown severity: ${EACH_SEVERITY}" 22313413eecSJoseph Chen fi 224f3572ad9SJoseph Chen exit 1 225f3572ad9SJoseph Chen fi 226f3572ad9SJoseph Chen 227f3572ad9SJoseph Chen # echo "## EACH: $EACH_SEVERITY" 228f3572ad9SJoseph Chen if [ -z "${TOP_SEVERITY}" ]; then 229f3572ad9SJoseph Chen TOP_SEVERITY="${EACH_SEVERITY}" 230f3572ad9SJoseph Chen elif [ "${TOP_SEVERITY}" == "${SVT_MODERATE}" ]; then 231f3572ad9SJoseph Chen if [ "${EACH_SEVERITY}" == "${SVT_CRITIAL}" -o "${EACH_SEVERITY}" == "${SVT_IMPORTANT}" ]; then 232f3572ad9SJoseph Chen TOP_SEVERITY="${EACH_SEVERITY}" 233f3572ad9SJoseph Chen fi 234f3572ad9SJoseph Chen elif [ "${TOP_SEVERITY}" == "${SVT_IMPORTANT}" ]; then 235f3572ad9SJoseph Chen if [ "${EACH_SEVERITY}" == "${SVT_CRITIAL}" ]; then 236f3572ad9SJoseph Chen TOP_SEVERITY="${EACH_SEVERITY}" 237f3572ad9SJoseph Chen fi 238f3572ad9SJoseph Chen fi 239f3572ad9SJoseph Chen done < ${DIFF_DOC_FIXED} 240f3572ad9SJoseph Chen 241f3572ad9SJoseph Chen if [ "${SEVERITY}" != "${TOP_SEVERITY}" ]; then 2422a884fcbSJoseph Chen echo "ERROR: ${DOC}: Top severity should be '${TOP_SEVERITY}' as it's the highest level of all sub severity" 243f3572ad9SJoseph Chen exit 1 244f3572ad9SJoseph Chen fi 2452a884fcbSJoseph Chen 2462a884fcbSJoseph Chen # check top severity miss match 2472a884fcbSJoseph Chen if [ ! -z ${LAST_SEVERITY} ]; then 2482a884fcbSJoseph Chen if [ "${LAST_SEVERITY}" == "普通" -a "${TOP_SEVERITY}" != "moderate" ]; then 2492a884fcbSJoseph Chen MISS_MATCH="y" 2502a884fcbSJoseph Chen elif [ "${LAST_SEVERITY}" == "重要" -a "${TOP_SEVERITY}" != "important" ]; then 2512a884fcbSJoseph Chen MISS_MATCH="y" 2522a884fcbSJoseph Chen elif [ "${LAST_SEVERITY}" == "紧急" -a "${TOP_SEVERITY}" != "critical" ]; then 2532a884fcbSJoseph Chen MISS_MATCH="y" 2542a884fcbSJoseph Chen elif [ "${LAST_SEVERITY}" == "moderate" -a "${TOP_SEVERITY}" != "普通" ]; then 2552a884fcbSJoseph Chen MISS_MATCH="y" 2562a884fcbSJoseph Chen elif [ "${LAST_SEVERITY}" == "important" -a "${TOP_SEVERITY}" != "重要" ]; then 2572a884fcbSJoseph Chen MISS_MATCH="y" 2582a884fcbSJoseph Chen elif [ "${LAST_SEVERITY}" == "critical" -a "${TOP_SEVERITY}" != "紧急" ]; then 2592a884fcbSJoseph Chen MISS_MATCH="y" 2602a884fcbSJoseph Chen fi 2612a884fcbSJoseph Chen 26277aaba73SJoseph Chen if [ "${MISS_MATCH}" == "y" ]; then 2632a884fcbSJoseph Chen echo "ERROR: ${DOC}: top Severity is '${SEVERITY}', while ${LAST_DOC}: top Severity is '${LAST_SEVERITY}'" 2642a884fcbSJoseph Chen echo " Available Severity types are: moderate(普通), important(重要), critical(紧急)" 2652a884fcbSJoseph Chen exit 1 2662a884fcbSJoseph Chen fi 2672a884fcbSJoseph Chen fi 2682a884fcbSJoseph Chen 2692a884fcbSJoseph Chen LAST_SEVERITY="${SEVERITY}" 2702a884fcbSJoseph Chen LAST_DOC="${DOC}" 271f3572ad9SJoseph Chen fi 272f3572ad9SJoseph Chen} 273f3572ad9SJoseph Chen 274f3572ad9SJoseph Chenfunction check_docs() 275f3572ad9SJoseph Chen{ 276732d9493SJoseph Chen if git log ${ARG_COMMIT} -1 --name-only | sed -n '5p' | grep -Eq '^ Revert "' ; then 277732d9493SJoseph Chen return; 278732d9493SJoseph Chen fi 279732d9493SJoseph Chen 280acf80986SJoseph Chen if git log ${ARG_COMMIT} -1 --name-only | grep -Eq '\.bin|\.elf' ; then 281acf80986SJoseph Chen DOC_CN=`git log ${ARG_COMMIT} -1 --name-only | sed -n "/_CN\.md/p"` 282acf80986SJoseph Chen DOC_EN=`git log ${ARG_COMMIT} -1 --name-only | sed -n "/_EN\.md/p"` 283f3572ad9SJoseph Chen if [ -z "${DOC_CN}" -o -z "${DOC_EN}" ]; then 284acf80986SJoseph Chen echo "ERROR: Should update CN and EN Release-Note when .bin/elf changed" 285f3572ad9SJoseph Chen exit 1 286f3572ad9SJoseph Chen fi 287755bd534SJoseph Chen 2886c6cd5efSJoseph Chen NUM=`git log ${ARG_COMMIT} -1 --name-only | sed -n "/\.md/p" | wc -l` 2896c6cd5efSJoseph Chen if [ ${NUM} -gt 2 ]; then 2906c6cd5efSJoseph Chen echo "ERROR: More than 2 release note are updated" 2916c6cd5efSJoseph Chen exit 1 2926c6cd5efSJoseph Chen fi 2936c6cd5efSJoseph Chen 294755bd534SJoseph Chen if ! which dos2unix > /dev/null 2>&1 ; then 295755bd534SJoseph Chen echo "ERROR: No 'dos2unix'. Fix by: sudo apt-get install dos2unix" 296755bd534SJoseph Chen exit 1 297755bd534SJoseph Chen fi 298755bd534SJoseph Chen 299f3572ad9SJoseph Chen check_doc CN 300f3572ad9SJoseph Chen check_doc EN 301f3572ad9SJoseph Chen fi 3026f2bc86dSJoseph Chen 3036f2bc86dSJoseph Chen rm -f ${DIFF_SUBSET} 304f3572ad9SJoseph Chen} 305f3572ad9SJoseph Chen 30615aaf94fSJoseph Chenfunction pack_loader_image() 30724a8c2d6SJoseph Chen{ 30815aaf94fSJoseph Chen for FILE in `ls ./RKBOOT/*MINIALL*.ini` 30924a8c2d6SJoseph Chen do 31015aaf94fSJoseph Chen if [ "${FILE}" = "./RKBOOT/RK302AMINIALL.ini" -o \ 31115aaf94fSJoseph Chen "${FILE}" = "./RKBOOT/RK30BMINIALL.ini" -o \ 31215aaf94fSJoseph Chen "${FILE}" = "./RKBOOT/RK30MINIALL.ini" -o \ 31315aaf94fSJoseph Chen "${FILE}" = "./RKBOOT/RK310BMINIALL.ini" ]; then 31424a8c2d6SJoseph Chen continue; 31524a8c2d6SJoseph Chen fi 31624a8c2d6SJoseph Chen 31715aaf94fSJoseph Chen if grep -q '^PATH=img/' ${FILE}; then 31807c86261SJoseph Chen continue; 31907c86261SJoseph Chen fi 32007c86261SJoseph Chen 32115aaf94fSJoseph Chen echo "Pack loader: ${FILE}" 32215aaf94fSJoseph Chen ./tools/boot_merger ${FILE} 323f3822d68SJoseph Chen rm -f *loader*.bin *download*.bin *idblock*.img 32424a8c2d6SJoseph Chen echo 32524a8c2d6SJoseph Chen done 32624a8c2d6SJoseph Chen} 32724a8c2d6SJoseph Chen 32815aaf94fSJoseph Chenfunction pack_trust_image() 32924a8c2d6SJoseph Chen{ 33024a8c2d6SJoseph Chen # Pack 32-bit trust 33115aaf94fSJoseph Chen for FILE in `ls ./RKTRUST/*TOS*.ini` 33224a8c2d6SJoseph Chen do 33315aaf94fSJoseph Chen if ! test -s ${FILE}; then 334075296bdSJoseph Chen continue; 33515aaf94fSJoseph Chen elif ! grep -q 'TOS' ${FILE}; then 336d4bf7444SJoseph Chen continue; 33715aaf94fSJoseph Chen elif grep -q '^PATH=img/' ${FILE}; then 33807c86261SJoseph Chen continue; 33907c86261SJoseph Chen fi 34007c86261SJoseph Chen 34115aaf94fSJoseph Chen echo "Pack trust: ${FILE}" 34224a8c2d6SJoseph Chen # Parse orignal path 34315aaf94fSJoseph Chen TOS=`sed -n "/TOS=/s/TOS=//p" ${FILE}|tr -d '\r'` 34415aaf94fSJoseph Chen TOS_TA=`sed -n "/TOSTA=/s/TOSTA=//p" ${FILE}|tr -d '\r'` 34524a8c2d6SJoseph Chen 34624a8c2d6SJoseph Chen # replace "./tools/rk_tools/" with "./" to compatible legacy ini content of rkdevelop branch 34724a8c2d6SJoseph Chen TOS=$(echo ${TOS} | sed "s/tools\/rk_tools\//\.\//g") 34824a8c2d6SJoseph Chen TOS_TA=$(echo ${TOS_TA} | sed "s/tools\/rk_tools\//\.\//g") 34924a8c2d6SJoseph Chen 3509d00b70aSJoseph Chen if [ x${TOS_TA} != x -a x${TOS} != x ]; then 35124a8c2d6SJoseph Chen ./tools/loaderimage --pack --trustos ${TOS} ./trust.img 0x68400000 35224a8c2d6SJoseph Chen ./tools/loaderimage --pack --trustos ${TOS_TA} ./trust_with_ta.img 0x68400000 3539d00b70aSJoseph Chen elif [ ${TOS} ]; then 35424a8c2d6SJoseph Chen ./tools/loaderimage --pack --trustos ${TOS} ./trust.img 0x68400000 3559d00b70aSJoseph Chen elif [ ${TOS_TA} ]; then 35624a8c2d6SJoseph Chen ./tools/loaderimage --pack --trustos ${TOS_TA} ./trust.img 0x68400000 35724a8c2d6SJoseph Chen else 35824a8c2d6SJoseph Chen exit 1 35924a8c2d6SJoseph Chen fi 360f3822d68SJoseph Chen rm -f trust*.img 36124a8c2d6SJoseph Chen echo 36224a8c2d6SJoseph Chen done 36324a8c2d6SJoseph Chen 36424a8c2d6SJoseph Chen # Pack 64-bit trust 36515aaf94fSJoseph Chen for FILE in `ls ./RKTRUST/*TRUST*.ini` 36624a8c2d6SJoseph Chen do 36715aaf94fSJoseph Chen if grep -q '^PATH=img/' ${FILE}; then 36807c86261SJoseph Chen continue; 36907c86261SJoseph Chen fi 37007c86261SJoseph Chen 37115aaf94fSJoseph Chen echo "Pack trust: ${FILE}" 37215aaf94fSJoseph Chen ./tools/trust_merger ${FILE} 37315aaf94fSJoseph Chen rm -f trust*.img 37424a8c2d6SJoseph Chen echo 37524a8c2d6SJoseph Chen done 37624a8c2d6SJoseph Chen} 37724a8c2d6SJoseph Chen 37815aaf94fSJoseph Chenfunction check_dirty() 3797448aaf2SJoseph Chen{ 380f3572ad9SJoseph Chen for FILE in `find -name '*spl*.bin' -o -name '*tpl*.bin' -o -name '*usbplug*.bin' -o -name '*bl31*.elf' -o -name '*bl32*.bin'`; do 381f3572ad9SJoseph Chen echo "Checking clean: ${FILE}" 38215aaf94fSJoseph Chen if strings ${FILE} | grep '\-dirty ' ; then 38315aaf94fSJoseph Chen echo "ERROR: ${FILE} is dirty" 3847448aaf2SJoseph Chen exit 1 3857448aaf2SJoseph Chen fi 3867448aaf2SJoseph Chen done 3877448aaf2SJoseph Chen} 3887448aaf2SJoseph Chen 38915aaf94fSJoseph Chenfunction check_stripped() 390c0efc7efSJoseph Chen{ 39115aaf94fSJoseph Chen for FILE in `find -name '*bl31*.elf'`; do 39215aaf94fSJoseph Chen echo "Checking strip: ${FILE}" 39315aaf94fSJoseph Chen INFO=`file ${FILE}` 39415aaf94fSJoseph Chen if echo ${INFO} | grep -q "not stripped" ; then 39515aaf94fSJoseph Chen echo "ERROR: ${FILE} is not stripped" 396c0efc7efSJoseph Chen exit 1 397c0efc7efSJoseph Chen fi 398c0efc7efSJoseph Chen done 399c0efc7efSJoseph Chen} 400c0efc7efSJoseph Chen 401f3572ad9SJoseph Chenfunction check_mode() 402f3572ad9SJoseph Chen{ 403f3572ad9SJoseph Chen echo "Checking file mode..." 404acf80986SJoseph Chen if git whatchanged ${ARG_COMMIT} -1 --oneline | sed -n '/RKBOOT\//p; /RKTRUST\//p; /bin\//p; /doc\//p;' | awk '{ print $2 }' | grep -q 755 ; then 405acf80986SJoseph Chen git whatchanged ${ARG_COMMIT} -1 --oneline | sed -n '/RKBOOT\//p; /RKTRUST\//p; /bin\//p; /doc\//p;' | grep 755 4060f8ea74fSJoseph Chen echo "ERROR: Set 644 file permission but not 755." 407f3572ad9SJoseph Chen exit 1 408f3572ad9SJoseph Chen fi 409f3572ad9SJoseph Chen} 410f3572ad9SJoseph Chen 41115aaf94fSJoseph Chenfunction finish() 41224a8c2d6SJoseph Chen{ 413f3572ad9SJoseph Chen echo "OK, everything is nice." 41424a8c2d6SJoseph Chen echo 41524a8c2d6SJoseph Chen} 41624a8c2d6SJoseph Chen 417f3572ad9SJoseph Chencheck_mode 418f3572ad9SJoseph Chencheck_docs 4197448aaf2SJoseph Chencheck_dirty 420c0efc7efSJoseph Chencheck_stripped 42124a8c2d6SJoseph Chenpack_loader_image 42224a8c2d6SJoseph Chenpack_trust_image 42324a8c2d6SJoseph Chenfinish 424