[Buildroot] [RFC PATCH 1/1] core: add option to disable RPATH sanitation in target tree
Ciro Santilli
ciro.santilli at gmail.com
Thu May 3 21:21:36 UTC 2018
On Thu, May 3, 2018 at 10:16 PM, Arnout Vandecappelle <arnout at mind.be> wrote:
>
>
> On 03-05-18 21:15, Ciro Santilli wrote:
>> Signed-off-by: Ciro Santilli <ciro.santilli at gmail.com>
>> ---
>> As explained on the Config, the rationale is to speed up BR2_EXTERNAL
>> package development build iteration.
>
> I don't see what this has to do with package development. Anyway, when you're
> developing package foo, wouldn't you run 'make foo' rather than just 'make' (and
> thus never even hit that code path)?
>
How to test the modification without rebuilding the image to run it on
the target?
>> This would make users targetting virtual machines happy.
>
> Huh? Or you mean building in virtual machines?
>
No, cross compiling for VMs from host as opposed to real hardware.
>>
>> It may be argued that embedded images are not supposed to be small,
>> but a counter argument is that there are already in-tree packages
>> that benefit considerably from this, e.g. ltp-testsuite, which drops
>> the build iteration from 18s to 5s on my machine, which is a huge
>> life improvement.
>>
>> Additionaly, this will also make it easier for us to find and report
>> the offending packages mentioned at 5f4ca518094f7690536074246ab765f36a213783
>> and push for a correct upstream fix, are we tracking that somewhere?
>
> No, it falls in the category "not worth the time to try to fix upstream",
> especially since we're talking about things like SELinux which consists of
> dozens of packages that all do it wrong.
>
>> Removing the rpath fix actually makes those packages not work is that it?
>
> Usually not, the rpaths are mostly useless. They are typically added because
> the executable is linked with a library that may not yet be installed.
>
>
>> I'm not sure if this should be an actual config, thus the RFC.
>> Without the config, it is also possible to use it just as:
>
> TBH, I don't think it's worth the bother either way. Just skip the entire
> finalize/rootfs creation step if you're not interested.
>
> Regards,
> Arnout
>
>>
>> make BR2_SANITIZE_RPATH=n
>>
>> Config.in | 7 +++++++
>> Makefile | 2 ++
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/Config.in b/Config.in
>> index 6b5b2b043c..6b39bd9f8b 100644
>> --- a/Config.in
>> +++ b/Config.in
>> @@ -678,6 +678,13 @@ config BR2_COMPILER_PARANOID_UNSAFE_PATH
>> and external toolchain backends (through the toolchain
>> wrapper).
>>
>> +config BR2_SANITIZE_RPATH
>> + bool "sanitize rpath"
>> + default y
>> + help
>> + You may want to disable this while developing a package with
>> + BR2_EXTERNAL to make build iterations faster.
>> +
>> config BR2_REPRODUCIBLE
>> bool "Make the build reproducible (experimental)"
>> # SOURCE_DATE_EPOCH support in toolchain-wrapper requires GCC 4.4
>> diff --git a/Makefile b/Makefile
>> index 54f940659c..a9c1b82b3f 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -743,8 +743,10 @@ endif
>> ) > $(TARGET_DIR)/usr/lib/os-release
>> ln -sf ../usr/lib/os-release $(TARGET_DIR)/etc
>>
>> +ifeq ($(BR2_SANITIZE_RPATH),y)
>> @$(call MESSAGE,"Sanitizing RPATH in target tree")
>> $(TOPDIR)/support/scripts/fix-rpath target
>> +endif
>>
>> @$(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \
>> $(call MESSAGE,"Copying overlay $(d)"); \
>>
>
> --
> Arnout Vandecappelle arnout at mind be
> Senior Embedded Software Architect +32-16-286500
> Essensium/Mind http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
More information about the buildroot
mailing list