Utils: Refine codes to parse dependency version
This patch makes the following changes:
1. Create "util_parse_version.sh" for function to parse dependency
versions.
2. Expand parse_version() to support parsing versions from different
types of file.
With this patch, CI is able to auto-parse the tf-m-tests version from
the newly defined txt file instead of CMake file.
Signed-off-by: Xinyu Zhang <xinyu.zhang@arm.com>
Change-Id: Ib5b6d38ead6346ff5482f1e6baabf73ea185eff1
diff --git a/clone.sh b/clone.sh
index 536c16a..72548c9 100755
--- a/clone.sh
+++ b/clone.sh
@@ -30,6 +30,7 @@
set -e
. $(dirname $0)/utils/util_git.sh
+. $(dirname $0)/utils/util_parse_version.sh
# Take into consideration non-CI runs where SHARE_FOLDER variable
# may not be present
@@ -44,21 +45,6 @@
echo "Share Folder path: ${SHARE_FOLDER}"
echo
-# Parse dependency version specified in TF-M CMake configs
-function parse_version() {
- CONFIG_FILE_NAME=$1
- DEPENDENCY_NAME=$2
- CONFIG_FILE_PATH="${SHARE_FOLDER}/${TFM_NAME}/${CONFIG_FILE_NAME}"
-
- VERSION="$(grep "set(${DEPENDENCY_NAME}" ${CONFIG_FILE_PATH} | cut -d\" -f2)"
-
- if [ -z "${VERSION}" ]; then
- VERSION="refs/heads/main"
- fi
-
- echo "${VERSION}"
-}
-
# Must projects
if [ -n "${GERRIT_EVENT_HASH}" ]; then
# If triggered by Gerrit, use its variables
@@ -102,15 +88,15 @@
# Dependency projects
TFM_TESTS_PROJECT="${TFM_TESTS_URL:-}"
-TFM_TESTS_REFSPEC="${TFM_TESTS_REFSPEC:-"$(parse_version lib/ext/tf-m-tests/repo_config_default.cmake TFM_TEST_REPO_VERSION)"}"
+TFM_TESTS_REFSPEC="${TFM_TESTS_REFSPEC:-"$(parse_version lib/ext/tf-m-tests/version.txt version= = 2)"}"
TFM_TESTS_NAME="tf-m-tests"
MBEDTLS_PROJECT="${MBEDTLS_URL:-}"
-MBEDTLS_REFSPEC="${MBEDTLS_VERSION:-"$(parse_version config/config_base.cmake MBEDCRYPTO_VERSION)"}"
+MBEDTLS_REFSPEC="${MBEDTLS_VERSION:-"$(parse_version config/config_base.cmake set\(MBEDCRYPTO_VERSION \" 2)"}"
MBEDTLS_NAME="mbedtls"
MCUBOOT_PROJECT="${MCUBOOT_URL:-}"
-MCUBOOT_REFSPEC="${MCUBOOT_REFSPEC:-"$(parse_version config/config_base.cmake MCUBOOT_VERSION)"}"
+MCUBOOT_REFSPEC="${MCUBOOT_REFSPEC:-"$(parse_version config/config_base.cmake set\(MCUBOOT_VERSION \" 2)"}"
MCUBOOT_NAME="mcuboot"
PSA_ARCH_TESTS_PROJECT="${PSA_ARCH_TESTS_URL:-}"
@@ -118,11 +104,11 @@
PSA_ARCH_TESTS_NAME="psa-arch-tests"
QCBOR_PROJECT="${QCBOR_URL:-}"
-QCBOR_REFSPEC="${QCBOR_VERSION:-"$(parse_version lib/ext/qcbor/CMakeLists.txt QCBOR_VERSION)"}"
+QCBOR_REFSPEC="${QCBOR_VERSION:-"$(parse_version lib/ext/qcbor/CMakeLists.txt set\(QCBOR_VERSION \" 2)"}"
QCBOR_NAME="qcbor"
TFM_EXTRAS_PROJECT="${TFM_EXTRAS_URL:-}"
-TFM_EXTRAS_REFSPEC="${TFM_EXTRAS_REFSPEC:-"$(parse_version lib/ext/tf-m-extras/CMakeLists.txt TFM_EXTRAS_REPO_VERSION)"}"
+TFM_EXTRAS_REFSPEC="${TFM_EXTRAS_REFSPEC:-"$(parse_version lib/ext/tf-m-extras/CMakeLists.txt set\(TFM_EXTRAS_REPO_VERSION \" 2)"}"
TFM_EXTRAS_NAME="tf-m-extras"
QA_TOOLS_PROJECT="https://review.trustedfirmware.org/ci/qa-tools"
diff --git a/utils/util_parse_version.sh b/utils/util_parse_version.sh
new file mode 100644
index 0000000..51d73e2
--- /dev/null
+++ b/utils/util_parse_version.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2023 Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+# Parse dependency version from file
+# Input parameters:
+# RELATIVE_PATH: Relative path to the dependency version config file in TF-M
+# PATTERN: Pattern used to search for the line containing target dependency version
+# SEPARATOR: Separator to split the string
+# COMPONENT_NUM: Decide which separated component is the dependency version
+function parse_version() {
+ RELATIVE_PATH=$1
+ PATTERN=$2
+ SEPARATOR=$3
+ COMPONENT_NUM=$4
+
+ ABSOLUTE_PATH="${SHARE_FOLDER}/${TFM_NAME}/${RELATIVE_PATH}"
+
+ VERSION="$(grep "${PATTERN}" ${ABSOLUTE_PATH} | cut -d${SEPARATOR} -f${COMPONENT_NUM})"
+
+ if [ -z "${VERSION}" ]; then
+ VERSION="refs/heads/main"
+ fi
+
+ echo "${VERSION}"
+}