summaryrefslogtreecommitdiffstatshomepage
path: root/mpy-cross
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2022-09-28 01:05:09 +1000
committerJim Mussared <jim.mussared@gmail.com>2022-09-28 11:47:11 +1000
commitee1b4a2026e79b662142f0d985643dadf7fff87b (patch)
treebe70d28676e3ce02831e124d2046e3442355ae75 /mpy-cross
parent71050870b81a8dbf3c3fac93bd2d86f0ff9a37d2 (diff)
downloadmicropython-ee1b4a2026e79b662142f0d985643dadf7fff87b.tar.gz
micropython-ee1b4a2026e79b662142f0d985643dadf7fff87b.zip
mpy-cross/mpy_cross: Add a way to query the mpy version.
This returns the mpy version and sub-version for files compiled with this mpy-cross binary. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'mpy-cross')
-rw-r--r--mpy-cross/mpy_cross/__init__.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/mpy-cross/mpy_cross/__init__.py b/mpy-cross/mpy_cross/__init__.py
index 235271d2ce..01fe550a93 100644
--- a/mpy-cross/mpy_cross/__init__.py
+++ b/mpy-cross/mpy_cross/__init__.py
@@ -27,6 +27,7 @@
from __future__ import print_function
import os
+import re
import stat
import subprocess
@@ -54,14 +55,15 @@ NATIVE_ARCHS = [
NATIVE_ARCH_XTENSAWIN,
]
-__all__ = ["compile", "run", "CrossCompileError"]
+__all__ = ["version", "compile", "run", "CrossCompileError"]
class CrossCompileError(Exception):
pass
-def find_mpy_cross_binary(mpy_cross):
+_VERSION_RE = re.compile("mpy-cross emitting mpy v([0-9]+)(?:.([0-9]+))?")
+
def _find_mpy_cross_binary(mpy_cross):
if mpy_cross:
@@ -69,6 +71,16 @@ def _find_mpy_cross_binary(mpy_cross):
return os.path.abspath(os.path.join(os.path.dirname(__file__), "../build/mpy-cross"))
+def mpy_version(mpy_cross=None):
+ version_info = run(["--version"], mpy_cross=mpy_cross)
+ match = re.search(_VERSION_RE, version_info)
+ mpy_version, mpy_sub_version = int(match.group(1)), int(match.group(2) or "0")
+ return (
+ mpy_version,
+ mpy_sub_version,
+ )
+
+
def compile(src, dest=None, src_path=None, opt=None, march=None, mpy_cross=None, extra_args=None):
if not src:
raise ValueError("src is required")