Bug 10386

Summary: Add an option to put all compiled executables that show up on target/ in staging/ as well
Product: buildroot Reporter: Ciro Santilli <ciro.santilli>
Component: OtherAssignee: Carlos Santos <unixmania>
Status: RESOLVED WONTFIX    
Severity: enhancement CC: buildroot
Priority: P5    
Version: 2017.08   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Host: Target:
Build:

Description Ciro Santilli 2017-10-08 17:08:27 UTC
Why this would be cool: you can then easily find the non-stripped executables to debug them with gdbserver, as they are in the same relative path as in the target.

Without that, you need to do a `find` inside build/

This is already done for shared libraries, where it is required for compilation, and that is already great as it allows me to `set sysroot ${buildroot_out_dir}/staging`

This is an example of the type of setup I'm using: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b89ba9b799480e4eb1975f0a704409efb7d667d1#gdbserver

Maybe we could hardlink them or something to reduce disk usage if that is a concern.

I know that this is already doable on a per package basis, possiby by modifying the .mk of packages, e.g. as `pciutils` has for `lspci`:

        define PCIUTILS_INSTALL_STAGING_CMDS
            $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(PCIUTILS_MAKE_OPTS) \
                PREFIX=$(STAGING_DIR)/usr SBINDIR=$(STAGING_DIR)/usr/bin \
                install install-lib install-pcilib
        endef
Comment 1 Carlos Santos 2019-09-30 11:14:54 UTC
This bug has been dormant for a long time. It look like a feature request rather
than a bug but anyway it sounds valid. The proposed solution, however is hard to
implement.

Since Buildroot 2018.05 the root filesystem image is generated from a copy of
TARGER_DIR, so we can move the strpping from target-finalize to the fakeroot
script. This way we strip binaries only in the intermediary copy.

I will submit a patch with this change for review.
Comment 2 Carlos Santos 2020-04-13 23:51:23 UTC
As discussed in patchwork[1]

The idea would be to ensure that all packages install in staging/,
always. Then, identify packages that have different commands for target/
and staging/ and make them identical. Finally, remove the target install
commands, and genreate it as a copy of staging at the beginning of the
target-finalize step.

https://patchwork.ozlabs.org/project/buildroot/patch/20191001013654.22298-2-unixmania@gmail.com/