[OE-core] [PATCH 1/1] busybox: fix to support FEATURE_INDIVIDUAL
ChenQi
Qi.Chen at windriver.com
Mon Jun 3 04:34:17 UTC 2013
On 06/03/2013 12:10 PM, Saul Wold wrote:
> On 06/02/2013 07:19 PM, ChenQi wrote:
>> On 05/30/2013 08:26 PM, Saul Wold wrote:
>>> On 05/30/2013 05:51 PM, Qi.Chen at windriver.com wrote:
>>>> From: Chen Qi <Qi.Chen at windriver.com>
>>>>
>>>> Previously, if CONFIG_FEATURE_INDIVIDUAL was enabled for busybox,
>>>> yocto-based systems could start correctly.
>>>>
>>>> This is because if busybox is built as individual apps, '/bin/busybox'
>>>> may not be present, so setting the default ALTERNATIVE_TARGET to
>>>> '/bin/busybox' is not appropriate and could lead to errors.
>>>>
>>>> This patch fixes this problem by checking the existence of
>>>> '/bin/busybox'
>>>> before setting the ALTERNATIVE_TARGET to '/bin/busybox'.
>>>>
>>>> After this change, if busybox is built as individual apps, we'll have
>>>> links like '/bin/ls -> /bin/ls.busybox', otherwise, we'll have links
>>>> like '/bin/ls -> /bin/busybox'.
>>>>
>>> Does this add size to the image? In this example does ls.busybox link
>>> to something else or is it a binary on it's own?
>>>
>>> Sau!
>>>
>>>
>> It increases about 1M of the whole image size.
>> ls.busybox, for example, is a binary.
>>
> That's NOT ok, we are looking to reduce the image size especially for
> core-image-minimal, I believe the static test I did with building a
> busybox with only a tinylogin config was actually smaller that the
> current tinylogin binary!
>
> Please investigate this route, we also need to understand what other
> parts of busybox are using SetUID.
>
This is a different bug.
(busybox in Yocto/OE doesn't support FEATURE_INDIVIDUAL
https://bugzilla.yoctoproject.org/show_bug.cgi?id=4570)
I encountered this bug when I was exploring busybox.
I won't use this 'FEATURE_INDIVIDUAL' approach to fix bug#4207, as you
said above, it increases image size, and that's not what we want.
(Switch to using busybox instead of tinylogin
https://bugzilla.yoctoproject.org/show_bug.cgi?id=4207).
Best Regards,
Chen Qi
> Thanks
> Sau!
>
>
>> Best Regards,
>> Chen Qi
>>
>>>> Besides, this patch removes the pkg_postinst part in the busybox
>>>> recipe,
>>>> because it's redundant.
>>>>
>>>> [YOCTO #4570]
>>>>
>>>> Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>>>> ---
>>>> meta/recipes-core/busybox/busybox.inc | 16 +++++-----------
>>>> 1 file changed, 5 insertions(+), 11 deletions(-)
>>>>
>>>> diff --git a/meta/recipes-core/busybox/busybox.inc
>>>> b/meta/recipes-core/busybox/busybox.inc
>>>> index c8908b0..6abe167 100644
>>>> --- a/meta/recipes-core/busybox/busybox.inc
>>>> +++ b/meta/recipes-core/busybox/busybox.inc
>>>> @@ -171,7 +171,7 @@ do_install () {
>>>> install -m 0755 "0_lib/$NAME" "${D}$FILE.${BPN}"
>>>> 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
>>>> + 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.${BPN} -exec chmod a+s {} \;
>>>> done
>>>> install -m 0755 0_lib/libbusybox.so.${PV}
>>>> ${D}${libdir}/libbusybox.so.${PV}
>>>> @@ -242,14 +242,16 @@ ALTERNATIVE_TARGET[syslog-init] =
>>>> "${sysconfdir}/init.d/syslog.${BPN}"
>>>> ALTERNATIVE_LINK_NAME[syslog-startup-conf] =
>>>> "${sysconfdir}/syslog-startup.conf"
>>>> ALTERNATIVE_TARGET[syslog-startup-conf] =
>>>> "${sysconfdir}/syslog-startup.conf.${BPN}"
>>>>
>>>> -ALTERNATIVE_TARGET = "/bin/busybox"
>>>> -
>>>> python do_package_prepend () {
>>>> # We need to load the full set of busybox provides from the
>>>> /etc/busybox.links
>>>> # Use this to see the update-alternatives with the right
>>>> information
>>>>
>>>> dvar = d.getVar('D', True)
>>>> pn = d.getVar('PN', True)
>>>> +
>>>> + if os.path.exists('%s/bin/busybox' % (dvar)):
>>>> + d.setVar('ALTERNATIVE_TARGET', "/bin/busybox")
>>>> +
>>>> f = open('%s/etc/busybox.links' % (dvar), 'r')
>>>>
>>>> for alt_link_name in f:
>>>> @@ -265,14 +267,6 @@ python do_package_prepend () {
>>>> f.close()
>>>> }
>>>>
>>>> -pkg_postinst_${PN} () {
>>>> - # If we are not making an image we create links for the
>>>> utilities that doesn't exist
>>>> - # 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";; esac; busybox ln
>>>> -s $to $link; fi; done </etc/busybox.links; fi
>>>> -}
>>>> -
>>>> pkg_prerm_${PN} () {
>>>> # This is so you can make busybox commit suicide - removing
>>>> busybox with no other packages
>>>> # providing its files, this will make update-alternatives work,
>>>> but the update-rc.d part
>>>>
>>>
>>>
>>
>>
>>
>
>
More information about the Openembedded-core
mailing list