* [PATCH] distro/include: Add yocto-space-optimize, disabling debugging for large components @ 2024-07-11 9:30 Richard Purdie 2024-07-11 12:10 ` [OE-core] " Ross Burton 0 siblings, 1 reply; 4+ messages in thread From: Richard Purdie @ 2024-07-11 9:30 UTC (permalink / raw) To: openembedded-core Add an include file to allow turning off the debug compiler options for a small set of recipes to reduce build on disk footprint and package/sstate sizes. This is currently applied to llvm, qemu and openssl target recipes. The llvm-staticdev package takes up around 1.3GB alone. These three changes lead to a reduction in TMPDIR size for a world build from 240GB to 199GB, also removing some very large sstate objects. There is more that could and should be done but this does illustrate one way to speed up and reduce build size in a focused way whilst we ideally look into other approaches. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- meta/conf/distro/include/yocto-space-optimize.inc | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 meta/conf/distro/include/yocto-space-optimize.inc diff --git a/meta/conf/distro/include/yocto-space-optimize.inc b/meta/conf/distro/include/yocto-space-optimize.inc new file mode 100644 index 00000000000..ffc121e440a --- /dev/null +++ b/meta/conf/distro/include/yocto-space-optimize.inc @@ -0,0 +1,3 @@ +DEBUG_FLAGS:remove:pn-llvm = "-g" +DEBUG_FLAGS:remove:pn-qemu = "-g" +DEBUG_FLAGS:remove:pn-openssl = "-g" ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [OE-core] [PATCH] distro/include: Add yocto-space-optimize, disabling debugging for large components 2024-07-11 9:30 [PATCH] distro/include: Add yocto-space-optimize, disabling debugging for large components Richard Purdie @ 2024-07-11 12:10 ` Ross Burton 2024-07-11 13:35 ` Richard Purdie 0 siblings, 1 reply; 4+ messages in thread From: Ross Burton @ 2024-07-11 12:10 UTC (permalink / raw) To: Richard Purdie; +Cc: ,openembedded-core@lists.openembedded.org On 11 Jul 2024, at 10:30, Richard Purdie via lists.openembedded.org <richard.purdie=linuxfoundation.org@lists.openembedded.org> wrote: > > +DEBUG_FLAGS:remove:pn-llvm = "-g" > +DEBUG_FLAGS:remove:pn-qemu = "-g" > +DEBUG_FLAGS:remove:pn-openssl = "-g” This would be difficult to undo if the user did actually want debug symbols, right? This :removes -g (so you can’t :append it back) from the target flags: DEBUG_FLAGS ?= "-g -feliminate-unused-debug-types ${DEBUG_PREFIX_MAP}" FULL_OPTIMIZATION = "-O2 -pipe ${DEBUG_FLAGS}" DEBUG_OPTIMIZATION = "-Og ${DEBUG_FLAGS} -pipe" SELECTED_OPTIMIZATION = "${@d.getVar(oe.utils.vartrue('DEBUG_BUILD', 'DEBUG_OPTIMIZATION', 'FULL_OPTIMIZATION', d))}” TARGET_CFLAGS = "${TARGET_CPPFLAGS} ${SELECTED_OPTIMIZATION}” So with this there’s no obvious way to get symbols for target llvm/qemu/openssl, setting DEBUG_BUILD=1 still won’t actually pass -g. The user would have to know to do eg CFLAGS += “-g”. I’ll note that webkitgtk3 has approached this problem already and settled on this: DEBUG_FLAGS:append = "${@oe.utils.vartrue('DEBUG_BUILD', '', ' -g1', d)}" So -g1 (minimal but functional debugging info) unless DEBUG_BUILD enabled. I’m fairly against removing _all_ debug symbols for these recipes in default builds, although I’d certainly be happy with -g1 as a compromise between space saving and utility. Ross ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [OE-core] [PATCH] distro/include: Add yocto-space-optimize, disabling debugging for large components 2024-07-11 12:10 ` [OE-core] " Ross Burton @ 2024-07-11 13:35 ` Richard Purdie 2024-07-11 21:40 ` Khem Raj 0 siblings, 1 reply; 4+ messages in thread From: Richard Purdie @ 2024-07-11 13:35 UTC (permalink / raw) To: ross.burton; +Cc: ,openembedded-core@lists.openembedded.org On Thu, 2024-07-11 at 12:10 +0000, Ross Burton via lists.openembedded.org wrote: > On 11 Jul 2024, at 10:30, Richard Purdie via lists.openembedded.org <richard.purdie=linuxfoundation.org@lists.openembedded.org> wrote: > > > > +DEBUG_FLAGS:remove:pn-llvm = "-g" > > +DEBUG_FLAGS:remove:pn-qemu = "-g" > > +DEBUG_FLAGS:remove:pn-openssl = "-g” > > This would be difficult to undo if the user did actually want debug symbols, right? > > This :removes -g (so you can’t :append it back) from the target flags: > > DEBUG_FLAGS ?= "-g -feliminate-unused-debug-types ${DEBUG_PREFIX_MAP}" > FULL_OPTIMIZATION = "-O2 -pipe ${DEBUG_FLAGS}" > DEBUG_OPTIMIZATION = "-Og ${DEBUG_FLAGS} -pipe" > SELECTED_OPTIMIZATION = "${@d.getVar(oe.utils.vartrue('DEBUG_BUILD', 'DEBUG_OPTIMIZATION', 'FULL_OPTIMIZATION', d))}” > TARGET_CFLAGS = "${TARGET_CPPFLAGS} ${SELECTED_OPTIMIZATION}” > > So with this there’s no obvious way to get symbols for target llvm/qemu/openssl, setting DEBUG_BUILD=1 still won’t actually pass -g. The user would have to know to do eg CFLAGS += “-g”. > > I’ll note that webkitgtk3 has approached this problem already and settled on this: > > DEBUG_FLAGS:append = "${@oe.utils.vartrue('DEBUG_BUILD', '', ' -g1', d)}" > > So -g1 (minimal but functional debugging info) unless DEBUG_BUILD enabled. > > I’m fairly against removing _all_ debug symbols for these recipes in default builds, although I’d certainly be happy with -g1 as a compromise between space saving and utility. I agree that the remove is too hard to undo so we can't use this approach. We probably need to parameterise it in DEBUG_FLAGS since we're likely to need to do this more frequently. I do still think we should drop -g entirely for llvm though as the debug info is just too large even at -g1. I'm particularly keen to keep the package sizes down which keeps the sstate object size down too, making builds from sstate better over the network. Cheers, Richard ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [OE-core] [PATCH] distro/include: Add yocto-space-optimize, disabling debugging for large components 2024-07-11 13:35 ` Richard Purdie @ 2024-07-11 21:40 ` Khem Raj 0 siblings, 0 replies; 4+ messages in thread From: Khem Raj @ 2024-07-11 21:40 UTC (permalink / raw) To: richard.purdie; +Cc: ross.burton, ,openembedded-core@lists.openembedded.org On Thu, Jul 11, 2024 at 6:35 AM Richard Purdie via lists.openembedded.org <richard.purdie=linuxfoundation.org@lists.openembedded.org> wrote: > > On Thu, 2024-07-11 at 12:10 +0000, Ross Burton via lists.openembedded.org wrote: > > On 11 Jul 2024, at 10:30, Richard Purdie via lists.openembedded.org <richard.purdie=linuxfoundation.org@lists.openembedded.org> wrote: > > > > > > +DEBUG_FLAGS:remove:pn-llvm = "-g" > > > +DEBUG_FLAGS:remove:pn-qemu = "-g" > > > +DEBUG_FLAGS:remove:pn-openssl = "-g” > > > > This would be difficult to undo if the user did actually want debug symbols, right? > > > > This :removes -g (so you can’t :append it back) from the target flags: > > > > DEBUG_FLAGS ?= "-g -feliminate-unused-debug-types ${DEBUG_PREFIX_MAP}" > > FULL_OPTIMIZATION = "-O2 -pipe ${DEBUG_FLAGS}" > > DEBUG_OPTIMIZATION = "-Og ${DEBUG_FLAGS} -pipe" > > SELECTED_OPTIMIZATION = "${@d.getVar(oe.utils.vartrue('DEBUG_BUILD', 'DEBUG_OPTIMIZATION', 'FULL_OPTIMIZATION', d))}” > > TARGET_CFLAGS = "${TARGET_CPPFLAGS} ${SELECTED_OPTIMIZATION}” > > > > So with this there’s no obvious way to get symbols for target llvm/qemu/openssl, setting DEBUG_BUILD=1 still won’t actually pass -g. The user would have to know to do eg CFLAGS += “-g”. > > > > I’ll note that webkitgtk3 has approached this problem already and settled on this: > > > > DEBUG_FLAGS:append = "${@oe.utils.vartrue('DEBUG_BUILD', '', ' -g1', d)}" > > > > So -g1 (minimal but functional debugging info) unless DEBUG_BUILD enabled. > > > > I’m fairly against removing _all_ debug symbols for these recipes in default builds, although I’d certainly be happy with -g1 as a compromise between space saving and utility. > > I agree that the remove is too hard to undo so we can't use this > approach. We probably need to parameterise it in DEBUG_FLAGS since > we're likely to need to do this more frequently. > > I do still think we should drop -g entirely for llvm though as the > debug info is just too large even at -g1. I'm particularly keen to keep > the package sizes down which keeps the sstate object size down too, > making builds from sstate better over the network. we can do an append instead and effects will be same DEBUG_FLAGS:append = "-g1" would add it after -g and -g1 will be effective. Secondly, it might make sense to do it directly in concerned recipes. > > Cheers, > > Richard > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#201781): https://lists.openembedded.org/g/openembedded-core/message/201781 > Mute This Topic: https://lists.openembedded.org/mt/107159573/1997914 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-07-11 21:41 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-07-11 9:30 [PATCH] distro/include: Add yocto-space-optimize, disabling debugging for large components Richard Purdie 2024-07-11 12:10 ` [OE-core] " Ross Burton 2024-07-11 13:35 ` Richard Purdie 2024-07-11 21:40 ` Khem Raj
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox