Thanks to visit codestin.com
Credit goes to github.com

Skip to content

More general support for platform_releaseΒ #2821

Closed
@baxelrod-bdai

Description

@baxelrod-bdai

🐞 bug report

Description

The >= operator should be supported for platform_release.

πŸ”¬ Minimal Reproduction

requirements.in has just:

keyboard

BUILD.bazel has:

load("@rules_uv//uv:pip.bzl", "pip_compile")

pip_compile(
    name = "generate_requirements",
    extra_args = [
        "--universal",
    ],
    requirements_in = "requirements.in",
    requirements_txt = "requirements.lock",
)

Running bazel run //:generate_requirements creates a .lock file with lots of entries like:

pyobjc-framework-businesschat==11.0 ; platform_release >= '18.0' and sys_platform == 'darwin' \
    --hash=sha256:1f732fdace31d2abdd14b3054f27a5e0f4591c7e1bef069b6aeb4f9c8d9ec487 \
    --hash=sha256:20fe1c8c848ef3c2e132172d9a007a8aa65b08875a9ca5c27afbfc4396b16dbb \
    --hash=sha256:47a2e4da9b061daa89a6367cb0e6bb8cdea0627379dd6d5095a8fd20243d8613
    # via pyobjc
pyobjc-framework-calendarstore==11.0 ; platform_release >= '9.0' and sys_platform == 'darwin' \
    --hash=sha256:40173f729df56b70ec14f9680962a248c3ce7b4babb46e8b0d760a13975ef174 \
    --hash=sha256:67ddc18c96bba42118fc92f1117b053c58c8888edb74193f0be67a10051cc9e2 \
    --hash=sha256:9b310fe66ac12e0feb7c8e3166034bec357a45f7f8b8916e93eddc6f199d08c8
    # via pyobjc

Then when you try to bazel run anything, you get the crash:

ERROR: /home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl:348:20: Traceback (most recent call last):
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 611, column 25, in _pip_impl
		mods = parse_modules(module_ctx)
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 482, column 36, in parse_modules
		out = _create_whl_repos(
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 158, column 50, in _create_whl_repos
		requirements_by_platform = parse_requirements(
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/parse_requirements.bzl", line 159, column 51, in parse_requirements
		env_marker_target_platforms = evaluate_markers(reqs_with_env_markers)
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/evaluate_markers.bzl", line 35, column 24, in evaluate_markers
		if evaluate(req.marker, env = env(platform_from_str(platform, None))):
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 146, column 27, in evaluate
		tokens = ast.parse(env = env, tokens = tokens, strict = strict)
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 231, column 40, in lambda
		parse = lambda **kwargs: _parse(self, **kwargs),
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 258, column 27, in _parse
		expr = marker_expr(env = env, strict = strict, *tokens[:3])
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 330, column 25, in marker_expr
		return _env_expr(left, op, right)
	File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 348, column 20, in _env_expr
		return fail("TODO: op unsupported: '{}'".format(op))
Error in fail: TODO: op unsupported: '>='
ERROR: error evaluating module extension @@rules_python+//python/extensions:pip.bzl%pip

🌍 Your Environment

Operating System:

  
Linux baxelrod-ThinkPad 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
  

Output of bazel version:

  
Bazelisk version: v1.19.0
Build label: 8.1.1
Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
Build time: Tue Feb 25 18:50:42 2025 (1740509442)
Build timestamp: 1740509442
Build timestamp as int: 1740509442
  

Rules_python version:

bazel_dep(name = "rules_python", version = "1.4.0-rc1")
bazel_dep(name = "rules_uv", version = "0.68.0")

Anything else relevant?

Slack thread: https://bazelbuild.slack.com/archives/CA306CEV6/p1745423125646599

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions