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 --]
WARNING: multiple messages have this Message-ID (diff)
From: Kang Kai <Kai.Kang@windriver.com>
To: Mark Hatle <mark.hatle@windriver.com>
Cc: "poky@yoctoproject.org" <poky@yoctoproject.org>,
Patches and discussions 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 --]
next prev parent reply other threads:[~2011-06-17 10:08 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-09 10:57 Question about apply eglibc configurability to create minimal image Kang Kai
2011-06-09 10:59 ` [poky] " Koen Kooi
2011-06-09 10:59 ` Koen Kooi
2011-06-09 15:20 ` Mark Hatle
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-10 2:50 ` Kang Kai
2011-06-17 10:05 ` Kang Kai [this message]
2011-06-17 10:05 ` Kang Kai
2011-06-17 15:46 ` Mark Hatle
2011-06-17 15:46 ` Mark Hatle
2011-06-17 16:10 ` Koen Kooi
2011-06-21 7:35 ` Kang Kai
2011-06-21 7:35 ` Kang Kai
2011-06-27 2:09 ` Kang Kai
2011-06-27 2:09 ` [OE-core] " Kang Kai
2011-06-09 19:34 ` Khem Raj
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.