From fd65390496cb47b3164c507656798664b8c2fcd1 Mon Sep 17 00:00:00 2001 From: Xelus22 <17491233+Xelus22@users.noreply.github.com> Date: Sun, 23 Nov 2025 22:21:13 +1100 Subject: [PATCH] [core] add BCD versions of QMK Version (#25804) Co-authored-by: Joel Challis --- lib/python/qmk/cli/generate/version_h.py | 4 ++++ lib/python/qmk/util.py | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/python/qmk/cli/generate/version_h.py b/lib/python/qmk/cli/generate/version_h.py index fd87df3617..8156e85559 100644 --- a/lib/python/qmk/cli/generate/version_h.py +++ b/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}" diff --git a/lib/python/qmk/util.py b/lib/python/qmk/util.py index 8f99410e1d..6da684a577 100644 --- a/lib/python/qmk/util.py +++ b/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}'