Patchwork [2/2] eglibc: migrate configurability from oe

login
register
mail settings
Submitter Kang Kai
Date June 7, 2011, 9:42 a.m.
Message ID <46fc6e81f626e87f30a0d0980ed2b8fc3747e6be.1307438945.git.kai.kang@windriver.com>
Download mbox | patch
Permalink /patch/5519/
State New, archived
Headers show

Comments

Kang Kai - June 7, 2011, 9:42 a.m.
From: Kang Kai <kai.kang@windriver.com>

Migrate configurability from oe, try to shrink minimal image size

Update to get eglibc configuration options from DISTRO_FEATURES and enable them. All
the options are enabled by default.

Uncomment the line in conf/local.extended.conf to define DISTRO_FEATURES, so put
what options you want to enable there.

Signed-off-by: Kang Kai <kai.kang@windriver.com>
---
 meta/conf/distro/include/default-distrovars.inc    |    8 ++-
 .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch         |   20 ++++++
 meta/recipes-core/eglibc/eglibc-options.inc        |   62 ++++++++++++++++++++
 meta/recipes-core/eglibc/eglibc.inc                |    6 ++
 meta/recipes-core/eglibc/eglibc_2.13.bb            |    4 +-
 5 files changed, 98 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
 create mode 100644 meta/recipes-core/eglibc/eglibc-options.inc
Koen Kooi - June 7, 2011, 9:48 a.m.
Op 7 jun 2011, om 11:42 heeft Kang Kai het volgende geschreven:

> From: Kang Kai <kai.kang@windriver.com>
> 
> Migrate configurability from oe, try to shrink minimal image size
> 
> Update to get eglibc configuration options from DISTRO_FEATURES and enable them. All
> the options are enabled by default.
> 
> Uncomment the line in conf/local.extended.conf to define DISTRO_FEATURES, so put
> what options you want to enable there.
> 
> Signed-off-by: Kang Kai <kai.kang@windriver.com>
> ---
> meta/conf/distro/include/default-distrovars.inc    |    8 ++-
> .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch         |   20 ++++++
> meta/recipes-core/eglibc/eglibc-options.inc        |   62 ++++++++++++++++++++
> meta/recipes-core/eglibc/eglibc.inc                |    6 ++
> meta/recipes-core/eglibc/eglibc_2.13.bb            |    4 +-
> 5 files changed, 98 insertions(+), 2 deletions(-)
> create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
> create mode 100644 meta/recipes-core/eglibc/eglibc-options.inc
> 
> diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
> index 4b68a0a..16ac681 100644
> --- a/meta/conf/distro/include/default-distrovars.inc
> +++ b/meta/conf/distro/include/default-distrovars.inc
> @@ -10,7 +10,13 @@ LIMIT_BUILT_LOCALES ?= "POSIX en_US en_GB"
> ENABLE_BINARY_LOCALE_GENERATION ?= "1"
> LOCALE_UTF8_ONLY ?= "0"
> 
> -DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
> +DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci \
> +		libc-ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
> +		libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse \
> +		libc-getlogin libc-idn libc-inet libc-inet-anl libc-libm libc-libm-big libc-locales libc-locale-code \
> +		libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
> +		libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
> +		libc-posix-wchar-io"

I think a seperate DISTRO_LIBC_FEATURES var would be cleaner and easier to override.

regards,

Koen
Phil Blundell - June 7, 2011, 9:53 a.m.
On Tue, 2011-06-07 at 17:42 +0800, Kang Kai wrote:
> -DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
> +DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci \
> +		libc-ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \

I don't think it is a good idea to invent a new "libc-ipv6" feature; you
can just use the existing "ipv6" one.  This is probably true for some of
your others too.

> +        # try to fix disable charsets/locales/locale-code compile fail
> +        if 'libc-charsets' in distro_features and 'libc-locales' in distro_features and 'libc-locale-code' in distro_features:
> +            bb.data.setVar('PACKAGE_NO_GCONV', '0', d)
> +        else:
> +            bb.data.setVar('PACKAGE_NO_GCONV', '1', d)

Does that actually work?

p.
Khem Raj - June 7, 2011, 5:50 p.m.
On Tue, Jun 7, 2011 at 2:42 AM, Kang Kai <kai.kang@windriver.com> wrote:
> From: Kang Kai <kai.kang@windriver.com>
>
> Migrate configurability from oe, try to shrink minimal image size
>
> Update to get eglibc configuration options from DISTRO_FEATURES and enable them. All
> the options are enabled by default.
>
> Uncomment the line in conf/local.extended.conf to define DISTRO_FEATURES, so put
> what options you want to enable there.
>
> Signed-off-by: Kang Kai <kai.kang@windriver.com>
> ---
>  meta/conf/distro/include/default-distrovars.inc    |    8 ++-
>  .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch         |   20 ++++++
>  meta/recipes-core/eglibc/eglibc-options.inc        |   62 ++++++++++++++++++++
>  meta/recipes-core/eglibc/eglibc.inc                |    6 ++
>  meta/recipes-core/eglibc/eglibc_2.13.bb            |    4 +-
>  5 files changed, 98 insertions(+), 2 deletions(-)
>  create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
>  create mode 100644 meta/recipes-core/eglibc/eglibc-options.inc
>
> diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
> index 4b68a0a..16ac681 100644
> --- a/meta/conf/distro/include/default-distrovars.inc
> +++ b/meta/conf/distro/include/default-distrovars.inc
> @@ -10,7 +10,13 @@ LIMIT_BUILT_LOCALES ?= "POSIX en_US en_GB"
>  ENABLE_BINARY_LOCALE_GENERATION ?= "1"
>  LOCALE_UTF8_ONLY ?= "0"
>
> -DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
> +DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci \
> +               libc-ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
> +               libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse \
> +               libc-getlogin libc-idn libc-inet libc-inet-anl libc-libm libc-libm-big libc-locales libc-locale-code \
> +               libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
> +               libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
> +               libc-posix-wchar-io"
>

libc-ipv6 should be merged with existing ipv6 DISTRO_FEATURE we do not
need two keywords for same feature
we also need documentation on these features and probably mention in
local.conf.sample or may be a new file
for adavanced configuration

>  IMAGE_FEATURES ?= ""
>
> diff --git a/meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch b/meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
> new file mode 100644
> index 0000000..dffc648
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
> @@ -0,0 +1,20 @@
> +When disable OPTION_EGLIBC_RTLD_DEBUG, compilation fails.
> +Created on Jun 1, 2011 by Kang Kai <kai.kang@windriver.com>
> +
> +Upstream-Status: Submitted
> +
> +Signed-off-by: Kang Kai <kai.kang@windriver.com>
> +Index: libc/elf/dl-lookup.c
> +===================================================================
> +--- libc/elf/dl-lookup.c       (revision 13356)
> ++++ libc/elf/dl-lookup.c       (working copy)
> +@@ -423,7 +423,9 @@
> +                    hash table.  */
> +                 if (__builtin_expect (tab->size, 0))
> +                   {
> ++              #if __OPTION_EGLIBC_RTLD_DEBUG
> +                     assert (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK);
> ++              #endif
> +                     __rtld_lock_unlock_recursive (tab->lock);
> +                     goto success;
> +                   }
> diff --git a/meta/recipes-core/eglibc/eglibc-options.inc b/meta/recipes-core/eglibc/eglibc-options.inc
> new file mode 100644
> index 0000000..9214a0c
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-options.inc
> @@ -0,0 +1,62 @@
> +def eglibc_cfg(feature, features, tokens, cnf):
> +       if type(tokens) == type(""):
> +               tokens = [tokens]
> +       if type(features) == type([]) and feature in features:
> +               cnf.extend([token + ' = y' for token in tokens])
> +       else:
> +               for token in tokens:
> +                       cnf.extend([token + ' = n'])
> +                       if token == 'OPTION_EGLIBC_NSSWITCH':
> +                               cnf.extend(["OPTION_EGLIBC_NSSWITCH_FIXED_CONFIG = ${S}/nss/nsswitch.conf"])
> +                               cnf.extend(["OPTION_EGLIBC_NSSWITCH_FIXED_FUNCTIONS = ${S}/nss/fixed-nsswitch.functions"])
> +
> +# Map distro features to eglibc options settings
> +def features_to_eglibc_settings(d):
> +        cnf = ([])
> +        distro_features = (bb.data.getVar('DISTRO_FEATURES', d, True) or '').split()
> +        eglibc_cfg('libc-ipv6',      distro_features, 'OPTION_EGLIBC_ADVANCED_INET6', cnf)
> +        eglibc_cfg('libc-backtrace',      distro_features, 'OPTION_EGLIBC_BACKTRACE', cnf)
> +        eglibc_cfg('libc-big-macros',      distro_features, 'OPTION_EGLIBC_BIG_MACROS', cnf)
> +        eglibc_cfg('libc-bsd',      distro_features, 'OPTION_EGLIBC_BSD', cnf)
> +        eglibc_cfg('libc-cxx-tests',      distro_features, 'OPTION_EGLIBC_CXX_TESTS', cnf)
> +        eglibc_cfg('libc-catgets',      distro_features, 'OPTION_EGLIBC_CATGETS', cnf)
> +        eglibc_cfg('libc-charsets',      distro_features, 'OPTION_EGLIBC_CHARSETS', cnf)
> +        eglibc_cfg('libc-crypt',      distro_features, 'OPTION_EGLIBC_CRYPT', cnf)
> +        eglibc_cfg('libc-crypt-ufc',      distro_features, 'OPTION_EGLIBC_CRYPT_UFC', cnf)
> +        eglibc_cfg('libc-db-aliases',      distro_features, 'OPTION_EGLIBC_DB_ALIASES', cnf)
> +        eglibc_cfg('libc-envz',      distro_features, 'OPTION_EGLIBC_ENVZ', cnf)
> +        eglibc_cfg('libc-fcvt',      distro_features, 'OPTION_EGLIBC_FCVT', cnf)
> +        eglibc_cfg('libc-fmtmsg',      distro_features, 'OPTION_EGLIBC_FMTMSG', cnf)
> +        eglibc_cfg('libc-fstab',      distro_features, 'OPTION_EGLIBC_FSTAB', cnf)
> +        eglibc_cfg('libc-ftraverse',      distro_features, 'OPTION_EGLIBC_FTRAVERSE', cnf)
> +        eglibc_cfg('libc-getlogin',      distro_features, 'OPTION_EGLIBC_GETLOGIN', cnf)
> +        eglibc_cfg('libc-idn',      distro_features, 'OPTION_EGLIBC_IDN', cnf)
> +        eglibc_cfg('libc-inet',      distro_features, 'OPTION_EGLIBC_INET', cnf)
> +        eglibc_cfg('libc-inet-anl',      distro_features, 'OPTION_EGLIBC_INET_ANL', cnf)
> +        eglibc_cfg('libc-libm',      distro_features, 'OPTION_EGLIBC_LIBM', cnf)
> +        eglibc_cfg('libc-libm-big',      distro_features, 'OPTION_EGLIBC_LIBM_BIG', cnf)
> +        eglibc_cfg('libc-locales',      distro_features, 'OPTION_EGLIBC_LOCALES', cnf)
> +        eglibc_cfg('libc-locale-code',      distro_features, 'OPTION_EGLIBC_LOCALE_CODE', cnf)
> +        eglibc_cfg('libc-memusage',      distro_features, 'OPTION_EGLIBC_MEMUSAGE', cnf)
> +        eglibc_cfg('libc-nis',      distro_features, 'OPTION_EGLIBC_NIS', cnf)
> +        eglibc_cfg('libc-nsswitch',      distro_features, 'OPTION_EGLIBC_NSSWITCH', cnf)
> +        eglibc_cfg('libc-rcmd',      distro_features, 'OPTION_EGLIBC_RCMD', cnf)
> +        eglibc_cfg('libc-rtld-debug',      distro_features, 'OPTION_EGLIBC_RTLD_DEBUG', cnf)
> +        eglibc_cfg('libc-spawn',      distro_features, 'OPTION_EGLIBC_SPAWN', cnf)
> +        eglibc_cfg('libc-streams',      distro_features, 'OPTION_EGLIBC_STREAMS', cnf)
> +        eglibc_cfg('libc-sunrpc',      distro_features, 'OPTION_EGLIBC_SUNRPC', cnf)
> +        eglibc_cfg('libc-utmp',      distro_features, 'OPTION_EGLIBC_UTMP', cnf)
> +        eglibc_cfg('libc-utmpx',      distro_features, 'OPTION_EGLIBC_UTMPX', cnf)
> +        eglibc_cfg('libc-wordexp',      distro_features, 'OPTION_EGLIBC_WORDEXP', cnf)
> +        eglibc_cfg('libc-posix-clang-wchar',      distro_features, 'OPTION_POSIX_C_LANG_WIDE_CHAR', cnf)
> +        eglibc_cfg('libc-posix-regexp',      distro_features, 'OPTION_POSIX_REGEXP', cnf)
> +        eglibc_cfg('libc-posix-regexp-glibc',      distro_features, 'OPTION_POSIX_REGEXP_GLIBC', cnf)
> +        eglibc_cfg('libc-posix-wchar-io',      distro_features, 'OPTION_POSIX_WIDE_CHAR_DEVICE_IO', cnf)
> +
> +        # try to fix disable charsets/locales/locale-code compile fail
> +        if 'libc-charsets' in distro_features and 'libc-locales' in distro_features and 'libc-locale-code' in distro_features:
> +            bb.data.setVar('PACKAGE_NO_GCONV', '0', d)
> +        else:
> +            bb.data.setVar('PACKAGE_NO_GCONV', '1', d)
> +
> +        return "\n".join(cnf)
> diff --git a/meta/recipes-core/eglibc/eglibc.inc b/meta/recipes-core/eglibc/eglibc.inc
> index 46ffa82..616f1af 100644
> --- a/meta/recipes-core/eglibc/eglibc.inc
> +++ b/meta/recipes-core/eglibc/eglibc.inc
> @@ -28,6 +28,7 @@ DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers"
>  PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
>  PROVIDES += "virtual/libintl virtual/libiconv"
>  inherit autotools
> +require eglibc-options.inc
>
>  LEAD_SONAME = "libc.so"
>
> @@ -43,3 +44,8 @@ EXTRA_OEMAKE += ${EGLIBCPARALLELISM}
>  PARALLEL_MAKE = ""
>
>  PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
> +
> +OE_FEATURES = "${@features_to_eglibc_settings(d)}"
> +do_configure_prepend() {
> +       echo '${OE_FEATURES}' > ${B}/option-groups.config
> +}
> diff --git a/meta/recipes-core/eglibc/eglibc_2.13.bb b/meta/recipes-core/eglibc/eglibc_2.13.bb
> index 398da69..894eb88 100644
> --- a/meta/recipes-core/eglibc/eglibc_2.13.bb
> +++ b/meta/recipes-core/eglibc/eglibc_2.13.bb
> @@ -4,7 +4,7 @@ SRCREV = "13356"
>
>  DEPENDS += "gperf-native"
>  FILESPATHPKG =. "eglibc-svn:"
> -PR = "r0"
> +PR = "r1"
>  PR_append = "+svnr${SRCPV}"
>
>  EGLIBC_BRANCH="eglibc-2_13"
> @@ -16,7 +16,9 @@ SRC_URI = "svn://www.eglibc.org/svn/branches/;module=${EGLIBC_BRANCH};proto=http
>            file://stack-protector-test.patch \
>            file://etc/ld.so.conf \
>            file://generate-supported.mk \
> +           file://eglibc-2.13-fix-macro-RTLD_DEBUG.patch \
>           "
> +
>  LIC_FILES_CHKSUM = "file://LICENSES;md5=98a1128c4b58120182cbea3b1752d8b9 \
>       file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
>       file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
> --
> 1.7.5.1.300.gc565c
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
Kang Kai - June 8, 2011, 1:45 a.m.
On 2011?06?07? 17:48, Koen Kooi wrote:
> Op 7 jun 2011, om 11:42 heeft Kang Kai het volgende geschreven:
>
>> From: Kang Kai<kai.kang@windriver.com>
>>
>> Migrate configurability from oe, try to shrink minimal image size
>>
>> Update to get eglibc configuration options from DISTRO_FEATURES and enable them. All
>> the options are enabled by default.
>>
>> Uncomment the line in conf/local.extended.conf to define DISTRO_FEATURES, so put
>> what options you want to enable there.
>>
>> Signed-off-by: Kang Kai<kai.kang@windriver.com>
>> ---
>> meta/conf/distro/include/default-distrovars.inc    |    8 ++-
>> .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch         |   20 ++++++
>> meta/recipes-core/eglibc/eglibc-options.inc        |   62 ++++++++++++++++++++
>> meta/recipes-core/eglibc/eglibc.inc                |    6 ++
>> meta/recipes-core/eglibc/eglibc_2.13.bb            |    4 +-
>> 5 files changed, 98 insertions(+), 2 deletions(-)
>> create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
>> create mode 100644 meta/recipes-core/eglibc/eglibc-options.inc
>>
>> diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
>> index 4b68a0a..16ac681 100644
>> --- a/meta/conf/distro/include/default-distrovars.inc
>> +++ b/meta/conf/distro/include/default-distrovars.inc
>> @@ -10,7 +10,13 @@ LIMIT_BUILT_LOCALES ?= "POSIX en_US en_GB"
>> ENABLE_BINARY_LOCALE_GENERATION ?= "1"
>> LOCALE_UTF8_ONLY ?= "0"
>>
>> -DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
>> +DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci \
>> +		libc-ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
>> +		libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse \
>> +		libc-getlogin libc-idn libc-inet libc-inet-anl libc-libm libc-libm-big libc-locales libc-locale-code \
>> +		libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
>> +		libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
>> +		libc-posix-wchar-io"
Hi Koen,
> I think a seperate DISTRO_LIBC_FEATURES var would be cleaner and easier to override.
I used DISTRO_FEATURES_EGLIBC before, but it didn't make Richard happy. :)

> regards,
>
> Koen
Regards,
Kai
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Kang Kai - June 8, 2011, 1:59 a.m.
On 2011?06?07? 17:53, Phil Blundell wrote:
> On Tue, 2011-06-07 at 17:42 +0800, Kang Kai wrote:
Hi Phil,

Thanks for your comment.
>> -DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
>> +DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci \
>> +		libc-ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
> I don't think it is a good idea to invent a new "libc-ipv6" feature; you
> can just use the existing "ipv6" one.  This is probably true for some of
> your others too.

eglibc needs to support ipv6 by default, but if other application such 
as iptables doesn't want to support ipv6, remove "ipv6" will also 
disable eglibc ipv6 support?
If it is ok to disable or enable ipv6 at same time, I will update the 
patch with "ipv6".

>> +        # try to fix disable charsets/locales/locale-code compile fail
>> +        if 'libc-charsets' in distro_features and 'libc-locales' in distro_features and 'libc-locale-code' in distro_features:
>> +            bb.data.setVar('PACKAGE_NO_GCONV', '0', d)
>> +        else:
>> +            bb.data.setVar('PACKAGE_NO_GCONV', '1', d)
> Does that actually work?

Yes, it works. I can build eglic after uncomment the line in 
local.extended.conf to disable all configurable options. But remove the 
codes above, it will fail.
> p.
>
>
Regards,
Kai
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Khem Raj - June 8, 2011, 2:34 a.m.
On Tue, Jun 7, 2011 at 6:59 PM, Kang Kai <Kai.Kang@windriver.com> wrote:
> On 2011?06?07? 17:53, Phil Blundell wrote:
>>
>> On Tue, 2011-06-07 at 17:42 +0800, Kang Kai wrote:
>
> Hi Phil,
>
> Thanks for your comment.
>>>
>>> -DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost
>>> wifi nfs zeroconf pci"
>>> +DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost
>>> wifi nfs zeroconf pci \
>>> +               libc-ipv6 libc-backtrace libc-big-macros libc-bsd
>>> libc-cxx-tests libc-catgets libc-charsets libc-crypt \
>>
>> I don't think it is a good idea to invent a new "libc-ipv6" feature; you
>> can just use the existing "ipv6" one.  This is probably true for some of
>> your others too.
>
> eglibc needs to support ipv6 by default, but if other application such as
> iptables doesn't want to support ipv6, remove "ipv6" will also disable
> eglibc ipv6 support?

I think if one distro does not need ipv6 then having it in eglibc is not needed
too

> If it is ok to disable or enable ipv6 at same time, I will update the patch
> with "ipv6".
>
>>> +        # try to fix disable charsets/locales/locale-code compile fail
>>> +        if 'libc-charsets' in distro_features and 'libc-locales' in
>>> distro_features and 'libc-locale-code' in distro_features:
>>> +            bb.data.setVar('PACKAGE_NO_GCONV', '0', d)
>>> +        else:
>>> +            bb.data.setVar('PACKAGE_NO_GCONV', '1', d)
>>
>> Does that actually work?
>
> Yes, it works. I can build eglic after uncomment the line in
> local.extended.conf to disable all configurable options. But remove the
> codes above, it will fail.
>>
>> p.
>>
>>
> Regards,
> Kai
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
Koen Kooi - June 8, 2011, 6:25 a.m.
Op 8 jun 2011, om 03:45 heeft Kang Kai het volgende geschreven:

> On 2011?06?07? 17:48, Koen Kooi wrote:
>> Op 7 jun 2011, om 11:42 heeft Kang Kai het volgende geschreven:
>> 
>>> From: Kang Kai<kai.kang@windriver.com>
>>> 
>>> Migrate configurability from oe, try to shrink minimal image size
>>> 
>>> Update to get eglibc configuration options from DISTRO_FEATURES and enable them. All
>>> the options are enabled by default.
>>> 
>>> Uncomment the line in conf/local.extended.conf to define DISTRO_FEATURES, so put
>>> what options you want to enable there.
>>> 
>>> Signed-off-by: Kang Kai<kai.kang@windriver.com>
>>> ---
>>> meta/conf/distro/include/default-distrovars.inc    |    8 ++-
>>> .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch         |   20 ++++++
>>> meta/recipes-core/eglibc/eglibc-options.inc        |   62 ++++++++++++++++++++
>>> meta/recipes-core/eglibc/eglibc.inc                |    6 ++
>>> meta/recipes-core/eglibc/eglibc_2.13.bb            |    4 +-
>>> 5 files changed, 98 insertions(+), 2 deletions(-)
>>> create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
>>> create mode 100644 meta/recipes-core/eglibc/eglibc-options.inc
>>> 
>>> diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
>>> index 4b68a0a..16ac681 100644
>>> --- a/meta/conf/distro/include/default-distrovars.inc
>>> +++ b/meta/conf/distro/include/default-distrovars.inc
>>> @@ -10,7 +10,13 @@ LIMIT_BUILT_LOCALES ?= "POSIX en_US en_GB"
>>> ENABLE_BINARY_LOCALE_GENERATION ?= "1"
>>> LOCALE_UTF8_ONLY ?= "0"
>>> 
>>> -DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
>>> +DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci \
>>> +		libc-ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
>>> +		libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse \
>>> +		libc-getlogin libc-idn libc-inet libc-inet-anl libc-libm libc-libm-big libc-locales libc-locale-code \
>>> +		libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
>>> +		libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
>>> +		libc-posix-wchar-io"
> Hi Koen,
>> I think a seperate DISTRO_LIBC_FEATURES var would be cleaner and easier to override.
> I used DISTRO_FEATURES_EGLIBC before, but it didn't make Richard happy. :)

So how does one easily override LIBC features without touching other features?
Kang Kai - June 8, 2011, 6:35 a.m.
On 2011?06?08? 14:25, Koen Kooi wrote:
> Op 8 jun 2011, om 03:45 heeft Kang Kai het volgende geschreven:
>
>> On 2011?06?07? 17:48, Koen Kooi wrote:
>>> Op 7 jun 2011, om 11:42 heeft Kang Kai het volgende geschreven:
>>>
>>>> From: Kang Kai<kai.kang@windriver.com>
>>>>
>>>> Migrate configurability from oe, try to shrink minimal image size
>>>>
>>>> Update to get eglibc configuration options from DISTRO_FEATURES and enable them. All
>>>> the options are enabled by default.
>>>>
>>>> Uncomment the line in conf/local.extended.conf to define DISTRO_FEATURES, so put
>>>> what options you want to enable there.
>>>>
>>>> Signed-off-by: Kang Kai<kai.kang@windriver.com>
>>>> ---
>>>> meta/conf/distro/include/default-distrovars.inc    |    8 ++-
>>>> .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch         |   20 ++++++
>>>> meta/recipes-core/eglibc/eglibc-options.inc        |   62 ++++++++++++++++++++
>>>> meta/recipes-core/eglibc/eglibc.inc                |    6 ++
>>>> meta/recipes-core/eglibc/eglibc_2.13.bb            |    4 +-
>>>> 5 files changed, 98 insertions(+), 2 deletions(-)
>>>> create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
>>>> create mode 100644 meta/recipes-core/eglibc/eglibc-options.inc
>>>>
>>>> diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
>>>> index 4b68a0a..16ac681 100644
>>>> --- a/meta/conf/distro/include/default-distrovars.inc
>>>> +++ b/meta/conf/distro/include/default-distrovars.inc
>>>> @@ -10,7 +10,13 @@ LIMIT_BUILT_LOCALES ?= "POSIX en_US en_GB"
>>>> ENABLE_BINARY_LOCALE_GENERATION ?= "1"
>>>> LOCALE_UTF8_ONLY ?= "0"
>>>>
>>>> -DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
>>>> +DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci \
>>>> +		libc-ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
>>>> +		libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse \
>>>> +		libc-getlogin libc-idn libc-inet libc-inet-anl libc-libm libc-libm-big libc-locales libc-locale-code \
>>>> +		libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
>>>> +		libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
>>>> +		libc-posix-wchar-io"
>> Hi Koen,
>>> I think a seperate DISTRO_LIBC_FEATURES var would be cleaner and easier to override.
>> I used DISTRO_FEATURES_EGLIBC before, but it didn't make Richard happy. :)
> So how does one easily override LIBC features without touching other features?
That is why use libc-spawn not "spawn" itself.
Martin Jansa - June 8, 2011, 6:42 a.m.
On Wed, Jun 08, 2011 at 02:35:18PM +0800, Kang Kai wrote:
> On 2011?06?08? 14:25, Koen Kooi wrote:
> > Op 8 jun 2011, om 03:45 heeft Kang Kai het volgende geschreven:
> >
> >> On 2011?06?07? 17:48, Koen Kooi wrote:
> >>> Op 7 jun 2011, om 11:42 heeft Kang Kai het volgende geschreven:
> >>>
> >>>> From: Kang Kai<kai.kang@windriver.com>
> >>>>
> >>>> Migrate configurability from oe, try to shrink minimal image size
> >>>>
> >>>> Update to get eglibc configuration options from DISTRO_FEATURES and enable them. All
> >>>> the options are enabled by default.
> >>>>
> >>>> Uncomment the line in conf/local.extended.conf to define DISTRO_FEATURES, so put
> >>>> what options you want to enable there.
> >>>>
> >>>> Signed-off-by: Kang Kai<kai.kang@windriver.com>
> >>>> ---
> >>>> meta/conf/distro/include/default-distrovars.inc    |    8 ++-
> >>>> .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch         |   20 ++++++
> >>>> meta/recipes-core/eglibc/eglibc-options.inc        |   62 ++++++++++++++++++++
> >>>> meta/recipes-core/eglibc/eglibc.inc                |    6 ++
> >>>> meta/recipes-core/eglibc/eglibc_2.13.bb            |    4 +-
> >>>> 5 files changed, 98 insertions(+), 2 deletions(-)
> >>>> create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
> >>>> create mode 100644 meta/recipes-core/eglibc/eglibc-options.inc
> >>>>
> >>>> diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
> >>>> index 4b68a0a..16ac681 100644
> >>>> --- a/meta/conf/distro/include/default-distrovars.inc
> >>>> +++ b/meta/conf/distro/include/default-distrovars.inc
> >>>> @@ -10,7 +10,13 @@ LIMIT_BUILT_LOCALES ?= "POSIX en_US en_GB"
> >>>> ENABLE_BINARY_LOCALE_GENERATION ?= "1"
> >>>> LOCALE_UTF8_ONLY ?= "0"
> >>>>
> >>>> -DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
> >>>> +DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci \
> >>>> +		libc-ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
> >>>> +		libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse \
> >>>> +		libc-getlogin libc-idn libc-inet libc-inet-anl libc-libm libc-libm-big libc-locales libc-locale-code \
> >>>> +		libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
> >>>> +		libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
> >>>> +		libc-posix-wchar-io"
> >> Hi Koen,
> >>> I think a seperate DISTRO_LIBC_FEATURES var would be cleaner and easier to override.
> >> I used DISTRO_FEATURES_EGLIBC before, but it didn't make Richard happy. :)
> > So how does one easily override LIBC features without touching other features?
> That is why use libc-spawn not "spawn" itself.

I agree with koen, when distro wants to keep all default libc-* but
alter other DISTRO_FEATURES it has to list all libc-* in it's own
config.

IMHO DISTRO_FEATURES_EGLIBC had wrong only suffix as it's not _EGLIBC
specific,

DISTRO_FEATURES_LIBC or proposed DISTRO_LIBC_FEATURES will allow
distributions to override it like this:
DISTRO_FEATURES = "foo bar ${DISTRO_FEATURES_LIBC}" which is much better
then 6 lines of libc-* features which need to resync when someone adds
new feature with new *libc version.

Regards,

Patch

diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
index 4b68a0a..16ac681 100644
--- a/meta/conf/distro/include/default-distrovars.inc
+++ b/meta/conf/distro/include/default-distrovars.inc
@@ -10,7 +10,13 @@  LIMIT_BUILT_LOCALES ?= "POSIX en_US en_GB"
 ENABLE_BINARY_LOCALE_GENERATION ?= "1"
 LOCALE_UTF8_ONLY ?= "0"
 
-DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
+DISTRO_FEATURES ?= "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci \
+		libc-ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
+		libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse \
+		libc-getlogin libc-idn libc-inet libc-inet-anl libc-libm libc-libm-big libc-locales libc-locale-code \
+		libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
+		libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
+		libc-posix-wchar-io"
 
 IMAGE_FEATURES ?= ""
 
diff --git a/meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch b/meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
new file mode 100644
index 0000000..dffc648
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch
@@ -0,0 +1,20 @@ 
+When disable OPTION_EGLIBC_RTLD_DEBUG, compilation fails.
+Created on Jun 1, 2011 by Kang Kai <kai.kang@windriver.com>
+
+Upstream-Status: Submitted
+
+Signed-off-by: Kang Kai <kai.kang@windriver.com>
+Index: libc/elf/dl-lookup.c
+===================================================================
+--- libc/elf/dl-lookup.c	(revision 13356)
++++ libc/elf/dl-lookup.c	(working copy)
+@@ -423,7 +423,9 @@
+ 		     hash table.  */
+ 		  if (__builtin_expect (tab->size, 0))
+ 		    {
++              #if __OPTION_EGLIBC_RTLD_DEBUG
+ 		      assert (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK);
++              #endif
+ 		      __rtld_lock_unlock_recursive (tab->lock);
+ 		      goto success;
+ 		    }
diff --git a/meta/recipes-core/eglibc/eglibc-options.inc b/meta/recipes-core/eglibc/eglibc-options.inc
new file mode 100644
index 0000000..9214a0c
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-options.inc
@@ -0,0 +1,62 @@ 
+def eglibc_cfg(feature, features, tokens, cnf):
+	if type(tokens) == type(""):
+		tokens = [tokens]
+	if type(features) == type([]) and feature in features:
+		cnf.extend([token + ' = y' for token in tokens])
+	else:
+		for token in tokens:
+			cnf.extend([token + ' = n'])
+			if token == 'OPTION_EGLIBC_NSSWITCH':
+				cnf.extend(["OPTION_EGLIBC_NSSWITCH_FIXED_CONFIG = ${S}/nss/nsswitch.conf"])
+				cnf.extend(["OPTION_EGLIBC_NSSWITCH_FIXED_FUNCTIONS = ${S}/nss/fixed-nsswitch.functions"])
+
+# Map distro features to eglibc options settings
+def features_to_eglibc_settings(d):
+        cnf = ([])
+        distro_features = (bb.data.getVar('DISTRO_FEATURES', d, True) or '').split()
+        eglibc_cfg('libc-ipv6',      distro_features, 'OPTION_EGLIBC_ADVANCED_INET6', cnf)
+        eglibc_cfg('libc-backtrace',      distro_features, 'OPTION_EGLIBC_BACKTRACE', cnf)
+        eglibc_cfg('libc-big-macros',      distro_features, 'OPTION_EGLIBC_BIG_MACROS', cnf)
+        eglibc_cfg('libc-bsd',      distro_features, 'OPTION_EGLIBC_BSD', cnf)
+        eglibc_cfg('libc-cxx-tests',      distro_features, 'OPTION_EGLIBC_CXX_TESTS', cnf)
+        eglibc_cfg('libc-catgets',      distro_features, 'OPTION_EGLIBC_CATGETS', cnf)
+        eglibc_cfg('libc-charsets',      distro_features, 'OPTION_EGLIBC_CHARSETS', cnf)
+        eglibc_cfg('libc-crypt',      distro_features, 'OPTION_EGLIBC_CRYPT', cnf)
+        eglibc_cfg('libc-crypt-ufc',      distro_features, 'OPTION_EGLIBC_CRYPT_UFC', cnf)
+        eglibc_cfg('libc-db-aliases',      distro_features, 'OPTION_EGLIBC_DB_ALIASES', cnf)
+        eglibc_cfg('libc-envz',      distro_features, 'OPTION_EGLIBC_ENVZ', cnf)
+        eglibc_cfg('libc-fcvt',      distro_features, 'OPTION_EGLIBC_FCVT', cnf)
+        eglibc_cfg('libc-fmtmsg',      distro_features, 'OPTION_EGLIBC_FMTMSG', cnf)
+        eglibc_cfg('libc-fstab',      distro_features, 'OPTION_EGLIBC_FSTAB', cnf)
+        eglibc_cfg('libc-ftraverse',      distro_features, 'OPTION_EGLIBC_FTRAVERSE', cnf)
+        eglibc_cfg('libc-getlogin',      distro_features, 'OPTION_EGLIBC_GETLOGIN', cnf)
+        eglibc_cfg('libc-idn',      distro_features, 'OPTION_EGLIBC_IDN', cnf)
+        eglibc_cfg('libc-inet',      distro_features, 'OPTION_EGLIBC_INET', cnf)
+        eglibc_cfg('libc-inet-anl',      distro_features, 'OPTION_EGLIBC_INET_ANL', cnf)
+        eglibc_cfg('libc-libm',      distro_features, 'OPTION_EGLIBC_LIBM', cnf)
+        eglibc_cfg('libc-libm-big',      distro_features, 'OPTION_EGLIBC_LIBM_BIG', cnf)
+        eglibc_cfg('libc-locales',      distro_features, 'OPTION_EGLIBC_LOCALES', cnf)
+        eglibc_cfg('libc-locale-code',      distro_features, 'OPTION_EGLIBC_LOCALE_CODE', cnf)
+        eglibc_cfg('libc-memusage',      distro_features, 'OPTION_EGLIBC_MEMUSAGE', cnf)
+        eglibc_cfg('libc-nis',      distro_features, 'OPTION_EGLIBC_NIS', cnf)
+        eglibc_cfg('libc-nsswitch',      distro_features, 'OPTION_EGLIBC_NSSWITCH', cnf)
+        eglibc_cfg('libc-rcmd',      distro_features, 'OPTION_EGLIBC_RCMD', cnf)
+        eglibc_cfg('libc-rtld-debug',      distro_features, 'OPTION_EGLIBC_RTLD_DEBUG', cnf)
+        eglibc_cfg('libc-spawn',      distro_features, 'OPTION_EGLIBC_SPAWN', cnf)
+        eglibc_cfg('libc-streams',      distro_features, 'OPTION_EGLIBC_STREAMS', cnf)
+        eglibc_cfg('libc-sunrpc',      distro_features, 'OPTION_EGLIBC_SUNRPC', cnf)
+        eglibc_cfg('libc-utmp',      distro_features, 'OPTION_EGLIBC_UTMP', cnf)
+        eglibc_cfg('libc-utmpx',      distro_features, 'OPTION_EGLIBC_UTMPX', cnf)
+        eglibc_cfg('libc-wordexp',      distro_features, 'OPTION_EGLIBC_WORDEXP', cnf)
+        eglibc_cfg('libc-posix-clang-wchar',      distro_features, 'OPTION_POSIX_C_LANG_WIDE_CHAR', cnf)
+        eglibc_cfg('libc-posix-regexp',      distro_features, 'OPTION_POSIX_REGEXP', cnf)
+        eglibc_cfg('libc-posix-regexp-glibc',      distro_features, 'OPTION_POSIX_REGEXP_GLIBC', cnf)
+        eglibc_cfg('libc-posix-wchar-io',      distro_features, 'OPTION_POSIX_WIDE_CHAR_DEVICE_IO', cnf)
+
+        # try to fix disable charsets/locales/locale-code compile fail
+        if 'libc-charsets' in distro_features and 'libc-locales' in distro_features and 'libc-locale-code' in distro_features:
+            bb.data.setVar('PACKAGE_NO_GCONV', '0', d)
+        else:
+            bb.data.setVar('PACKAGE_NO_GCONV', '1', d)
+
+        return "\n".join(cnf)
diff --git a/meta/recipes-core/eglibc/eglibc.inc b/meta/recipes-core/eglibc/eglibc.inc
index 46ffa82..616f1af 100644
--- a/meta/recipes-core/eglibc/eglibc.inc
+++ b/meta/recipes-core/eglibc/eglibc.inc
@@ -28,6 +28,7 @@  DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers"
 PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
 PROVIDES += "virtual/libintl virtual/libiconv"
 inherit autotools
+require eglibc-options.inc
 
 LEAD_SONAME = "libc.so"
 
@@ -43,3 +44,8 @@  EXTRA_OEMAKE += ${EGLIBCPARALLELISM}
 PARALLEL_MAKE = ""
 
 PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
+
+OE_FEATURES = "${@features_to_eglibc_settings(d)}"
+do_configure_prepend() {
+	echo '${OE_FEATURES}' > ${B}/option-groups.config
+}
diff --git a/meta/recipes-core/eglibc/eglibc_2.13.bb b/meta/recipes-core/eglibc/eglibc_2.13.bb
index 398da69..894eb88 100644
--- a/meta/recipes-core/eglibc/eglibc_2.13.bb
+++ b/meta/recipes-core/eglibc/eglibc_2.13.bb
@@ -4,7 +4,7 @@  SRCREV = "13356"
 
 DEPENDS += "gperf-native"
 FILESPATHPKG =. "eglibc-svn:"
-PR = "r0"
+PR = "r1"
 PR_append = "+svnr${SRCPV}"
 
 EGLIBC_BRANCH="eglibc-2_13"
@@ -16,7 +16,9 @@  SRC_URI = "svn://www.eglibc.org/svn/branches/;module=${EGLIBC_BRANCH};proto=http
            file://stack-protector-test.patch \
            file://etc/ld.so.conf \
            file://generate-supported.mk \
+           file://eglibc-2.13-fix-macro-RTLD_DEBUG.patch \
 	   "
+
 LIC_FILES_CHKSUM = "file://LICENSES;md5=98a1128c4b58120182cbea3b1752d8b9 \
       file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
       file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \