[MO] use revision hashes to compare IE & MO versions (#10230)

* fixed version comparison: for comparsion extracted hashes are used

* shortened 7 -> 11 to match the current version fromat from nightly

* corrected regex, added comparing by minimal hash len
This commit is contained in:
Pavel Esir 2022-02-12 00:13:48 +03:00 committed by GitHub
parent 897e2acd91
commit 653ed4a34c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 6 deletions

View File

@ -71,7 +71,16 @@ def import_core_modules(silent: bool, path_to_module: str):
print("{}: \t{}".format("Model Optimizer version", mo_version))
versions_mismatch = False
if mo_version != ie_version:
mo_hash = v.extract_hash_from_version(mo_version)
ie_hash = v.extract_hash_from_version(ie_version)
if mo_hash is not None and ie_hash is not None:
min_length = min(len(mo_hash), len(ie_hash))
mo_hash = mo_hash[:min_length]
ie_hash = ie_hash[:min_length]
if mo_hash != ie_hash or mo_hash is None or ie_hash is None:
versions_mismatch = True
extracted_mo_release_version = v.extract_release_version(mo_version)
mo_is_custom = extracted_mo_release_version == (None, None)

View File

@ -8,8 +8,6 @@ import sys
from openvino.tools.mo.utils.utils import get_mo_root_dir
mo_major_and_minor_version = 2022.1
def get_version_file_path():
return os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir, "version.txt")
@ -24,7 +22,7 @@ def generate_mo_version():
mo_dir = get_mo_root_dir()
branch_name = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=mo_dir).strip().decode()
commit_hash = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=mo_dir).strip().decode()
return "{}.custom_{}_{}".format(mo_major_and_minor_version, branch_name, commit_hash)
return "custom_{}_{}".format(branch_name, commit_hash)
except Exception as e:
return "unknown version"
@ -75,3 +73,11 @@ def get_simplified_ie_version(env=dict(), version=None):
if m and len(m.groups()) == 3:
return simplify_version(m.group(3))
return simplify_version(version)
def extract_hash_from_version(full_version: str):
res = re.findall(r'[-_]([a-f0-9]{7,40})', full_version)
if len(res) > 0:
return res[0]
else:
return None

View File

@ -6,7 +6,8 @@ import unittest.mock as mock
from unittest.mock import mock_open
from unittest.mock import patch
from openvino.tools.mo.utils.version import get_version, extract_release_version, get_simplified_ie_version, get_simplified_mo_version
from openvino.tools.mo.utils.version import get_version, extract_release_version, get_simplified_ie_version, \
get_simplified_mo_version, extract_hash_from_version
class TestingVersion(unittest.TestCase):
@ -62,4 +63,30 @@ class TestingVersion(unittest.TestCase):
self.assertEqual(get_simplified_ie_version(version="2.1.custom_my/branch/3_4c8eae"), "custom")
def test_simplify_ie_version_custom(self):
self.assertEqual(get_simplified_ie_version(version="custom_my/branch/3_4c8eae"), "custom")
self.assertEqual(get_simplified_ie_version(version="custom_my/branch/3_4c8eae"), "custom")
def test_extracting_version_hash_full_with_build_number(self):
self.assertEqual(extract_hash_from_version(full_version="2021.1.0-1028-55e4d5673a8"), "55e4d5673a8")
def test_extracting_version_hash_full_with_build_number_dirty(self):
self.assertEqual(extract_hash_from_version(full_version="2021.1.0-1028-55e4d5673a8-dirty"), "55e4d5673a8")
def test_extracting_version_hash_full_with_build_number_private(self):
self.assertEqual(extract_hash_from_version(full_version="2021.1.0-1028-55e4d5673a8-private"), "55e4d5673a8")
def test_extracting_version_hash_custom_master(self):
self.assertEqual(extract_hash_from_version(full_version="custom_master_55e4d5673a833abab638ee9837bc87a0b7c3a043"),
"55e4d5673a833abab638ee9837bc87a0b7c3a043")
def test_extracting_version_hash_mo_format(self):
self.assertEqual(extract_hash_from_version(full_version="2022.1.custom_master_55e4d5673a833abab638ee9837bc87a0b7c3a043"),
"55e4d5673a833abab638ee9837bc87a0b7c3a043")
def test_negative_extracting_version_hash(self):
self.assertEqual(extract_hash_from_version(full_version="2022.1.custom_master"),
None)
# format from the current nightly wheel
def test_extracting_version_hash_from_old_format(self):
self.assertEqual(extract_hash_from_version(full_version="2022.1.0-6311-a90bb1f"),
"a90bb1f")