diff options
author | Danomi Manchego <danomimanchego123@gmail.com> | 2014-06-03 21:53:24 -0400 |
---|---|---|
committer | Peter Korsgaard <peter@korsgaard.com> | 2014-06-04 23:21:23 +0200 |
commit | 802bff9c42376078f28aa49d3eab630120940eb0 (patch) | |
tree | ef8ed4d2ff507b32ff869534f62362589a5a97da | |
parent | 74bc709e636c2383194d39ef4f1679f76deae372 (diff) | |
download | buildroot-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.mk | 7 |
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 |