dts-functions: add semver_version_compare to compare versions

Can be used to check whether a is '<' '==' or '>'

Signed-off-by: Michał Iwanicki <michal.iwanicki@3mdeb.com>
This commit is contained in:
Michał Iwanicki
2025-09-18 15:02:48 +02:00
parent a43e5fa745
commit 5b30e47220
+19 -10
View File
@@ -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<x>' to '-rc.<x>' where <x> is number
# as semantic versioning compares whole 'rc<x>' 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() {