From ede2e5b4b39564a1969747f13ea726ce3a92cbbe Mon Sep 17 00:00:00 2001 From: Hongxu Jia Date: Thu, 6 Dec 2018 16:56:15 +0800 Subject: glibc: improve reproducibility with multilib Multilib builds specify several loaders which will end up embedded in some binaries or script files. To support reproducible builds, we must ensure the loaders are always in deterministic order. [YOCTO #2655] [YOCTO #12478] [YOCTO #12480] (From OE-Core rev: 3f839c0cdfe253677ebee47838fe476a0939e0aa) Signed-off-by: Juro Bystricky Improve the fix and rebase it to 2.28 Here is the log of lib32-glibc [log.do_compile] |Adjust ldd script |ldd "/lib64/ld-linux-x86-64.so.2 /lib/ld-linux.so.2 /lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2" -> "/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2" [log.do_compile] Signed-off-by: Hongxu Jia Signed-off-by: Richard Purdie --- meta/recipes-core/glibc/glibc-ld.inc | 4 ++-- meta/recipes-core/glibc/glibc_2.28.bb | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'meta/recipes-core/glibc') diff --git a/meta/recipes-core/glibc/glibc-ld.inc b/meta/recipes-core/glibc/glibc-ld.inc index bb167b32bc..041ffbb9cb 100644 --- a/meta/recipes-core/glibc/glibc-ld.inc +++ b/meta/recipes-core/glibc/glibc-ld.inc @@ -10,8 +10,8 @@ def glibc_dl_info(d): infos['ldconfig'].add('{"' + loader + '",' + "FLAG_ELF_LIBC6" + ' }') infos['lddrewrite'].add(loader) - infos['ldconfig'] = ','.join(infos['ldconfig']) - infos['lddrewrite'] = ' '.join(infos['lddrewrite']) + infos['ldconfig'] = ','.join(sorted(infos['ldconfig'])) + infos['lddrewrite'] = ' '.join(sorted(infos['lddrewrite'])) return infos EGLIBC_KNOWN_INTERPRETER_NAMES = "${@glibc_dl_info(d)['ldconfig']}" diff --git a/meta/recipes-core/glibc/glibc_2.28.bb b/meta/recipes-core/glibc/glibc_2.28.bb index d072939254..a107c58b9f 100644 --- a/meta/recipes-core/glibc/glibc_2.28.bb +++ b/meta/recipes-core/glibc/glibc_2.28.bb @@ -122,10 +122,10 @@ do_compile () { if [ -n "${RTLDLIST}" ] then prevrtld=`cat ${B}/elf/ldd | grep "^RTLDLIST=" | sed 's#^RTLDLIST="\?\([^"]*\)"\?$#\1#'` - if [ "${prevrtld}" != "${RTLDLIST}" ] - then - sed -i ${B}/elf/ldd -e "s#^RTLDLIST=.*\$#RTLDLIST=\"${prevrtld} ${RTLDLIST}\"#" - fi + # remove duplicate entries + newrtld=`echo $(printf '%s\n' ${prevrtld} ${RTLDLIST} | LC_ALL=C sort -u)` + echo "ldd \"${prevrtld} ${RTLDLIST}\" -> \"${newrtld}\"" + sed -i ${B}/elf/ldd -e "s#^RTLDLIST=.*\$#RTLDLIST=\"${newrtld}\"#" fi } -- cgit v1.2.3-54-g00ecf