[Buildroot] [PATCH v9 1/3] core: introduce "sdk" target to make a relocatable SDK

Arnout Vandecappelle arnout at mind.be
Fri Jul 21 21:09:45 UTC 2017



On 21-07-17 15:14, Wolfgang Grandegger wrote:
> We use a separate make target to build a relocatable SDK. We first
> sanitize the RPATH in host tree. Next we also sanitize the
> staging tree. Therefore "sdk" must depend world.
                                           ^on

> 
> Sanitizing staging is not really needed, in the sense that any rpath
> in there is simply not going to be used. We want to sanitize staging
> for the following reasons:
> 
> - To avoid leaking references to the original output directory. This
>   way, we can validate that the SDK is relocatable by running a simple
>   "grep -r ${BASE_DIR} ${HOST_DIR}". Obviously RPATH sanitization is
>   not sufficient (e.g. also the references to source files have to be
>   stripped), but it's a step in the right direction. This reason is
>   obviously only relevant for the SDK.
> 
> - To make sure that when an executable is copied to target that it
>   actually executes correctly. Since within Buildroot we never copy
>   stuff from staging to target, this is clearly only relevant for
>   the SDK.

 Great explanation :-P

> 
> Finally we install the script "relocate-sdk.sh" into the top directory
> of the SDK (HOST_DIR) and the SDK location path is stored in the file
> "HOST_DIR/share/buildroot/sdk-location"-
> 
> Signed-off-by: Wolfgang Grandegger <wg at grandegger.com>
> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>

 This is actually a case where you changed a little too much to carry the
Rev-by. But it's a bit borderline and still OK.

> ---
>  Makefile | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/Makefile b/Makefile
> index d4faa02..4e432dd 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -552,6 +552,14 @@ prepare: $(BUILD_DIR)/buildroot-config/auto.conf
>  .PHONY: world
>  world: target-post-image
>  
> +.PHONY: sdk
> +sdk: world
> +	@$(call MESSAGE,"Rendering the SDK relocatable")
> +	$(TOPDIR)/support/scripts/fix-rpath host

 So, what about exporting TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR? Ah, not
needed because the default in the script is already OK.

> +	$(TOPDIR)/support/scripts/fix-rpath staging
> +	install $(TOPDIR)/support/misc/relocate-sdk.sh $(HOST_DIR)

 We almost always use an explicit -m and an explicit target file name. But
that's just nitpicking again :-)

 Regards,
 Arnout

> +	echo $(HOST_DIR) > $(HOST_DIR)/share/buildroot/sdk-location
> +
>  # Compatibility symlink in case a post-build script still uses $(HOST_DIR)/usr
>  $(HOST_DIR)/usr: $(HOST_DIR)
>  	@ln -snf . $@
> @@ -1001,6 +1009,7 @@ help:
>  	@echo 'Build:'
>  	@echo '  all                    - make world'
>  	@echo '  toolchain              - build toolchain'
> +	@echo '  sdk                    - build relocatable SDK'
>  	@echo
>  	@echo 'Configuration:'
>  	@echo '  menuconfig             - interactive curses-based configurator'
> 

-- 
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