[PATCH 1/1] install: add kconfig option to specify --noclobber
Danomi Manchego
danomimanchego123 at gmail.com
Wed Apr 16 03:09:46 UTC 2014
The install.sh has the useful capabilty to suppress clobbering
of files during installation. Unfortunately, this feature is
hard to enable because (1) the Makefile.custom does not provide a
way to specify --noclobber and (2) the install.sh only looks at
the second positional argument.
This patch adds a kconfig switch to specify --noclobber when
configured to install with soft or hard links, and modifies the
install.sh to process all the input arguments.
Signed-off-by: Danomi Manchego <danomimanchego123 at gmail.com>
---
Config.in | 8 ++++++++
Makefile.custom | 3 +++
applets/install.sh | 26 +++++++++++++++-----------
3 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/Config.in b/Config.in
index b6eaea5..5698ce1 100644
--- a/Config.in
+++ b/Config.in
@@ -787,6 +787,14 @@ config INSTALL_SH_APPLET_SCRIPT_WRAPPER
endchoice
+config INSTALL_SH_LINK_NOCLOBBER
+ bool "Do not clobber existing files"
+ default n
+ depends on INSTALL_APPLET_SYMLINKS || INSTALL_APPLET_HARDLINKS
+ help
+ Selecting this will prevent clobbering of existing files during
+ link installation.
+
config PREFIX
string "BusyBox installation prefix"
default "./_install"
diff --git a/Makefile.custom b/Makefile.custom
index 8c95ef2..bb23fb3 100644
--- a/Makefile.custom
+++ b/Makefile.custom
@@ -28,6 +28,9 @@ ifeq ($(CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER),y)
INSTALL_OPTS:= --scriptwrapper
endif
endif
+ifeq ($(CONFIG_INSTALL_SH_LINK_NOCLOBBER),y)
+INSTALL_OPTS+= --noclobber
+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..ec01a9c 100755
--- a/applets/install.sh
+++ b/applets/install.sh
@@ -15,17 +15,21 @@ linkopts=""
scriptwrapper="n"
cleanup="0"
noclobber="0"
-case "$2" in
- --hardlinks) linkopts="-f";;
- --symlinks) linkopts="-fs";;
- --scriptwrapper) scriptwrapper="y";swrapall="y";;
- --sw-sh-hard) scriptwrapper="y";linkopts="-f";;
- --sw-sh-sym) scriptwrapper="y";linkopts="-fs";;
- --cleanup) cleanup="1";;
- --noclobber) noclobber="1";;
- "") h="";;
- *) echo "Unknown install option: $2"; exit 1;;
-esac
+
+while [ -n "$2" ]; do
+ case "$2" in
+ --hardlinks) linkopts="-f";;
+ --symlinks) linkopts="-fs";;
+ --scriptwrapper) scriptwrapper="y";swrapall="y";;
+ --sw-sh-hard) scriptwrapper="y";linkopts="-f";;
+ --sw-sh-sym) scriptwrapper="y";linkopts="-fs";;
+ --cleanup) cleanup="1";;
+ --noclobber) noclobber="1";;
+ "") h="";;
+ *) echo "Unknown install option: $2"; exit 1;;
+ esac
+ shift
+done
if [ -n "$DO_INSTALL_LIBS" ] && [ "$DO_INSTALL_LIBS" != "n" ]; then
# get the target dir for the libs
--
1.7.9.5
More information about the busybox
mailing list