ldconfig cache generation in cross way
cover ldconfig cache generation in cross way
From: Nitin A Kamble <[email protected]>
This brings few commits related to the yocto bug #780
Pull URL: git://git.pokylinux.org/poky-contrib.git
Branch: nitin/bug780
Browse: http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=nitin/bug780
Thanks,
Nitin A Kamble <[email protected]>
---
Nitin A Kamble (3):
image.bbclass: make execution ldconfig verbose
libxcb: fix for broken library link in the image ldconfig-native-2.12.1: newer recipe with eglibc sources
meta/classes/image.bbclass | 3 +-
.../ldconfig-native-2.12.1}/32and64bit.patch | 94 +++--
.../eglibc/ldconfig-native-2.12.1/README | 8 +
.../endian-ness_handling.patch | 451 ++++++++++++++++++++
.../eglibc/ldconfig-native-2.12.1/flag_fix.patch | 22 +
.../ldconfig-native-2.12.1.tar.bz2 | Bin 0 -> 21491 bytes
.../ldconfig-native-2.12.1}/ldconfig.patch | 125 +++---
.../ldconfig_aux-cache_path_fix.patch | 34 ++
meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb | 27 ++
.../ldconfig-native-2.5.tar.bz2 | Bin 19454 -> 0 bytes
meta/recipes-core/glibc/ldconfig-native_2.5.bb | 24 -
meta/recipes-graphics/xcb/libxcb.inc | 4 +-
meta/recipes-graphics/xcb/libxcb_1.1.91.bb | 2 +-
meta/recipes-graphics/xcb/libxcb_1.7.bb | 2 +-
meta/recipes-graphics/xcb/libxcb_git.bb | 1 +
15 files changed, 680 insertions(+), 117 deletions(-)
rename meta/recipes-core/{glibc/ldconfig-native-2.5 => eglibc/ldconfig-native-2.12.1}/32and64bit.patch (78%)
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/README
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/endian-ness_handling.patch
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/flag_fix.patch
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-native-2.12.1.tar.bz2
rename meta/recipes-core/{glibc/ldconfig-native-2.5 => eglibc/ldconfig-native-2.12.1}/ldconfig.patch (84%)
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig_aux-cache_path_fix.patch
create mode 100644 meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb
delete mode 100644 meta/recipes-core/glibc/ldconfig-native-2.5/ldconfig-native-2.5.tar.bz2
delete mode 100644 meta/recipes-core/glibc/ldconfig-native_2.5.bbSignature · 1 line
1.7.2.2
PATCH 1/3 image.bbclass: make execution ldconfig verbose
From: Nitin A Kamble <[email protected]>
The failure of ldconfig was not getting logged anywhere before.
--- meta/classes/image.bbclass | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
meta/classes/image.bbclass +2 -1
@@ -113,7 +113,8 @@ fakeroot do_rootfs () { # Run ldconfig on the image to create a valid cache # (new format for cross arch compatibility) - ldconfig -r ${IMAGE_ROOTFS} -c new + echo executing: ldconfig -r ${IMAGE_ROOTFS} -c new -v + ldconfig -r ${IMAGE_ROOTFS} -c new -v # (re)create kernel modules dependencies # This part is done by kernel-module-* postinstall scripts but if image do
Signature · 1 line
1.7.2.2
PATCH 2/3 libxcb: fix for broken library link in the image
In reply to Nitin A KambleFrom: Nitin A Kamble <[email protected]>
log.do_package:
NOTE: the following files were installed but not shipped in any package: NOTE: /usr/lib/libxcb-dri2.so.0 NOTE: /usr/lib/libxcb-dri2.so.0.0.0 NOTE: libxcb-dev contains dangling symlink to
/usr/lib/libxcb-dri2.so.0.0.0
Then because of the dangling symlink, ldconfig fails at the time of rootfs creation of image.
--- meta/recipes-graphics/xcb/libxcb.inc | 4 +++- meta/recipes-graphics/xcb/libxcb_1.1.91.bb | 2 +- meta/recipes-graphics/xcb/libxcb_1.7.bb | 2 +- meta/recipes-graphics/xcb/libxcb_git.bb | 1 + 4 files changed, 6 insertions(+), 3 deletions(-)
meta/recipes-graphics/xcb/libxcb.inc +3 -1
@@ -19,10 +19,12 @@ PACKAGES =+ "libxcb-composite libxcb-damage libxcb-dpms libxcb-glx \ libxcb-randr libxcb-record libxcb-render libxcb-res \ libxcb-screensaver libxcb-shape libxcb-shm libxcb-sync \ libxcb-xevie libxcb-xf86dri libxcb-xfixes libxcb-xlib \ - libxcb-xprint libxcb-xtest libxcb-xv libxcb-xvmc" + libxcb-xprint libxcb-xtest libxcb-xv libxcb-xvmc \ + libxcb-dri2" FILES_${PN} = "${libdir}/libxcb.so.*" #FILES_${PN}-dev = "${libdir}/libxcb.* ${libdir}/pkgconfig/*.pc ${includedir}/xcb/*.h" +FILES_libxcb-dri2 = "${libdir}/libxcb-dri2.so.*" FILES_libxcb-composite = "${libdir}/libxcb-composite.so.*" FILES_libxcb-damage = "${libdir}/libxcb-damage.so.*" FILES_libxcb-dpms = "${libdir}/libxcb-dpms.so.*"
meta/recipes-graphics/xcb/libxcb_1.1.91.bb +1 -1
@@ -1,5 +1,5 @@ include libxcb.inc -PR = "r1" +PR = "r2" DEPENDS += "libpthread-stubs xcb-proto-native"
meta/recipes-graphics/xcb/libxcb_1.7.bb +1 -1
@@ -3,7 +3,7 @@ include libxcb.inc LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7" -PR = "r0" +PR = "r1" DEPENDS += "libpthread-stubs xcb-proto-native"
meta/recipes-graphics/xcb/libxcb_git.bb +1 -0
@@ -2,6 +2,7 @@ DEFAULT_PREFERENCE = "-1" include libxcb.inc PV = "1.1.90.1+gitr${SRCPV}" +PR = "r1" DEPENDS += "libpthread-stubs xcb-proto-native"
Signature · 1 line
1.7.2.2
PATCH 3/3 ldconfig-native-2.12.1: newer recipe with eglibc sources
In reply to Nitin A KambleFrom: Nitin A Kamble <[email protected]>
This fixes [YOCTO #780]
Handle the input/output data with different endian-ness correctly Also fix the definition of LD_SO for cross environment
And remove the older 2.5 version of ldconfig-native recipe
---
.../ldconfig-native-2.12.1}/32and64bit.patch | 94 +++--
.../eglibc/ldconfig-native-2.12.1/README | 8 +
.../endian-ness_handling.patch | 451 ++++++++++++++++++++
.../eglibc/ldconfig-native-2.12.1/flag_fix.patch | 22 +
.../ldconfig-native-2.12.1.tar.bz2 | Bin 0 -> 21491 bytes
.../ldconfig-native-2.12.1}/ldconfig.patch | 125 +++---
.../ldconfig_aux-cache_path_fix.patch | 34 ++
meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb | 27 ++
.../ldconfig-native-2.5.tar.bz2 | Bin 19454 -> 0 bytes
meta/recipes-core/glibc/ldconfig-native_2.5.bb | 24 -
10 files changed, 672 insertions(+), 113 deletions(-)
rename meta/recipes-core/{glibc/ldconfig-native-2.5 => eglibc/ldconfig-native-2.12.1}/32and64bit.patch (78%)
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/README
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/endian-ness_handling.patch
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/flag_fix.patch
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-native-2.12.1.tar.bz2
rename meta/recipes-core/{glibc/ldconfig-native-2.5 => eglibc/ldconfig-native-2.12.1}/ldconfig.patch (84%)
create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig_aux-cache_path_fix.patch
create mode 100644 meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb
delete mode 100644 meta/recipes-core/glibc/ldconfig-native-2.5/ldconfig-native-2.5.tar.bz2
delete mode 100644 meta/recipes-core/glibc/ldconfig-native_2.5.bbmeta/recipes-core/eglibc/ldconfig-native-2.12.1/32and64bit.patch renamed from meta/recipes-core/glibc/ldconfig-native-2.5/32and64bit.patch +64 -30
@@ -1,8 +1,8 @@ -Index: ldconfig-native-2.5/readelflib.c +Index: ldconfig-native-2.12.1/readelflib.c =================================================================== ---- ldconfig-native-2.5.orig/readelflib.c 2009-05-19 09:40:17.000000000 +0100 -+++ ldconfig-native-2.5/readelflib.c 2009-05-19 09:56:18.000000000 +0100 -@@ -40,38 +40,190 @@ +--- ldconfig-native-2.12.1.orig/readelflib.c ++++ ldconfig-native-2.12.1/readelflib.c +@@ -40,39 +40,212 @@ do \ /* Returns 0 if everything is ok, != 0 in case of error. */ int
@@ -33,7 +33,8 @@ Index: ldconfig-native-2.5/readelflib.c - if (elf_header->e_ident [EI_CLASS] != ElfW (CLASS)) + if (elf_header->e_type != ET_DYN) -+ { + { +- if (opt_verbose) + error (0, 0, _("%s is not a shared object file (Type: %d).\n"), file_name, + elf_header->e_type); + return 1;
@@ -53,8 +54,7 @@ Index: ldconfig-native-2.5/readelflib.c + program_interpreter = NULL; + for (i = 0, segment = elf_pheader; + i < elf_header->e_phnum; i++, segment++) - { -- if (opt_verbose) ++ { + check_ptr (segment); + + switch (segment->p_type)
@@ -93,25 +93,45 @@ Index: ldconfig-native-2.5/readelflib.c + break; + + case PT_NOTE: -+ if (!*osversion && segment->p_filesz == 32 && segment->p_align >= 4) ++ if (!*osversion && segment->p_filesz >= 32 && segment->p_align >= 4) + { + Elf32_Word *abi_note = (Elf32_Word *) (file_contents + + segment->p_offset); -+ if (abi_note [0] == 4 && abi_note [1] == 16 && abi_note [2] == 1 -+ && memcmp (abi_note + 3, "GNU", 4) == 0) -+ *osversion = (abi_note [4] << 24) | -+ ((abi_note [5] & 0xff) << 16) | -+ ((abi_note [6] & 0xff) << 8) | -+ (abi_note [7] & 0xff); ++ Elf32_Addr size = segment->p_filesz; ++ ++ while (abi_note [0] != 4 || abi_note [1] != 16 ++ || abi_note [2] != 1 ++ || memcmp (abi_note + 3, "GNU", 4) != 0) ++ { ++#define ROUND(len) (((len) + sizeof (Elf32_Word)) - 1) & -sizeof (Elf32_Word))) ++ Elf32_Addr) note_size = 3 * sizeof (Elf32_Word)) ++ + ROUND (abi_note[0]) ++ + ROUND (abi_note[1]); ++ ++ if (size - 32 < note_size || note_size == 0) ++ { ++ size = 0; ++ break; ++ } ++ size -= note_size; ++ abi_note = (void *) abi_note + note_size; ++ } ++ ++ if (size == 0) ++ break; ++ ++ *osversion = (abi_note [4] << 24) | ++ ((abi_note [5] & 0xff) << 16) | ++ ((abi_note [6] & 0xff) << 8) | ++ (abi_note [7] & 0xff); + } + break; + + default: + break; - } -- return 1; ++ } + - } ++ } + if (loadaddr == (Elf32_Addr) -1) + { + /* Very strange. */
@@ -136,9 +156,10 @@ Index: ldconfig-native-2.5/readelflib.c + dynamic_strings = (char *) (file_contents + dyn_entry->d_un.d_val - loadaddr); + check_ptr (dynamic_strings); + break; -+ } -+ } -+ + } +- return 1; + } + + if (dynamic_strings == NULL) + return 1; +
@@ -205,10 +226,11 @@ Index: ldconfig-native-2.5/readelflib.c + + elf_header = (Elf64_Ehdr *) file_contents; + *osversion = 0; - ++ if (elf_header->e_type != ET_DYN) { -@@ -81,7 +233,7 @@ + error (0, 0, _("%s is not a shared object file (Type: %d).\n"), file_name, +@@ -81,7 +254,7 @@ process_elf_file (const char *file_name, } /* Get information from elf program header. */
@@ -217,7 +239,7 @@ Index: ldconfig-native-2.5/readelflib.c check_ptr (elf_pheader); /* The library is an elf library, now search for soname and -@@ -100,7 +252,7 @@ +@@ -100,7 +273,7 @@ process_elf_file (const char *file_name, switch (segment->p_type) { case PT_LOAD:
@@ -226,16 +248,28 @@ Index: ldconfig-native-2.5/readelflib.c loadaddr = segment->p_vaddr - segment->p_offset; break; -@@ -129,7 +281,7 @@ +@@ -129,16 +302,16 @@ process_elf_file (const char *file_name, case PT_NOTE: - if (!*osversion && segment->p_filesz == 32 && segment->p_align >= 4) + if (!*osversion && segment->p_filesz >= 32 && segment->p_align >= 4) { - ElfW(Word) *abi_note = (ElfW(Word) *) (file_contents + Elf64_Word *abi_note = (Elf64_Word *) (file_contents + segment->p_offset); - if (abi_note [0] == 4 && abi_note [1] == 16 && abi_note [2] == 1 - && memcmp (abi_note + 3, "GNU", 4) == 0) -@@ -145,7 +297,7 @@ +- ElfW(Addr) size = segment->p_filesz; ++ Elf64_Addr size = segment->p_filesz; + + while (abi_note [0] != 4 || abi_note [1] != 16 + || abi_note [2] != 1 + || memcmp (abi_note + 3, "GNU", 4) != 0) + { +-#define ROUND(len) (((len) + sizeof (ElfW(Word)) - 1) & -sizeof (ElfW(Word))) +- ElfW(Addr) note_size = 3 * sizeof (ElfW(Word)) ++#define ROUND(len) (((len) + sizeof (Elf64_Word) - 1) & -sizeof (Elf64_Word)) ++ Elf64_Addr note_size = 3 * sizeof (Elf64_Word) + + ROUND (abi_note[0]) + + ROUND (abi_note[1]); + +@@ -166,7 +339,7 @@ process_elf_file (const char *file_name, } }
@@ -244,7 +278,7 @@ Index: ldconfig-native-2.5/readelflib.c { /* Very strange. */ loadaddr = 0; -@@ -155,7 +307,7 @@ +@@ -176,7 +349,7 @@ process_elf_file (const char *file_name, if (dynamic_size == 0) return 1;
@@ -253,7 +287,7 @@ Index: ldconfig-native-2.5/readelflib.c check_ptr (dynamic_segment); /* Find the string table. */ -@@ -218,3 +370,33 @@ +@@ -233,3 +406,33 @@ process_elf_file (const char *file_name, return 0; }
meta/recipes-core/eglibc/ldconfig-native-2.12.1/README new file +8 -0
@@ -0,0 +1,8 @@ +The files are pulled verbatim from glibc 2.5 and then patched to allow +standalone compilation of ldconfig. + +Richard Purdie +OpenedHand Ltd. + +Upgraded the ldconfig recipe to eglibc 2.12.1 +Nitin A Kamble <[email protected]> 2011/03/29
meta/recipes-core/eglibc/ldconfig-native-2.12.1/endian-ness_handling.patch new file +451 -0
451 lines not on this page · raw message
meta/recipes-core/eglibc/ldconfig-native-2.12.1/flag_fix.patch new file +22 -0
@@ -0,0 +1,22 @@ +The native version of ldconfig was using native definition of LD_SO (i.e. +ld-linux-x86-64.so.2 ) which is not correct for doing the cross ldconfig. +This was causing libc.so on the target marked as ELF lib rather than +FLAG_ELF_LIBC6 in the ld.so.cache. + +Nitin A Kamble <[email protected]> 2011/04/4 + +Index: ldconfig-native-2.12.1/readlib.c +=================================================================== +--- ldconfig-native-2.12.1.orig/readlib.c ++++ ldconfig-native-2.12.1/readlib.c +@@ -51,6 +51,10 @@ struct known_names + int flag; + }; + ++/* don't use host's definition of LD_SO */ ++#undef LD_SO ++#define LD_SO "ld.so.1" ++ + static struct known_names interpreters[] = + { + { "/lib/" LD_SO, FLAG_ELF_LIBC6 },
meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-native-2.12.1.tar.bz2 new file binary +0 -0
meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig.patch renamed from meta/recipes-core/glibc/ldconfig-native-2.5/ldconfig.patch +66 -59
257 lines not on this page · raw message
meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig_aux-cache_path_fix.patch new file +34 -0
@@ -0,0 +1,34 @@ +Coming from this bug: http://sourceware.org/bugzilla/show_bug.cgi?id=11149 + +Nitin A Kamble <[email protected]>2011/03/29 + +--- ldconfig-native-2.12.1.orig/ldconfig.c ++++ ldconfig-native-2.12.1/ldconfig.c +@@ -1359,14 +1359,9 @@ main (int argc, char **argv) + + const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; + if (opt_chroot) +- { +- aux_cache_file = chroot_canon (opt_chroot, aux_cache_file); +- if (aux_cache_file == NULL) +- error (EXIT_FAILURE, errno, _("Can't open cache file %s\n"), +- _PATH_LDCONFIG_AUX_CACHE); +- } ++ aux_cache_file = chroot_canon (opt_chroot, aux_cache_file); + +- if (! opt_ignore_aux_cache) ++ if (! opt_ignore_aux_cache && aux_cache_file) + load_aux_cache (aux_cache_file); + else + init_aux_cache (); +@@ -1376,7 +1371,8 @@ main (int argc, char **argv) + if (opt_build_cache) + { + save_cache (cache_file); +- save_aux_cache (aux_cache_file); ++ if (aux_cache_file) ++ save_aux_cache (aux_cache_file); + } + + return 0; +
meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb new file +27 -0
@@ -0,0 +1,27 @@ +DESCRIPTION = "A standalone native ldconfig build" + +LICENSE = "GPLv2.1" + +LIC_FILES_CHKSUM = "file://${S}/ldconfig.c;endline=17;md5=1d15f20937c055cb5de2329a4c054399" + +SRC_URI = "file://ldconfig-native-2.12.1.tar.bz2 \ + file://ldconfig.patch \ + file://ldconfig_aux-cache_path_fix.patch \ + file://32and64bit.patch \ + file://endian-ness_handling.patch \ + file://flag_fix.patch " + +PR = "r0" + +inherit native + +S = "${WORKDIR}/${PN}-${PV}" + +do_compile () { + $CC ldconfig.c -std=gnu99 chroot_canon.c xmalloc.c xstrdup.c cache.c readlib.c -I. dl-cache.c -o ldconfig +} + +do_install () { + install -d ${D}/${bindir}/ + install ldconfig ${D}/${bindir}/ +}
meta/recipes-core/glibc/ldconfig-native-2.5/ldconfig-native-2.5.tar.bz2 deleted binary +0 -0
meta/recipes-core/glibc/ldconfig-native_2.5.bb deleted +0 -24
@@ -1,24 +0,0 @@ -DESCRIPTION = "A standalone native ldconfig build" - -LICENSE = "GPLv2" - -LIC_FILES_CHKSUM = "file://${S}/ldconfig.c;endline=16;md5=8b3df71ec5b0feeeeab79025096aa92c" - -SRC_URI = "file://ldconfig-native-2.5.tar.bz2 \ - file://ldconfig.patch;patch=1 \ - file://32and64bit.patch;patch=1" - -PR = "r1" - -inherit native - -S = "${WORKDIR}/${PN}-${PV}" - -do_compile () { - $CC ldconfig.c -std=gnu99 chroot_canon.c xmalloc.c xstrdup.c cache.c readlib.c -I. dl-cache.c -o ldconfig -} - -do_install () { - install -d ${D}/${bindir}/ - install ldconfig ${D}/${bindir}/ -}
Signature · 1 line
1.7.2.2
Richard Purdie
AppliedQuoted 13 lines · Nitin A Kamble
From: Nitin A Kamble <[email protected]>
This brings few commits related to the yocto bug #780
Pull URL:
git://git.pokylinux.org/poky-contrib.git
Branch: nitin/bug780
Browse: http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=nitin/bug780Thanks,
Nitin A Kamble <[email protected]>
---
Quoted 4 lines
Nitin A Kamble (3):
image.bbclass: make execution ldconfig verbose
libxcb: fix for broken library link in the image ldconfig-native-2.12.1: newer recipe with eglibc sources
Merged to master, thanks.
Richard