Skip to contentSkip to conversation

eglibc: migrate configurability from oe V4

PATCH In review Kang Kai 3 participants 8 messages Jun 8, 2011 – Jun 10, 2011

lore
Share & tools
lore

Kang Kai

author
#0 lore raw

cover eglibc: migrate configurability from oe V4

From: Kang Kai <[email protected]>

Hi All,

Thanks for all your comments.

Update to add local.extended.conf.sample instead of local.conf.sample.extended. Using existing DISTRO_FEATURES "ipv6" instead of "libc-ipv6"

Migrate configurability from oe, try to shrink minimal image size

The switch is in local.extended.conf, uncomment the line DISTRO_FEATURES = ""
and write what options you want to enable.

Regards,

The following changes since commit 7f34cd1eb2a459709006ae985a14decd4d2152e6:

tzcode: Update to 2011g (2011-06-06 15:58:42 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib kangkai/distro
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=kangkai/distro

Kang Kai (2):
bitbake: add another local configuration file
eglibc: migrate configurability from oe

 meta-yocto/conf/local.extended.conf.sample         |    5 ++
 meta/conf/bitbake.conf                             |    1 +
 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 +-
 scripts/oe-setup-builddir                          |   19 ++++++
 8 files changed, 123 insertions(+), 2 deletions(-)
 create mode 100644 meta-yocto/conf/local.extended.conf.sample
 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
author
#1 lore raw

PATCH 1/2 bitbake: add another local configuration file

From: Kang Kai <[email protected]>

Add a new local configuration file local.extended.conf.sample, and more advanced settings what user can configure could put in this file.

---
 meta-yocto/conf/local.extended.conf.sample |    5 +++++
 meta/conf/bitbake.conf                     |    1 +
 scripts/oe-setup-builddir                  |   19 +++++++++++++++++++
 3 files changed, 25 insertions(+), 0 deletions(-)
 create mode 100644 meta-yocto/conf/local.extended.conf.sample
meta-yocto/conf/local.extended.conf.sample new file +5 -0
new file mode 100644
index 0000000..048d641
@@ -0,0 +1,5 @@
+# eglibc configurability is used to reduce minimal images's size.
+# the all supported eglibc options are default enabled by adding
+# to DISTRO_FEATURES in default-distrovars.inc
+# put the options what you want to enable below and uncomment it
+#DISTRO_FEATURES = "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
meta/conf/bitbake.conf +1 -0
index de94316..1b1cf6b 100644
@@ -641,6 +641,7 @@ CPU_FEATURES_arm ?= "vfp"
 include conf/site.conf
 include conf/auto.conf
 include conf/local.conf
+include conf/local.extended.conf
 include conf/build/${BUILD_SYS}.conf
 include conf/target/${TARGET_SYS}.conf
 include conf/machine/${MACHINE}.conf
scripts/oe-setup-builddir +19 -0
index 5fc8b19..31fb3d6 100755
@@ -55,6 +55,7 @@ if [ "x" != "x$TEMPLATECONF" ]; then
     fi
     OECORELAYERCONF="$TEMPLATECONF/bblayers.conf.sample"
     OECORELOCALCONF="$TEMPLATECONF/local.conf.sample"
+    OECORELOCALCONFEXTENDED="$TEMPLATECONF/local.extended.conf.sample"
 fi
 
 if [ "x" = "x$OECORELOCALCONF" ]; then
@@ -79,6 +80,24 @@ EOM
     cp -f $OECORELOCALCONF $BUILDDIR/conf/local.conf
 fi
 
+if ! (test -r "$BUILDDIR/conf/local.extended.conf"); then
+cat <<EOM
+You had no conf/local.conf file. This configuration file has therefore been
+created for you with some default values. You may wish to edit it to use
+different eglibc configuration options for example. See the file for more
+information as common configuration options are commented.
+
+The Yocto Project has extensive documentation about OE including a reference manual
+which can be found at:
+    http://yoctoproject.org/community/documentation
+
+For more information about OpenEmbedded see their website:
+    http://www.openembedded.org/
+
+EOM
+	cp -f $OECORELOCALCONFEXTENDED $BUILDDIR/conf/local.extended.conf
+fi
+
 if [ "x" = "x$OECORELAYERCONF" ]; then
     OECORELAYERCONF="$OEROOT/meta/conf/bblayers.conf.sample"
 fi
Signature · 1 line
1.7.5.1.300.gc565c
#2 lore raw

Re: [PATCH 1/2] bitbake: add another local configuration file

Quoted 5 lines · Kang Kai

From: Kang Kai<[email protected]>

Add a new local configuration file local.extended.conf.sample, and more advanced settings what user can configure could put in this file.

Quoted 8 lines
---
  meta-yocto/conf/local.extended.conf.sample |    5 +++++
  meta/conf/bitbake.conf                     |    1 +
  scripts/oe-setup-builddir                  |   19 +++++++++++++++++++
  3 files changed, 25 insertions(+), 0 deletions(-)

create mode 100644 meta-yocto/conf/local.extended.conf.sample

Kang,

Richard's intent here was to have a local.conf.extended, purely as a holding place for advanced options such as this. Once you create this one file (no inclusion via bitbake.conf or in oe-setup-builddir), we will add additional items from the current local.conf, such as some of the EXTRA_IMAGE_FEATURES explaination, the DEBUG and LIBRARY management examples.

So please just submit a single file local.conf.extended.

Thanks to Khem for reminding me of this!

Sau!

Quoted 60 lines
meta-yocto/conf/local.extended.conf.sample new file +5 -0
new file mode 100644
index 0000000..048d641
@@ -0,0 +1,5 @@
+# eglibc configurability is used to reduce minimal images's size.
+# the all supported eglibc options are default enabled by adding
+# to DISTRO_FEATURES in default-distrovars.inc
+# put the options what you want to enable below and uncomment it
+#DISTRO_FEATURES = "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
meta/conf/bitbake.conf +1 -0
index de94316..1b1cf6b 100644
@@ -641,6 +641,7 @@ CPU_FEATURES_arm ?= "vfp"
  include conf/site.conf
  include conf/auto.conf
  include conf/local.conf
+include conf/local.extended.conf
  include conf/build/${BUILD_SYS}.conf
  include conf/target/${TARGET_SYS}.conf
  include conf/machine/${MACHINE}.conf
scripts/oe-setup-builddir +19 -0
index 5fc8b19..31fb3d6 100755
@@ -55,6 +55,7 @@ if [ "x" != "x$TEMPLATECONF" ]; then
      fi
      OECORELAYERCONF="$TEMPLATECONF/bblayers.conf.sample"
      OECORELOCALCONF="$TEMPLATECONF/local.conf.sample"
+    OECORELOCALCONFEXTENDED="$TEMPLATECONF/local.extended.conf.sample"
  fi
 
  if [ "x" = "x$OECORELOCALCONF" ]; then
@@ -79,6 +80,24 @@ EOM
      cp -f $OECORELOCALCONF $BUILDDIR/conf/local.conf
  fi
 
+if ! (test -r "$BUILDDIR/conf/local.extended.conf"); then
+cat<<EOM
+You had no conf/local.conf file. This configuration file has therefore been
+created for you with some default values. You may wish to edit it to use
+different eglibc configuration options for example. See the file for more
+information as common configuration options are commented.
+
+The Yocto Project has extensive documentation about OE including a reference manual
+which can be found at:
+    http://yoctoproject.org/community/documentation
+
+For more information about OpenEmbedded see their website:
+    http://www.openembedded.org/
+
+EOM
+	cp -f $OECORELOCALCONFEXTENDED $BUILDDIR/conf/local.extended.conf
+fi
+
  if [ "x" = "x$OECORELAYERCONF" ]; then
      OECORELAYERCONF="$OEROOT/meta/conf/bblayers.conf.sample"
  fi
#3 lore raw

Re: [PATCH 1/2] bitbake: add another local configuration file

Quoted 1 line · Saul Wold

So please just submit a single file local.conf.extended.

extended.local.conf.sample

#4 lore raw

Re: [PATCH 1/2] bitbake: add another local configuration file

In reply to Kang Kai
Quoted 5 lines · Kang Kai

From: Kang Kai<[email protected]>

Add a new local configuration file local.extended.conf.sample, and more advanced settings what user can configure could put in this file.

Quoted 8 lines
---
  meta-yocto/conf/local.extended.conf.sample |    5 +++++
  meta/conf/bitbake.conf                     |    1 +
  scripts/oe-setup-builddir                  |   19 +++++++++++++++++++
  3 files changed, 25 insertions(+), 0 deletions(-)

create mode 100644 meta-yocto/conf/local.extended.conf.sample

I thought of just having a sample file with advanced configuration options. I dont know adding another local.conf file is going to make it more usable.

Quoted 60 lines
meta-yocto/conf/local.extended.conf.sample new file +5 -0
new file mode 100644
index 0000000..048d641
@@ -0,0 +1,5 @@
+# eglibc configurability is used to reduce minimal images's size.
+# the all supported eglibc options are default enabled by adding
+# to DISTRO_FEATURES in default-distrovars.inc
+# put the options what you want to enable below and uncomment it
+#DISTRO_FEATURES = "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci"
meta/conf/bitbake.conf +1 -0
index de94316..1b1cf6b 100644
@@ -641,6 +641,7 @@ CPU_FEATURES_arm ?= "vfp"
  include conf/site.conf
  include conf/auto.conf
  include conf/local.conf
+include conf/local.extended.conf
  include conf/build/${BUILD_SYS}.conf
  include conf/target/${TARGET_SYS}.conf
  include conf/machine/${MACHINE}.conf
scripts/oe-setup-builddir +19 -0
index 5fc8b19..31fb3d6 100755
@@ -55,6 +55,7 @@ if [ "x" != "x$TEMPLATECONF" ]; then
      fi
      OECORELAYERCONF="$TEMPLATECONF/bblayers.conf.sample"
      OECORELOCALCONF="$TEMPLATECONF/local.conf.sample"
+    OECORELOCALCONFEXTENDED="$TEMPLATECONF/local.extended.conf.sample"
  fi
 
  if [ "x" = "x$OECORELOCALCONF" ]; then
@@ -79,6 +80,24 @@ EOM
      cp -f $OECORELOCALCONF $BUILDDIR/conf/local.conf
  fi
 
+if ! (test -r "$BUILDDIR/conf/local.extended.conf"); then
+cat<<EOM
+You had no conf/local.conf file. This configuration file has therefore been
+created for you with some default values. You may wish to edit it to use
+different eglibc configuration options for example. See the file for more
+information as common configuration options are commented.
+
+The Yocto Project has extensive documentation about OE including a reference manual
+which can be found at:
+    http://yoctoproject.org/community/documentation
+
+For more information about OpenEmbedded see their website:
+    http://www.openembedded.org/
+
+EOM
+	cp -f $OECORELOCALCONFEXTENDED $BUILDDIR/conf/local.extended.conf
+fi
+
  if [ "x" = "x$OECORELAYERCONF" ]; then
      OECORELAYERCONF="$OEROOT/meta/conf/bblayers.conf.sample"
  fi
author
#5 lore raw

PATCH 2/2 eglibc: migrate configurability from oe

In reply to Kang Kai

From: Kang Kai <[email protected]>

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.

---
 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
meta/conf/distro/include/default-distrovars.inc +7 -1
index 4b68a0a..052f9e6 100644
@@ -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 \
+		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 ?= ""
 
meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch new file +20 -0
new file mode 100644
index 0000000..dffc648
@@ -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 +62 -0

62 lines not on this page · raw message

meta/recipes-core/eglibc/eglibc.inc +6 -0
index 46ffa82..616f1af 100644
@@ -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
+}
meta/recipes-core/eglibc/eglibc_2.13.bb +3 -1
index 398da69..894eb88 100644
@@ -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
#6 lore raw

Re: [PATCH 2/2] eglibc: migrate configurability from oe

Quoted 56 lines · Kang Kai

From: Kang Kai<[email protected]>

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.

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

meta/conf/distro/include/default-distrovars.inc +7 -1
index 4b68a0a..052f9e6 100644
@@ -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 \
+		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 ?= ""
 
meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch new file +10 -0
new file mode 100644
index 0000000..dffc648
@@ -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)

meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch line 20

Quoted 10 lines
meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch new file +10 -0
+@@ -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;
+ 		    }

this patch does not seem correct to me. It should be using GLRO_dl_debug_mask instead here

Quoted 112 lines
meta/recipes-core/eglibc/eglibc-options.inc new file +62 -0
new file mode 100644
index 0000000..119ceef
@@ -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('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)
meta/recipes-core/eglibc/eglibc.inc +6 -0
index 46ffa82..616f1af 100644
@@ -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
+}
meta/recipes-core/eglibc/eglibc_2.13.bb +3 -1
index 398da69..894eb88 100644
@@ -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 \
author
#7 lore raw

Re: [PATCH 2/2] eglibc: migrate configurability from oe

Hi Khem,

Quoted 73 lines · Kang Kai
Quoted 72 lines

From: Kang Kai<[email protected]>

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.

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

meta/conf/distro/include/default-distrovars.inc +0 -1
index 4b68a0a..052f9e6 100644
@@ -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 \
+ 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 \

meta/conf/distro/include/default-distrovars.inc +1 -0
+        libc-posix-wchar-io"
 
  IMAGE_FEATURES ?= ""
meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch +0 -0

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

meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch +15 -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
Quoted 8 lines

meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch line 20

Quoted 5 lines
meta/recipes-core/eglibc/eglibc-2.13/eglibc-2.13-fix-macro-RTLD_DEBUG.patch +5 -0
+               assert (GLRO(dl_debug_mask)&  DL_DEBUG_PRELINK);
++              #endif
+               __rtld_lock_unlock_recursive (tab->lock);
+               goto success;
+             }

this patch does not seem correct to me. It should be using GLRO_dl_debug_mask instead here

Yes, you are right, this patch is not correct.
And got respond this morning from eglibc maillist, this will be fix in eglibc branch 2.13

Thanks.
Kai

Quoted 166 lines
Quoted 159 lines
meta/recipes-core/eglibc/eglibc-options.inc new file +10 -0
new file mode 100644
index 0000000..119ceef
@@ -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"])

meta/recipes-core/eglibc/eglibc-options.inc new file +5 -0
+
+# 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('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)

meta/recipes-core/eglibc/eglibc-options.inc new file +3 -0
+
+        # 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:

meta/recipes-core/eglibc/eglibc-options.inc new file +5 -0
+            bb.data.setVar('PACKAGE_NO_GCONV', '0', d)
+        else:
+            bb.data.setVar('PACKAGE_NO_GCONV', '1', d)
+
+        return "\n".join(cnf)
meta/recipes-core/eglibc/eglibc.inc +0 -0
index 46ffa82..616f1af 100644
@@ -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

meta/recipes-core/eglibc/eglibc.inc +1 -0
+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"

meta/recipes-core/eglibc/eglibc.inc +5 -0
+
+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 +1 -1
index 398da69..894eb88 100644
@@ -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 \
meta/recipes-core/eglibc/eglibc_2.13.bb +2 -0
+           file://eglibc-2.13-fix-macro-RTLD_DEBUG.patch \
         "
+
  LIC_FILES_CHKSUM = 
"file://LICENSES;md5=98a1128c4b58120182cbea3b1752d8b9 \
        file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
Quoted 1 line

file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core