[oe] [PATCH] busybox: add suport for FEATURE_INDIVIDUAL setup
Khem Raj
raj.khem at gmail.com
Mon Jul 12 18:34:48 UTC 2010
On Wed, Jul 7, 2010 at 3:38 AM, Roman I Khimov <khimov at altell.ru> wrote:
> Where each applet is installed as a tiny binary linked against shared
> libbusybox.
may be it should be a DISTRO_FEATURE in OE
>
> Signed-off-by: Roman I Khimov <khimov at altell.ru>
> ---
> recipes/busybox/busybox.inc | 74 ++++++++++++++++++++++++++++++++++++-------
> 1 files changed, 62 insertions(+), 12 deletions(-)
>
> diff --git a/recipes/busybox/busybox.inc b/recipes/busybox/busybox.inc
> index a5346bd..31e6cdc 100644
> --- a/recipes/busybox/busybox.inc
> +++ b/recipes/busybox/busybox.inc
> @@ -11,7 +11,7 @@ LICENSE = "GPLv2"
> SECTION = "base"
> PRIORITY = "required"
>
> -INC_PR = "r30"
> +INC_PR = "r31"
>
> SRC_URI = "\
> file://busybox-cron \
> @@ -98,15 +98,35 @@ do_install () {
>
> install -d ${D}${sysconfdir}/init.d
>
> - # Install /bin/busybox, and the /bin/sh link so the postinst script
> - # can run. Let update-alternatives handle the rest.
> - install -d ${D}${base_bindir}
> - if grep -q "CONFIG_FEATURE_SUID=y" ${WORKDIR}/defconfig; then
> - install -m 4755 ${S}/busybox ${D}${base_bindir}
> + if ! grep -q "CONFIG_FEATURE_INDIVIDUAL=y" ${WORKDIR}/defconfig; then
> + # Install /bin/busybox, and the /bin/sh link so the postinst script
> + # can run. Let update-alternatives handle the rest.
> + install -d ${D}${base_bindir}
> + if grep -q "CONFIG_FEATURE_SUID=y" ${WORKDIR}/defconfig; then
> + install -m 4755 ${S}/busybox ${D}${base_bindir}
> + else
> + install -m 0755 ${S}/busybox ${D}${base_bindir}
> + fi
> + ln -sf busybox ${D}${base_bindir}/sh
> else
> - install -m 0755 ${S}/busybox ${D}${base_bindir}
> + install -d ${D}${base_bindir} ${D}${base_sbindir}
> + install -d ${D}${libdir} ${D}${bindir} ${D}${sbindir}
> + cat busybox.links | while read FILE; do
> + NAME=`basename "$FILE"`
> + install -m 0755 "0_lib/$NAME" "${D}$FILE.${PN}"
> + done
> + # add suid bit where needed
> + for i in `grep -E "APPLET.*_BB_SUID_((MAYBE|REQUIRE))" include/applets.h | grep -v _BB_SUID_DROP | cut -f 3 -d '(' | cut -f 1 -d ','`; do
> + find ${D} -name $i.${PN} -exec chmod a+s {} \;
> + done
> + install -m 0755 0_lib/libbusybox.so.${PV} ${D}${libdir}/libbusybox.so.${PV}
> + ln -sf sh.${PN} ${D}${base_bindir}/sh
> + ln -sf ln.${PN} ${D}${base_bindir}/ln
> + ln -sf test.${PN} ${D}${bindir}/test
> + if [ -f ${D}/linuxrc.${PN} ]; then
> + mv ${D}/linuxrc.${PN} ${D}/linuxrc
> + fi
> fi
> - ln -sf busybox ${D}${base_bindir}/sh
>
> if grep -q "CONFIG_SYSLOGD=y" ${WORKDIR}/defconfig; then
> install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/syslog.${PN}
> @@ -144,12 +164,42 @@ pkg_postinst_${PN} () {
> # so the update-alternatives script will get the utilities it needs
> # (update-alternatives have no problem replacing links later anyway)
> test -n 2> /dev/null || alias test='busybox test'
> - if test "x$D" = "x"; then while read link; do if test ! -h "$link"; then case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; /*) to="/bin/busybox";; esac; busybox ln -s $to $link; fi; done </etc/busybox.links; fi
> + ln --help >/dev/null 2>&1 || alias ln='busybox ln'
> + if test "x$D" = "x"; then
> + while read link; do
> + if test ! -h "$link"; then
> + if test -f "$link.busybox"; then
> + to="$link.busybox"
> + else
> + case "$link" in
> + /*/*/*) to="../../bin/busybox";;
> + /bin/*) to="busybox";;
> + /*/*) to="../bin/busybox";;
> + /*) to="/bin/busybox";;
> + esac
> + fi
> + ln -s $to $link
> + fi
> + done </etc/busybox.links
> + fi
>
> # This adds the links, remember that this has to work when building an image too, hence the $D
> - set +e
> - while read link; do case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; /*) to="/bin/busybox";; esac; bn=`basename $link`; update-alternatives --install $link $bn $to 50; done <$D/etc/busybox.links
> - set -e
> + set +e
> + while read link; do
> + if test -f "$D$link.${PN}"; then
> + to="$link.${PN}"
> + else
> + case "$link" in
> + /*/*/*) to="../../bin/busybox";;
> + /bin/*) to="busybox";;
> + /*/*) to="../bin/busybox";;
> + /*) to="/bin/busybox";;
> + esac
> + fi
> + bn=`basename $link`
> + update-alternatives --install $link $bn $to 50
> + done <$D/etc/busybox.links
> + set -e
> }
>
> pkg_postinst_${PN}-mountall () {
> --
> 1.5.6.5
>
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>
More information about the Openembedded-devel
mailing list