Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Kang Kai <Kai.Kang@windriver.com>
To: Mark Hatle <mark.hatle@windriver.com>
Cc: Robert, "poky@yoctoproject.org" <poky@yoctoproject.org>,
	Patches,
	about the oe-core layer
	<openembedded-core@lists.openembedded.org>
Subject: Re: Question about apply eglibc configurability to create minimal image
Date: Fri, 17 Jun 2011 18:05:02 +0800	[thread overview]
Message-ID: <4DFB26CE.7070807@windriver.com> (raw)
In-Reply-To: <4DF0E4A8.1000608@windriver.com>


[-- Attachment #1.1: Type: text/plain, Size: 6218 bytes --]

On 2011?06?09? 23:20, Mark Hatle wrote:
> On 6/9/11 5:57 AM, Kang Kai wrote:
>> Hi Mark,
>>
>> I am focus on eglibc itself compilation with disabling all the
>> configurable options, right now eglibc can be compiled with disable all
>> the configurable options.
>>
>> But when I build core-image-minimal in a clear new directory, some
>> packages build failed and they need eglibc supports, such as
> core-image-minimal is simply to large of an image to see some of the advantages
> of the eglibc configuration.  Realistically the advantages come on single
> application or small (busybox + single application) systems.
>
>> gcc-runtime    depends on     libc-libm
> The above looks like a bug to me and should be investigated.. (a bug in gcc that
> is..)
>
>> ncurse            depends on    libc-posix-wchar-io libc-posix-clang-wchar
> ncurses can be configured WITHOUT wide character support, the needs to be done
> with any of the wchar options disabled in eglibc.
>
>> openssl           depends on    libc-inet libc-nsswitch
> I'm not sure why openssl needs either inet or nsswitch.  inet perhaps if it
> tries to make certain socket calls, but libc-nsswitch should never be required
> outside of eglibc.  This is likely a configuration issue in openssl -- or a bug
> in eglibc.
>
>> gettext            depends on    libc-spawn libc-locale-code
>> libc-getlogin libc-utmp
>> ...
> Once we introduce gettext (beyond simply it's m4 macros) we're no longer in
> "small" system territory.  gettext and many others really want some of the
> larger system capabilities as they are designed for multilingual systems.
>
>> After enable those options, the image size only decrease from 9.6M  to
>> 9.4M(qemux86). And the dependencies on eglibc is hard to break,
>> something like  libcrypt getlogin(function) can't be breaken.
>> Could you give me some directions what should I do with eglibc
>> configurability?
> My suggest is to start with a new custom configuration.  (ignore the gcc-runtime
> for right now and enable libm.)  The goal of this configuration is a small,
> local system -- without network connectivity.
>
> Walk through the core-image-minimal, and you'll see:
> IMAGE_INSTALL = "task-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP}"
>
> Looking at task-core-boot:
>
> RDEPENDS_task-core-boot = "\
>      base-files \
>      base-passwd \
>      busybox \
>      initscripts \
>      ${@base_contains("MACHINE_FEATURES", "keyboard", "keymaps", "", d)} \
>      modutils-initscripts \
>      netbase \
>      sysvinit \
>      tinylogin \
>      udev \
>      ${VIRTUAL-RUNTIME_update-alternatives} \
>      ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}"
>
> RRECOMMENDS_task-core-boot = "\
>      ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}"
>
>  From the above, I'm pretty sure that "netbase" will require a lot of networking
> components, specifically adding things like libc-inet.  So avoid netbase.
>
> It's possible that keyboard/keymaps may cause additional stuff to come in due to
> locale requirements.. so I'd dump those as well..
>
> sysvinit may also introduce some additional items -- so if it causes problems,
> remove it and switch to the init located within busybox.
>
> update-alternatives is what included gettext -- so this might need some
> enhancement to avoid gettext as a requirement.  So I'd suggest skipping it.
> (Note without it, it's likely busybox, tinylogin may not get setup properly...)
>
> udev is quite complex and drags in a number of components -- so drop that..
>
> Leaving:
>
>      base-files \
>      base-passwd \
>      busybox \
>      initscripts \
>      modutils-initscripts \
>      sysvinit \
>      tinylogin

Hi Mark,

According this list, expand with their run time depency(show in the 
attachment minimal-image-runtime-dependies.png) , and the list is:

     base-files \
     base-passwd \
     busybox \
     busybox-syslog \
     busybox-udhcpc \
     initscripts \
     makedevs \
     modutils-initscripts \
     sysvinit \
     sysvinit-pidof \
     sysvinit-inittab \
     tinylogin


When only enable eglibc libm, busybox, sysvinit and tinylogin can't be 
compiled.

busybox depends on

    * libc-crypt
    * libc-getlogin
    * libc-inet
    * libc-posix-regexp

I wonder that maybe libc-crypt can NOT be disabled?  Other 3 options can 
be disabled by closing some busybox feature and builtin commands.

sysvinit depends on

    * libc-inet
    * libc-sunrpc
    * libc-crypt

I don't how to resolve them, so as you said, remove it and use busybox 
init instead.

tinylogin depends on

    * libc-crypt
    * libc-utmp
    * libc-getlogin

I am trapped here, and could you give me some more help here, please?

The picture named eglibc-options-deps-for-minimal-image.png in 
attachment is the packages depends on every eglibc option that required 
by other packages.

There are some other dependencies cause problems.
linux-yocto requires elfutils python and perl.

elfutils requires gettext and gettext depends on:

    * libc-locale-code
    * libc-spawn
    * libc-getlogin

python requires ncurses and openssl.

    * ncurses could be update bb file to choose support wchar or not.
    * openssl depends on:
          o libc-inet
          o libc-nsswitch


perl depends on:

    * libc-crypt
    * libc-fcvt
    * libc-inet
    * libc-utmp


How to remove these dependencies?  One way is to remove the "elfutils 
python perl" from linux-yocto depencies, and the other is to disable 
related features of these packages, and I wonder this is too hard to finish.

Thanks a lot.

Regards,
Kai





> First see if you can compile the above with a minimal eglibc configuration.  If
> not I can help you work through those issues..  If you can, you SHOULD see a
> fairly dramatic decrease in size.
>
> --Mark
>
>> Thanks a lot!
>>
>> I made a mistake that try eglibc configurability in a directory which
>> has build core-image-minimal, so the packages which depend on eglibc
>> didn't rebuild, and I didn't find the dependency before. I am sorry!
>>
>> Regards,
>> Kai


[-- Attachment #1.2: Type: text/html, Size: 8032 bytes --]

[-- Attachment #2: eglibc-options-deps-for-minimal-image.png --]
[-- Type: image/png, Size: 280448 bytes --]

[-- Attachment #3: minimal-image-runtime-dependies.png --]
[-- Type: image/png, Size: 117500 bytes --]

  parent reply	other threads:[~2011-06-17 10:08 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4DF0A70C.7080501@windriver.com>
2011-06-09 10:59 ` [poky] Question about apply eglibc configurability to create minimal image Koen Kooi
2011-06-09 15:20 ` Mark Hatle
2011-06-09 15:34   ` Frans Meulenbroeks
2011-06-09 15:38     ` Mark Hatle
2011-06-10  2:50   ` Kang Kai
2011-06-17 10:05   ` Kang Kai [this message]
2011-06-17 15:46     ` Mark Hatle
2011-06-17 16:10       ` Koen Kooi
2011-06-21  7:35       ` Kang Kai
2011-06-27  2:09         ` Kang Kai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DFB26CE.7070807@windriver.com \
    --to=kai.kang@windriver.com \
    --cc=mark.hatle@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=poky@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox