diff options
-rw-r--r-- | meta/classes/image-prelink.bbclass | 19 | ||||
-rw-r--r-- | meta/classes/insane.bbclass | 5 | ||||
-rw-r--r-- | meta/lib/oe/utils.py | 11 |
3 files changed, 34 insertions, 1 deletions
diff --git a/meta/classes/image-prelink.bbclass b/meta/classes/image-prelink.bbclass index d4bb3aec39..53c4b0b112 100644 --- a/meta/classes/image-prelink.bbclass +++ b/meta/classes/image-prelink.bbclass @@ -1,6 +1,10 @@ do_rootfs[depends] += "prelink-native:do_populate_sysroot" -IMAGE_PREPROCESS_COMMAND += "prelink_image; " +IMAGE_PREPROCESS_COMMAND += "prelink_setup; prelink_image; " + +python prelink_setup () { + oe.utils.write_ld_so_conf(d) +} prelink_image () { # export PSEUDO_DEBUG=4 @@ -20,6 +24,13 @@ prelink_image () { dummy_prelink_conf=false; fi + # We need a ld.so.conf with pathnames in,prelink conf on the filesystem, add one if it's missing + ldsoconf=${IMAGE_ROOTFS}${sysconfdir}/ld.so.conf + if [ -e $ldsoconf ]; then + cp $ldsoconf $ldsoconf.prelink + fi + cat ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf >> $ldsoconf + # prelink! ${STAGING_DIR_NATIVE}${sbindir_native}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf @@ -28,6 +39,12 @@ prelink_image () { rm -f ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf fi + if [ -e $ldsoconf.prelink ]; then + mv $ldsoconf.prelink $ldsoconf + else + rm $ldsoconf + fi + pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'` echo "Size after prelinking $pre_prelink_size." } diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass index ebf92ac621..7ac945d4cd 100644 --- a/meta/classes/insane.bbclass +++ b/meta/classes/insane.bbclass @@ -1094,12 +1094,17 @@ python do_package_qa () { continue if w in testmatrix and testmatrix[w] in g: warnchecks.append(g[testmatrix[w]]) + if w == 'unsafe-references-in-binaries': + oe.utils.write_ld_so_conf(d) + errorchecks = [] for e in (d.getVar("ERROR_QA", True) or "").split(): if e in skip: continue if e in testmatrix and testmatrix[e] in g: errorchecks.append(g[testmatrix[e]]) + if e == 'unsafe-references-in-binaries': + oe.utils.write_ld_so_conf(d) bb.note("Checking Package: %s" % package) # Check package name diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index 9a86410b15..30d30629f1 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py @@ -293,3 +293,14 @@ class ThreadedPool: self.tasks.join() for worker in self.workers: worker.join() + +def write_ld_so_conf(d): + # Some utils like prelink may not have the correct target library paths + # so write an ld.so.conf to help them + ldsoconf = d.expand("${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf") + if os.path.exists(ldsoconf): + bb.utils.remove(ldsoconf) + bb.utils.mkdirhier(os.path.dirname(ldsoconf)) + with open(ldsoconf, "w") as f: + f.write(d.getVar("base_libdir", True) + '\n') + f.write(d.getVar("libdir", True) + '\n') |