diff options
Diffstat (limited to 'meta/packages/glibc')
-rw-r--r-- | meta/packages/glibc/glibc-2.4/arm-longlong.patch | 2 | ||||
-rw-r--r-- | meta/packages/glibc/glibc-2.4/no-z-defs.patch | 9 | ||||
-rw-r--r-- | meta/packages/glibc/glibc-2.4/zecke-sane-readelf.patch | 149 | ||||
-rw-r--r-- | meta/packages/glibc/glibc-initial_2.4.bb | 4 | ||||
-rw-r--r-- | meta/packages/glibc/glibc-intermediate_2.4.bb | 2 | ||||
-rw-r--r-- | meta/packages/glibc/glibc-package.bbclass | 53 | ||||
-rw-r--r-- | meta/packages/glibc/glibc_2.4.bb | 24 |
7 files changed, 205 insertions, 38 deletions
diff --git a/meta/packages/glibc/glibc-2.4/arm-longlong.patch b/meta/packages/glibc/glibc-2.4/arm-longlong.patch index 320a55524..28aca83df 100644 --- a/meta/packages/glibc/glibc-2.4/arm-longlong.patch +++ b/meta/packages/glibc/glibc-2.4/arm-longlong.patch @@ -54,5 +54,5 @@ +#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) +/* Nothing required. */ +#else -+#include <sysdeps/generic/mp_clz_tab.c> ++#include <stdlib/mp_clz_tab.c> +#endif diff --git a/meta/packages/glibc/glibc-2.4/no-z-defs.patch b/meta/packages/glibc/glibc-2.4/no-z-defs.patch new file mode 100644 index 000000000..48c6a4126 --- /dev/null +++ b/meta/packages/glibc/glibc-2.4/no-z-defs.patch @@ -0,0 +1,9 @@ +Create a configparms file which disabled no-z-defs. +This is required to build a working glibs for sh4, +without there will be a lot linker errors during the build. + +diff -duNr libc.orig/configparms libc/configparms +--- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000 ++++ libc/configparms 2006-02-23 14:08:18.000000000 +1100 +@@ -0,0 +1 @@ ++no-z-defs=yes diff --git a/meta/packages/glibc/glibc-2.4/zecke-sane-readelf.patch b/meta/packages/glibc/glibc-2.4/zecke-sane-readelf.patch new file mode 100644 index 000000000..023b6a51b --- /dev/null +++ b/meta/packages/glibc/glibc-2.4/zecke-sane-readelf.patch @@ -0,0 +1,149 @@ +Index: glibc-2.4/configure +=================================================================== +--- glibc-2.4.orig/configure 2006-03-06 12:18:56.000000000 +0100 ++++ glibc-2.4/configure 2006-08-06 14:10:51.000000000 +0200 +@@ -5488,6 +5488,95 @@ + fi + fi + ++### XXXX copy and pasted ++# Check for readelf ++# Extract the first word of "$target_alias-readelf", so it can be a program name with args. ++set dummy $target_alias-readelf; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_READELF+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$READELF"; then ++ ac_cv_prog_READELF="$READELF" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_READELF="$target_alias-readelf" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++READELF=$ac_cv_prog_READELF ++if test -n "$READELF"; then ++ { echo "$as_me:$LINENO: result: $READELF" >&5 ++echo "${ECHO_T}$READELF" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++if test -z "$ac_cv_prog_READELF"; then ++ if test "$build" = "$target"; then ++ ac_ct_READELF=$READELF ++ # Extract the first word of "readelf", so it can be a program name with args. ++set dummy readelf; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_READELF"; then ++ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_READELF="readelf" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++ test -z "$ac_cv_prog_ac_ct_READELF" && ac_cv_prog_ac_ct_READELF="readelf" ++fi ++fi ++ac_ct_READELF=$ac_cv_prog_ac_ct_READELF ++if test -n "$ac_ct_READELF"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5 ++echo "${ECHO_T}$ac_ct_READELF" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ READELF=ac_ct_READELF ++ else ++ READELF="readelf" ++ fi ++else ++ READELF="$ac_cv_prog_READELF" ++fi ++ ++### XXXX copy and pasted ++ + echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5 + echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6 + if test "${libc_cv_initfini_array+set}" = set; then +@@ -5507,7 +5596,7 @@ + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then +- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then ++ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then + libc_cv_initfini_array=yes + else + libc_cv_initfini_array=no +@@ -5801,7 +5890,7 @@ + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then +- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then ++ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then + libc_cv_z_combreloc=yes + else + libc_cv_z_combreloc=no +Index: glibc-2.4/configure.in +=================================================================== +--- glibc-2.4.orig/configure.in 2006-03-01 10:17:40.000000000 +0100 ++++ glibc-2.4/configure.in 2006-08-06 14:09:31.000000000 +0200 +@@ -1350,6 +1350,8 @@ + fi + fi + ++ AC_CHECK_TARGET_TOOL([READELF],[readelf],[readelf],[$PATH]) ++ + AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support, + libc_cv_initfini_array, [dnl + cat > conftest.c <<EOF +@@ -1361,7 +1363,7 @@ + if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c + -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD]) + then +- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then ++ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then + libc_cv_initfini_array=yes + else + libc_cv_initfini_array=no +@@ -1543,7 +1545,7 @@ + dnl introducing new options this is not easily doable. Instead use a tool + dnl which always is cross-platform: readelf. To detect whether -z combreloc + dnl look for a section named .rel.dyn. +- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then ++ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then + libc_cv_z_combreloc=yes + else + libc_cv_z_combreloc=no diff --git a/meta/packages/glibc/glibc-initial_2.4.bb b/meta/packages/glibc/glibc-initial_2.4.bb index 422e8b711..9ba2ac37c 100644 --- a/meta/packages/glibc/glibc-initial_2.4.bb +++ b/meta/packages/glibc/glibc-initial_2.4.bb @@ -1,9 +1,9 @@ SECTION = "libs" -include glibc_${PV}.bb +require glibc_${PV}.bb DEPENDS = "linux-libc-headers" PROVIDES = "virtual/${TARGET_PREFIX}libc-initial" -FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-cvs', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}" +FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-2.4', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}" PACKAGES = "" diff --git a/meta/packages/glibc/glibc-intermediate_2.4.bb b/meta/packages/glibc/glibc-intermediate_2.4.bb index 819cd0950..01ce8bb9a 100644 --- a/meta/packages/glibc/glibc-intermediate_2.4.bb +++ b/meta/packages/glibc/glibc-intermediate_2.4.bb @@ -1,5 +1,5 @@ SECTION = "libs" -include glibc_${PV}.bb +require glibc_${PV}.bb DEFAULT_PREFERENCE = "-1" diff --git a/meta/packages/glibc/glibc-package.bbclass b/meta/packages/glibc/glibc-package.bbclass index 680831e82..3ce10b54d 100644 --- a/meta/packages/glibc/glibc-package.bbclass +++ b/meta/packages/glibc/glibc-package.bbclass @@ -25,20 +25,21 @@ ENABLE_BINARY_LOCALE_GENERATION ?= "0" # BINARY_LOCALE_ARCHES is a space separated list of regular expressions BINARY_LOCALE_ARCHES ?= "arm.*" -PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile" -PACKAGES_DYNAMIC = "glibc-gconv-* glibc-charmap-* glibc-localedata-*" +PACKAGES = "glibc-dbg glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile" +PACKAGES_DYNAMIC = "glibc-gconv-* glibc-charmap-* glibc-localedata-* libc6*" libc_baselibs = "/lib/libc* /lib/libm* /lib/ld* /lib/libpthread* /lib/libresolv* /lib/librt* /lib/libutil* /lib/libnsl* /lib/libnss_files* /lib/libnss_compat* /lib/libnss_dns* /lib/libdl* /lib/libanl* /lib/libBrokenLocale*" -FILES_${PN} = "${sysconfdir} ${libc_baselibs} /sbin/ldconfig ${libexecdir} ${datadir}/zoneinfo" +FILES_${PN} = "${sysconfdir} ${libc_baselibs} /sbin/ldconfig ${libexecdir}/* ${datadir}/zoneinfo" FILES_ldd = "${bindir}/ldd" FILES_libsegfault = "/lib/libSegFault*" FILES_glibc-extra-nss = "/lib/libnss*" FILES_sln = "/sbin/sln" FILES_glibc-dev_append = " ${libdir}/*.o ${bindir}/rpcgen" FILES_nscd = "${sbindir}/nscd*" -FILES_glibc-utils = "${bindir} ${sbindir}" -FILES_glibc-gconv = "${libdir}/gconv" +FILES_glibc-utils = "${bindir}/* ${sbindir}/*" +FILES_glibc-gconv = "${libdir}/gconv/*" +FILES_${PN}-dbg += " ${libdir}/gconv/.debug" FILES_catchsegv = "${bindir}/catchsegv" RDEPENDS_catchsegv = "libsegfault" FILES_glibc-pcprofile = "/lib/libpcprofile.so" @@ -77,17 +78,10 @@ do_install() { grep -v $i ${WORKDIR}/SUPPORTED > ${WORKDIR}/SUPPORTED.tmp mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED done - # If indicated, only build a limited selection of locales - if [ "${LIMIT_BUILT_LOCALES}" != "${LIMIT_BUILT_LOCALES}" ]; then - for i in ${LIMIT_BUILT_LOCALES}; do - grep $i ${WORKDIR}/SUPPORTED > ${WORKDIR}/SUPPORTED.tmp - mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED - done - fi rm -f ${D}/etc/rpc } -TMP_LOCALE="/tmp/locale/${libdir}/locale" +TMP_LOCALE="/tmp/locale${libdir}/locale" locale_base_postinst() { #!/bin/sh @@ -102,6 +96,7 @@ if [ -f ${libdir}/locale/locale-archive ]; then cp ${libdir}/locale/locale-archive ${TMP_LOCALE}/ fi localedef --inputfile=${datadir}/i18n/locales/%s --charmap=%s --prefix=/tmp/locale %s +mkdir -p ${libdir}/locale/ mv ${TMP_LOCALE}/locale-archive ${libdir}/locale/ rm -rf ${TMP_LOCALE} } @@ -204,12 +199,7 @@ python package_do_split_gconvs () { if deps != []: bb.data.setVar('RDEPENDS_%s' % pkg, " ".join(deps), d) - use_bin = bb.data.getVar("GLIBC_INTERNAL_USE_BINARY_LOCALE", d, 1) - if use_bin: - do_split_packages(d, locales_dir, file_regex='(.*)', output_pattern='glibc-localedata-%s', description='locale definition for %s', hook=calc_locale_deps, extra_depends='', aux_files_pattern_verbatim=binary_locales_dir + '/%s') - else: - do_split_packages(d, locales_dir, file_regex='(.*)', output_pattern='glibc-localedata-%s', description='locale definition for %s', hook=calc_locale_deps, extra_depends='') - bb.note("generation of binary locales disabled. this may break i18n!") + do_split_packages(d, locales_dir, file_regex='(.*)', output_pattern='glibc-localedata-%s', description='locale definition for %s', hook=calc_locale_deps, extra_depends='') bb.data.setVar('PACKAGES', bb.data.getVar('PACKAGES', d) + ' glibc-gconv', d) f = open(os.path.join(bb.data.getVar('WORKDIR', d, 1), "SUPPORTED"), "r") @@ -248,8 +238,12 @@ python package_do_split_gconvs () { target_arch = bb.data.getVar("TARGET_ARCH", d, 1) qemu = "qemu-%s" % target_arch pkgname = 'locale-base-' + legitimize_package_name(name) - - bb.data.setVar('RDEPENDS_%s' % pkgname, 'glibc-localedata-%s glibc-charmap-%s' % (legitimize_package_name(locale), legitimize_package_name(encoding)), d) + m = re.match("(.*)\.(.*)", name) + if m: + glibc_name = "%s.%s" % (m.group(1), m.group(2).lower().replace("-","")) + else: + glibc_name = name + bb.data.setVar('RDEPENDS_%s' % pkgname, legitimize_package_name('glibc-binary-localedata-%s' % glibc_name), d) rprovides = 'virtual-locale-%s' % legitimize_package_name(name) m = re.match("(.*)_(.*)", name) if m: @@ -262,7 +256,7 @@ python package_do_split_gconvs () { path = bb.data.getVar("PATH", d, 1) i18npath = os.path.join(treedir, datadir, "i18n") - localedef_opts = "--force --old-style --no-archive --prefix=%s --inputfile=%s/i18n/locales/%s --charmap=%s %s" % (treedir, datadir, locale, encoding, locale) + localedef_opts = "--force --old-style --no-archive --prefix=%s --inputfile=%s/i18n/locales/%s --charmap=%s %s" % (treedir, datadir, locale, encoding, name) cmd = "PATH=\"%s\" I18NPATH=\"%s\" %s -L %s %s/bin/localedef %s" % (path, i18npath, qemu, treedir, treedir, localedef_opts) bb.note("generating locale %s (%s)" % (locale, encoding)) if os.system(cmd): @@ -281,20 +275,33 @@ python package_do_split_gconvs () { bb.build.exec_func("do_prep_locale_tree", d) # Reshuffle names so that UTF-8 is preferred over other encodings + non_utf8 = [] for l in encodings.keys(): if len(encodings[l]) == 1: output_locale(l, l, encodings[l][0]) + if encodings[l][0] != "UTF-8": + non_utf8.append(l) else: if "UTF-8" in encodings[l]: output_locale(l, l, "UTF-8") encodings[l].remove("UTF-8") + else: + non_utf8.append(l) for e in encodings[l]: - output_locale('%s-%s' % (l, e), l, e) + output_locale('%s.%s' % (l, e), l, e) + + if non_utf8 != []: + bb.note("the following locales are supported only in legacy encodings:") + bb.note(" " + " ".join(non_utf8)) use_bin = bb.data.getVar("GLIBC_INTERNAL_USE_BINARY_LOCALE", d, 1) if use_bin: bb.note("collecting binary locales from locale tree") bb.build.exec_func("do_collect_bins_from_locale_tree", d) + do_split_packages(d, binary_locales_dir, file_regex='(.*)', output_pattern='glibc-binary-localedata-%s', description='binary locale definition for %s', extra_depends='', allow_dirs=True) + else: + bb.note("generation of binary locales disabled. this may break i18n!") + } # We want to do this indirection so that we can safely 'return' diff --git a/meta/packages/glibc/glibc_2.4.bb b/meta/packages/glibc/glibc_2.4.bb index faaf27ced..bccdcc7da 100644 --- a/meta/packages/glibc/glibc_2.4.bb +++ b/meta/packages/glibc/glibc_2.4.bb @@ -3,8 +3,13 @@ HOMEPAGE = "http://www.gnu.org/software/libc/libc.html" LICENSE = "LGPL" SECTION = "libs" PRIORITY = "required" -DEFAULT_PREFERENCE = "-1" -PR = "r4" +# DEFAULT_PREFERENCE = "-1" +PR = "r10" + +# the -isystem in bitbake.conf screws up glibc do_stage +BUILD_CPPFLAGS = "-I${STAGING_DIR}/${BUILD_SYS}/include" +TARGET_CPPFLAGS = "-I${STAGING_DIR}/${TARGET_SYS}/include" + FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4" @@ -53,6 +58,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.4.tar.bz2 \ file://nptl-crosscompile.patch;patch=1 \ file://glibc-2.4-compile.patch;patch=1 \ file://fixup-aeabi-syscalls.patch;patch=1 \ + file://zecke-sane-readelf.patch;patch=1 \ file://generic-bits_select.h \ file://generic-bits_types.h \ file://generic-bits_typesizes.h \ @@ -60,6 +66,10 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.4.tar.bz2 \ file://etc/ld.so.conf \ file://generate-supported.mk" +# Build fails on sh3 and sh4 without additional patches +SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1" +SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1" + S = "${WORKDIR}/glibc-2.4" B = "${WORKDIR}/build-${TARGET_SYS}" @@ -109,14 +119,6 @@ do_munge() { rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h # Obsoleted by sysdeps/gnu/bits/utmp.h rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h - - # http://www.handhelds.org/hypermail/oe/51/5135.html - # Some files were moved around between directories on - # 2005-12-21, which means that any attempt to check out - # from CVS using a datestamp older than that will be doomed. - # - # This is a workaround for that problem. - rm -rf ${S}/bits } addtask munge before do_patch after do_unpack @@ -198,4 +200,4 @@ do_stage() { echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${CROSS_DIR}/${TARGET_SYS}/lib/libc.so } -include glibc-package.bbclass +require glibc-package.bbclass |