--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
-- Dirk
--
--
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.
2. CEF violates a number of component boundaries [1] which precludes us from building with is_component=true. These violations are necessary to expose functionality to client applications via the API exported by the CEF shared library. We can probably fix this with Chromium changes (add *_EXPORT) but it would remain somewhat fragile since Chromium builds don't share these dependencies.Would people be open to accepting the changes required to fix #2?
Brett
To me, the value of is_debug=true is the ability to usefully run in gdb. That requires symbols and a low optimization level (so that variables don't get optimized out, inlined function don't mess up stack traces and single-stepping, etc. etc.) -- and the latter seems in direct conflict with a release build, no?
On Tue, Jul 26, 2016 at 4:49 PM, Christian Biesinger <cbies...@chromium.org> wrote:To me, the value of is_debug=true is the ability to usefully run in gdb. That requires symbols and a low optimization level (so that variables don't get optimized out, inlined function don't mess up stack traces and single-stepping, etc. etc.) -- and the latter seems in direct conflict with a release build, no?If we can make is_debug=true just about optimization level and debug symbols then I don't see why it would conflict with is_component=false (or =true). What is it about is_debug=true currently that makes this more complex, and prompted Dirk's original email?
PK
PK
I wholeheartedly agree with this (I actually thought this was already the status quo?).. We have enough configs to support that we shouldn't add more, especially ones that aren't on the main waterfall.For consistency with what we ship, that's what release is for.By the same token, I don't think we should support release component.
On Tue, Jul 26, 2016 at 3:23 PM, John Abd-El-Malek <j...@chromium.org> wrote:I wholeheartedly agree with this (I actually thought this was already the status quo?).. We have enough configs to support that we shouldn't add more, especially ones that aren't on the main waterfall.For consistency with what we ship, that's what release is for.By the same token, I don't think we should support release component.I regularly build release component (in fact, it's my default). It's much faster to build than release static, but isn't nearly as slow to use as debug. I'd be sad to lose it.I usually only build debug component when I expect to attach gdb or am staring at a stack trace with parts optimized away.
I'm still using static debug build because I often modify blink core code for which component build doesn't help much to speed up build.More importantly, in the following scenario:1. gdb content_shell2. set some breakpoints3. run --single-process --run-layout-test some/test4. examine the execution5. adjust breakpointsrepeat 3-5 until I find the bug,static build is slow in step 1 only, while component build is fast in step 1 but is slow in each step 3. For static build, normally I can do other things during step 1; but for component build, the slowness of step 3 interrupts contiguous thoughts during debugging.Is there a way to let gdb not to unload symbols of dynamic libraries between runs?Tried 'symbol-file -readnow .../libblink_core.so'. It is much slower than step 1 or 3, and it doesn't speed up step 3.
Replying to various messages in this thread all at once ...I think we should continue to support release component, too. It's a fast build, and it works fine to debug things in this configuration, at least on the mac. I don't think we need to set up builders for this configuration, though, because it rarely (if ever) breaks.
The major differences in the debug build are that (a) you get full symbols, (b) _DEBUG is defined, and NDEBUG is not defined; there are are a few other defines that also get enabled that trigger various kinds of validation, and various other compiler flags that enable different checks. The net result is that the debug build is significantly slower than a release+dcheck build. You can get full symbols in release and official builds, but the only way to get all of the other stuff is, unsurprisingly, to set is_debug=true. I would encourage CEF to do a release (or even official) build w/ symbols, and then strip the binaries, which is roughly what we do for Chrome.I think it's worth figuring out what would need to be different, EXPORT-wise, and why. CEF is and has been a long-standing user of Chromium -- it is the public API we recommend people write against if they don't want to do a full port, after all -- and I think it's fair to put some effort into supporting it.
We can even set up builders for it, if that's easy enough to do, IMO.
This is what the gdb manual says about reloading symbols: "If the modification time of your symbol file has changed since the last time GDB read its symbols, GDB discards its symbol table, and reads it again." https://ftp.gnu.org/old-gnu/Manuals/gdb-5.1.1/html_node/gdb_17.html#SEC18
(Similarly trying to reply to a few points at once)On Tue, Jul 26, 2016 at 3:24 PM, Dirk Pranke <dpr...@chromium.org> wrote:Replying to various messages in this thread all at once ...I think we should continue to support release component, too. It's a fast build, and it works fine to debug things in this configuration, at least on the mac. I don't think we need to set up builders for this configuration, though, because it rarely (if ever) breaks.Ken and I were chatting about this and he timed the link time difference on Linux release component vs Linux release static to be 3s vs 12s. I realize every second count, but IMO this is too small a difference to justify adding a new supported build configuration. Every new config can have some specific benefit, but the bar should be pretty high to add a new supported config.
The major differences in the debug build are that (a) you get full symbols, (b) _DEBUG is defined, and NDEBUG is not defined; there are are a few other defines that also get enabled that trigger various kinds of validation, and various other compiler flags that enable different checks. The net result is that the debug build is significantly slower than a release+dcheck build. You can get full symbols in release and official builds, but the only way to get all of the other stuff is, unsurprisingly, to set is_debug=true. I would encourage CEF to do a release (or even official) build w/ symbols, and then strip the binaries, which is roughly what we do for Chrome.I think it's worth figuring out what would need to be different, EXPORT-wise, and why. CEF is and has been a long-standing user of Chromium -- it is the public API we recommend people write against if they don't want to do a full port, after all -- and I think it's fair to put some effort into supporting it.I agree to first find out how many exports we need. IMO Marshall can add as many export calls to the classes as we need. We don't audit and remove ones that are unused in our code.We can even set up builders for it, if that's easy enough to do, IMO.I don't think we should add new builders at this point for projects outside our repo. That means that we're on the hook for maintaining it, which means having to make changes in other repos and potentially three sided patches.
(Similarly trying to reply to a few points at once)On Tue, Jul 26, 2016 at 3:24 PM, Dirk Pranke <dpr...@chromium.org> wrote:Replying to various messages in this thread all at once ...I think we should continue to support release component, too. It's a fast build, and it works fine to debug things in this configuration, at least on the mac. I don't think we need to set up builders for this configuration, though, because it rarely (if ever) breaks.Ken and I were chatting about this and he timed the link time difference on Linux release component vs Linux release static to be 3s vs 12s. I realize every second count, but IMO this is too small a difference to justify adding a new supported build configuration. Every new config can have some specific benefit, but the bar should be pretty high to add a new supported config.
On Tue, Jul 26, 2016 at 3:48 PM, John Abd-El-Malek <j...@chromium.org> wrote:(Similarly trying to reply to a few points at once)On Tue, Jul 26, 2016 at 3:24 PM, Dirk Pranke <dpr...@chromium.org> wrote:Replying to various messages in this thread all at once ...I think we should continue to support release component, too. It's a fast build, and it works fine to debug things in this configuration, at least on the mac. I don't think we need to set up builders for this configuration, though, because it rarely (if ever) breaks.Ken and I were chatting about this and he timed the link time difference on Linux release component vs Linux release static to be 3s vs 12s. I realize every second count, but IMO this is too small a difference to justify adding a new supported build configuration. Every new config can have some specific benefit, but the bar should be pretty high to add a new supported config.As I attempted to note before, there are different levels of "supported", and I don't think release shared is imposing any particular burden on us (unlike debug static).
The major differences in the debug build are that (a) you get full symbols, (b) _DEBUG is defined, and NDEBUG is not defined; there are are a few other defines that also get enabled that trigger various kinds of validation, and various other compiler flags that enable different checks. The net result is that the debug build is significantly slower than a release+dcheck build. You can get full symbols in release and official builds, but the only way to get all of the other stuff is, unsurprisingly, to set is_debug=true. I would encourage CEF to do a release (or even official) build w/ symbols, and then strip the binaries, which is roughly what we do for Chrome.I think it's worth figuring out what would need to be different, EXPORT-wise, and why. CEF is and has been a long-standing user of Chromium -- it is the public API we recommend people write against if they don't want to do a full port, after all -- and I think it's fair to put some effort into supporting it.I agree to first find out how many exports we need. IMO Marshall can add as many export calls to the classes as we need. We don't audit and remove ones that are unused in our code.We can even set up builders for it, if that's easy enough to do, IMO.I don't think we should add new builders at this point for projects outside our repo. That means that we're on the hook for maintaining it, which means having to make changes in other repos and potentially three sided patches.I'm sorry, I think what I was trying to suggest was unclear. I wouldn't want to build CEF itself, but if CEF needs to set a bunch of flags that aren'tnecessarily set in one of the existing configurations, and if we can do a build that has those flags set but doesn't require actual CEF code, I would think *that* would be a reasonable config to build on the waterfall
(just like we have builders that test things resembling ChromeCast and CrOS, even though they're not the real configurations for those products).
Would this proposal affect other builds than Chrome?For example, the Android remoting_apk target fails when built with is_component_build = true.When the APK is installed and run, I get this error:E AndroidRuntime: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.chromium.chromoting-1/base.apk"],nativeLibraryDirectories=[/data/app/org.chromium.chromoting-1/lib/arm, /data/app/org.chromium.chromoting-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]] couldn't find "libremoting_client_jni.so"I don't think we've developed or tested a components build of Chromoting on any platform, because it's not the default and there has never been any reason for us to support it.
On Tue, Jul 26, 2016 at 4:06 PM, Dominic Mazzoni <dmaz...@chromium.org> wrote:On Tue, Jul 26, 2016 at 3:48 PM John Abd-El-Malek <j...@chromium.org> wrote:(Similarly trying to reply to a few points at once)On Tue, Jul 26, 2016 at 3:24 PM, Dirk Pranke <dpr...@chromium.org> wrote:Replying to various messages in this thread all at once ...I think we should continue to support release component, too. It's a fast build, and it works fine to debug things in this configuration, at least on the mac. I don't think we need to set up builders for this configuration, though, because it rarely (if ever) breaks.Ken and I were chatting about this and he timed the link time difference on Linux release component vs Linux release static to be 3s vs 12s. I realize every second count, but IMO this is too small a difference to justify adding a new supported build configuration. Every new config can have some specific benefit, but the bar should be pretty high to add a new supported config.Are you arguing that release + component should be disallowed, or just that we don't need a builder?I think 3s vs 12s is a pretty substantial difference when you're talking about an incremental build, like after changing one source file. Also keep in mind that those numbers come from a fast desktop machine - many of us have 2nd or 3rd machines that aren't as fast, and compiling / linking can take twice or three times as long.
Replying to various messages in this thread all at once ...I think we should continue to support release component, too. It's a fast build, and it works fine to debug things in this configuration, at least on the mac. I don't think we need to set up builders for this configuration, though, because it rarely (if ever) breaks.The major differences in the debug build are that (a) you get full symbols, (b) _DEBUG is defined, and NDEBUG is not defined; there are are a few other defines that also get enabled that trigger various kinds of validation, and various other compiler flags that enable different checks. The net result is that the debug build is significantly slower than a release+dcheck build. You can get full symbols in release and official builds, but the only way to get all of the other stuff is, unsurprisingly, to set is_debug=true. I would encourage CEF to do a release (or even official) build w/ symbols, and then strip the binaries, which is roughly what we do for Chrome.I think it's worth figuring out what would need to be different, EXPORT-wise, and why. CEF is and has been a long-standing user of Chromium -- it is the public API we recommend people write against if they don't want to do a full port, after all -- and I think it's fair to put some effort into supporting it. We can even set up builders for it, if that's easy enough to do, IMO.As to "not allowing" it, in this particular case, I would add an assert(!is_debug || is_component_build) because we don't want people wasting time trying to make this work if there's no reason for it to work.
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.
(Similarly trying to reply to a few points at once)
Ken and I were chatting about this and he timed the link time difference on Linux release component vs Linux release static to be 3s vs 12s.