Skip to content

Commit 4cb548f

Browse files
committed
Inject graalpy-virtualenv dependency to virtualenv
1 parent 01b0c72 commit 4cb548f

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

graalpython/lib-graalpython/patches/pip-23.2.1.patch

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,16 +125,38 @@ index a8cd133..20dd1e6 100644
125125
def pyc_source_file_paths() -> Generator[str, None, None]:
126126
# We de-duplicate installation paths, since there can be overlap (e.g.
127127
# file in .data maps to same location as file in wheel root).
128+
diff --git a/pip/_internal/resolution/resolvelib/candidates.py b/pip/_internal/resolution/resolvelib/candidates.py
129+
index de04e1d..d5bd355 100644
130+
--- a/pip/_internal/resolution/resolvelib/candidates.py
131+
+++ b/pip/_internal/resolution/resolvelib/candidates.py
132+
@@ -20,6 +20,7 @@ from pip._internal.req.constructors import (
133+
from pip._internal.req.req_install import InstallRequirement
134+
from pip._internal.utils.direct_url_helpers import direct_url_from_link
135+
from pip._internal.utils.misc import normalize_version_info
136+
+from pip._internal.utils import graalpy
137+
138+
from .base import Candidate, CandidateVersion, Requirement, format_name
139+
140+
@@ -242,6 +243,8 @@ class _InstallRequirementBackedCandidate(Candidate):
141+
for r in requires:
142+
yield self._factory.make_requirement_from_spec(str(r), self._ireq)
143+
yield self._factory.make_requires_python_requirement(self.dist.requires_python)
144+
+ if self.name == 'virtualenv' and not graalpy.DISABLE_PATCHING:
145+
+ yield self._factory.make_requirement_from_spec('graalpy-virtualenv', self._ireq)
146+
147+
def get_install_requirement(self) -> Optional[InstallRequirement]:
148+
return self._ireq
128149
diff --git a/pip/_internal/utils/graalpy.py b/pip/_internal/utils/graalpy.py
129150
new file mode 100644
130-
index 0000000..5b35102
151+
index 0000000..53dbe96
131152
--- /dev/null
132153
+++ b/pip/_internal/utils/graalpy.py
133-
@@ -0,0 +1,330 @@
154+
@@ -0,0 +1,334 @@
134155
+import abc
135156
+import logging
136157
+import os
137158
+import re
159+
+import sys
138160
+import tempfile
139161
+import zipfile
140162
+from contextlib import contextmanager
@@ -144,7 +166,7 @@ index 0000000..5b35102
144166
+
145167
+from pip._internal.models.candidate import InstallationCandidate
146168
+from pip._internal.models.link import Link
147-
+from pip._internal.utils.urls import url_to_path
169+
+from pip._internal.utils.urls import url_to_path, path_to_url
148170
+from pip._vendor import tomli, requests
149171
+from pip._vendor.packaging.specifiers import SpecifierSet
150172
+from pip._vendor.packaging.utils import canonicalize_name
@@ -440,6 +462,9 @@ index 0000000..5b35102
440462
+ # We need to force the filename to match the usual convention, otherwise we won't find a patch
441463
+ link = AddedSourceLink(url, f'{name}-{version}.{suffix}')
442464
+ candidates.append(InstallationCandidate(name=name, version=version, link=link))
465+
+ if name == 'graalpy-virtualenv':
466+
+ link = Link(path_to_url(os.path.join(sys.base_prefix, 'graalpy_virtualenv')))
467+
+ candidates.append(InstallationCandidate(name=name, version='0.0.1', link=link))
443468
+ return candidates
444469
+
445470
+

0 commit comments

Comments
 (0)