diff options
Diffstat (limited to 'lib/python/qmk')
| -rw-r--r-- | lib/python/qmk/cli/generate/version_h.py | 4 | ||||
| -rw-r--r-- | lib/python/qmk/util.py | 10 |
2 files changed, 14 insertions, 0 deletions
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 | |||
| 8 | from qmk.commands import dump_lines | 8 | from qmk.commands import dump_lines |
| 9 | from qmk.git import git_get_qmk_hash, git_get_version, git_is_dirty | 9 | from qmk.git import git_get_qmk_hash, git_get_version, git_is_dirty |
| 10 | from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE | 10 | from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE |
| 11 | from qmk.util import triplet_to_bcd | ||
| 11 | 12 | ||
| 12 | TIME_FMT = '%Y-%m-%d-%H:%M:%S' | 13 | TIME_FMT = '%Y-%m-%d-%H:%M:%S' |
| 13 | 14 | ||
| @@ -32,12 +33,14 @@ def generate_version_h(cli): | |||
| 32 | git_dirty = False | 33 | git_dirty = False |
| 33 | git_version = "NA" | 34 | git_version = "NA" |
| 34 | git_qmk_hash = "NA" | 35 | git_qmk_hash = "NA" |
| 36 | git_bcd_version = "0x00000000" | ||
| 35 | chibios_version = "NA" | 37 | chibios_version = "NA" |
| 36 | chibios_contrib_version = "NA" | 38 | chibios_contrib_version = "NA" |
| 37 | else: | 39 | else: |
| 38 | git_dirty = git_is_dirty() | 40 | git_dirty = git_is_dirty() |
| 39 | git_version = git_get_version() or current_time | 41 | git_version = git_get_version() or current_time |
| 40 | git_qmk_hash = git_get_qmk_hash() or "Unknown" | 42 | git_qmk_hash = git_get_qmk_hash() or "Unknown" |
| 43 | git_bcd_version = triplet_to_bcd(git_version) | ||
| 41 | chibios_version = git_get_version("chibios", "os") or current_time | 44 | chibios_version = git_get_version("chibios", "os") or current_time |
| 42 | chibios_contrib_version = git_get_version("chibios-contrib", "os") or current_time | 45 | chibios_contrib_version = git_get_version("chibios-contrib", "os") or current_time |
| 43 | 46 | ||
| @@ -48,6 +51,7 @@ def generate_version_h(cli): | |||
| 48 | f""" | 51 | f""" |
| 49 | #define QMK_VERSION "{git_version}" | 52 | #define QMK_VERSION "{git_version}" |
| 50 | #define QMK_BUILDDATE "{current_time}" | 53 | #define QMK_BUILDDATE "{current_time}" |
| 54 | #define QMK_VERSION_BCD {git_bcd_version} | ||
| 51 | #define QMK_GIT_HASH "{git_qmk_hash}{'*' if git_dirty else ''}" | 55 | #define QMK_GIT_HASH "{git_qmk_hash}{'*' if git_dirty else ''}" |
| 52 | #define CHIBIOS_VERSION "{chibios_version}" | 56 | #define CHIBIOS_VERSION "{chibios_version}" |
| 53 | #define CHIBIOS_CONTRIB_VERSION "{chibios_contrib_version}" | 57 | #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 @@ | |||
| 3 | import contextlib | 3 | import contextlib |
| 4 | import multiprocessing | 4 | import multiprocessing |
| 5 | import sys | 5 | import sys |
| 6 | import re | ||
| 6 | 7 | ||
| 7 | from milc import cli | 8 | from milc import cli |
| 8 | 9 | ||
| 10 | TRIPLET_PATTERN = re.compile(r'^(\d+)\.(\d+)\.(\d+)') | ||
| 11 | |||
| 9 | maybe_exit_should_exit = True | 12 | maybe_exit_should_exit = True |
| 10 | maybe_exit_reraise = False | 13 | maybe_exit_reraise = False |
| 11 | 14 | ||
| @@ -96,3 +99,10 @@ def parallel_map(*args, **kwargs): | |||
| 96 | # before the results are returned. Returning a list ensures results are | 99 | # before the results are returned. Returning a list ensures results are |
| 97 | # materialised before any worker pool is shut down. | 100 | # materialised before any worker pool is shut down. |
| 98 | return list(map_fn(*args, **kwargs)) | 101 | return list(map_fn(*args, **kwargs)) |
| 102 | |||
| 103 | |||
| 104 | def triplet_to_bcd(ver: str): | ||
| 105 | m = TRIPLET_PATTERN.match(ver) | ||
| 106 | if not m: | ||
| 107 | return '0x00000000' | ||
| 108 | return f'0x{int(m.group(1)):02d}{int(m.group(2)):02d}{int(m.group(3)):04d}' | ||
