[Buildroot] [PATCH 2/2] package/skeleton: also handle merged /usr in the staging

Arnout Vandecappelle arnout at mind.be
Fri Nov 27 22:34:19 UTC 2015


On 26-11-15 23:13, Yann E. MORIN wrote:
> When the target uses a merged /usr setup, gdbserver will only report
> paths in /lib to the remote gdb, which in turn will only look libraries
> in staging/lib and never in staging/usr/lib.
> 
> So. the mreged (or non-merged) /usr setup must be replicated in the
> staging.
> 
> The best solution where to do so is in the skeleton package, since it
> is guaranteed to come before any package that installs things in the
> staging, and even before the (internal or external) toolchain as well.
> 
> Reported-by: Pieterjan Camerlynck <pieterjan.camerlynck at gmail.com>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> Cc: Pieterjan Camerlynck <pieterjan.camerlynck at gmail.com>
> Cc: Maxime Hadjinlian <maxime.hadjinlian at gmail.com>
> Cc: Peter Korsgaard <jacmet at uclibc.org>
> Cc: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>

Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>

 However, this only applies to next - shouldn't we do this on master as well?
This will be the first time we release the merged /usr, so we should probably
get it right...


 Also...

> ---
>  Makefile                     |  9 ++-------
>  package/skeleton/skeleton.mk | 18 ++++++++++++++++++
>  2 files changed, 20 insertions(+), 7 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 71c6836..2809e00 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -456,14 +456,9 @@ else
>  LIB_SYMLINK = lib32
>  endif
>  
> +# Populating the staging with the base directories in handled by the skeleton package
>  $(STAGING_DIR):
> -	@mkdir -p $(STAGING_DIR)/bin
> -	@mkdir -p $(STAGING_DIR)/lib
> -	@ln -snf lib $(STAGING_DIR)/$(LIB_SYMLINK)
> -	@mkdir -p $(STAGING_DIR)/usr/lib
> -	@ln -snf lib $(STAGING_DIR)/usr/$(LIB_SYMLINK)
> -	@mkdir -p $(STAGING_DIR)/usr/include
> -	@mkdir -p $(STAGING_DIR)/usr/bin
> +	@mkdir -p $(STAGING_DIR)
>  	@ln -snf $(STAGING_DIR) $(BASE_DIR)/staging
>  
>  RSYNC_VCS_EXCLUSIONS = \
> diff --git a/package/skeleton/skeleton.mk b/package/skeleton/skeleton.mk
> index b296cbd..205687c 100644
> --- a/package/skeleton/skeleton.mk
> +++ b/package/skeleton/skeleton.mk
> @@ -13,6 +13,9 @@ SKELETON_SOURCE =
>  # on skeleton.
>  SKELETON_ADD_TOOLCHAIN_DEPENDENCY = NO
>  
> +# The skeleton also handles the merged /usr case in the sysroot
> +SKELETON_INSTALL_STAGING = YES
> +
>  ifeq ($(BR2_ROOTFS_SKELETON_CUSTOM),y)
>  
>  SKELETON_PATH = $(call qstrip,$(BR2_ROOTFS_SKELETON_CUSTOM_PATH))
> @@ -85,6 +88,21 @@ define SKELETON_INSTALL_TARGET_CMDS
>  		$(TARGET_DIR_WARNING_FILE)
>  endef
>  
> +# For the staging dir, we don't really care about /bin and /sbin.
> +# But for consistency with the target dir, and to simplify the code,
> +# we still handle them for the merged or non-merged /usr cases.
> +# Since the toolchain is not yet available, the staging is not yet
> +# populated, so we need to create the directories in /usr
> +define SKELETON_INSTALL_STAGING_CMDS
> +	$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/lib
> +	$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/bin
> +	$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/sbin

 Perhaps this would be a good time to move this to the
SKELETON_USR_SYMLINKS_OR_DIRS macro and remove these directories from the skeleton.


 Regards,
 Arnout


> +	$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include
> +	$(call SKELETON_USR_SYMLINKS_OR_DIRS,$(STAGING_DIR))
> +	ln -snf lib $(STAGING_DIR)/$(LIB_SYMLINK)
> +	ln -snf lib $(STAGING_DIR)/usr/$(LIB_SYMLINK)
> +endef
> +
>  SKELETON_TARGET_GENERIC_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))
>  SKELETON_TARGET_GENERIC_ISSUE = $(call qstrip,$(BR2_TARGET_GENERIC_ISSUE))
>  SKELETON_TARGET_GENERIC_ROOT_PASSWD = $(call qstrip,$(BR2_TARGET_GENERIC_ROOT_PASSWD))
> 


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