The Wayback Machine - https://web.archive.org/web/20210104142425/https://github.com/bazelbuild/rules_python/issues/384
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for operating-system-specific requirements file #384

Open
dhalperi opened this issue Nov 25, 2020 · 0 comments
Open

Support for operating-system-specific requirements file #384

dhalperi opened this issue Nov 25, 2020 · 0 comments

Comments

@dhalperi
Copy link
Contributor

@dhalperi dhalperi commented Nov 25, 2020

🚀 feature request

Relevant Rules

load("@rules_python//python:pip.bzl", "pip_install")

Description

Our company uses both macOS and Linux (Ubuntu and Docker) as development / test / production platforms.

As recommended on Bazel #python Slack, we use a requirements.in file to produce requirements.txt using pip-compile. This works great, except...

The requirements.txt compilation process can be OS dependent. For example, ipython has OS_dependent deps via ':sys_platform == "darwin"': ["appnope"],.

I can't figure out how to make requirements.txt be dependent on the operating system (platform?). There's only room for one in the WORKSPACE declaration, and select statements don't work there.

Relevant thread from Slack, from @thundergolfer:

Jonathon Belotti 6 minutes ago
Ok I understand better. Yeah, in our work codebase we enforce that Linux+OSX both have the same transitively locked requirements.txt file. It's working fine in practice.
:sys_platform == "darwin"': ["appnope"] is the one place we've hit a problem.

Describe the solution you'd like

I'm not sure what the best solution is here. Can we do something in the rule to take a mapping and resolve it that way?

Describe alternatives you've considered

The main thing that seems like it would work without a rule change is a configure script that links to requirements.txt.<platform>. Seems heavyweight though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
1 participant
You can’t perform that action at this time.