--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
---
You received this message because you are subscribed to the Google Groups "Chromium-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-dev...@chromium.org.
+kouhei who is working on doing this for the html.css file in blink. Seems you should share code there. :)
Brett,Doing only on official builds is certainly an option, but given the limited testing we do on official builds I tend to dislike anything that increases the difference between them and development builds (although this should make absolutely no difference to the behaviour of Chrome, it would be nice to catch any instances where it does early).While I think I understand why you and others are worried by this, one thing I do not understand is how this is different from the situation with C++ header files
On Tue, Jul 12, 2016 at 2:36 PM, Anthony Berent <abe...@chromium.org> wrote:Brett,Doing only on official builds is certainly an option, but given the limited testing we do on official builds I tend to dislike anything that increases the difference between them and development builds (although this should make absolutely no difference to the behaviour of Chrome, it would be nice to catch any instances where it does early).While I think I understand why you and others are worried by this, one thing I do not understand is how this is different from the situation with C++ header filesThe difference is that forgetting to list a .h file in a GN file doesn't change the result of the build, it only means the MSVC/Xcode projects that gn generates won't list these .h files.
On Tue, 12 Jul 2016 at 19:53 Nico Weber <tha...@chromium.org> wrote:On Tue, Jul 12, 2016 at 2:36 PM, Anthony Berent <abe...@chromium.org> wrote:Brett,Doing only on official builds is certainly an option, but given the limited testing we do on official builds I tend to dislike anything that increases the difference between them and development builds (although this should make absolutely no difference to the behaviour of Chrome, it would be nice to catch any instances where it does early).While I think I understand why you and others are worried by this, one thing I do not understand is how this is different from the situation with C++ header filesThe difference is that forgetting to list a .h file in a GN file doesn't change the result of the build, it only means the MSVC/Xcode projects that gn generates won't list these .h files.Doesn't it also mean that changes to that .h file will not cause that build step to be repeated, so causing incremental builds to be potentially wrong?
On Tue, Jul 12, 2016 at 2:58 PM, Anthony Berent <abe...@chromium.org> wrote:On Tue, 12 Jul 2016 at 19:53 Nico Weber <tha...@chromium.org> wrote:On Tue, Jul 12, 2016 at 2:36 PM, Anthony Berent <abe...@chromium.org> wrote:Brett,Doing only on official builds is certainly an option, but given the limited testing we do on official builds I tend to dislike anything that increases the difference between them and development builds (although this should make absolutely no difference to the behaviour of Chrome, it would be nice to catch any instances where it does early).While I think I understand why you and others are worried by this, one thing I do not understand is how this is different from the situation with C++ header filesThe difference is that forgetting to list a .h file in a GN file doesn't change the result of the build, it only means the MSVC/Xcode projects that gn generates won't list these .h files.Doesn't it also mean that changes to that .h file will not cause that build step to be repeated, so causing incremental builds to be potentially wrong?No, ninja gets .h dependency information from the compiler, not from gn.
Ok, I will take a look at how that works. The ideal would be take the output of 'grit buildinfo', edit it, and feed it back into the build system, however my I didn't see how this was possible when I looked before. I will take another look in the morning (London time).Meanwhile if anybody knows of any examples of doing anything of the sort with GN, please send me pointers.
Brett
On Tue, 12 Jul 2016 at 20:40 Brett Wilson <bre...@chromium.org> wrote:On Tue, Jul 12, 2016 at 12:11 PM, Anthony Berent <abe...@chromium.org> wrote:Ok, I will take a look at how that works. The ideal would be take the output of 'grit buildinfo', edit it, and feed it back into the build system, however my I didn't see how this was possible when I looked before. I will take another look in the morning (London time).Meanwhile if anybody knows of any examples of doing anything of the sort with GN, please send me pointers.Grit already writes a .d file for proper dependency tracking, which is why the sources don't need to be written in the build files in the first place but we still get proper incremental rebuilds. Be aware that we don't want to shell out to grit at GN-time to get stuff out of it. I actually spent a long time fixing grit to not require this (it used to) since this basically doubled GN's runtime on Windows.It seems to me that we have three choices:
- We can compile all the Javascript files every time we run grit. As discussed earlier in this thread this will significantly slow down the builds.
- We can list the Javascript files in the BUILD.gn files. This has the problem that the files are listed twice, once in the BUILD.gn files and once in grit's inputs.
- We can generate a list of files to be compiled at GN time. This, as I explain below, requires running grit buildinfo, or something equivalent, at GN time, so will significantly slow down the GN step.
On Wed, Jul 13, 2016 at 8:45 AM, Anthony Berent <abe...@chromium.org> wrote:On Tue, 12 Jul 2016 at 20:40 Brett Wilson <bre...@chromium.org> wrote:On Tue, Jul 12, 2016 at 12:11 PM, Anthony Berent <abe...@chromium.org> wrote:Ok, I will take a look at how that works. The ideal would be take the output of 'grit buildinfo', edit it, and feed it back into the build system, however my I didn't see how this was possible when I looked before. I will take another look in the morning (London time).Meanwhile if anybody knows of any examples of doing anything of the sort with GN, please send me pointers.Grit already writes a .d file for proper dependency tracking, which is why the sources don't need to be written in the build files in the first place but we still get proper incremental rebuilds. Be aware that we don't want to shell out to grit at GN-time to get stuff out of it. I actually spent a long time fixing grit to not require this (it used to) since this basically doubled GN's runtime on Windows.It seems to me that we have three choices:
- We can compile all the Javascript files every time we run grit. As discussed earlier in this thread this will significantly slow down the builds.
- We can list the Javascript files in the BUILD.gn files. This has the problem that the files are listed twice, once in the BUILD.gn files and once in grit's inputs.
- We can generate a list of files to be compiled at GN time. This, as I explain below, requires running grit buildinfo, or something equivalent, at GN time, so will significantly slow down the GN step.
I think 1 and 3 are out from a build performance point of view. 2 has the problem you mention, so let's try to fix that. Ideas:* List files in gn, and pass them to grit on the command line (or in a response file) and don't list them in the .grd file
* List them in both places, but give grit a thingy so it can check that the listed js files are equal to a list of files passed on the command line. Still listed twice, but this way they can't diverge (…now that I wrote this, I think we do something similar for grit's <output> elements already, or something in that area? I think I remember reviewing a CL from Brett in that area a few years ago)