From 5b30e47220682f103a33de8561f9fdca773e54a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Iwanicki?= Date: Fri, 29 Aug 2025 14:29:32 +0200 Subject: [PATCH] dts-functions: add semver_version_compare to compare versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Can be used to check whether a is '<' '==' or '>' Signed-off-by: MichaƂ Iwanicki --- include/dts-functions.sh | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/include/dts-functions.sh b/include/dts-functions.sh index 6621668..468d0f5 100644 --- a/include/dts-functions.sh +++ b/include/dts-functions.sh @@ -714,16 +714,30 @@ check_flash_chip() { } compare_versions() { + # compare_versions ver1 ver2 # return 1 if ver2 > ver1 # return 0 otherwise - local ver1= - local ver2= + local ver1="$1" + local ver2="$2" + + if [ "$(semver_version_compare "$1" "$2")" -eq -1 ]; then + return 1 + else + return 0 + fi +} + +semver_version_compare() { + # semver_version_compare ver1 ver2 + # echo 0 if ver1 == ver2, 1 if ver1 > ver2 and -1 if ver1 < ver2 + local ver1="$1" + local ver2="$2" local compare= # convert version ending with '-rc' to '-rc.' where is number # as semantic versioning compares whole 'rc' as alphanumeric identifier # which results in rc2 > rc12. More information at https://semver.org/ - ver1=$(sed -r "s/-rc([0-9]+)$/-rc.\1/" <<<"$1") - ver2=$(sed -r "s/-rc([0-9]+)$/-rc.\1/" <<<"$2") + ver1=$(sed -r "s/-rc([0-9]+)$/-rc.\1/" <<<"$ver1") + ver2=$(sed -r "s/-rc([0-9]+)$/-rc.\1/" <<<"$ver2") # convert SeaBIOS versioning x.x.x.x to x.x.x-x so it can be used with semver # checker. Also remove leading zeroes as it's not allowed in semver @@ -736,12 +750,7 @@ compare_versions() { if ! python3 -m semver check "$ver1" || ! python3 -m semver check "$ver2"; then error_exit "Incorrect version format" fi - compare=$(python3 -m semver compare "$ver1" "$ver2") - if [ "$compare" -eq -1 ]; then - return 1 - else - return 0 - fi + python3 -m semver compare "$ver1" "$ver2" } download_bios() {