Skip to contentSkip to conversation

uclibc cleanups

PATCH New Khem Raj 1 participant 7 messages Jun 12, 2011

lore
Share & tools
lore

Khem Raj

author
#0 lore raw

cover uclibc cleanups

This set of patches cleans up uclibc recipes and builds in addition it also fixes the issues where gettext was being pulled in even when uclibc did not require it and gettext itself needed to be patched to build on uclibc.

The following changes since commit fb85c6a6184184f6eed942af59ce2cf03f6b623b:

uclibc: remove PACKAGE_ARCH, fix compilation on i586 (2011-06-11 21:03:57 -0700)

are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib kraj/uclibc-cleanup
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=kraj/uclibc-cleanup

Khem Raj (4):
util-macros_1.13.0.bb: Depend on virtual/gettext instead of gettext uclibc.inc: libsegfault is only RPROVIDED by uclibc gettext_0.18.1.1.bb: Fix build on uclibc
uclibc: Cleanup the machine dependent config files

Phil Blundell (2):
uclibc: remove redundant python code
uclibc: remove PACKAGE_ARCH, fix compilation on i586

 .../gnulib-uclibc-sched_param-def.patch            |   21 ++++++
 meta/recipes-core/gettext/gettext_0.18.1.1.bb      |    7 +-
 .../uclibc/uclibc-git/armv5te/uClibc.machine       |    4 +-
 .../{nslu2be => armv5teb}/uClibc.machine           |    0
 .../uclibc/uclibc-git/efika/uClibc.machine         |   45 ------------
 .../uclibc-git/{qemumips => mips}/uClibc.machine   |    0
 .../uclibc/uclibc-git/qemuarm/uClibc.machine       |   77 --------------------
 .../uclibc/uclibc-git/qemux86/uClibc.machine       |   59 ---------------
 meta/recipes-core/uclibc/uclibc-git/uClibc.distro  |   14 ++++-
 meta/recipes-core/uclibc/uclibc.inc                |   19 +----
 meta/recipes-core/uclibc/uclibc_git.bb             |    5 +-
 .../xorg-util/util-macros_1.13.0.bb                |    4 +-
 12 files changed, 47 insertions(+), 208 deletions(-)
 create mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/gnulib-uclibc-sched_param-def.patch
 rename meta/recipes-core/uclibc/uclibc-git/{nslu2be => armv5teb}/uClibc.machine (100%)
 delete mode 100644 meta/recipes-core/uclibc/uclibc-git/efika/uClibc.machine
 rename meta/recipes-core/uclibc/uclibc-git/{qemumips => mips}/uClibc.machine (100%)
 delete mode 100644 meta/recipes-core/uclibc/uclibc-git/qemuarm/uClibc.machine
 delete mode 100644 meta/recipes-core/uclibc/uclibc-git/qemux86/uClibc.machine
 delete mode 100644 meta/recipes-core/uclibc/uclibc-git/uClibc.config
Signature · 1 line
1.7.4.1
author
#1 lore raw

PATCH 1/6 util-macros_1.13.0.bb: Depend on virtual/gettext instead of gettext

So multiple provider problem can be reolved amicably

---
 .../xorg-util/util-macros_1.13.0.bb                |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
meta/recipes-graphics/xorg-util/util-macros_1.13.0.bb +2 -2
index a6f5402..4bac614 100644
@@ -12,8 +12,8 @@ PR = "r0"
 
 # ${PN} is empty so we need to tweak -dev and -dbg package dependencies
 DEPENDS = "libgpg-error"
-DEPENDS_virtclass-native = "gettext"
-DEPENDS_virtclass-nativesdk = "gettext"
+DEPENDS_virtclass-native = "virtual/gettext"
+DEPENDS_virtclass-nativesdk = "virtual/gettext"
 
 RDEPENDS_${PN}-dev = ""
 RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
Signature · 1 line
1.7.4.1
author
#2 lore raw

PATCH 2/6 uclibc.inc: libsegfault is only RPROVIDED by uclibc

Using ${PN} also means that uclibc-initial gets to provide it which we do not want

---
 meta/recipes-core/uclibc/uclibc.inc |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
meta/recipes-core/uclibc/uclibc.inc +1 -1
index c1bc422..0f8c6c2 100644
@@ -99,7 +99,7 @@ RPROVIDES_uclibc-dev += "libc-dev virtual-libc-dev"
 # uclibc does not really have libsegfault but then using the one from glibc is also not
 # going to work. So we pretend that we have it to make bitbake not pull other recipes
 # to satisfy this dependency for the images/tasks
-RPROVIDES_${PN} += "libsegfault"
+RPROVIDES_uclibc += "libsegfault"
 
 SRC_URI = "\
         http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2;name=uClibc-${PV} \
Signature · 1 line
1.7.4.1
author
#3 lore raw

PATCH 3/6 gettext_0.18.1.1.bb: Fix build on uclibc

In reply to Khem Raj

Use libc-uclibc override to seprate out uclibc bits instead of using TARGET_OS

---
 .../gnulib-uclibc-sched_param-def.patch            |   21 ++++++++++++++++++++
 meta/recipes-core/gettext/gettext_0.18.1.1.bb      |    7 +++--
 2 files changed, 25 insertions(+), 3 deletions(-)
 create mode 100644 meta/recipes-core/gettext/gettext-0.18.1.1/gnulib-uclibc-sched_param-def.patch
meta/recipes-core/gettext/gettext-0.18.1.1/gnulib-uclibc-sched_param-def.patch new file +21 -0
new file mode 100644
index 0000000..d8d10db
@@ -0,0 +1,21 @@
+uclibc defines __GLIBC__ but it does not expose struct shed_param as much as glibc
+and is not needed too per standard. gnulib attempts to use it but we have to account
+for it because in this case uclibc does not behave like glibc.
+
+-Khem
+
+Upstream-Status: Pending
+
+Index: gettext-0.18.1.1/gettext-tools/gnulib-lib/spawn.in.h
+===================================================================
+--- gettext-0.18.1.1.orig/gettext-tools/gnulib-lib/spawn.in.h
++++ gettext-0.18.1.1/gettext-tools/gnulib-lib/spawn.in.h
+@@ -31,7 +31,7 @@
+ 
+ /* Get definitions of 'struct sched_param' and 'sigset_t'.
+    But avoid namespace pollution on glibc systems.  */
+-#ifndef __GLIBC__
++#if !defined __GLIBC__ || defined __UCLIBC__
+ # include <sched.h>
+ # include <signal.h>
+ #endif
meta/recipes-core/gettext/gettext_0.18.1.1.bb +4 -3
index 5f5f164..f54c111 100644
@@ -12,11 +12,12 @@ PROVIDES = "virtual/libintl virtual/gettext"
 PROVIDES_virtclass-native = ""
 CONFLICTS_${PN} = "proxy-libintl"
 SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
-           file://wchar-uclibc.patch \
           "
 
-SRC_URI_append_linux-uclibc = " file://gettext-error_print_progname.patch;patch=1"
-SRC_URI_append_linux-uclibceabi = " file://gettext-error_print_progname.patch;patch=1"
+SRC_URI_append_libc-uclibc = " file://wchar-uclibc.patch \
+                               file://gettext-error_print_progname.patch \
+                               file://gnulib-uclibc-sched_param-def.patch \
+                             "
 
 SRC_URI[md5sum] = "3dd55b952826d2b32f51308f2f91aa89"
 SRC_URI[sha256sum] = "93ac71a7afa5b70c1b1032516663658c51e653087f42a3fc8044752c026443e9"
Signature · 1 line
1.7.4.1
author
#4 lore raw

PATCH 4/6 uclibc: Cleanup the machine dependent config files

In reply to Khem Raj

We only have arch specific machine fragments now. Introduce use of KCONFIG_ALLCONFIG and use allnoconfig

---
 .../uclibc/uclibc-git/armv5te/uClibc.machine       |    4 +-
 .../{nslu2be => armv5teb}/uClibc.machine           |    0
 .../uclibc/uclibc-git/efika/uClibc.machine         |   45 ------------
 .../uclibc-git/{qemumips => mips}/uClibc.machine   |    0
 .../uclibc/uclibc-git/qemuarm/uClibc.machine       |   77 --------------------
 .../uclibc/uclibc-git/qemux86/uClibc.machine       |   59 ---------------
 meta/recipes-core/uclibc/uclibc-git/uClibc.distro  |   14 ++++-
 meta/recipes-core/uclibc/uclibc.inc                |    5 +-
 meta/recipes-core/uclibc/uclibc_git.bb             |    1 -
 9 files changed, 17 insertions(+), 188 deletions(-)
 rename meta/recipes-core/uclibc/uclibc-git/{nslu2be => armv5teb}/uClibc.machine (100%)
 delete mode 100644 meta/recipes-core/uclibc/uclibc-git/efika/uClibc.machine
 rename meta/recipes-core/uclibc/uclibc-git/{qemumips => mips}/uClibc.machine (100%)
 delete mode 100644 meta/recipes-core/uclibc/uclibc-git/qemuarm/uClibc.machine
 delete mode 100644 meta/recipes-core/uclibc/uclibc-git/qemux86/uClibc.machine
 delete mode 100644 meta/recipes-core/uclibc/uclibc-git/uClibc.config
meta/recipes-core/uclibc/uclibc-git/armv5te/uClibc.machine +2 -2
index b012a38..2242dc9 100644
@@ -38,14 +38,14 @@ FORCE_OPTIONS_FOR_ARCH=y
 CONFIG_ARM_EABI=y
 # COMPILE_IN_THUMB_MODE is not set
 USE_BX=y
-CONFIG_GENERIC_ARM=y
+# CONFIG_GENERIC_ARM is not set
 # CONFIG_ARM610 is not set
 # CONFIG_ARM710 is not set
 # CONFIG_ARM7TDMI is not set
 # CONFIG_ARM720T is not set
 # CONFIG_ARM920T is not set
 # CONFIG_ARM922T is not set
-# CONFIG_ARM926T is not set
+CONFIG_ARM926T=y
 # CONFIG_ARM10T is not set
 # CONFIG_ARM1136JF_S is not set
 # CONFIG_ARM1176JZ_S is not set
meta/recipes-core/uclibc/uclibc-git/armv5teb/uClibc.machine renamed from meta/recipes-core/uclibc/uclibc-git/nslu2be/uClibc.machine +0 -0
similarity index 100%
rename from meta/recipes-core/uclibc/uclibc-git/nslu2be/uClibc.machine
rename to meta/recipes-core/uclibc/uclibc-git/armv5teb/uClibc.machine
meta/recipes-core/uclibc/uclibc-git/efika/uClibc.machine deleted +0 -45

45 lines not on this page · raw message

meta/recipes-core/uclibc/uclibc-git/mips/uClibc.machine renamed from meta/recipes-core/uclibc/uclibc-git/qemumips/uClibc.machine +0 -0
similarity index 100%
rename from meta/recipes-core/uclibc/uclibc-git/qemumips/uClibc.machine
rename to meta/recipes-core/uclibc/uclibc-git/mips/uClibc.machine
meta/recipes-core/uclibc/uclibc-git/qemuarm/uClibc.machine deleted +0 -77

77 lines not on this page · raw message

meta/recipes-core/uclibc/uclibc-git/qemux86/uClibc.machine deleted +0 -59

59 lines not on this page · raw message

meta/recipes-core/uclibc/uclibc-git/uClibc.config deleted +0 -0
deleted file mode 100644
index e69de29..0000000
meta/recipes-core/uclibc/uclibc-git/uClibc.distro +13 -1
index a1b7813..45b131d 100644
@@ -157,4 +157,16 @@ WARNINGS="-Wall"
 DO_C99_MATH=y
 UCLIBC_HAS_LONG_DOUBLE_MATH=y
 UCLIBC_HAS_FENV=y
-
+UCLIBC_LINUX_SPECIFIC=y
+UCLIBC_HAS_REALTIME=y
+UCLIBC_HAS_ADVANCED_REALTIME=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_SYSLOG=y
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_HAS_PTY=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_EPOLL=y
meta/recipes-core/uclibc/uclibc.inc +2 -3
index 0f8c6c2..2bf3017 100644
@@ -202,12 +202,11 @@ do_configure() {
         echo "### FPU" >>${S}/merged.config
         echo "### ABI" >>${S}/merged.config
         echo "### DISTRO FEATURES" >>${S}/merged.config
-        cp ${S}/merged.config ${S}/.config
 
         # Mangle the resulting .config depending on OE variables
-        sed -i -e '${configmangle}' ${S}/.config
+        sed -i -e '${configmangle}' ${S}/merged.config
 
-        oe_runmake oldconfig
+        oe_runmake KCONFIG_ALLCONFIG=${S}/merged.config allnoconfig
 }
 
 do_install() {
meta/recipes-core/uclibc/uclibc_git.bb +0 -1
index eded2fb..6c88513 100644
@@ -10,7 +10,6 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
 FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/uclibc-git' ], d)}"
 
 SRC_URI = "git://uclibc.org/uClibc.git;branch=master;protocol=git \
-	file://uClibc.config \
 	file://uClibc.machine \
 	file://uClibc.distro \
 	file://uclibc-arm-ftruncate64.patch \
Signature · 1 line
1.7.4.1
author
#5 lore raw

PATCH 5/6 uclibc: remove redundant python code

In reply to Khem Raj

From: Phil Blundell <[email protected]>

This chunk of python code has been around for a while (witness the comment about gcc 3.4.0) and predates the availability of COMPATIBLE_HOST. Rewrite it using a more modern idiom.

---
 meta/recipes-core/uclibc/uclibc.inc |   12 +-----------
 1 files changed, 1 insertions(+), 11 deletions(-)
meta/recipes-core/uclibc/uclibc.inc +1 -11
index 2bf3017..06c0f5d 100644
@@ -36,21 +36,11 @@ cp ${SYSROOT_DESTDIR}${libdir}/libc.so ${WORKDIR}/site_config_libc; \
 sed -i -e 's# ${base_libdir}# ${SYSROOT_DESTDIR}${base_libdir}#g' -e 's# ${libdir}# ${SYSROOT_DESTDIR}${libdir}#g' ${WORKDIR}/site_config_libc/libc.so; \
 "
 
-#
 # For now, we will skip building of a gcc package if it is a uclibc one
 # and our build is not a uclibc one, and we skip a glibc one if our build
 # is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
+COMPATIBLE_HOST = ".*-uclibc.*"
 
-python __anonymous () {
-    import bb, re
-    uc_os = (re.match('.*uclibc*', bb.data.getVar('TARGET_OS', d, 1)) != None)
-    if not uc_os:
-        raise bb.parse.SkipPackage("incompatible with target %s" %
-                                   bb.data.getVar('TARGET_OS', d, 1))
-}
 PROVIDES += "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
 DEPENDS = "virtual/${TARGET_PREFIX}binutils \
            virtual/${TARGET_PREFIX}gcc-intermediate \
Signature · 1 line
1.7.4.1
author
#6 lore raw

PATCH 6/6 uclibc: remove PACKAGE_ARCH, fix compilation on i586

In reply to Khem Raj

From: Phil Blundell <[email protected]>

There is no good reason for uclibc to be machine specific. Remove local assignment to PACKAGE_ARCH so that it gets the default target architecture and bump PR for that change.

See http://lists.linuxtogo.org/pipermail/openembedded-core/2011-May/003064.html

---
 meta/recipes-core/uclibc/uclibc_git.bb |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)
meta/recipes-core/uclibc/uclibc_git.bb +1 -3
index 6c88513..78ef4f2 100644
@@ -2,11 +2,9 @@ SRCREV="71d63ed75648da9b0b71afabb9c60aaad792c55c"
 
 require uclibc.inc
 PV = "0.9.31+0.9.32rc3"
-PR = "${INC_PR}.2"
+PR = "${INC_PR}.3"
 PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc"
 
-#recent versions uclibc require real kernel headers
-PACKAGE_ARCH = "${MACHINE_ARCH}"
 FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/uclibc-git' ], d)}"
 
 SRC_URI = "git://uclibc.org/uClibc.git;branch=master;protocol=git \
Signature · 1 line
1.7.4.1