Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect (broken) virtualenv layout with pypy3.8's new layout #2182

Closed
mgorny opened this issue Sep 15, 2021 · 4 comments
Closed

Incorrect (broken) virtualenv layout with pypy3.8's new layout #2182

mgorny opened this issue Sep 15, 2021 · 4 comments

Comments

@mgorny
Copy link
Contributor

mgorny commented Sep 15, 2021

Issue

PyPy3.8 (currently 7.3.6rc1) supports a new install layout that resembles CPython more. That is, sys.prefix no longer needs being isolated, and site-packages are found in $prefix/lib/pypy3.8/site-packages. However, virtualenv tries to symlink everything from /usr/lib including the pypy3.8 directory. As a result, the user can't write to the site-packages directory in the venv.

I haven't tried running it as root but I can imagine it doing major mess if it virtualenv doesn't take any precautions from writing into system directories.

Environment

Provide at least:

  • OS: Gentoo Linux
  • pip list of the host python where virtualenv is installed: pip-list.txt

Output of the virtual environment creation

Make sure to run the creation with -vvv --with-traceback:

Full output: output.txt

tail:

1048 create virtualenv import hook file /tmp/z/lib/pypy3.8/site-packages/_virtualenv.pth [DEBUG api:95]
Traceback (most recent call last):
  File "/usr/lib/pypy3.8/runpy.py", line 198, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/pypy3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/lib/pypy3.8/site-packages/virtualenv/__main__.py", line 80, in <module>
    run_with_catch()  # pragma: no cov
  File "/usr/lib/pypy3.8/site-packages/virtualenv/__main__.py", line 65, in run_with_catch
    run(args, options, env)
  File "/usr/lib/pypy3.8/site-packages/virtualenv/__main__.py", line 18, in run
    session = cli_run(args, options, env)
  File "/usr/lib/pypy3.8/site-packages/virtualenv/run/__init__.py", line 32, in cli_run
    of_session.run()
  File "/usr/lib/pypy3.8/site-packages/virtualenv/run/session.py", line 46, in run
    self._create()
  File "/usr/lib/pypy3.8/site-packages/virtualenv/run/session.py", line 53, in _create
    self.creator.run()
  File "/usr/lib/pypy3.8/site-packages/virtualenv/create/creator.py", line 171, in run
    self.create()
  File "/usr/lib/pypy3.8/site-packages/virtualenv/create/via_global_ref/builtin/via_global_self_do.py", line 101, in create
    super(ViaGlobalRefVirtualenvBuiltin, self).create()
  File "/usr/lib/pypy3.8/site-packages/virtualenv/create/via_global_ref/api.py", line 89, in create
    self.install_patch()
  File "/usr/lib/pypy3.8/site-packages/virtualenv/create/via_global_ref/api.py", line 96, in install_patch
    pth.write_text("import _virtualenv")
  File "/usr/lib/pypy3.8/pathlib.py", line 1255, in write_text
    with self.open(mode='w', encoding=encoding, errors=errors) as f:
  File "/usr/lib/pypy3.8/pathlib.py", line 1223, in open
    opener=self._opener)
  File "/usr/lib/pypy3.8/pathlib.py", line 1078, in _opener
    return self._accessor.open(self, flags, mode)
PermissionError: [Errno 13] Permission denied: PosixPath('/tmp/z/lib/pypy3.8/site-packages/_virtualenv.pth')
@mgorny
Copy link
Contributor Author

mgorny commented Sep 15, 2021

Turns out there's a similar (yet somewhat opposite) problem in pypy's built-in venv module: https://foss.heptapod.net/pypy/pypy/-/issues/3553. Maybe it's better to wait for a fix there, in case something relevant changes.

@olliemath
Copy link

Can confirm major mess ensues when the system site packages dir is not owned by root 😭

@mattip
Copy link
Contributor

mattip commented Oct 1, 2021

Is this related?
I found that trying to change a seeded module does not seem to work. I opened an issue on PyPy where creating a virtualenv in /tmp/venv_pypy38, and then trying to update setuptools with pypy --upgrade 'setuptools<49.2.0' does not succeed (it cannot uninstall the seeded version):

Collecting setuptools<49.2.0
  Using cached setuptools-49.1.3-py3-none-any.whl (789 kB)
Installing collected packages: setuptools
  Attempting uninstall: setuptools
    Found existing installation: setuptools 58.1.0
    Not uninstalling setuptools at /home/matti/oss/pypy3.8-HEAD/lib/pypy3.8/site-packages, outside environment /tmp/venv_pypy38
    Can't uninstall 'setuptools'. No files were found to uninstall.
Successfully installed setuptools-58.1.0

mgorny added a commit to mgorny/virtualenv that referenced this issue Oct 2, 2021
The PyPy3 logic creates symlinks for all files from the library
directory existing alongside the PyPy executable.  This is meant
to ensure that the bundled libraries to which PyPy is linked can also
be found from inside the virtualenv.  However, this logic also symlinks
all directories which is unnecessary and causes library directory
collisions with the new install layout.  Change to logic to symlink
non-directories only.

A similar fix has been applied to the internal venv module in PyPy3.8:
https://foss.heptapod.net/pypy/pypy/-/commit/713b2af9abd2b9453e12c60143e17431a1aefb33

Fixes pypa#2182
mgorny added a commit to mgorny/virtualenv that referenced this issue Oct 2, 2021
The PyPy3 logic creates symlinks for all files from the library
directory existing alongside the PyPy executable.  This is meant
to ensure that the bundled libraries to which PyPy is linked can also
be found from inside the virtualenv.  However, this logic also symlinks
all directories which is unnecessary and causes library directory
collisions with the new install layout.  Change to logic to symlink
non-directories only.

A similar fix has been applied to the internal venv module in PyPy3.8:
https://foss.heptapod.net/pypy/pypy/-/commit/713b2af9abd2b9453e12c60143e17431a1aefb33

Fixes pypa#2182
gaborbernat pushed a commit to mattip/virtualenv that referenced this issue Oct 4, 2021
The PyPy3 logic creates symlinks for all files from the library
directory existing alongside the PyPy executable.  This is meant
to ensure that the bundled libraries to which PyPy is linked can also
be found from inside the virtualenv.  However, this logic also symlinks
all directories which is unnecessary and causes library directory
collisions with the new install layout.  Change to logic to symlink
non-directories only.

A similar fix has been applied to the internal venv module in PyPy3.8:
https://foss.heptapod.net/pypy/pypy/-/commit/713b2af9abd2b9453e12c60143e17431a1aefb33

Fixes pypa#2182
gaborbernat pushed a commit to mattip/virtualenv that referenced this issue Oct 4, 2021
The PyPy3 logic creates symlinks for all files from the library
directory existing alongside the PyPy executable.  This is meant
to ensure that the bundled libraries to which PyPy is linked can also
be found from inside the virtualenv.  However, this logic also symlinks
all directories which is unnecessary and causes library directory
collisions with the new install layout.  Change to logic to symlink
non-directories only.

A similar fix has been applied to the internal venv module in PyPy3.8:
https://foss.heptapod.net/pypy/pypy/-/commit/713b2af9abd2b9453e12c60143e17431a1aefb33

Fixes pypa#2182
mattip pushed a commit to mattip/virtualenv that referenced this issue Oct 15, 2021
The PyPy3 logic creates symlinks for all files from the library
directory existing alongside the PyPy executable.  This is meant
to ensure that the bundled libraries to which PyPy is linked can also
be found from inside the virtualenv.  However, this logic also symlinks
all directories which is unnecessary and causes library directory
collisions with the new install layout.  Change to logic to symlink
non-directories only.

A similar fix has been applied to the internal venv module in PyPy3.8:
https://foss.heptapod.net/pypy/pypy/-/commit/713b2af9abd2b9453e12c60143e17431a1aefb33

Fixes pypa#2182
nedbat added a commit to nedbat/coveragepy that referenced this issue Oct 21, 2021
- Update tox.ini to let us run against PyPy3.8

- Some 3.8 behavior is (apparently) only on CPython

- PyPy3.8 doesn't get along with virtualenv yet
  (pypa/virtualenv#2182), so use venv instead for our
  virtualenv tests.
nedbat added a commit to nedbat/coveragepy that referenced this issue Oct 21, 2021
- Update tox.ini to let us run against PyPy3.8

- Some 3.8 behavior is (apparently) only on CPython

- PyPy3.8 doesn't get along with virtualenv yet
  (pypa/virtualenv#2182), so use venv instead for our
  virtualenv tests.
@gaborbernat
Copy link
Contributor

Released via 20.9.0.

nedbat added a commit to nedbat/coveragepy that referenced this issue Oct 24, 2021
- Update tox.ini to let us run against PyPy3.8

- Some 3.8 behavior is (apparently) only on CPython

- PyPy3.8 doesn't get along with virtualenv yet
  (pypa/virtualenv#2182), so use venv instead for our
  virtualenv tests.
mergify bot pushed a commit to andrewbolster/bolster that referenced this issue Oct 25, 2021
Bumps [virtualenv](https://github.com/pypa/virtualenv) from 20.8.1 to 20.9.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst">virtualenv's changelog</a>.</em></p>
<blockquote>
<h2>v20.9.0 (2021-10-23)</h2>
<p>Features - 20.9.0</p>
<pre><code>- Special-case ``--prompt .`` to the name of the current directory - by :user:`rkm`. (`[#2220](pypa/virtualenv#2220) &lt;https://github.com/pypa/virtualenv/issues/2220&gt;`_)
- Add libffi-8.dll to pypy windows `[#2218](pypa/virtualenv#2218) &lt;https://github.com/pypa/virtualenv/issues/2218&gt;`_ - by :user:`mattip`
<p>Bugfixes - 20.9.0
</code></pre></p>
<ul>
<li>Fixed path collision that could lead to a PermissionError or writing to system
directories when using PyPy3.8 - by :user:<code>mgorny</code>. (<code>[#2182](pypa/virtualenv#2182) &lt;https://github.com/pypa/virtualenv/issues/2182&gt;</code>_)</li>
<li>Upgrade embedded setuptools to <code>58.3.0</code> from <code>58.1.0</code> and pip to <code>21.3.1</code> from <code>21.2.4</code> - by
:user:<code>gaborbernat</code>. (<code>[#2205](pypa/virtualenv#2205) &lt;https://github.com/pypa/virtualenv/issues/2205&gt;</code>_)</li>
<li>Remove stray closing parenthesis in activate.bat - by :user:<code>SiggyBar</code>. (<code>[#2221](pypa/virtualenv#2221) &lt;https://github.com/pypa/virtualenv/issues/2221&gt;</code>_)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pypa/virtualenv/commit/35d6a19dad02c5b9d4f700f3aaf9cbecb284cbb6"><code>35d6a19</code></a> release 20.9.0</li>
<li><a href="https://github.com/pypa/virtualenv/commit/4a1328b8f764683bffe860cd34ab0510f6e790d7"><code>4a1328b</code></a> Bump pip and setuptools (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2222">#2222</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/6bfc29e1a3d621e3f622a0d0395ff261ce0f3973"><code>6bfc29e</code></a> special-case <code>--prompt .</code> to the cwd (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2220">#2220</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/4188ac6e72d3b731595c83d46d1c0eb76fe4f6eb"><code>4188ac6</code></a> Support PyPy 3.8 (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2206">#2206</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/35ec4416d2012cfcb7a5e638813f6d52e852f29f"><code>35ec441</code></a> Remove stray closing parenthesis in activate.bat (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2221">#2221</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/c36117987cf65da92d4cfa7ab042f28a6266e135"><code>c361179</code></a> add libffi-8.dll to pypy windows _shared_libs (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2218">#2218</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/c77c6bc30edde2885091ad0945a093638ecbf45a"><code>c77c6bc</code></a> refactor to not do too much in ReentrantFileLock.<strong>del</strong> (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2213">#2213</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/6633e8578f65dd8f5eced14b9f6a7a495e55389a"><code>6633e85</code></a> Fix feature request template (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2217">#2217</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/df8e5f29939258913817b47bb5c01767fc333cd5"><code>df8e5f2</code></a> Setup Githug workflow concurrency (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2212">#2212</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/eafadce95da65f29a94b2b3b732f3f95c6d8421d"><code>eafadce</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2211">#2211</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/pypa/virtualenv/compare/20.8.1...20.9.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=virtualenv&package-manager=pip&previous-version=20.8.1&new-version=20.9.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
nedbat added a commit to nedbat/coveragepy that referenced this issue Oct 25, 2021
- Update tox.ini to let us run against PyPy3.8

- Some 3.8 behavior is (apparently) only on CPython

- PyPy3.8 doesn't get along with virtualenv yet
  (pypa/virtualenv#2182), so use venv instead for our
  virtualenv tests.
nedbat added a commit to nedbat/coverage-reports that referenced this issue Oct 25, 2021
- Update tox.ini to let us run against PyPy3.8

- Some 3.8 behavior is (apparently) only on CPython

- PyPy3.8 doesn't get along with virtualenv yet
  (pypa/virtualenv#2182), so use venv instead for our
  virtualenv tests.

https://nedbat.github.io/coverage-reports/reports/20211025_fbb3533295/htmlcov
fbb3533295: master
bors bot added a commit to ChrisRBe/PP-P2P-Parser that referenced this issue Nov 3, 2021
427: build(deps): bump virtualenv from 20.8.1 to 20.10.0 r=ChrisRBe a=dependabot[bot]

Bumps [virtualenv](https://github.com/pypa/virtualenv) from 20.8.1 to 20.10.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst">virtualenv's changelog</a>.</em></p>
<blockquote>
<h1>Release History</h1>
<p>.. include:: _draft.rst</p>
<p>.. towncrier release notes start</p>
<h2>v20.9.0 (2021-10-23)</h2>
<p>Features - 20.9.0</p>
<pre><code>- Special-case ``--prompt .`` to the name of the current directory - by :user:`rkm`. (`[#2220](pypa/virtualenv#2220) &lt;https://github.com/pypa/virtualenv/issues/2220&gt;`_)
- Add libffi-8.dll to pypy windows `[#2218](pypa/virtualenv#2218) &lt;https://github.com/pypa/virtualenv/issues/2218&gt;`_ - by :user:`mattip`
<p>Bugfixes - 20.9.0
</code></pre></p>
<ul>
<li>Fixed path collision that could lead to a PermissionError or writing to system
directories when using PyPy3.8 - by :user:<code>mgorny</code>. (<code>[#2182](pypa/virtualenv#2182) &lt;https://github.com/pypa/virtualenv/issues/2182&gt;</code>_)</li>
<li>Upgrade embedded setuptools to <code>58.3.0</code> from <code>58.1.0</code> and pip to <code>21.3.1</code> from <code>21.2.4</code> - by
:user:<code>gaborbernat</code>. (<code>[#2205](pypa/virtualenv#2205) &lt;https://github.com/pypa/virtualenv/issues/2205&gt;</code>_)</li>
<li>Remove stray closing parenthesis in activate.bat - by :user:<code>SiggyBar</code>. (<code>[#2221](pypa/virtualenv#2221) &lt;https://github.com/pypa/virtualenv/issues/2221&gt;</code>_)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pypa/virtualenv/commit/2f4e2668a4f70047549a5c8b146ac75143367538"><code>2f4e266</code></a> release 20.10.0</li>
<li><a href="https://github.com/pypa/virtualenv/commit/15c09d6e0c1eb11c18918ef67590e5291fd361f0"><code>15c09d6</code></a> ?? prompt should be wrapped in paranthesis ?? (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2224">#2224</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/8da79db86d8a5c74d03667a40e64ff832076445e"><code>8da79db</code></a> Favor the &quot;venv&quot; sysconfig install scheme over the default and distutils sche...</li>
<li><a href="https://github.com/pypa/virtualenv/commit/31f39137544bfea32c475f4a99473900a2995144"><code>31f3913</code></a> Fix broken prompt set up by activate.bat (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2225">#2225</a>) (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2226">#2226</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/653d4ebcaae635183e95fba40a8bf3592ec3647e"><code>653d4eb</code></a> Fix docs</li>
<li><a href="https://github.com/pypa/virtualenv/commit/a13e51e69080a5a5a5a15630f4a0f7b3d97d1c9a"><code>a13e51e</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2223">#2223</a> from pypa/release-20.9.0</li>
<li><a href="https://github.com/pypa/virtualenv/commit/35d6a19dad02c5b9d4f700f3aaf9cbecb284cbb6"><code>35d6a19</code></a> release 20.9.0</li>
<li><a href="https://github.com/pypa/virtualenv/commit/4a1328b8f764683bffe860cd34ab0510f6e790d7"><code>4a1328b</code></a> Bump pip and setuptools (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2222">#2222</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/6bfc29e1a3d621e3f622a0d0395ff261ce0f3973"><code>6bfc29e</code></a> special-case <code>--prompt .</code> to the cwd (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2220">#2220</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/4188ac6e72d3b731595c83d46d1c0eb76fe4f6eb"><code>4188ac6</code></a> Support PyPy 3.8 (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2206">#2206</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/pypa/virtualenv/compare/20.8.1...20.10.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=virtualenv&package-manager=pip&previous-version=20.8.1&new-version=20.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
qujingpengf added a commit to qujingpengf/ChrisRBe that referenced this issue Jan 22, 2022
427: build(deps): bump virtualenv from 20.8.1 to 20.10.0 r=ChrisRBe a=dependabot[bot]

Bumps [virtualenv](https://github.com/pypa/virtualenv) from 20.8.1 to 20.10.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst">virtualenv's changelog</a>.</em></p>
<blockquote>
<h1>Release History</h1>
<p>.. include:: _draft.rst</p>
<p>.. towncrier release notes start</p>
<h2>v20.9.0 (2021-10-23)</h2>
<p>Features - 20.9.0</p>
<pre><code>- Special-case ``--prompt .`` to the name of the current directory - by :user:`rkm`. (`[#2220](pypa/virtualenv#2220) &lt;https://github.com/pypa/virtualenv/issues/2220&gt;`_)
- Add libffi-8.dll to pypy windows `[#2218](pypa/virtualenv#2218) &lt;https://github.com/pypa/virtualenv/issues/2218&gt;`_ - by :user:`mattip`
<p>Bugfixes - 20.9.0
</code></pre></p>
<ul>
<li>Fixed path collision that could lead to a PermissionError or writing to system
directories when using PyPy3.8 - by :user:<code>mgorny</code>. (<code>[#2182](pypa/virtualenv#2182) &lt;https://github.com/pypa/virtualenv/issues/2182&gt;</code>_)</li>
<li>Upgrade embedded setuptools to <code>58.3.0</code> from <code>58.1.0</code> and pip to <code>21.3.1</code> from <code>21.2.4</code> - by
:user:<code>gaborbernat</code>. (<code>[#2205](pypa/virtualenv#2205) &lt;https://github.com/pypa/virtualenv/issues/2205&gt;</code>_)</li>
<li>Remove stray closing parenthesis in activate.bat - by :user:<code>SiggyBar</code>. (<code>[#2221](pypa/virtualenv#2221) &lt;https://github.com/pypa/virtualenv/issues/2221&gt;</code>_)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pypa/virtualenv/commit/2f4e2668a4f70047549a5c8b146ac75143367538"><code>2f4e266</code></a> release 20.10.0</li>
<li><a href="https://github.com/pypa/virtualenv/commit/15c09d6e0c1eb11c18918ef67590e5291fd361f0"><code>15c09d6</code></a> ?? prompt should be wrapped in paranthesis ?? (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2224">#2224</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/8da79db86d8a5c74d03667a40e64ff832076445e"><code>8da79db</code></a> Favor the &quot;venv&quot; sysconfig install scheme over the default and distutils sche...</li>
<li><a href="https://github.com/pypa/virtualenv/commit/31f39137544bfea32c475f4a99473900a2995144"><code>31f3913</code></a> Fix broken prompt set up by activate.bat (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2225">#2225</a>) (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2226">#2226</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/653d4ebcaae635183e95fba40a8bf3592ec3647e"><code>653d4eb</code></a> Fix docs</li>
<li><a href="https://github.com/pypa/virtualenv/commit/a13e51e69080a5a5a5a15630f4a0f7b3d97d1c9a"><code>a13e51e</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2223">#2223</a> from pypa/release-20.9.0</li>
<li><a href="https://github.com/pypa/virtualenv/commit/35d6a19dad02c5b9d4f700f3aaf9cbecb284cbb6"><code>35d6a19</code></a> release 20.9.0</li>
<li><a href="https://github.com/pypa/virtualenv/commit/4a1328b8f764683bffe860cd34ab0510f6e790d7"><code>4a1328b</code></a> Bump pip and setuptools (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2222">#2222</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/6bfc29e1a3d621e3f622a0d0395ff261ce0f3973"><code>6bfc29e</code></a> special-case <code>--prompt .</code> to the cwd (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2220">#2220</a>)</li>
<li><a href="https://github.com/pypa/virtualenv/commit/4188ac6e72d3b731595c83d46d1c0eb76fe4f6eb"><code>4188ac6</code></a> Support PyPy 3.8 (<a href="https://github-redirect.dependabot.com/pypa/virtualenv/issues/2206">#2206</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/pypa/virtualenv/compare/20.8.1...20.10.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=virtualenv&package-manager=pip&previous-version=20.8.1&new-version=20.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants