[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [PATCH v2] applets: Add installation of individual binaries
From:       Thomas Petazzoni <thomas.petazzoni () free-electrons ! com>
Date:       2015-06-28 20:55:07
Message-ID: 20150628225507.18e11c42 () free-electrons ! com
[Download RAW message or body]

Hello,

There has been no feedback to the below patch. We would like to support
this feature in Buildroot, but we don't like carrying significant
feature patches without knowing upstream's decision.

Would the Busybox developers be willing to merge such a feature (the
implementation details can of course be discussed/improved).

Thanks!

Thomas

On Thu, 21 May 2015 14:48:35 -0500, Clayton Shotwell wrote:
> From: Clayton Shotwell <clshotwe@rockwellcollins.com>
> 
> Adding support to install individual binaries if the option is
> enabled. This also installs the shared libbusybox.so.* library.
> 
> Signed-off-by: Clayton Shotwell <clshotwe@rockwellcollins.com>
> 
> ---
> Changes v1 -> v2:
>   - Changed "cp -a" to "cp -pPR" (Suggested by Bernhard)
> ---
>  Makefile.custom    |  4 ++++
>  applets/install.sh | 26 ++++++++++++++++++++++++--
>  2 files changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile.custom b/Makefile.custom
> index f8a1283..891c9ce 100644
> --- a/Makefile.custom
> +++ b/Makefile.custom
> @@ -28,6 +28,10 @@ ifeq ($(CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER),y)
>  INSTALL_OPTS:= --scriptwrapper
>  endif
>  endif
> +ifeq ($(CONFIG_FEATURE_INDIVIDUAL),y)
> +INSTALL_OPTS:= --binaries
> +LIBBUSYBOX_SONAME:= 0_lib/libbusybox.so.$(BB_VER)
> +endif
>  install: $(srctree)/applets/install.sh busybox busybox.links
>  	$(Q)DO_INSTALL_LIBS="$(strip $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS))" \
>  		$(SHELL) $< $(CONFIG_PREFIX) $(INSTALL_OPTS)
> diff --git a/applets/install.sh b/applets/install.sh
> index 95b4719..f6c097e 100755
> --- a/applets/install.sh
> +++ b/applets/install.sh
> @@ -5,19 +5,26 @@ export LC_CTYPE=POSIX
>  
>  prefix=$1
>  if [ -z "$prefix" ]; then
> -	echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks/--scriptwrapper]"
> +	echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks/--binaries/--scriptwrapper]"
>  	exit 1
>  fi
>  
> +# Source the configuration
> +. ./.config
> +
>  h=`sort busybox.links | uniq`
>  
> +sharedlib_dir="0_lib"
> +
>  linkopts=""
>  scriptwrapper="n"
> +binaries="n"
>  cleanup="0"
>  noclobber="0"
>  case "$2" in
>  	--hardlinks)     linkopts="-f";;
>  	--symlinks)      linkopts="-fs";;
> +	--binaries)      binaries="y";;
>  	--scriptwrapper) scriptwrapper="y";swrapall="y";;
>  	--sw-sh-hard)    scriptwrapper="y";linkopts="-f";;
>  	--sw-sh-sym)     scriptwrapper="y";linkopts="-fs";;
> @@ -40,8 +47,9 @@ if [ -n "$DO_INSTALL_LIBS" ] && [ "$DO_INSTALL_LIBS" != "n" ]; then
>  	for i in $DO_INSTALL_LIBS; do
>  		rm -f "$prefix/$libdir/$i" || exit 1
>  		if [ -f "$i" ]; then
> +			echo "   Installing $i to the target at $prefix/$libdir/"
>  			cp -pPR "$i" "$prefix/$libdir/" || exit 1
> -			chmod 0644 "$prefix/$libdir/$i" || exit 1
> +			chmod 0644 "$prefix/$libdir/`basename $i`" || exit 1
>  		fi
>  	done
>  fi
> @@ -68,6 +76,7 @@ install -m 755 busybox "$prefix/bin/busybox" || exit 1
>  
>  for i in $h; do
>  	appdir=`dirname "$i"`
> +	app=`basename "$i"`
>  	mkdir -p "$prefix/$appdir" || exit 1
>  	if [ "$scriptwrapper" = "y" ]; then
>  		if [ "$swrapall" != "y" ] && [ "$i" = "/bin/sh" ]; then
> @@ -78,6 +87,19 @@ for i in $h; do
>  			chmod +x "$prefix/$i"
>  		fi
>  		echo "	$prefix/$i"
> +	elif [ "$binaries" = "y" ]; then
> +		# Copy the binary over rather
> +		if [ -e $sharedlib_dir/$app ]; then
> +			if [ "$noclobber" = "0" ] || [ ! -e "$prefix/$i" ]; then
> +				echo "   Copying $sharedlib_dir/$app to $prefix/$i"
> +				cp -pPR $sharedlib_dir/$app $prefix/$i || exit 1
> +			else
> +				echo "  $prefix/$i already exists"
> +			fi
> +		else
> +			echo "Error: Could not find $sharedlib_dir/$app"
> +			exit 1
> +		fi
>  	else
>  		if [ "$2" = "--hardlinks" ]; then
>  			bb_path="$prefix/bin/busybox"



-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic