diff --git a/platform.py b/platform.py index ec1154b..516fed4 100644 --- a/platform.py +++ b/platform.py @@ -288,11 +288,24 @@ class Espressif32Platform(PlatformBase): def extract_toolchain_versions(tool_deps): def _parse_version(original_version): assert original_version - match = re.match(r"^gcc(\d+)_(\d+)_(\d+)\-esp\-(.+)$", original_version) - if not match: - raise ValueError("Bad package version `%s`" % original_version) - assert len(match.groups()) == 4 - return "%s.%s.%s+%s" % (match.groups()) + version_patterns = ( + r"^gcc(?P\d+)_(?P\d+)_(?P\d+)-esp-(?P.+)$", + r"^esp-(?P.+)-(?P\d+)\.(?P\d+)\.?(?P\d+)$", + r"^esp-(?P\d+)\.(?P\d+)\.(?P\d+)(_(?P.+))?$", + ) + for pattern in version_patterns: + match = re.search(pattern, original_version) + if match: + result = "%s.%s.%s" % ( + match.group("MAJOR"), + match.group("MINOR"), + match.group("PATCH"), + ) + if match.group("EXTRA"): + result = result + "+%s" % match.group("EXTRA") + return result + + raise ValueError("Bad package version `%s`" % original_version) if not tool_deps: raise ValueError(