Skip to content

Commit

Permalink
fix: ensure the constraint file is followed also for setuptools
Browse files Browse the repository at this point in the history
Currently, when the venv is installed or updated, we attempt to
automatically update pip and setuptools within the venv. Unfortunately,
the setuptools package is installed or updated without adhering to the
constraints file, which restricts the setuptools version due to
pypa/setuptools#4480. Resolve this issue by
applying the constraints file to the installation and update of both pip
and setuptools.

Signed-off-by: Frantisek Hrbata <[email protected]>
  • Loading branch information
fhrbata committed Aug 2, 2024
1 parent fc847a0 commit 4c90790
Showing 1 changed file with 9 additions and 13 deletions.
22 changes: 9 additions & 13 deletions tools/idf_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -2599,18 +2599,12 @@ def action_install_python_env(args): # type: ignore
warn(f'Removing the existing Python environment in {idf_python_env_path}')
shutil.rmtree(idf_python_env_path)

venv_can_upgrade = False

if os.path.exists(virtualenv_python):
check_python_venv_compatibility(idf_python_env_path, idf_version)
else:
if subprocess.run([sys.executable, '-m', 'venv', '-h'], check=False, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL).returncode == 0:
# venv available
virtualenv_options = ['--clear'] # delete environment if already exists
if sys.version_info[:2] >= (3, 9):
# upgrade pip & setuptools
virtualenv_options += ['--upgrade-deps']
venv_can_upgrade = True

info(f'Creating a new Python environment in {idf_python_env_path}')

Expand Down Expand Up @@ -2651,17 +2645,19 @@ def action_install_python_env(args): # type: ignore
warn('Found PIP_USER="yes" in the environment. Disabling PIP_USER in this shell to install packages into a virtual environment.')
env_copy['PIP_USER'] = 'no'

if not venv_can_upgrade:
info('Upgrading pip and setuptools...')
subprocess.check_call([virtualenv_python, '-m', 'pip', 'install', '--upgrade', 'pip', 'setuptools'],
stdout=sys.stdout, stderr=sys.stderr, env=env_copy)
constraint_file = get_constraints(idf_version) if use_constraints else None

info('Upgrading pip and setuptools...')
run_args = [virtualenv_python, '-m', 'pip', 'install', '--upgrade', 'pip', 'setuptools']
if constraint_file:
run_args += ['--constraint', constraint_file]
subprocess.check_call(run_args, stdout=sys.stdout, stderr=sys.stderr, env=env_copy)

run_args = [virtualenv_python, '-m', 'pip', 'install', '--no-warn-script-location']
requirements_file_list = get_requirements(args.features)
for requirement_file in requirements_file_list:
run_args += ['-r', requirement_file]
if use_constraints:
constraint_file = get_constraints(idf_version)
if constraint_file:
run_args += ['--upgrade', '--constraint', constraint_file]
if args.extra_wheels_dir:
run_args += ['--find-links', args.extra_wheels_dir]
Expand All @@ -2675,7 +2671,7 @@ def action_install_python_env(args): # type: ignore
run_args += ['--find-links', wheels_dir]

info('Installing Python packages')
if use_constraints:
if constraint_file:
info(f' Constraint file: {constraint_file}')
info(' Requirement files:')
info(os.linesep.join(f' - {path}' for path in requirements_file_list))
Expand Down

0 comments on commit 4c90790

Please sign in to comment.