tools: Catch OSError which is raised when the tool is not available

Closes https://github.com/espressif/esp-idf/issues/7140
This commit is contained in:
Roland Dobai 2021-06-23 11:46:00 +02:00
parent b0097bb64f
commit d5d0c624d0

View File

@ -843,12 +843,15 @@ def get_python_env_path():
with open(version_file_path, "r") as version_file: with open(version_file_path, "r") as version_file:
idf_version_str = version_file.read() idf_version_str = version_file.read()
else: else:
idf_version_str = ''
try: try:
idf_version_str = subprocess.check_output(['git', 'describe'], idf_version_str = subprocess.check_output(['git', 'describe'],
cwd=global_idf_path, env=os.environ).decode() cwd=global_idf_path, env=os.environ).decode()
except OSError:
# OSError should cover FileNotFoundError and WindowsError
warn('Git was not found')
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
warn('Git describe was unsuccessul: {}'.format(e)) warn('Git describe was unsuccessul: {}'.format(e.output))
idf_version_str = ''
match = re.match(r'^v([0-9]+\.[0-9]+).*', idf_version_str) match = re.match(r'^v([0-9]+\.[0-9]+).*', idf_version_str)
if match: if match:
idf_version = match.group(1) idf_version = match.group(1)
@ -1181,7 +1184,7 @@ def action_install_python_env(args): # type: ignore
if os.path.exists(virtualenv_python): if os.path.exists(virtualenv_python):
try: try:
subprocess.check_call([virtualenv_python, '--version'], stdout=sys.stdout, stderr=sys.stderr) subprocess.check_call([virtualenv_python, '--version'], stdout=sys.stdout, stderr=sys.stderr)
except subprocess.CalledProcessError: except (OSError, subprocess.CalledProcessError):
# At this point we can reinstall the virtual environment if it is non-functional. This can happen at least # At this point we can reinstall the virtual environment if it is non-functional. This can happen at least
# when the Python interpreter was removed which was used to create the virtual environment. # when the Python interpreter was removed which was used to create the virtual environment.
reinstall = True reinstall = True