scripts: Add to output full version information supported [1/6]
PD#SWPL-93083
Problem:
Add script to generate full version info
Solution:
Add script to generate full version info
Verify:
N/A
Change-Id: I2f4f648a9a3408b4f4b2c6c666733d735d41bf8c
Signed-off-by: xiaohu.huang <xiaohu.huang@amlogic.com>
diff --git a/gen_version.sh b/gen_version.sh
new file mode 100755
index 0000000..301e442
--- /dev/null
+++ b/gen_version.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
+#
+# SPDX-License-Identifier: MIT
+#
+
+RTOS_SDK_VERSION_FILE=$1
+RTOS_SDK_MANIFEST_FILE=$2
+RTOS_SDK_MANIFEST_OLD_FILE=$3
+
+echo "#ifndef __SDK_VER_H__" > $RTOS_SDK_VERSION_FILE
+echo "#define __SDK_VER_H__" >> $RTOS_SDK_VERSION_FILE
+echo "" >> $RTOS_SDK_VERSION_FILE
+
+echo -e "#include <stdio.h>\n" >> $RTOS_SDK_VERSION_FILE
+
+COMPILE_TIME=`date +%F" "%T`
+echo "#define CONFIG_BOARD_NAME \"$BOARD\"" >> $RTOS_SDK_VERSION_FILE
+echo "#define CONFIG_PRODUCT_NAME \"$PRODUCT\"" >> $RTOS_SDK_VERSION_FILE
+echo "#define CONFIG_COMPILE_TIME \"$COMPILE_TIME\"" >> $RTOS_SDK_VERSION_FILE
+# Get SDK_VERSION
+pattern="revision="
+keyline=`grep 'default .* revision' $RTOS_SDK_MANIFEST_FILE`
+for keyword in $keyline; do
+ let i++
+ if [[ $keyword == $pattern* ]]; then
+ SDK_VERSION=`echo ${keyword#*${pattern}} | sed 's/\"//g' | sed 's/\/>//g'`
+ break;
+ fi
+done
+echo "#define CONFIG_VERSION_STRING \"$SDK_VERSION\"" >> $RTOS_SDK_VERSION_FILE
+echo "" >> $RTOS_SDK_VERSION_FILE
+
+echo "const char* version_map[] = {" >> $RTOS_SDK_VERSION_FILE
+printf " \"[%-7s %-12s %-12s]\",\n" "cm_hash" "remote_name" "branch" \
+ >> $RTOS_SDK_VERSION_FILE
+GIT_LISTS=$(find ! -path "*/.repo/*" -name ".git")
+for PRODUCT_PATH in $GIT_LISTS;
+do
+ if [ -d $PRODUCT_PATH ];then
+ #echo $PRODUCT_PATH
+ GIT_REMOTE_NAME="$(cd $PRODUCT_PATH && git remote -v 2>/dev/null \
+ | head -n 1 | cut -d " " -f 1)"
+ GIT_NAME=${GIT_REMOTE_NAME##*rtos_sdk/}
+ GIT_1ST_NAME="$(echo ${GIT_NAME} | cut -d / -f 1)"
+ GIT_2ND_NAME=${GIT_REMOTE_NAME##*/}
+ COMMIT_HASH="$(cd $PRODUCT_PATH && git log --oneline -1 2>/dev/null \
+ | head -n 1 | cut -d " " -f 1)"
+ BRANCH=$(cd $PRODUCT_PATH && git branch 2>/dev/null | grep "\*" | cut -d " " -f 2)
+ BRANCH=${BRANCH##*"/"}
+ if [ "${GIT_1ST_NAME}"x = "${GIT_2ND_NAME}"x ];then
+ printf " \"[%-7s %-12s %-12s]\",\n" $COMMIT_HASH \
+ ${GIT_1ST_NAME:0:12} ${BRANCH:0:12} >> $RTOS_SDK_VERSION_FILE
+ else
+ printf " \"[%-7s %-4s %-7s %-12s]\",\n" $COMMIT_HASH \
+ ${GIT_1ST_NAME:0:4} ${GIT_2ND_NAME:0:7} ${BRANCH:0:12} \
+ >> $RTOS_SDK_VERSION_FILE
+ fi
+ else
+ echo "product path:$PRODUCT_PATH is not exist,please check it..."
+ fi
+done
+echo "};" >> $RTOS_SDK_VERSION_FILE
+
+echo "#ifdef CONFIG_VERSION_FULL_INFO" >> $RTOS_SDK_VERSION_FILE
+echo "#define OUTPUT_VERSION_FULL_INFO() \\
+do{ \\
+ for (int i = 0; i < sizeof(version_map) / sizeof(const char*); i++) \\
+ printf(\"%s\\n\", version_map[i]); \\
+} \\
+while(0)" >> $RTOS_SDK_VERSION_FILE
+echo "#else" >> $RTOS_SDK_VERSION_FILE
+echo -e "#define OUTPUT_VERSION_FULL_INFO()">> $RTOS_SDK_VERSION_FILE
+echo "#endif" >> $RTOS_SDK_VERSION_FILE
+
+echo "" >> $RTOS_SDK_VERSION_FILE
+echo "#endif" >> $RTOS_SDK_VERSION_FILE