Openembedded Core Discussions
 help / color / mirror / Atom feed
* [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