eglibc: enable eglibc configurability V2
cover eglibc: enable eglibc configurability V2
From: Kang Kai <[email protected]>
Hi Saul,
I update the patch that move "DISTRO_FEATURES_EGLIBC ??=" to eglibc.inc
Migrate configurability from oe, try to shrink minimal image size
The switch is in local.conf.sample, uncomment the line DISTRO_FEATURES_EGLIBC = ""
and write what options you want to enable.
If want to disable locale-code charsets or locales, you have to uncomment PACKAGE_NO_GCONV = 1
Because without this, it fails on package_do_split_gconvs in libc-package.bbclass
The following changes since commit 484c4e73245c93a08413cd204513bf5c5698b994:
clutter-1.6: Add patch to update gettext macro version (2011-06-01 18:34:37 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib.git kangkai/distro
http://git.pokylinux.org/cgit.cgi//log/?h=kangkai/distro
Kang Kai (1):
eglibc: migrate configurability from oe
meta-yocto/conf/local.conf.sample | 9 +++ .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch | 20 +++++++ meta/recipes-core/eglibc/eglibc-options.inc | 55 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc.inc | 13 +++++ meta/recipes-core/eglibc/eglibc_2.13.bb | 4 +- 5 files changed, 100 insertions(+), 1 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
Signature · 1 line
1.7.5.1.300.gc565c
PATCH 1/1 eglibc: migrate configurability from oe
From: Kang Kai <[email protected]>
Migrate configurability from oe, try to shrink minimal image size
The switch is in local.conf.sample, uncomment the line DISTRO_FEATURES_EGLIBC = ""
and write what options you want to enable.
If want to disable locale-code charsets or locales, you have to uncomment PACKAGE_NO_GCONV = 1
Because without this, it fails on package_do_split_gconvs in libc-package.bbclass
--- meta-yocto/conf/local.conf.sample | 9 +++ .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch | 20 +++++++ meta/recipes-core/eglibc/eglibc-options.inc | 55 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc.inc | 13 +++++ meta/recipes-core/eglibc/eglibc_2.13.bb | 4 +- 5 files changed, 100 insertions(+), 1 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
meta-yocto/conf/local.conf.sample +9 -0
@@ -87,6 +87,15 @@ PACKAGE_CLASSES ?= "package_rpm package_ipk" # NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink USER_CLASSES ?= "image-mklibs image-prelink" +# eglibc configurability is used to reduce minimal images's size. +# PACKAGE_NO_GCONV should be set to 1, or locale-code posix-clang-wchar +# charsets locales need to be include in DISTRO_FEATURES_EGLIBC, please check +# package_do_split_gconvs in libc-package.bbclass for detail +#PACKAGE_NO_GCONV = 1 + +# if you want to enable any option listed below, please uncomment next line and copy it here +#DISTRO_FEATURES_EGLIBC = "" + # POKYMODE controls the characteristics of the generated packages/images by # telling poky which type of toolchain to use. #
meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch new file +20 -0
@@ -0,0 +1,20 @@ +When disable OPTION_EGLIBC_RTLD_DEBUG, compilation fails. +Created on Jun 1, 2011 by Kang Kai <[email protected]> + +Upstream-Status: Submitted + +Signed-off-by: Kang Kai <[email protected]> +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; + }
meta/recipes-core/eglibc/eglibc-options.inc new file +55 -0
55 lines not on this page · raw message
meta/recipes-core/eglibc/eglibc.inc +13 -0
@@ -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,15 @@ 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" + +DISTRO_FEATURES_EGLIBC ??= "ipv6 backtrace big-macros bsd cxx-tests catgets charsets \ + crypt crypt-ufc db-aliases envz fcvt fmtmsg fstab ftraverse \ + getlogin idn inet inet-anl libm libm-big locales locale-code \ + memusage nis nsswitch rcmd rtld-debug spawn streams sunrpc utmp \ + utmpx wordexp posix-clang-wchar posix-regexp posix-regexp-glibc \ + posix-wchar-io " + +OE_FEATURES = "${@features_to_eglibc_settings(d)}" +do_configure_prepend() { + echo '${OE_FEATURES}' > ${B}/option-groups.config +}
meta/recipes-core/eglibc/eglibc_2.13.bb +3 -1
@@ -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 \
Signature · 1 line
1.7.5.1.300.gc565c
Re: [PATCH 1/1] eglibc: migrate configurability from oe
Quoted 11 lines · Kang Kai
From: Kang Kai <[email protected]>
Migrate configurability from oe, try to shrink minimal image size
The switch is in local.conf.sample, uncomment the line
DISTRO_FEATURES_EGLIBC= ""
and write what options you want to enable.If want to disable locale-code charsets or locales, you have to uncomment
PACKAGE_NO_GCONV= 1
Because without this, it fails onpackage_do_split_gconvsin libc-package.bbclass
I have some comments:
a) I think these should become flags in DISTRO_FEATURES with an "eglibc-" prefix so something like "spawn" would become "eglibc-spawn"
b) I think we need to create a local.conf.sample.extended which has information about more advanced settings a user can configure. I don't want every setting in local.conf as standard as it gives the user the impression they have to change them which they don't. Some existing data in local.conf.sample can be moved over.
c) The code triggered by PACKAGE_NO_GCONV should also trigger if you set the appropriate eglibc- feature flags automatically. Having two variables you have to keep track of the combinations of is just plain wrong. They should be controlled by one flag only. If there is generic packaging code that handles these we might not need the "eglibc-" prefix for those options.
Cheers,
Richard
Quoted 169 lines
Signed-off-by Kang Kai <[email protected]>--- meta-yocto/conf/local.conf.sample | 9 +++ .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch | 20 +++++++ meta/recipes-core/eglibc/eglibc-options.inc | 55 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc.inc | 13 +++++ meta/recipes-core/eglibc/eglibc_2.13.bb | 4 +- 5 files changed, 100 insertions(+), 1 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.incmeta-yocto/conf/local.conf.sample +9
-0@@ -87,6 +87,15 @@ PACKAGE_CLASSES ?= "package_rpm package_ipk" # NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink USER_CLASSES ?= "image-mklibs image-prelink" +# eglibc configurability is used to reduce minimal images's size. +# PACKAGE_NO_GCONV should be set to 1, or locale-code posix-clang-wchar +# charsets locales need to be include in DISTRO_FEATURES_EGLIBC, please check +# package_do_split_gconvs in libc-package.bbclass for detail +#PACKAGE_NO_GCONV = 1 + +# if you want to enable any option listed below, please uncomment next line and copy it here +#DISTRO_FEATURES_EGLIBC = "" + # POKYMODE controls the characteristics of the generated packages/images by # telling poky which type of toolchain to use. #meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch new file +20
-0@@ -0,0 +1,20 @@ +When disable OPTION_EGLIBC_RTLD_DEBUG, compilation fails. +Created on Jun 1, 2011 by Kang Kai <[email protected]> + +Upstream-Status: Submitted + +Signed-off-by: Kang Kai <[email protected]> +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; + }meta/recipes-core/eglibc/eglibc-options.inc new file +55
-0@@ -0,0 +1,55 @@ +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_EGLIBC', d, True) or '').split() + eglibc_cfg('ipv6', distro_features, 'OPTION_EGLIBC_ADVANCED_INET6', cnf) + eglibc_cfg('backtrace', distro_features, 'OPTION_EGLIBC_BACKTRACE', cnf) + eglibc_cfg('big-macros', distro_features, 'OPTION_EGLIBC_BIG_MACROS', cnf) + eglibc_cfg('bsd', distro_features, 'OPTION_EGLIBC_BSD', cnf) + eglibc_cfg('cxx-tests', distro_features, 'OPTION_EGLIBC_CXX_TESTS', cnf) + eglibc_cfg('catgets', distro_features, 'OPTION_EGLIBC_CATGETS', cnf) + eglibc_cfg('charsets', distro_features, 'OPTION_EGLIBC_CHARSETS', cnf) + eglibc_cfg('crypt', distro_features, 'OPTION_EGLIBC_CRYPT', cnf) + eglibc_cfg('crypt-ufc', distro_features, 'OPTION_EGLIBC_CRYPT_UFC', cnf) + eglibc_cfg('db-aliases', distro_features, 'OPTION_EGLIBC_DB_ALIASES', cnf) + eglibc_cfg('envz', distro_features, 'OPTION_EGLIBC_ENVZ', cnf) + eglibc_cfg('fcvt', distro_features, 'OPTION_EGLIBC_FCVT', cnf) + eglibc_cfg('fmtmsg', distro_features, 'OPTION_EGLIBC_FMTMSG', cnf) + eglibc_cfg('fstab', distro_features, 'OPTION_EGLIBC_FSTAB', cnf) + eglibc_cfg('ftraverse', distro_features, 'OPTION_EGLIBC_FTRAVERSE', cnf) + eglibc_cfg('getlogin', distro_features, 'OPTION_EGLIBC_GETLOGIN', cnf) + eglibc_cfg('idn', distro_features, 'OPTION_EGLIBC_IDN', cnf) + eglibc_cfg('inet', distro_features, 'OPTION_EGLIBC_INET', cnf) + eglibc_cfg('inet-anl', distro_features, 'OPTION_EGLIBC_INET_ANL', cnf) + eglibc_cfg('libm', distro_features, 'OPTION_EGLIBC_LIBM', cnf) + eglibc_cfg('libm-big', distro_features, 'OPTION_EGLIBC_LIBM_BIG', cnf) + eglibc_cfg('locales', distro_features, 'OPTION_EGLIBC_LOCALES', cnf) + eglibc_cfg('locale-code', distro_features, 'OPTION_EGLIBC_LOCALE_CODE', cnf) + eglibc_cfg('memusage', distro_features, 'OPTION_EGLIBC_MEMUSAGE', cnf) + eglibc_cfg('nis', distro_features, 'OPTION_EGLIBC_NIS', cnf) + eglibc_cfg('nsswitch', distro_features, 'OPTION_EGLIBC_NSSWITCH', cnf) + eglibc_cfg('rcmd', distro_features, 'OPTION_EGLIBC_RCMD', cnf) + eglibc_cfg('rtld-debug', distro_features, 'OPTION_EGLIBC_RTLD_DEBUG', cnf) + eglibc_cfg('spawn', distro_features, 'OPTION_EGLIBC_SPAWN', cnf) + eglibc_cfg('streams', distro_features, 'OPTION_EGLIBC_STREAMS', cnf) + eglibc_cfg('sunrpc', distro_features, 'OPTION_EGLIBC_SUNRPC', cnf) + eglibc_cfg('utmp', distro_features, 'OPTION_EGLIBC_UTMP', cnf) + eglibc_cfg('utmpx', distro_features, 'OPTION_EGLIBC_UTMPX', cnf) + eglibc_cfg('wordexp', distro_features, 'OPTION_EGLIBC_WORDEXP', cnf) + eglibc_cfg('posix-clang-wchar', distro_features, 'OPTION_POSIX_C_LANG_WIDE_CHAR', cnf) + eglibc_cfg('posix-regexp', distro_features, 'OPTION_POSIX_REGEXP', cnf) + eglibc_cfg('posix-regexp-glibc', distro_features, 'OPTION_POSIX_REGEXP_GLIBC', cnf) + eglibc_cfg('posix-wchar-io', distro_features, 'OPTION_POSIX_WIDE_CHAR_DEVICE_IO', cnf) + return "\n".join(cnf)meta/recipes-core/eglibc/eglibc.inc +13
-0@@ -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,15 @@ 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" + +DISTRO_FEATURES_EGLIBC ??= "ipv6 backtrace big-macros bsd cxx-tests catgets charsets \ + crypt crypt-ufc db-aliases envz fcvt fmtmsg fstab ftraverse \ + getlogin idn inet inet-anl libm libm-big locales locale-code \ + memusage nis nsswitch rcmd rtld-debug spawn streams sunrpc utmp \ + utmpx wordexp posix-clang-wchar posix-regexp posix-regexp-glibc \ + posix-wchar-io " + +OE_FEATURES = "${@features_to_eglibc_settings(d)}" +do_configure_prepend() { + echo '${OE_FEATURES}' > ${B}/option-groups.config +}meta/recipes-core/eglibc/eglibc_2.13.bb +3
-1@@ -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 \
Re: [PATCH 1/1] eglibc: migrate configurability from oe
Hi Richard,
Thanks for your comments. And I have one question:
Quoted 9 lines · Kang Kai
Quoted 8 lines
From: Kang Kai<[email protected]>
Migrate configurability from oe, try to shrink minimal image size
The switch is in local.conf.sample, uncomment the line
DISTRO_FEATURES_EGLIBC= ""
and write what options you want to enable.
Quoted 7 lines
Quoted 3 lines
If want to disable locale-code charsets or locales, you have to uncomment
PACKAGE_NO_GCONV= 1
Because without this, it fails onpackage_do_split_gconvsin libc-package.bbclassI have some comments:
a) I think these should become flags in
DISTRO_FEATURESwith an "eglibc-" prefix so something like "spawn" would become "eglibc-spawn"
Do you mean every option in DISTRO_FEATURES_EGLIBC should be a single flag in DISTRO_FEATURES?
In that case, DISTRO_FEATURES_EGLIBC is not needed, right?
Quoted 11 lines
b) I think we need to create a local.conf.sample.extended which has information about more advanced settings a user can configure. I don't want every setting in local.conf as standard as it gives the user the impression they have to change them which they don't. Some existing data in local.conf.sample can be moved over.
c) The code triggered byPACKAGE_NO_GCONVshould also trigger if you set the appropriate eglibc- feature flags automatically. Having two variables you have to keep track of the combinations of is just plain wrong. They should be controlled by one flag only. If there is generic packaging code that handles these we might not need the "eglibc-" prefix for those options.
Ok, I will use one flag only.
Quoted 3 lines
Cheers,
Richard
Thanks & Regards,
Kai
Quoted 170 lines
Quoted 169 lines
Signed-off-by Kang Kai<[email protected]>--- meta-yocto/conf/local.conf.sample | 9 +++ .../eglibc-2.13-fix-macro-RTLD_DEBUG.patch | 20 +++++++ meta/recipes-core/eglibc/eglibc-options.inc | 55 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc.inc | 13 +++++ meta/recipes-core/eglibc/eglibc_2.13.bb | 4 +- 5 files changed, 100 insertions(+), 1 deletions(-)create mode 100644
meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patchcreate mode 100644 meta/recipes-core/eglibc/eglibc-options.incmeta-yocto/conf/local.conf.sample +9
-0@@ -87,6 +87,15 @@ PACKAGE_CLASSES ?= "package_rpm package_ipk" # NOTE: if listing mklibs& prelink both, then make sure mklibs is before prelink USER_CLASSES ?= "image-mklibs image-prelink" +# eglibc configurability is used to reduce minimal images's size. +# PACKAGE_NO_GCONV should be set to 1, or locale-code posix-clang-wchar +# charsets locales need to be include in DISTRO_FEATURES_EGLIBC, please check +# package_do_split_gconvs in libc-package.bbclass for detail +#PACKAGE_NO_GCONV = 1 + +# if you want to enable any option listed below, please uncomment next line and copy it here +#DISTRO_FEATURES_EGLIBC = "" + # POKYMODE controls the characteristics of the generated packages/images by # telling poky which type of toolchain to use. #meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch new file +20
-0@@ -0,0 +1,20 @@ +When disable OPTION_EGLIBC_RTLD_DEBUG, compilation fails. +Created on Jun 1, 2011 by Kang Kai<[email protected]> + +Upstream-Status: Submitted + +Signed-off-by: Kang Kai<[email protected]> +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; + }meta/recipes-core/eglibc/eglibc-options.inc new file +55
-0@@ -0,0 +1,55 @@ +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_EGLIBC', d, True) or '').split() + eglibc_cfg('ipv6', distro_features, 'OPTION_EGLIBC_ADVANCED_INET6', cnf) + eglibc_cfg('backtrace', distro_features, 'OPTION_EGLIBC_BACKTRACE', cnf) + eglibc_cfg('big-macros', distro_features, 'OPTION_EGLIBC_BIG_MACROS', cnf) + eglibc_cfg('bsd', distro_features, 'OPTION_EGLIBC_BSD', cnf) + eglibc_cfg('cxx-tests', distro_features, 'OPTION_EGLIBC_CXX_TESTS', cnf) + eglibc_cfg('catgets', distro_features, 'OPTION_EGLIBC_CATGETS', cnf) + eglibc_cfg('charsets', distro_features, 'OPTION_EGLIBC_CHARSETS', cnf) + eglibc_cfg('crypt', distro_features, 'OPTION_EGLIBC_CRYPT', cnf) + eglibc_cfg('crypt-ufc', distro_features, 'OPTION_EGLIBC_CRYPT_UFC', cnf) + eglibc_cfg('db-aliases', distro_features, 'OPTION_EGLIBC_DB_ALIASES', cnf) + eglibc_cfg('envz', distro_features, 'OPTION_EGLIBC_ENVZ', cnf) + eglibc_cfg('fcvt', distro_features, 'OPTION_EGLIBC_FCVT', cnf) + eglibc_cfg('fmtmsg', distro_features, 'OPTION_EGLIBC_FMTMSG', cnf) + eglibc_cfg('fstab', distro_features, 'OPTION_EGLIBC_FSTAB', cnf) + eglibc_cfg('ftraverse', distro_features, 'OPTION_EGLIBC_FTRAVERSE', cnf) + eglibc_cfg('getlogin', distro_features, 'OPTION_EGLIBC_GETLOGIN', cnf) + eglibc_cfg('idn', distro_features, 'OPTION_EGLIBC_IDN', cnf) + eglibc_cfg('inet', distro_features, 'OPTION_EGLIBC_INET', cnf) + eglibc_cfg('inet-anl', distro_features, 'OPTION_EGLIBC_INET_ANL', cnf) + eglibc_cfg('libm', distro_features, 'OPTION_EGLIBC_LIBM', cnf) + eglibc_cfg('libm-big', distro_features, 'OPTION_EGLIBC_LIBM_BIG', cnf) + eglibc_cfg('locales', distro_features, 'OPTION_EGLIBC_LOCALES', cnf) + eglibc_cfg('locale-code', distro_features, 'OPTION_EGLIBC_LOCALE_CODE', cnf) + eglibc_cfg('memusage', distro_features, 'OPTION_EGLIBC_MEMUSAGE', cnf) + eglibc_cfg('nis', distro_features, 'OPTION_EGLIBC_NIS', cnf) + eglibc_cfg('nsswitch', distro_features, 'OPTION_EGLIBC_NSSWITCH', cnf) + eglibc_cfg('rcmd', distro_features, 'OPTION_EGLIBC_RCMD', cnf) + eglibc_cfg('rtld-debug', distro_features, 'OPTION_EGLIBC_RTLD_DEBUG', cnf) + eglibc_cfg('spawn', distro_features, 'OPTION_EGLIBC_SPAWN', cnf) + eglibc_cfg('streams', distro_features, 'OPTION_EGLIBC_STREAMS', cnf) + eglibc_cfg('sunrpc', distro_features, 'OPTION_EGLIBC_SUNRPC', cnf) + eglibc_cfg('utmp', distro_features, 'OPTION_EGLIBC_UTMP', cnf) + eglibc_cfg('utmpx', distro_features, 'OPTION_EGLIBC_UTMPX', cnf) + eglibc_cfg('wordexp', distro_features, 'OPTION_EGLIBC_WORDEXP', cnf) + eglibc_cfg('posix-clang-wchar', distro_features, 'OPTION_POSIX_C_LANG_WIDE_CHAR', cnf) + eglibc_cfg('posix-regexp', distro_features, 'OPTION_POSIX_REGEXP', cnf) + eglibc_cfg('posix-regexp-glibc', distro_features, 'OPTION_POSIX_REGEXP_GLIBC', cnf) + eglibc_cfg('posix-wchar-io', distro_features, 'OPTION_POSIX_WIDE_CHAR_DEVICE_IO', cnf) + return "\n".join(cnf)meta/recipes-core/eglibc/eglibc.inc +13
-0@@ -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,15 @@ 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" + +DISTRO_FEATURES_EGLIBC ??= "ipv6 backtrace big-macros bsd cxx-tests catgets charsets \ + crypt crypt-ufc db-aliases envz fcvt fmtmsg fstab ftraverse \ + getlogin idn inet inet-anl libm libm-big locales locale-code \ + memusage nis nsswitch rcmd rtld-debug spawn streams sunrpc utmp \ + utmpx wordexp posix-clang-wchar posix-regexp posix-regexp-glibc \ + posix-wchar-io " + +OE_FEATURES = "${@features_to_eglibc_settings(d)}" +do_configure_prepend() { + echo '${OE_FEATURES}'> ${B}/option-groups.config +}meta/recipes-core/eglibc/eglibc_2.13.bb +3
-1@@ -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 \
Re: [PATCH 1/1] eglibc: migrate configurability from oe
Quoted 16 lines · Kang Kai
Hi Richard,
Thanks for your comments. And I have one question:
Quoted 12 lines · Kang Kai
Quoted 11 lines
From: Kang Kai<[email protected]>
Migrate configurability from oe, try to shrink minimal image size
The switch is in local.conf.sample, uncomment the line
DISTRO_FEATURES_EGLIBC= ""
and write what options you want to enable.If want to disable locale-code charsets or locales, you have to uncomment
PACKAGE_NO_GCONV= 1
Because without this, it fails onpackage_do_split_gconvsin libc-package.bbclass
Quoted 6 lines
Quoted 4 lines
I have some comments:
a) I think these should become flags in
DISTRO_FEATURESwith an "eglibc-" prefix so something like "spawn" would become "eglibc-spawn"Do you mean every option in
DISTRO_FEATURES_EGLIBCshould be a single flag inDISTRO_FEATURES?
No, you'd still have all the options you currently have but instead of being called X they would be eglibc-X.
Cheers,
Richard
Re: [PATCH 1/1] eglibc: migrate configurability from oe
In reply to Richard PurdieOp 3 jun 2011, om 10:22 heeft Richard Purdie het volgende geschreven:
Quoted 9 lines · Kang Kai
Quoted 8 lines
From: Kang Kai <[email protected]>
Migrate configurability from oe, try to shrink minimal image size
The switch is in local.conf.sample, uncomment the line
DISTRO_FEATURES_EGLIBC= ""
and write what options you want to enable.
Quoted 8 lines
Quoted 3 lines
If want to disable locale-code charsets or locales, you have to uncomment
PACKAGE_NO_GCONV= 1
Because without this, it fails onpackage_do_split_gconvsin libc-package.bbclassI have some comments:
a) I think these should become flags in
DISTRO_FEATURESwith an "eglibc-" prefix so something like "spawn" would become "eglibc-spawn"
Taking a step back here, uclibc has the same configurability, so wouldn't it make sense to align both (where possible) and just have 'libc-spawn' in DISTRO_FEATURES?
regards,
Koen
Re: [PATCH 1/1] eglibc: migrate configurability from oe
Quoted 15 lines · Koen Kooi
Op 3 jun 2011, om 10:22 heeft Richard Purdie het volgende geschreven:
Quoted 13 lines · Kang Kai
Quoted 11 lines
From: Kang Kai <[email protected]>
Migrate configurability from oe, try to shrink minimal image size
The switch is in local.conf.sample, uncomment the line
DISTRO_FEATURES_EGLIBC= ""
and write what options you want to enable.If want to disable locale-code charsets or locales, you have to uncomment
PACKAGE_NO_GCONV= 1
Because without this, it fails onpackage_do_split_gconvsin libc-package.bbclass
Quoted 8 lines
Quoted 4 lines
I have some comments:
a) I think these should become flags in
DISTRO_FEATURESwith an "eglibc-" prefix so something like "spawn" would become "eglibc-spawn"Taking a step back here, uclibc has the same configurability, so wouldn't it make sense to align both (where possible) and just have 'libc-spawn' in
DISTRO_FEATURES?
If multiple libc's can support it, it would seem to make sense to have a common option.
It would really mean a libc should complain loudly when it sees an option it can't support though (e.g. glibc)...
Cheers,
Richard
Re: [PATCH 1/1] eglibc: migrate configurability from oe
In reply to Koen KooiQuoted 16 lines · Koen Kooi
Op 3 jun 2011, om 10:22 heeft Richard Purdie het volgende geschreven:
Quoted 13 lines · Kang Kai
Quoted 11 lines
From: Kang Kai <[email protected]>
Migrate configurability from oe, try to shrink minimal image size
The switch is in local.conf.sample, uncomment the line
DISTRO_FEATURES_EGLIBC= ""
and write what options you want to enable.If want to disable locale-code charsets or locales, you have to uncomment
PACKAGE_NO_GCONV= 1
Because without this, it fails onpackage_do_split_gconvsin libc-package.bbclass
Quoted 7 lines
Quoted 4 lines
I have some comments:
a) I think these should become flags in
DISTRO_FEATURESwith an "eglibc-" prefix so something like "spawn" would become "eglibc-spawn"Taking a step back here, uclibc has the same configurability, so wouldn't it make sense to align both (where possible) and just have 'libc-spawn' in
DISTRO_FEATURES?
uclibc's configurations are not 1 to 1 with eglibc. but I agree the common configs should be derived from single DISTRO_FEATURE dealing with that like ipv6
Quoted 7 lines
regards,
Koen
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Re: [PATCH 1/1] eglibc: migrate configurability from oe
In reply to Richard PurdieQuoted 9 lines · Richard Purdie
Quoted 8 lines · Kang Kai
From: Kang Kai <[email protected]>
Migrate configurability from oe, try to shrink minimal image size
The switch is in local.conf.sample, uncomment the line
DISTRO_FEATURES_EGLIBC= ""
and write what options you want to enable.
Quoted 8 lines
Quoted 3 lines
If want to disable locale-code charsets or locales, you have to uncomment
PACKAGE_NO_GCONV= 1
Because without this, it fails onpackage_do_split_gconvsin libc-package.bbclassI have some comments:
a) I think these should become flags in
DISTRO_FEATURESwith an "eglibc-" prefix so something like "spawn" would become "eglibc-spawn"
I'm not sure I agree with that. Some, maybe most, of these flags are not really specific to eglibc (in concept, even if eglibc is the only package which respects them at the moment). Some of them (eg ipv6) are already established DISTRO_FEATURES which are used in various other places; others, including perhaps your spawn example, are specifically bound to the contents of the C library but could equally well be respected by uclibc. So, for the latter group, I think just "libc-spawn" would be better than "eglibc-spawn". Maybe "libc-has-spawn" would be even better, to make it clear that we're talking about a feature within libc and not a specific variant of libc.
In an ideal world there would also be a mechanism for packages to declare that they require a particular feature from libc, i.e. a recipe could say
DISTRO_REQUIRED_FEATURES = "libc-spawn"
and it would then be a configuration error to try to build that recipe for a distro that doesn't admit the necessary things.
Quoted 5 lines
b) I think we need to create a local.conf.sample.extended which has information about more advanced settings a user can configure. I don't want every setting in local.conf as standard as it gives the user the impression they have to change them which they don't. Some existing data in local.conf.sample can be moved over.
Agreed.
Quoted 6 lines
c) The code triggered by
PACKAGE_NO_GCONVshould also trigger if you set the appropriate eglibc- feature flags automatically. Having two variables you have to keep track of the combinations of is just plain wrong. They should be controlled by one flag only. If there is generic packaging code that handles these we might not need the "eglibc-" prefix for those options.
I didn't fully understand the commentary around PACKAGE_NO_GCONV so I'm not sure that I have a meaningful opinion on that one yet. As far as I know, though, there is no generic packaging code for gconvs (unlike locales, which are handled generically in package.bbclass) but, again, the concept of gconvs is not eglibc specific and there are other libs which might provide them.
p.
Quoted 3 lines · Kang Kai
If want to disable locale-code charsets or locales, you have to uncomment
PACKAGE_NO_GCONV= 1
Because without this, it fails onpackage_do_split_gconvsin libc-package.bbclass
Can we not just fix libc-package.bbclass to stop it failing in that situation? It seems a bit sad to require an extra "flip this switch to make it work" kind of variable.
p.
Quoted 8 lines · Phil Blundell
Quoted 3 lines · Kang Kai
If want to disable locale-code charsets or locales, you have to uncomment
PACKAGE_NO_GCONV= 1
Because without this, it fails onpackage_do_split_gconvsin libc-package.bbclassCan we not just fix libc-package.bbclass to stop it failing in that situation? It seems a bit sad to require an extra "flip this switch to make it work" kind of variable.
That was my point in the earlier email :)
Cheers,
Richard
Quoted 1 line · Richard Purdie
That was my point in the earlier email :)
Ah right, yes. Evidently I hadn't had enough of my coffee when I replied to that one. :-}
p.