Re: [OE-core] [PATCH 1/1] busybox: fix to support FEATURE_INDIVIDUAL

2013-06-02 Thread ChenQi

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.c...@windriver.com wrote:

From: Chen Qi 

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 
---
  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 











___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/1] busybox: fix to support FEATURE_INDIVIDUAL

2013-06-02 Thread Saul Wold

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.c...@windriver.com wrote:

From: Chen Qi 

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.


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 
---
  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 







___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/1] busybox: fix to support FEATURE_INDIVIDUAL

2013-06-02 Thread ChenQi

On 05/30/2013 08:26 PM, Saul Wold wrote:

On 05/30/2013 05:51 PM, qi.c...@windriver.com wrote:

From: Chen Qi 

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.

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 
---
  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 
-}
-
  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







___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 1/1] busybox: fix to support FEATURE_INDIVIDUAL

2013-05-30 Thread Saul Wold

On 05/30/2013 05:51 PM, qi.c...@windriver.com wrote:

From: Chen Qi 

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!



Besides, this patch removes the pkg_postinst part in the busybox recipe,
because it's redundant.

[YOCTO #4570]

Signed-off-by: Chen Qi 
---
  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 

___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core