summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReFil <31960031+ReFil@users.noreply.github.com>2023-11-16 07:49:39 +0000
committerGitHub <noreply@github.com>2023-11-16 07:49:39 +0000
commitcdcec22e609688812bf0f5ac303cc9c6970efb23 (patch)
treefa4b666fbc83311089a8ebdb0a7aa0c2b405d2fe
parent44a42af666dbeee899520b956200137222c8378c (diff)
Version compiled FW with automatic macro (#267)
* Version compiled FW with hash Auto generates a macro to type out version info, local and github compilation now includes commit hash and timestamp in final uf2 files * Fix local builds makefile doesn't like the script returning the macro, directed to null for local builds as version.dtsi file accessible
-rw-r--r--.github/workflows/build.yml15
-rw-r--r--CHANGELOG.md2
-rw-r--r--Makefile5
-rw-r--r--README.md4
-rwxr-xr-xbin/build.sh5
-rwxr-xr-xbin/get_version.sh57
-rw-r--r--config/adv360.keymap11
-rw-r--r--config/version.dtsi0
8 files changed, 92 insertions, 7 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 35a2fe9..23c3edf 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -11,6 +11,15 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
+ - name: Get version data
+ id: get_info
+ run: |
+ timestamp=$(date +"%Y%m%d%H%M")
+ commit=$(echo "${{ github.sha }}" | cut -c1-7)
+ file_prefix=$timestamp-$commit
+ branch_name=$(echo "${{ github.ref }}" | awk -F'/' '{print $3}' | cut -c1-4)
+ echo "file_prefix=$file_prefix" >> $GITHUB_OUTPUT
+ bin/get_version.sh $branch_name $commit
- name: Cache west modules
uses: actions/cache@v3
env:
@@ -42,11 +51,11 @@ jobs:
- name: Adv360 Right Kconfig file
run: grep -vE '(^#|^$)' build/right/zephyr/.config
- name: Rename zmk.uf2
- run: cp build/left/zephyr/zmk.uf2 left.uf2 && cp build/right/zephyr/zmk.uf2 right.uf2
+ run: cp build/left/zephyr/zmk.uf2 ${{ steps.get_info.outputs.file_prefix }}-left.uf2 && cp build/right/zephyr/zmk.uf2 ${{ steps.get_info.outputs.file_prefix }}-right.uf2
- name: Archive (Adv360)
uses: actions/upload-artifact@v3
with:
name: firmware
path: |
- left.uf2
- right.uf2
+ ${{ steps.get_info.outputs.file_prefix }}-left.uf2
+ ${{ steps.get_info.outputs.file_prefix }}-right.uf2
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9384ad9..554493f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,8 @@ Here's all notable changes and commits to both the configuration repo and the ba
Many thanks to all those who have submitted issues and pull requests to make this firmware better!
## Config repo
+11/15/2023 - Add and document the new automatic versioning system [#267](https://github.com/KinesisCorporation/Adv360-Pro-ZMK/pull/267)
+
11/7/2023 - Add and document a new configuration option for extended NKRO ranges [#264](https://github.com/KinesisCorporation/Adv360-Pro-ZMK/pull/264)
11/2/2023 - Update the documentation to note the new configuration options, other miscellaneous improvements based on feedback [#260](https://github.com/KinesisCorporation/Adv360-Pro-ZMK/pull/260)
diff --git a/Makefile b/Makefile
index 7e95cb8..e5231eb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,6 @@
DOCKER := $(shell { command -v podman || command -v docker; })
-TIMESTAMP := $(shell date -u +"%Y%m%d%H%M%S")
+TIMESTAMP := $(shell date -u +"%Y%m%d%H%M")
+COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null)
detected_OS := $(shell uname) # Classify UNIX OS
ifeq ($(strip $(detected_OS)),Darwin) #We only care if it's OS X
SELINUX1 :=
@@ -12,11 +13,13 @@ endif
.PHONY: all clean
all:
+ $(shell bin/get_version.sh >> /dev/null)
$(DOCKER) build --tag zmk --file Dockerfile .
$(DOCKER) run --rm -it --name zmk \
-v $(PWD)/firmware:/app/firmware$(SELINUX1) \
-v $(PWD)/config:/app/config:ro$(SELINUX2) \
-e TIMESTAMP=$(TIMESTAMP) \
+ -e COMMIT=$(COMMIT) \
zmk
clean:
diff --git a/README.md b/README.md
index f876cf3..ac090a2 100644
--- a/README.md
+++ b/README.md
@@ -72,6 +72,10 @@ If you encounter a git conflict when updating your repository to V3.0 please fol
Updating from V2.0 based firmwares to V3.0 based firmwares can be a rather complex process. There are reset files for every major firmware revision as well as documentation on the update process available [here](https://kinesis-ergo.com/support/kb360pro/#firmware-updates).
+## Versioning
+
+Starting on 11/15/2023 the Advantage 360 Pro will now automatically record the compilation date, branch and Git commit hash in a macro that can be accessed with Mod+V. This will type out the following string: YYYYMMDD-XXXX-YYYYYY, where XXXX is the first 4 characters of the Git branch and YYYYYY is the Git commit hash. In addition to this the builds compiled by GitHub actions are now timestamped and also record the commit hash in the filename.
+
## Bluetooth LE Privacy
Since the update on 20/10/2023, BLE privacy is now disabled by default and due to an update in upstream ZMK cannot be enabled again as it will cause issues for the split halves connecting to each other.
diff --git a/bin/build.sh b/bin/build.sh
index ade4767..cd68988 100755
--- a/bin/build.sh
+++ b/bin/build.sh
@@ -3,7 +3,8 @@
set -eu
PWD=$(pwd)
-TIMESTAMP="${TIMESTAMP:-$(date -u +"%Y%m%d%H%M%S")}"
+TIMESTAMP="${TIMESTAMP:-$(date -u +"%Y%m%d%H%M")}"
+COMMIT="${COMMIT:-$(echo xxxxxx)}"
# West Build (left)
west build -s zmk/app -d build/left -b adv360_left -- -DZMK_CONFIG="${PWD}/config"
@@ -14,4 +15,4 @@ west build -s zmk/app -d build/right -b adv360_right -- -DZMK_CONFIG="${PWD}/con
# Adv360 Right Kconfig file
grep -vE '(^#|^$)' build/right/zephyr/.config
# Rename zmk.uf2
-cp build/left/zephyr/zmk.uf2 "./firmware/${TIMESTAMP}-left.uf2" && cp build/right/zephyr/zmk.uf2 "./firmware/${TIMESTAMP}-right.uf2"
+cp build/left/zephyr/zmk.uf2 "./firmware/${TIMESTAMP}-${COMMIT}-left.uf2" && cp build/right/zephyr/zmk.uf2 "./firmware/${TIMESTAMP}-${COMMIT}-right.uf2"
diff --git a/bin/get_version.sh b/bin/get_version.sh
new file mode 100755
index 0000000..a1b1d6e
--- /dev/null
+++ b/bin/get_version.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+# Get the date, first 4 chars of branch name and short commit hash
+date=$(date -u +"%Y%m%d")
+branch=${1:-$(git rev-parse --abbrev-ref HEAD | cut -c1-4)}
+commit=${2:-$(git rev-parse --short HEAD)}
+
+# Function to transform characters to ZMK key behaviours
+transform_char() {
+ local char=$1
+ if [[ $char =~ [A-Za-z] ]]; then
+ echo "<&kp ${char^^}>, "
+ elif [[ $char =~ [0-9] ]]; then
+ echo "<&kp N${char}>, "
+ elif [ "$char" = "." ]; then
+ echo "<&kp DOT>, "
+ fi
+}
+
+# Iterate over the date and format characters
+formatted_date=""
+for ((i = 0; i < ${#date}; i++)); do
+ formatted_date+=$(transform_char "${date:$i:1}")
+done
+
+# Insert separator between date and branch
+formatted_date+="<&kp MINUS>, "
+
+# Iterate over the branch and format characters
+formatted_branch=""
+for ((i = 0; i < ${#branch}; i++)); do
+ formatted_branch+=$(transform_char "${branch:$i:1}")
+done
+
+# Insert separator between branch and commit hash
+formatted_branch+="<&kp MINUS>, "
+
+# Iterate over the commit hash and format characters
+formatted_commit=""
+for ((i = 0; i < ${#commit}; i++)); do
+ formatted_commit+=$(transform_char "${commit:$i:1}")
+done
+
+# Combine the formatted string, add trailing carriage return
+formatted_result="$formatted_date$formatted_branch$formatted_commit"
+formatted_result+="<&kp RET>"
+
+echo $formatted_result
+# Create new macro to define version, overwrite previous one
+
+echo '#define VERSION_MACRO' > "config/version.dtsi"
+echo 'macro_ver: macro_ver {' >> "config/version.dtsi"
+echo 'compatible = "zmk,behavior-macro";' >> "config/version.dtsi"
+echo 'label = "macro_ver";' >> "config/version.dtsi"
+echo '#binding-cells = <0>;' >> "config/version.dtsi"
+echo "bindings = $formatted_result;" >> "config/version.dtsi"
+echo '};' >> "config/version.dtsi"
diff --git a/config/adv360.keymap b/config/adv360.keymap
index 8ece1db..cf80f15 100644
--- a/config/adv360.keymap
+++ b/config/adv360.keymap
@@ -7,6 +7,15 @@
/ {
behaviors {
#include "macros.dtsi"
+ #include "version.dtsi"
+ #ifndef VERSION_MACRO
+ macro_ver: macro_ver {
+ compatible = "zmk,behavior-macro";
+ label = "macro_version";
+ #binding-cells = <0>;
+ bindings = <&kp RET>;
+ };
+ #endif
hm: homerow_mods {
compatible = "zmk,behavior-hold-tap";
@@ -54,7 +63,7 @@
&none &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &none &trans &none &none &none &none &none &none
&none &none &none &none &none &none &bootloader &bootloader &none &none &none &none &none &none
&none &none &none &none &none &none &none &none &none &bt BT_CLR &none &rgb_ug RGB_MEFS_CMD 5 &none &none &none &none &none &none
- &none &none &none &none &none &none &none &none &none &none &none &none &none &none
+ &none &none &none &none &macro_ver &none &none &none &none &none &none &none &none &none
&none &none &none &none &none &none &none &none &none &bl BL_TOG &rgb_ug RGB_TOG &bl BL_INC &bl BL_DEC &none &none &none
>;
};
diff --git a/config/version.dtsi b/config/version.dtsi
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/version.dtsi