mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-29 18:27:20 +02:00
fix(tools): Detect Nix use and work around it for installation
Nix will create a new derivation in the store for python packages, which leads to mismatch between the system prefixes, invalidating a widely used check for being in a virtual environment. This adds a Nix-specific fix for virtualenv detection. Closes https://github.com/espressif/esp-idf/pull/14435
This commit is contained in:
@ -2574,7 +2574,10 @@ def action_install_python_env(args): # type: ignore
|
||||
reinstall = args.reinstall
|
||||
idf_python_env_path, _, virtualenv_python, idf_version = get_python_env_path()
|
||||
|
||||
is_virtualenv = hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix)
|
||||
nix_store = os.environ.get('NIX_STORE')
|
||||
is_nix = nix_store is not None and sys.base_prefix.startswith(nix_store) and sys.prefix.startswith(nix_store)
|
||||
|
||||
is_virtualenv = not is_nix and (hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix))
|
||||
if is_virtualenv and (not os.path.exists(idf_python_env_path) or reinstall):
|
||||
fatal('This script was called from a virtual environment, can not create a virtual environment again')
|
||||
raise SystemExit(1)
|
||||
|
Reference in New Issue
Block a user