diff --git a/src/pip/_internal/build_env.py b/src/pip/_internal/build_env.py index 7783c9acd..01165113b 100644 --- a/src/pip/_internal/build_env.py +++ b/src/pip/_internal/build_env.py @@ -175,8 +175,10 @@ class BuildEnvironment: ) for req_str in reqs: req = Requirement(req_str) - if req.marker is not None and not req.marker.evaluate(): - continue # FIXME: Consider extras? + # We're explicitly evaluating with an empty extra value, since build + # environments are not provided any mechanism to select specific extras. + if req.marker is not None and not req.marker.evaluate({"extra": ""}): + continue dist = env.get_distribution(req.name) if not dist: missing.add(req_str) diff --git a/tests/functional/test_build_env.py b/tests/functional/test_build_env.py index a7f89687c..1b9f42d94 100644 --- a/tests/functional/test_build_env.py +++ b/tests/functional/test_build_env.py @@ -178,6 +178,7 @@ def test_build_env_requirements_check(script: PipTestEnvironment) -> None: [ "bar==2.0; python_version < '3.0'", "bar==3.0; python_version >= '3.0'", + "foo==4.0; extra == 'dev'", ], ) assert r == (set(), set()), repr(r)