From 029de43db35947d4af500a57c74b12bc6ab17997 Mon Sep 17 00:00:00 2001 From: Marek Fiala Date: Mon, 14 Mar 2022 15:15:35 +0100 Subject: [PATCH] tools: bugfix export.sh change IDF_PATH only if file is esp-idf Set the self_path where the export.sh script is located, not the sourcing directory. --- export.fish | 2 ++ export.sh | 43 +++++++++++++++++++------------------------ tools/idf_tools.py | 3 ++- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/export.fish b/export.fish index 7459915195..bd15f51670 100644 --- a/export.fish +++ b/export.fish @@ -16,6 +16,8 @@ function __main set script_dir $pwd end if test "$IDF_PATH" != "$script_dir" + # Change IDF_PATH is important when there are 2 ESP-IDF versions in different directories. + # Sourcing this script without change, would cause sourcing wrong export script. echo "Resetting IDF_PATH from '$IDF_PATH' to '$script_dir'" set IDF_PATH "$script_dir" end diff --git a/export.sh b/export.sh index ac8bf0eecc..d54ba571be 100644 --- a/export.sh +++ b/export.sh @@ -49,42 +49,37 @@ __main() { return 1 fi + # If using bash or zsh, try to guess IDF_PATH from script location. + self_path="" + # shellcheck disable=SC2128 # ignore array expansion warning + if [ -n "${BASH_SOURCE-}" ] + then + self_path="${BASH_SOURCE}" + elif [ -n "${ZSH_VERSION-}" ] + then + self_path="${(%):-%x}" + else + echo "Could not detect IDF_PATH. Please set it before sourcing this script:" + echo " export IDF_PATH=(add path here)" + return 1 + fi + + script_dir=$(__script_dir) + if [ -z "${IDF_PATH}" ] then # IDF_PATH not set in the environment. - # If using bash or zsh, try to guess IDF_PATH from script location. - self_path="" - - # shellcheck disable=SC2128 # ignore array expansion warning - if [ -n "${BASH_SOURCE-}" ] - then - self_path="${BASH_SOURCE}" - elif [ -n "${ZSH_VERSION-}" ] - then - self_path="${(%):-%x}" - else - echo "Could not detect IDF_PATH. Please set it before sourcing this script:" - echo " export IDF_PATH=(add path here)" - return 1 - fi - - script_dir=$(__script_dir) export IDF_PATH="${script_dir}" echo "Setting IDF_PATH to '${IDF_PATH}'" else # IDF_PATH came from the environment, check if the path is valid - script_dir=$(__script_dir) if [ ! "${IDF_PATH}" = "${script_dir}" ] then + # Change IDF_PATH is important when there are 2 ESP-IDF versions in different directories. + # Sourcing this script without change, would cause sourcing wrong export script. echo "Resetting IDF_PATH from '${IDF_PATH}' to '${script_dir}' " export IDF_PATH="${script_dir}" fi - if [ ! -d "${IDF_PATH}" ] - then - echo "IDF_PATH is set to '${IDF_PATH}', but it is not a valid directory." - echo "If you have set IDF_PATH manually, check if the path is correct." - return 1 - fi # Check if this path looks like an IDF directory if [ ! -f "${IDF_PATH}/tools/idf.py" ] || [ ! -f "${IDF_PATH}/tools/idf_tools.py" ] then diff --git a/tools/idf_tools.py b/tools/idf_tools.py index e430e0495c..2fa3186e7b 100755 --- a/tools/idf_tools.py +++ b/tools/idf_tools.py @@ -1199,9 +1199,10 @@ def deactivate_statement(args): # type: (list[str]) -> None if 'sha' in idf_env_json['idfInstalled']: try: idf_env_json['idfInstalled'].pop('sha') + if idf_env_json['idfPreviousId'] == 'sha': + idf_env_json['idfPreviousId'] = '' if idf_env_json['idfSelectedId'] == 'sha': idf_env_json['idfSelectedId'] = active_repo_id() - idf_env_json['idfPreviousId'] = '' return finally: save_idf_env(idf_env_json)