Explorar el Código

[core] add BCD versions of QMK Version (#25804)

Co-authored-by: Joel Challis <git@zvecr.com>
Xelus22 hace 8 meses
padre
commit
fd65390496
Se han modificado 2 ficheros con 14 adiciones y 0 borrados
  1. 4 0
      lib/python/qmk/cli/generate/version_h.py
  2. 10 0
      lib/python/qmk/util.py

+ 4 - 0
lib/python/qmk/cli/generate/version_h.py

@@ -8,6 +8,7 @@ from qmk.path import normpath
 from qmk.commands import dump_lines
 from qmk.git import git_get_qmk_hash, git_get_version, git_is_dirty
 from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
+from qmk.util import triplet_to_bcd
 
 TIME_FMT = '%Y-%m-%d-%H:%M:%S'
 
@@ -32,12 +33,14 @@ def generate_version_h(cli):
         git_dirty = False
         git_version = "NA"
         git_qmk_hash = "NA"
+        git_bcd_version = "0x00000000"
         chibios_version = "NA"
         chibios_contrib_version = "NA"
     else:
         git_dirty = git_is_dirty()
         git_version = git_get_version() or current_time
         git_qmk_hash = git_get_qmk_hash() or "Unknown"
+        git_bcd_version = triplet_to_bcd(git_version)
         chibios_version = git_get_version("chibios", "os") or current_time
         chibios_contrib_version = git_get_version("chibios-contrib", "os") or current_time
 
@@ -48,6 +51,7 @@ def generate_version_h(cli):
         f"""
 #define QMK_VERSION "{git_version}"
 #define QMK_BUILDDATE "{current_time}"
+#define QMK_VERSION_BCD {git_bcd_version}
 #define QMK_GIT_HASH  "{git_qmk_hash}{'*' if git_dirty else ''}"
 #define CHIBIOS_VERSION "{chibios_version}"
 #define CHIBIOS_CONTRIB_VERSION "{chibios_contrib_version}"

+ 10 - 0
lib/python/qmk/util.py

@@ -3,9 +3,12 @@
 import contextlib
 import multiprocessing
 import sys
+import re
 
 from milc import cli
 
+TRIPLET_PATTERN = re.compile(r'^(\d+)\.(\d+)\.(\d+)')
+
 maybe_exit_should_exit = True
 maybe_exit_reraise = False
 
@@ -96,3 +99,10 @@ def parallel_map(*args, **kwargs):
         # before the results are returned. Returning a list ensures results are
         # materialised before any worker pool is shut down.
         return list(map_fn(*args, **kwargs))
+
+
+def triplet_to_bcd(ver: str):
+    m = TRIPLET_PATTERN.match(ver)
+    if not m:
+        return '0x00000000'
+    return f'0x{int(m.group(1)):02d}{int(m.group(2)):02d}{int(m.group(3)):04d}'