| 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: | Other | Assignee: | Carlos Santos <unixmania> |
| Status: | RESOLVED WONTFIX | ||
| Severity: | enhancement | CC: | buildroot |
| Priority: | P5 | ||
| Version: | 2017.08 | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Host: | Target: | ||
| Build: | |||
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. 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/ |
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