[PATCH v2] applets: Add installation of individual binaries
Denys Vlasenko
vda.linux at googlemail.com
Wed Jul 1 17:10:28 UTC 2015
Applied, thanks!
On Sun, Jun 28, 2015 at 10:55 PM, Thomas Petazzoni
<thomas.petazzoni at free-electrons.com> wrote:
> 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 at 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 at 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 at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
More information about the busybox
mailing list