west: Regex based version finding in OpenOCD runner

Previous OpenOCD version finding would fail when additional tokens were
prepended to the 'openocd --version' output, as happens with some third-
party OpenOCD repackages (xPack for one).

Fixes: #71955

Signed-off-by: Nick Kraus <nick@nckraus.com>
This commit is contained in:
Nick Kraus 2024-05-09 12:57:25 -04:00 committed by Alberto Escolar
commit 29084dc06b
2 changed files with 10 additions and 8 deletions

View file

@ -194,13 +194,14 @@ class IntelCycloneVBinaryRunner(ZephyrBinaryRunner):
out = self.check_output([self.openocd_cmd[0], '--version'],
stderr=subprocess.STDOUT).decode()
return out.split('\n')[0]
version_match = re.search(r"Open On-Chip Debugger (\d+.\d+.\d+)", out)
version = version_match.group(1).split('.')
return [self.to_num(i) for i in version]
def supports_thread_info(self):
# Zephyr rtos was introduced after 0.11.0
version_str = self.read_version().split(' ')[3]
version = version_str.split('.')
(major, minor, rev) = [self.to_num(i) for i in version]
(major, minor, rev) = self.read_version()
return (major, minor, rev) > (0, 11, 0)
def do_run(self, command, **kwargs):

View file

@ -212,13 +212,14 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
out = self.check_output([self.openocd_cmd[0], '--version'],
stderr=subprocess.STDOUT).decode()
return out.split('\n')[0]
version_match = re.search(r"Open On-Chip Debugger (\d+.\d+.\d+)", out)
version = version_match.group(1).split('.')
return [self.to_num(i) for i in version]
def supports_thread_info(self):
# Zephyr rtos was introduced after 0.11.0
version_str = self.read_version().split(' ')[3]
version = version_str.split('.')
(major, minor, rev) = [self.to_num(i) for i in version]
(major, minor, rev) = self.read_version()
return (major, minor, rev) > (0, 11, 0)
def do_run(self, command, **kwargs):