See https://tbpl.mozilla.org/?usebuildbot=1&rev=c7ef262e3024 and many other examples on mozilla-central.
Dependent on bug 691675, so good luck with that. They aren't scheduled so much as just thrown at the tree as hard as possible so that they stick to the very tip of it, and deciding DONTBUILD pushes don't count as a change between the last thing that got PGO and now would be one of the jobs of that smarter scheduler.
It should only not build if *all* pushes between this and the last PGO changeset have DONTBUILD. This seems like a good optimization to make in the future.
Yeah, from a releng standpoint it's interesting for the abc123 DONTBUILD def456 DONTBUILD ghi789 (already had PGO builds) case where you can skip building entirely, but the reason it was filed is that from a developer standpoint, it is a mistake and a failure and an imposition if in abc123 DONTBUILD def456 buildme ghi789 (already had PGO builds) you trigger PGO on abc123, instead of triggering it on def456.
It will at least only run once now. That should be sufficient for this and also might catch cases where things are marked DONTBUILD erroneously.
This should either be a dupe or WONTFIX. Just my opinion, I could be wrong! ;-)
So, to explain my pint here. The entire reason for NOT doing PGO builds on each push is that especially on windows they take too long to complete. The whole idea of the making sure do do one every 4 hours if anything changed is to try to ensure that the nightly build will actually work (since it is a PGO build). So doing a PGO build if one has not been done for 4 hours even if the only check-ins are marked as not affecting the Firefox builds seems to me to be the right thing to do. Better to err on the side of doing an unnecessary build than have the nightly fail in my opinion.