cpython: fix permissions on venv activation scripts

Previously these ended up without u+w permissions which meant they could
not be regenerated, which was hugely annoying when these venvs were for
example created and recreated in a nix-shell.
This commit is contained in:
Martin Weinelt 2021-06-28 03:08:21 +02:00
parent 13725621d4
commit 4fa69858d9
No known key found for this signature in database
GPG key ID: 87C1E9888F856759
2 changed files with 17 additions and 0 deletions

View file

@ -190,6 +190,10 @@ in with passthru; stdenv.mkDerivation {
# (since it will do a futile invocation of gcc (!) to find # (since it will do a futile invocation of gcc (!) to find
# libuuid, slowing down program startup a lot). # libuuid, slowing down program startup a lot).
(./. + "/${sourceVersion.major}.${sourceVersion.minor}/no-ldconfig.patch") (./. + "/${sourceVersion.major}.${sourceVersion.minor}/no-ldconfig.patch")
# Make sure that the virtualenv activation scripts are
# owner-writable, so venvs can be recreated without permission
# errors.
./virtualenv-permissions.patch
] ++ optionals mimetypesSupport [ ] ++ optionals mimetypesSupport [
# Make the mimetypes module refer to the right file # Make the mimetypes module refer to the right file
./mimetypes.patch ./mimetypes.patch

View file

@ -0,0 +1,13 @@
diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py
index caa7285..ad666ac 100644
--- a/Lib/venv/__init__.py
+++ b/Lib/venv/__init__.py
@@ -379,7 +379,7 @@ class EnvBuilder:
if data is not None:
with open(dstfile, 'wb') as f:
f.write(data)
- shutil.copymode(srcfile, dstfile)
+ os.chmod(dstfile, 0o644)
def create(env_dir, system_site_packages=False, clear=False,