summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rwxr-xr-xpy/py-version.sh16
-rw-r--r--py/py.mk10
-rw-r--r--stmhal/pyexec.c3
3 files changed, 27 insertions, 2 deletions
diff --git a/py/py-version.sh b/py/py-version.sh
new file mode 100755
index 0000000000..f574b574f4
--- /dev/null
+++ b/py/py-version.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+git_hash="$(git rev-parse --short HEAD 2> /dev/null || echo unknown)"
+git_files_are_clean=1
+# Check if there are any modified files.
+git diff --no-ext-diff --quiet --exit-code 2> /dev/null || git_files_are_clean=0
+# Check if there are any staged files.
+git diff-index --cached --quiet HEAD -- 2> /dev/null || git_files_are_clean=0
+if [ "${git_files_are_clean}" != "1" ]; then
+ git_hash="${git_hash}-dirty"
+fi
+cat <<EOF
+// This file was generated by py/py-version.sh
+#define MICROPY_GIT_HASH "${git_hash}"
+#define MICROPY_BUILD_DATE "$(date '+%Y-%m-%d')"
+EOF
diff --git a/py/py.mk b/py/py.mk
index 059029274e..6a331fedcb 100644
--- a/py/py.mk
+++ b/py/py.mk
@@ -90,6 +90,14 @@ PY_O_BASENAME = \
# prepend the build destination prefix to the py object files
PY_O = $(addprefix $(PY_BUILD)/, $(PY_O_BASENAME))
+# Anything that depends on FORCE will be considered out-of-date
+FORCE:
+.PHONY: FORCE
+
+$(PY_BUILD)/py-version.h: FORCE
+ $(Q)$(PY_SRC)/py-version.sh > $@.tmp
+ $(Q)if [ -f "$@" ] && cmp -s $@ $@.tmp; then rm $@.tmp; else echo "Generating $@"; mv $@.tmp $@; fi
+
# qstr data
# Adding an order only dependency on $(PY_BUILD) causes $(PY_BUILD) to get
@@ -104,7 +112,7 @@ $(PY_BUILD)/qstrdefs.generated.h: $(PY_QSTR_DEFS) $(QSTR_DEFS) $(PY_SRC)/makeqst
# the right .o's to get recompiled if the generated.h file changes. Adding
# an order-only dependendency to all of the .o's will cause the generated .h
# to get built before we try to compile any of them.
-$(PY_O): | $(PY_BUILD)/qstrdefs.generated.h
+$(PY_O): | $(PY_BUILD)/qstrdefs.generated.h $(PY_BUILD)/py-version.h
# emitters
diff --git a/stmhal/pyexec.c b/stmhal/pyexec.c
index 999264d1cb..8bc3ec6e5e 100644
--- a/stmhal/pyexec.c
+++ b/stmhal/pyexec.c
@@ -23,6 +23,7 @@
#include "pyexec.h"
#include "storage.h"
#include "usb.h"
+#include "build/py/py-version.h"
pyexec_mode_kind_t pyexec_mode_kind = PYEXEC_MODE_FRIENDLY_REPL;
STATIC bool repl_display_debugging_info = 0;
@@ -155,7 +156,7 @@ int pyexec_friendly_repl(void) {
#endif
friendly_repl_reset:
- stdout_tx_str("Micro Python build <git hash> on 25/1/2014; " MICROPY_HW_BOARD_NAME " with STM32F405RG\r\n");
+ stdout_tx_str("Micro Python build " MICROPY_GIT_HASH " on " MICROPY_BUILD_DATE "; " MICROPY_HW_BOARD_NAME " with STM32F405RG\r\n");
stdout_tx_str("Type \"help()\" for more information.\r\n");
// to test ctrl-C