Using some form of sandbox with Python modules is a long standing best practice with the language. There are a number of ways to have a Python sandbox be created. At this point in time, it seems the Python community is moving towards using the "venv" module provided with Python rather than a separate tool. To match that we make the following changes:
- Refer to a "Python sandbox" rather than virtualenv in comments, etc. - Install the python3-venv module in our container and not virtualenv. - In our CI files, invoke "python -m venv" rather than "virtualenv". - In documentation, tell users to install python3-venv and not virtualenv. Signed-off-by: Tom Rini <tr...@konsulko.com> --- .azure-pipelines.yml | 10 +++++----- .gitlab-ci.yml | 10 +++++----- doc/build/gcc.rst | 2 +- doc/develop/py_testing.rst | 12 ++++++------ tools/buildman/test.py | 2 +- tools/buildman/toolchain.py | 2 +- tools/docker/Dockerfile | 5 ++--- tools/u_boot_pylib/test_util.py | 2 +- 8 files changed, 22 insertions(+), 23 deletions(-) diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index cb787d32f142..cbf4ced19f91 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -90,7 +90,7 @@ stages: steps: - script: | set -e - virtualenv -p /usr/bin/python3 /tmp/venvhtml + python3 -m venv /tmp/venvhtml . /tmp/venvhtml/bin/activate pip install -r doc/sphinx/requirements.txt make htmldocs KDOC_WERROR=1 @@ -132,7 +132,7 @@ stages: git config --global user.email bmeng...@gmail.com git config --global --add safe.directory $(work_dir) export USER=azure - virtualenv -p /usr/bin/python3 /tmp/venv + python3 -m venv /tmp/venv . /tmp/venv/bin/activate pip install -r test/py/requirements.txt \ -r tools/binman/requirements.txt \ @@ -170,7 +170,7 @@ stages: - script: | git config --global --add safe.directory $(work_dir) export USER=azure - virtualenv -p /usr/bin/python3 /tmp/venv + python3 -m venv /tmp/venv . /tmp/venv/bin/activate pip install -r test/py/requirements.txt \ -r tools/binman/requirements.txt \ @@ -277,7 +277,7 @@ stages: if [ -n "\${BUILD_ENV}" ]; then export \${BUILD_ENV}; fi - virtualenv -p /usr/bin/python3 /tmp/venv + python3 -m venv /tmp/venv . /tmp/venv/bin/activate pip install -r tools/binman/requirements.txt \ -r tools/buildman/requirements.txt \ @@ -592,7 +592,7 @@ stages: # make environment variables available as tests are running inside a container export BUILDMAN="${BUILDMAN}" git config --global --add safe.directory ${WORK_DIR} - virtualenv -p /usr/bin/python3 /tmp/venv + python3 -m venv /tmp/venv . /tmp/venv/bin/activate pip install -r tools/binman/requirements.txt \ -r tools/buildman/requirements.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f3418e482fe..12bcdeaf25ab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,7 @@ stages: export BINMAN_INDIRS=/tmp; fi # Prepare python environment - - virtualenv -p /usr/bin/python3 /tmp/venv; + - python3 -m venv /tmp/venv; . /tmp/venv/bin/activate; pip install -r test/py/requirements.txt -r tools/binman/requirements.txt -r tools/buildman/requirements.txt -r tools/u_boot_pylib/requirements.txt @@ -124,7 +124,7 @@ build all platforms in a single job: - ${HOST} script: # Prepare python environment - - virtualenv -p /usr/bin/python3 /tmp/venv; + - python3 -m venv /tmp/venv; . /tmp/venv/bin/activate; pip install -r tools/binman/requirements.txt -r tools/buildman/requirements.txt @@ -155,7 +155,7 @@ check for new CONFIG symbols outside Kconfig: docs: extends: .testsuites script: - - virtualenv -p /usr/bin/python3 /tmp/venvhtml + - python3 -m venv /tmp/venvhtml - . /tmp/venvhtml/bin/activate - pip install -r doc/sphinx/requirements.txt - make htmldocs KDOC_WERROR=1 @@ -184,7 +184,7 @@ Run binman, buildman, dtoc, Kconfig and patman testsuites: git config --global user.email tr...@konsulko.com; git config --global --add safe.directory "${CI_PROJECT_DIR}"; export USER=gitlab; - virtualenv -p /usr/bin/python3 /tmp/venv; + python3 -m venv /tmp/venv; . /tmp/venv/bin/activate; pip install -r test/py/requirements.txt -r tools/binman/requirements.txt -r tools/buildman/requirements.txt -r tools/patman/requirements.txt @@ -210,7 +210,7 @@ Run pylint: extends: .testsuites script: - git config --global --add safe.directory "${CI_PROJECT_DIR}" - - virtualenv -p /usr/bin/python3 /tmp/venv + - python3 -m venv /tmp/venv - . /tmp/venv/bin/activate - pip install -r test/py/requirements.txt -r tools/binman/requirements.txt -r tools/buildman/requirements.txt -r tools/patman/requirements.txt diff --git a/doc/build/gcc.rst b/doc/build/gcc.rst index d8fcfdc4bf21..480e0e3091e2 100644 --- a/doc/build/gcc.rst +++ b/doc/build/gcc.rst @@ -31,7 +31,7 @@ Depending on the build targets further packages maybe needed python3-pkg-resources python3-pycryptodome python3-pyelftools \ python3-pytest python3-pytest-xdist python3-sphinxcontrib.apidoc \ python3-sphinx-rtd-theme python3-subunit python3-testtools \ - python3-virtualenv swig uuid-dev + python3-venv swig uuid-dev SUSE based ~~~~~~~~~~ diff --git a/doc/develop/py_testing.rst b/doc/develop/py_testing.rst index 502053f09fc4..217ae447035c 100644 --- a/doc/develop/py_testing.rst +++ b/doc/develop/py_testing.rst @@ -69,19 +69,19 @@ To create disk images we have helper functions located in `test/py/tests/fs_helper.py` which shall be used in any tests that require creating disk images. -Using `virtualenv` to provide requirements -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Using a Python sandbox to provide requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The recommended way to run the test suite, in order to ensure reproducibility -is to use `virtualenv` to set up the necessary environment. This can be done -via the following commands: +is to use a Python sandbox such as `python -m venv` to set up the necessary +environment. This can be done via the following commands: .. code-block:: console $ cd /path/to/u-boot - $ sudo apt-get install python3 python3-virtualenv - $ virtualenv -p /usr/bin/python3 venv + $ sudo apt-get install python3 python3-venv + $ python3 -m venv venv $ . ./venv/bin/activate $ pip install -r test/py/requirements.txt diff --git a/tools/buildman/test.py b/tools/buildman/test.py index c5feb74a1050..e31e6c72e1a1 100644 --- a/tools/buildman/test.py +++ b/tools/buildman/test.py @@ -987,7 +987,7 @@ class TestBuild(unittest.TestCase): diff = self.call_make_environment(tchn, full_path=True)[0] self.assertEqual({b'LC_ALL': b'C'}, diff) - # Test that virtualenv is handled correctly + # Test that Python sandbox is handled correctly tchn.override_toolchain = False sys.prefix = '/some/venv' env = dict(os.environb) diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py index f4c832be8d33..5e5bb4b0aedd 100644 --- a/tools/buildman/toolchain.py +++ b/tools/buildman/toolchain.py @@ -217,7 +217,7 @@ class Toolchain: elif self.cross: env[b'CROSS_COMPILE'] = tools.to_bytes(wrapper + self.cross) - # Detect a Python virtualenv and avoid defeating it + # Detect a Python sandbox and avoid defeating it if sys.prefix != sys.base_prefix: paths = env[b'PATH'].split(b':') new_paths = [] diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index a0fd174ff602..dec1d516a6c6 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -124,7 +124,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ python3-dev \ python3-pip \ python3-sphinx \ - python3-virtualenv \ + python3-venv \ rpm2cpio \ sbsigntool \ socat \ @@ -136,7 +136,6 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ texinfo \ util-linux \ uuid-dev \ - virtualenv \ vboot-kernel-utils \ vboot-utils \ xilinx-bootgen \ @@ -313,7 +312,7 @@ RUN wget -O /tmp/binman-requirements.txt https://source.denx.de/u-boot/u-boot/-/ RUN wget -O /tmp/buildman-requirements.txt https://source.denx.de/u-boot/u-boot/-/raw/master/tools/buildman/requirements.txt RUN wget -O /tmp/patman-requirements.txt https://source.denx.de/u-boot/u-boot/-/raw/master/tools/patman/requirements.txt RUN wget -O /tmp/u_boot_pylib-requirements.txt https://source.denx.de/u-boot/u-boot/-/raw/master/tools/u_boot_pylib/requirements.txt -RUN virtualenv -p /usr/bin/python3 /tmp/venv && \ +RUN python3 -m venv /tmp/venv && \ . /tmp/venv/bin/activate && \ pip install -r /tmp/pytest-requirements.txt \ -r /tmp/sphinx-requirements.txt \ diff --git a/tools/u_boot_pylib/test_util.py b/tools/u_boot_pylib/test_util.py index 4835847bfc67..637403f87154 100644 --- a/tools/u_boot_pylib/test_util.py +++ b/tools/u_boot_pylib/test_util.py @@ -64,7 +64,7 @@ def run_test_coverage(prog, filter_fname, exclude_list, build_dir, if build_dir: prefix = 'PYTHONPATH=$PYTHONPATH:%s/sandbox_spl/tools ' % build_dir - # Detect a Python virtualenv and use 'coverage' instead + # Detect a Python sandbox and use 'coverage' instead covtool = ('python3-coverage' if sys.prefix == sys.base_prefix else 'coverage') -- 2.43.0