Related #2319
This is to add a parser for PEP508 in starlark and to use it in the hub_repository instead of evaluating markers with Python in the module extension evaluation phase.
This will be needed in other places as well:
- Using the same starlark parser in parsing the METADATA.
- Parsing
uv.lock and other lock files that have the marker as part of their deps.
- Allowing us to push the
env_marker evaluation to the analysis phase together with the other config setting evaluation.
- Allowing to properly support the full spec of PEP508 in the
whl_library without exploding the number of args we need to pass to whl_library.
- Allowing to create something similar to a
whl_archive repository rule that would not depend on Python that we could dog-food ourselves for the repo rules that need Python at the repo phase (i.e. the current whl_library).