11"""Version rules for toolchains"""
22
3+ load ("@bazel_skylib//lib:versions.bzl" , compare = "versions" )
34load (
45 "@toolchains_arm_gnu//toolchain/archives:aarch64_none_elf.bzl" ,
56 "AARCH64_NONE_ELF" ,
@@ -17,34 +18,12 @@ load(
1718 "ARM_NONE_LINUX_GNUEABIHF" ,
1819)
1920
20- def _semver (version ):
21- """Parse a semantic version string into a list of integers."""
22- parts = [int (i .split ("-" )[0 ]) for i in version .split ("." )]
23- return struct (
24- major = parts [0 ],
25- minor = parts [1 ],
26- patch = parts [2 ],
27- )
28-
29- def _compare_versions (left , right ):
30- """Compare two semantic versions."""
31- left = _semver (left )
32- right = _semver (right )
33-
34- # (a < b): -1, (a > b): 1, (a == b): 0.
35- compare = lambda a , b : int (a > b ) - int (a < b )
36-
37- return compare (left .major , right .major ) or \
38- compare (left .minor , right .minor ) or \
39- compare (left .patch , right .patch ) or \
40- 0
41-
4221def max_version (versions ):
4322 """Obtains the minimum version from the list of version strings."""
4423 if versions :
4524 maximum = versions .pop (0 )
4625 for version in versions :
47- if _compare_versions (maximum , version ) < 0 :
26+ if not compare . is_at_most (maximum , version ):
4827 maximum = version
4928 return maximum
5029 return None
@@ -54,7 +33,7 @@ def min_version(versions):
5433 if versions :
5534 minimum = versions .pop (0 )
5635 for version in versions :
57- if _compare_versions (minimum , version ) > 0 :
36+ if not compare . is_at_least (minimum , version ):
5837 minimum = version
5938 return minimum
6039 return None
0 commit comments