Hi all,
For quite a long time, we had a prohibition against using `vpython` in the build, because it was believed to be too slow. In fact, as far as I know we're supposed to still have that prohibition.
The bug in question we were using to track this --
crbug.com/948846 -- got dup'ed into
crbug.com/1152879 (on my suggestion), but I think that ended up being a mistake because in the latter case we were only looking into general infra vpython performance,
and not something as performance sensitive as using it thousands of times in the build.
So, I think we should re-evaluate things and decide whether we can now allow it.
IIRC, there was one case where we knew performance would be unacceptably slow, and that was when we were using vpython as the script_executable (i.e., the default for all python invocations), and when we used a python wrapper script around clang on the code coverage bots (the latter meaning we'd invoke python on every compile action as well as every script action). I have a vague memory that we did something to address this, but I don't remember what it was, so I'm not sure if this is still an issue.
It seems like we could have several different possible options
1) vpython is not allowed at all, for anything (status quo AFAIK)
2) vpython is allowed as needed
3) vpython is allowed (and is in fact mandated) for everything except for the compile wrapper, and we somehow figure out how to work around it for the wrapper.
4) vpython is allowed/mandated for everything.
I think generally we want to switch to vpython where we can, because vpython's package management practices are better than our ad-hoc "pull code down. check it into third_party, and do sys.path hacking" approach that we've been using forever.
I am, however, not clear on how much of a performance hit we're willing to take for this.
Anyone have any sense of what they think might be acceptable? I'm thinking we'd want something like a <= 1% performance hit on the bots like linux-rel that have coveraged enabled, i.e., case 4 above.
@Gary Tong Do you have any sense of what sort of a build time increase we could tolerate on the fleet (bearing in mind that I'm asking you this on a public mailing list :)?
@Prakhar Asthana Do you remember the coverage issue I'm talking about and whether we did anything about it?
@Others - do other people have thoughts on this? I'll mention for example that we don't have to worry about whether or not people have vpython, because we run all of our gclient hooks using vpython now.
I tripped over this today because I wanted to switch some tools over to vpython but I discovered that one of them was being used in the build and hence triggered this case :(.
-- Dirk