Not just executable running on the bots need this: executables without this fail to link, breaking bots that build 'all'.
Maybe gn could ignore default deps for = vs +=?
Not just executable running on the bots need this: executables without this fail to link, breaking bots that build 'all'.
Maybe gn could ignore default deps for = vs +=?
Isn't specifying a default deps in BUILDCONFIG and requiring every executable to use "+=" the right thing to do here, for exactly the reasons you gave?
While I agree that creating a template() that was used instead of using executable() directly would work around this problem, I think that's all it is, a workaround.A workaround that is admittedly useful, for this and other things, of course. I've thought for a long time that we shouldn't let people use any of the built-intarget types because you can't impose global conventions on them very easily. But, that also seems like a failing of GN itself, perhaps.Brett, I'm guessing you're saying that this would be a super difficult change to land because there would be executables() declared in repos that would haveto be DEPS'ed in, and you'd have to do that at the same time you changed //build, so it would be one big massive roll (and the upstream repos would be brokenin the meantime)?
The main crucial thing for making this manageable was having an easy way to find executables that were missing manifests, which I did by doing a full build and then running a batch file that iterated over *.exe. Alternately you could scan the BUILD.gn files for default_exe_manifest and insert your new dependency in the appropriate location relative to it.
If we end up having to add a deps entry to all executables frequently then it's onerous, but if it is sufficiently rare then it's okay.