summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--glibc/glibc_2.3.2.oe43
-rw-r--r--glibc/glibc_cvs.oe43
-rw-r--r--uclibc/uclibc_0.9.26.oe28
3 files changed, 104 insertions, 10 deletions
diff --git a/glibc/glibc_2.3.2.oe b/glibc/glibc_2.3.2.oe
index 3b6ddf8b3a..5e72341914 100644
--- a/glibc/glibc_2.3.2.oe
+++ b/glibc/glibc_2.3.2.oe
@@ -4,14 +4,39 @@ SECTION = "libs"
PRIORITY = "required"
MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
-# This will ONLY build to this target
+# We want to select whether we're building a uclibc or glibc system and
+# perform provides accordingly. We want to trigger on the original
+# TARGET_VENDOR setting, so we must do this before changing it.
+def target_is_uclibc(d):
+ import oe
+ if (oe.data.getVar('TARGET_VENDOR', d, 1) == '-uclibc'):
+ return 1
+ return 0
+def cond_provides(d):
+ import oe
+ if not target_is_uclibc(d):
+ return 'virtual/libc'
+ return ''
+def cond_packages(d):
+ import oe
+ if not target_is_uclibc(d):
+ return 'glibc glibc-dev glibc-doc glibc-i18n glibc-locale'
+ oe.data.setVar('PACKAGE_NO_LOCALE', '1', d)
+ oe.data.setVar('PACKAGE_NO_GCONV', '1', d)
+ return 'glibc-compat'
+PROVIDES := "${@cond_provides(d)}"
+PACKAGES := "${@cond_packages(d)}"
+
+# When target is not a uclibc system, do a compat-only package
+FILES_${PN}-compat = "${libdir}/lib*.so.* /lib/*.so*"
+
+# This will ONLY build to this target (we override it incase we're buliding
+# the world for a uclibc system)
TARGET_VENDOR = ""
TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
TARGET_PREFIX = "${TARGET_SYS}-"
DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial"
-PROVIDES = "virtual/libc"
-PACKAGES = "glibc glibc-dev glibc-doc glibc-i18n glibc-locale"
FILES_glibc_append = " ${datadir}/zoneinfo"
FILES_glibc-dev_append = " ${libdir}/*.o"
@@ -216,7 +241,7 @@ do_install() {
done
}
-python populate_packages_prepend () {
+python package_do_split_gconvs () {
import os
def do_split(root, pattern, format, description, postinst):
dvar = oe.data.getVar('D', d, 1)
@@ -249,6 +274,10 @@ python populate_packages_prepend () {
oe.data.setVar('PACKAGES', ' '.join(packages), d)
+ if (oe.data.getVar('PACKAGE_NO_GCONV', d, 1) == '1'):
+ oe.note("package requested not splitting gconvs")
+ return
+
libdir = oe.data.getVar('libdir', d, 1)
if not libdir:
oe.error("libdir not defined")
@@ -261,6 +290,12 @@ python populate_packages_prepend () {
oe.data.setVar('PACKAGES', oe.data.getVar('PACKAGES', d) + ' glibc-gconv', d)
}
+# We want to do this indirection so that we can safely 'return'
+# from the called function even though we're prepending
+python populate_packages_prepend () {
+ oe.build.exec_func('package_do_split_gconvs', d)
+}
+
python do_package () {
if oe.data.getVar('DEBIAN_NAMES', d, 1):
oe.data.setVar('PKG_glibc', 'libc6', d)
diff --git a/glibc/glibc_cvs.oe b/glibc/glibc_cvs.oe
index 192ff5be25..5afe56850a 100644
--- a/glibc/glibc_cvs.oe
+++ b/glibc/glibc_cvs.oe
@@ -7,14 +7,39 @@ SECTION = "libs"
PRIORITY = "required"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-# This will ONLY build to this target
+# We want to select whether we're building a uclibc or glibc system and
+# perform provides accordingly. We want to trigger on the original
+# TARGET_VENDOR setting, so we must do this before changing it.
+def target_is_uclibc(d):
+ import oe
+ if (oe.data.getVar('TARGET_VENDOR', d, 1) == '-uclibc'):
+ return 1
+ return 0
+def cond_provides(d):
+ import oe
+ if not target_is_uclibc(d):
+ return 'virtual/libc'
+ return ''
+def cond_packages(d):
+ import oe
+ if not target_is_uclibc(d):
+ return 'glibc glibc-dev glibc-doc glibc-i18n glibc-locale'
+ oe.data.setVar('PACKAGE_NO_LOCALE', '1', d)
+ oe.data.setVar('PACKAGE_NO_GCONV', '1', d)
+ return 'glibc-compat'
+PROVIDES := "${@cond_provides(d)}"
+PACKAGES := "${@cond_packages(d)}"
+
+# When target is not a uclibc system, do a compat-only package
+FILES_${PN}-compat = "${libdir}/lib*.so.* /lib/*.so*"
+
+# This will ONLY build to this target (we override it incase we're buliding
+# the world for a uclibc system)
TARGET_VENDOR = ""
TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
TARGET_PREFIX = "${TARGET_SYS}-"
DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial"
-PROVIDES = "virtual/libc"
-PACKAGES = "glibc glibc-dev glibc-doc glibc-i18n glibc-locale"
FILES_glibc_append = " ${datadir}/zoneinfo"
FILES_glibc-dev_append = " ${libdir}/*.o"
@@ -171,7 +196,7 @@ do_install() {
done
}
-python populate_packages_prepend () {
+python package_do_split_gconvs () {
import os
def do_split(root, pattern, format, description, postinst):
dvar = oe.data.getVar('D', d, 1)
@@ -204,6 +229,10 @@ python populate_packages_prepend () {
oe.data.setVar('PACKAGES', ' '.join(packages), d)
+ if (oe.data.getVar('PACKAGE_NO_GCONV', d, 1) == '1'):
+ oe.note("package requested not splitting gconvs")
+ return
+
libdir = oe.data.getVar('libdir', d, 1)
if not libdir:
oe.error("libdir not defined")
@@ -216,6 +245,12 @@ python populate_packages_prepend () {
oe.data.setVar('PACKAGES', oe.data.getVar('PACKAGES', d) + ' glibc-gconv', d)
}
+# We want to do this indirection so that we can safely 'return'
+# from the called function even though we're prepending
+python populate_packages_prepend () {
+ oe.build.exec_func('package_do_split_gconvs', d)
+}
+
python do_package () {
if oe.data.getVar('DEBIAN_NAMES', d, 1):
oe.data.setVar('PKG_glibc', 'libc6', d)
diff --git a/uclibc/uclibc_0.9.26.oe b/uclibc/uclibc_0.9.26.oe
index b8e308a293..d7232174e8 100644
--- a/uclibc/uclibc_0.9.26.oe
+++ b/uclibc/uclibc_0.9.26.oe
@@ -4,7 +4,32 @@ SECTION = "libs"
PRIORITY = "required"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# This will ONLY build to this target
+# We want to select whether we're building a uclibc or glibc system and
+# perform provides accordingly. We want to trigger on the original
+# TARGET_VENDOR setting, so we must do this before changing it.
+def target_is_uclibc(d):
+ import oe
+ if (oe.data.getVar('TARGET_VENDOR', d, 1) == '-uclibc'):
+ return 1
+ return 0
+def cond_provides(d):
+ import oe
+ if target_is_uclibc(d):
+ return 'virtual/libc'
+ return ''
+def cond_packages(d):
+ import oe
+ if target_is_uclibc(d):
+ return '${PN} ${PN}-doc ${PN}-dev ${PN}-locale'
+ return '${PN}-compat'
+PROVIDES := "${@cond_provides(d)}"
+PACKAGES := "${@cond_packages(d)}"
+
+# When target is not a uclibc system, do a compat-only package
+FILES_${PN}-compat = "${libdir}/lib*.so.* /lib/*.so*"
+
+# This will ONLY build to this target (we override it incase we're buliding
+# the world for a glibc system)
TARGET_VENDOR = "-uclibc"
TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
TARGET_PREFIX = "${TARGET_SYS}-"
@@ -12,7 +37,6 @@ TARGET_PREFIX = "${TARGET_SYS}-"
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/uclibc-${PV}"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc-initial"
-PROVIDES = "virtual/libc"
SRC_URI = "http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2 \
http://www.uclibc.org/downloads/toolchain/kernel-headers-2.4.21.tar.bz2"