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 < $@.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 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