Skip to content

Commit f6feca1

Browse files
fix: Fix bazel vendor support for requirements with environment markers (bazel-contrib#2997)
Fixes `bazel vendor` support for requirements files that contain environment markers. During a vendored `bazel build`, when evaluate_markers_py() is run it needs PYTHONHOME set to properly find the home of the vendored libraries. Resolves bazel-contrib#2996 --------- Co-authored-by: Ignas Anikevicius <240938+aignas@users.noreply.github.com>
1 parent 036e8c5 commit f6feca1

File tree

5 files changed

+22
-6
lines changed

5 files changed

+22
-6
lines changed

.bazelci/presubmit.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,15 @@ tasks:
272272
working_directory: examples/bzlmod
273273
platform: debian11
274274
bazel: 7.x
275+
integration_test_bzlmod_ubuntu_vendor:
276+
<<: *reusable_build_test_all
277+
name: "examples/bzlmod: bazel vendor"
278+
working_directory: examples/bzlmod
279+
platform: ubuntu2004
280+
shell_commands:
281+
- "bazel vendor --vendor_dir=./vendor //..."
282+
- "bazel build --vendor_dir=./vendor //..."
283+
- "rm -rf ./vendor"
275284
integration_test_bzlmod_macos:
276285
<<: *reusable_build_test_all
277286
<<: *coverage_targets_example_bzlmod

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ END_UNRELEASED_TEMPLATE
6161

6262
{#v0-0-0-fixed}
6363
### Fixed
64-
* Nothing fixed.
64+
* (pypi) Fixes an issue where builds using a `bazel vendor` vendor directory
65+
would fail if the constraints file contained environment markers. Fixes
66+
[#2996](https://github.com/bazel-contrib/rules_python/issues/2996).
6567

6668
{#v0-0-0-added}
6769
### Added

examples/bzlmod/.bazelignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
other_module
22
py_proto_library/foo_external
3+
vendor

examples/bzlmod/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
bazel-*
2+
vendor/

python/private/pypi/evaluate_markers.bzl

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,16 @@ def evaluate_markers_py(mrctx, *, requirements, python_interpreter, python_inter
7878
out_file = mrctx.path("requirements_with_markers.out.json")
7979
mrctx.file(in_file, json.encode(requirements))
8080

81+
interpreter = pypi_repo_utils.resolve_python_interpreter(
82+
mrctx,
83+
python_interpreter = python_interpreter,
84+
python_interpreter_target = python_interpreter_target,
85+
)
86+
8187
pypi_repo_utils.execute_checked(
8288
mrctx,
8389
op = "ResolveRequirementEnvMarkers({})".format(in_file),
84-
python = pypi_repo_utils.resolve_python_interpreter(
85-
mrctx,
86-
python_interpreter = python_interpreter,
87-
python_interpreter_target = python_interpreter_target,
88-
),
90+
python = interpreter,
8991
arguments = [
9092
"-m",
9193
"python.private.pypi.requirements_parser.resolve_target_platforms",
@@ -94,6 +96,7 @@ def evaluate_markers_py(mrctx, *, requirements, python_interpreter, python_inter
9496
],
9597
srcs = srcs,
9698
environment = {
99+
"PYTHONHOME": str(interpreter.dirname),
97100
"PYTHONPATH": [
98101
Label("@pypi__packaging//:BUILD.bazel"),
99102
Label("//:BUILD.bazel"),

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy