Search all stdout for version regex; check > 1 matches

pull/7375/head
Jimmy Brisson 2018-06-25 14:41:37 -05:00 committed by adbridge
parent efcba8830e
commit 6e71c4ceba
3 changed files with 17 additions and 24 deletions

View File

@ -41,7 +41,7 @@ class ARM(mbedToolchain):
SUPPORTED_CORES = ["Cortex-M0", "Cortex-M0+", "Cortex-M3", "Cortex-M4", SUPPORTED_CORES = ["Cortex-M0", "Cortex-M0+", "Cortex-M3", "Cortex-M4",
"Cortex-M4F", "Cortex-M7", "Cortex-M7F", "Cortex-M7FD", "Cortex-A9"] "Cortex-M4F", "Cortex-M7", "Cortex-M7F", "Cortex-M7FD", "Cortex-A9"]
ARMCC_RANGE = (LooseVersion("5.06"), LooseVersion("5.07")) ARMCC_RANGE = (LooseVersion("5.06"), LooseVersion("5.07"))
ARMCC_VERSION_RE = re.compile("^Product: ARM Compiler (\d+.\d+)") ARMCC_VERSION_RE = re.compile("Product: ARM Compiler (\d+.\d+)")
@staticmethod @staticmethod
def check_executable(): def check_executable():
@ -98,17 +98,16 @@ class ARM(mbedToolchain):
stdout, _, retcode = run_cmd([self.cc[0], "--vsn"], redirect=True) stdout, _, retcode = run_cmd([self.cc[0], "--vsn"], redirect=True)
msg = None msg = None
min_ver, max_ver = self.ARMCC_RANGE min_ver, max_ver = self.ARMCC_RANGE
first_line = stdout.splitlines()[0] match = self.ARMCC_VERSION_RE.search(stdout)
match = self.ARMCC_VERSION_RE.match(first_line) found_version = LooseVersion(match.group(0)) if match else None
if match: min_ver, max_ver = self.ARM_RANGE
found_version = LooseVersion(match.group(1)) if found_version and (found_version < min_ver or found_version >= max_ver):
if found_version < min_ver or found_version > max_ver:
msg = ("Compiler version mismatch: Have {}; " msg = ("Compiler version mismatch: Have {}; "
"expected >= {} < {}" "expected version >= {} and < {}"
.format(found_version, min_ver, max_ver)) .format(found_version, min_ver, max_ver))
else: elif len(match.groups()) != 1:
msg = ("Compiler version mismatch: Could not detect version; " msg = ("Compiler version mismatch: Could not detect version; "
"expected >= {} < {}" "expected version >= {} and < {}"
.format(min_ver, max_ver)) .format(min_ver, max_ver))
if msg: if msg:

View File

@ -114,18 +114,15 @@ class GCC(mbedToolchain):
def version_check(self): def version_check(self):
stdout, _, retcode = run_cmd([self.cc[0], "--version"], redirect=True) stdout, _, retcode = run_cmd([self.cc[0], "--version"], redirect=True)
found_version = None msg = None
for line in stdout.splitlines(): match = self.GCC_VERSION_RE.search(stdout)
for word in line.split(): found_version = LooseVersion(match.group(0)) if match else None
match = self.GCC_VERSION_RE.match(word)
if match:
found_version = LooseVersion(match.group(0))
min_ver, max_ver = self.GCC_RANGE min_ver, max_ver = self.GCC_RANGE
if found_version and (found_version < min_ver or found_version >= max_ver): if found_version and (found_version < min_ver or found_version >= max_ver):
msg = ("Compiler version mismatch: Have {}; " msg = ("Compiler version mismatch: Have {}; "
"expected version >= {} and < {}" "expected version >= {} and < {}"
.format(found_version, min_ver, max_ver)) .format(found_version, min_ver, max_ver))
elif not found_version: elif len(match.groups()) != 1:
msg = ("Compiler version mismatch: Could not detect version; " msg = ("Compiler version mismatch: Could not detect version; "
"expected version >= {} and < {}" "expected version >= {} and < {}"
.format(min_ver, max_ver)) .format(min_ver, max_ver))

View File

@ -97,16 +97,13 @@ class IAR(mbedToolchain):
def version_check(self): def version_check(self):
stdout, _, retcode = run_cmd([self.cc[0], "--version"], redirect=True) stdout, _, retcode = run_cmd([self.cc[0], "--version"], redirect=True)
found_version = None
for line in stdout.splitlines():
match = self.IAR_VERSION_RE.match(line)
if match:
found_version = match.group(1)
msg = None msg = None
match = self.IAR_VERSION_RE.search(stdout)
found_version = match.group(1) if match else None
if found_version and LooseVersion(found_version) != self.IAR_VERSION: if found_version and LooseVersion(found_version) != self.IAR_VERSION:
msg = "Compiler version mismatch: Have {}; expected {}".format( msg = "Compiler version mismatch: Have {}; expected {}".format(
found_version, self.IAR_VERSION) found_version, self.IAR_VERSION)
elif not found_version: elif len(match.groups()) != 1:
msg = ("Compiler version mismatch: Could Not detect compiler " msg = ("Compiler version mismatch: Could Not detect compiler "
"version; expected {}".format(self.IAR_VERSION)) "version; expected {}".format(self.IAR_VERSION))
if msg: if msg: