summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanomi Manchego <danomimanchego123@gmail.com>2014-06-03 21:53:24 -0400
committerPeter Korsgaard <peter@korsgaard.com>2014-06-04 23:21:23 +0200
commit802bff9c42376078f28aa49d3eab630120940eb0 (patch)
treeef8ed4d2ff507b32ff869534f62362589a5a97da
parent74bc709e636c2383194d39ef4f1679f76deae372 (diff)
downloadbuildroot-802bff9c42376078f28aa49d3eab630120940eb0.tar.gz
buildroot-802bff9c42376078f28aa49d3eab630120940eb0.zip
busybox: enable noclobber option in install.sh
We support a busybox-menuconfig target so that the BusyBox configuration can be adjusted as needed. However, depending on what other packages are enabled, re-installing BusyBox symlinks that duplicate "real" apps after the configuration change can result in bad behaviors: * At best, the BusyBox applet will be used after the install, versus the desired "real" app. * At worst, the built rootfs can become unbootable. The BusyBox install.sh has some capability to avoid this issue by means of a --noclobber option. By default, this option is disabled. When enabled, the install.sh will not overwrite a target file with a symlink or hardlink, be it an actual file or a previously installed BusyBox link. The install.sh's argument processing is somewhat broken, so this patch simply changes the default value of the noclobber option to on, rather than add --noclobber to the install.sh invocation. Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r--package/busybox/busybox.mk7
1 files changed, 7 insertions, 0 deletions
diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
index 3d87cd78bf..f6c037858c 100644
--- a/package/busybox/busybox.mk
+++ b/package/busybox/busybox.mk
@@ -189,6 +189,12 @@ define BUSYBOX_INSTALL_WATCHDOG_SCRIPT
endef
endif
+# Enable "noclobber" in install.sh, to prevent BusyBox from overwritting any
+# full-blown versions of apps installed by other packages with sym/hard links.
+define BUSYBOX_NOCLOBBER_INSTALL
+ $(SED) 's/^noclobber="0"$$/noclobber="1"/' $(@D)/applets/install.sh
+endef
+
define BUSYBOX_CONFIGURE_CMDS
$(BUSYBOX_COPY_CONFIG)
$(BUSYBOX_SET_MMU)
@@ -204,6 +210,7 @@ define BUSYBOX_CONFIGURE_CMDS
$(BUSYBOX_SET_WATCHDOG)
@yes "" | $(MAKE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE="$(TARGET_CROSS)" \
-C $(@D) oldconfig
+ $(BUSYBOX_NOCLOBBER_INSTALL)
endef
define BUSYBOX_BUILD_CMDS
OpenPOWER on IntegriCloud