facebook / buck2

Build system, successor to Buck
https://buck2.build/
Apache License 2.0
3.33k stars 194 forks source link

Add the python interpreter as a hidden dep of a pex file #626

Closed zjturner closed 2 weeks ago

zjturner commented 3 weeks ago

We have a unique python setup. We distribute it hermetically via an internal tool (similar to dotslash), then we set up our python toolchain to return a PythonToolchainInfo whose interpreter and host_interpreter fields point to a shell script called python_shim.sh that is created via ctx.actions.write(), in order to properly set up the venv and do some other things to make it hermetic.

Later, if you call python_binary, it generates a pex file which contains a line like this at the beginning:

#!/usr/bin/env buck-out/v2/gen/toolchains/48291db568f0aab5-9e2be58768776d78/__python__/python_shim.sh 

Presently this is broken because the cmd_args to execute the pex file does not have an action dependency on the interpreter, and so it complains that it cannot find python_shim.h. This PR makes it work

zjturner commented 2 weeks ago

@JakobDegen Do you know anyone who can review this?

JakobDegen commented 2 weeks ago

I'll import it and try and find someone. Sorry for letting this slip a bit, I've been traveling and so it's a bit harder to keep up with everything going on

facebook-github-bot commented 2 weeks ago

@JakobDegen has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.