summaryrefslogtreecommitdiff
path: root/meta
diff options
context:
space:
mode:
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/image-prelink.bbclass19
-rw-r--r--meta/classes/insane.bbclass5
-rw-r--r--meta/lib/oe/utils.py11
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')