[PATCH v2] tools/make_pip: Use venv when invoking pip

Quentin Schulz quentin.schulz at cherry.de
Wed Apr 16 14:47:37 CEST 2025


Hi Mattijs,

On 4/16/25 2:36 PM, Mattijs Korpershoek wrote:
> Recent Ubuntu versions (24.04+) disallow pip by default when
> installing packages. The recommended approach is to use a virtual
> environment (venv) instead.
> Because of this, "make pip" is failing on such versions.
> 
> To prepare CI container migration to Ubuntu 24.04, use a venv in the
> make_pip script.
> 
> Note: This has been reported on [1]
> 
> [1] https://source.denx.de/u-boot/custodians/u-boot-dm/-/issues/37
> 
> Signed-off-by: Mattijs Korpershoek <mkorpershoek at kernel.org>
> ---
> This has been tested in docker on ubuntu:24.04 after running:
> $ apt install python3 python3-venv
> 
> with:
> $ ./scripts/make_pip.sh u_boot_pylib "-n"
> 
> And shows:
> Successfully built u_boot_pylib-0.0.6.tar.gz and u_boot_pylib-0.0.6-py3-none-any.whl
> 
> Also tested with "$ make pip".
> ---
> Changes in v2:
> - Use venv instead of virtualenv (Tom)
> - Link to v1: https://lore.kernel.org/r/20250409-ubuntu-24-04-v1-1-056728207b6c@kernel.org
> ---
>   scripts/make_pip.sh | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/scripts/make_pip.sh b/scripts/make_pip.sh
> index d2639ffd6e43..33ad51ada703 100755
> --- a/scripts/make_pip.sh
> +++ b/scripts/make_pip.sh
> @@ -106,6 +106,10 @@ fi
>   mkdir ${dir}/tests
>   cd ${dir}
>   
> +# Use virtual environment
> +python3 -m venv .venv

Do we want to make sure there are no leftovers from previous runs? If 
so, maybe add --clear here?

> +source .venv/bin/activate
> +
>   # Make sure the tools are up to date
>   python3 -m pip install --upgrade build
>   python3 -m pip install --upgrade twine
> @@ -122,6 +126,8 @@ if [ -n "${upload}" ]; then
>   	echo "Completed upload of ${tool}"
>   fi
>   
> +# Finish using virtual environment
> +deactivate

Maybe you want this in a trap so that if we exit early (which may happen 
due to the script doing `set -e`), we're out of the venv?

And I tested otherwise, with:

#!/usr/bin/env bash
python3 -m venv .venv
source .venv/bin/activate

and it seems that once I exit the script it's deactivated anyways?

So, I guess no need for the trap or the deactivate, but we can play it 
safe and still have it :)

Cheers,
Quentin


More information about the U-Boot mailing list