summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 d4bb3ae..53c4b0b 100644
--- a/meta/classes/image-prelink.bbclass
+++ b/meta/classes/image-prelink.bbclass
@@ -1,6 +1,10 @@
1do_rootfs[depends] += "prelink-native:do_populate_sysroot" 1do_rootfs[depends] += "prelink-native:do_populate_sysroot"
2 2
3IMAGE_PREPROCESS_COMMAND += "prelink_image; " 3IMAGE_PREPROCESS_COMMAND += "prelink_setup; prelink_image; "
4
5python prelink_setup () {
6 oe.utils.write_ld_so_conf(d)
7}
4 8
5prelink_image () { 9prelink_image () {
6# export PSEUDO_DEBUG=4 10# export PSEUDO_DEBUG=4
@@ -20,6 +24,13 @@ prelink_image () {
20 dummy_prelink_conf=false; 24 dummy_prelink_conf=false;
21 fi 25 fi
22 26
27 # We need a ld.so.conf with pathnames in,prelink conf on the filesystem, add one if it's missing
28 ldsoconf=${IMAGE_ROOTFS}${sysconfdir}/ld.so.conf
29 if [ -e $ldsoconf ]; then
30 cp $ldsoconf $ldsoconf.prelink
31 fi
32 cat ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf >> $ldsoconf
33
23 # prelink! 34 # prelink!
24 ${STAGING_DIR_NATIVE}${sbindir_native}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf 35 ${STAGING_DIR_NATIVE}${sbindir_native}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf
25 36
@@ -28,6 +39,12 @@ prelink_image () {
28 rm -f ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf 39 rm -f ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf
29 fi 40 fi
30 41
42 if [ -e $ldsoconf.prelink ]; then
43 mv $ldsoconf.prelink $ldsoconf
44 else
45 rm $ldsoconf
46 fi
47
31 pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'` 48 pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'`
32 echo "Size after prelinking $pre_prelink_size." 49 echo "Size after prelinking $pre_prelink_size."
33} 50}
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index ebf92ac..7ac945d 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -1094,12 +1094,17 @@ python do_package_qa () {
1094 continue 1094 continue
1095 if w in testmatrix and testmatrix[w] in g: 1095 if w in testmatrix and testmatrix[w] in g:
1096 warnchecks.append(g[testmatrix[w]]) 1096 warnchecks.append(g[testmatrix[w]])
1097 if w == 'unsafe-references-in-binaries':
1098 oe.utils.write_ld_so_conf(d)
1099
1097 errorchecks = [] 1100 errorchecks = []
1098 for e in (d.getVar("ERROR_QA", True) or "").split(): 1101 for e in (d.getVar("ERROR_QA", True) or "").split():
1099 if e in skip: 1102 if e in skip:
1100 continue 1103 continue
1101 if e in testmatrix and testmatrix[e] in g: 1104 if e in testmatrix and testmatrix[e] in g:
1102 errorchecks.append(g[testmatrix[e]]) 1105 errorchecks.append(g[testmatrix[e]])
1106 if e == 'unsafe-references-in-binaries':
1107 oe.utils.write_ld_so_conf(d)
1103 1108
1104 bb.note("Checking Package: %s" % package) 1109 bb.note("Checking Package: %s" % package)
1105 # Check package name 1110 # Check package name
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index 9a86410..30d3062 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -293,3 +293,14 @@ class ThreadedPool:
293 self.tasks.join() 293 self.tasks.join()
294 for worker in self.workers: 294 for worker in self.workers:
295 worker.join() 295 worker.join()
296
297def write_ld_so_conf(d):
298 # Some utils like prelink may not have the correct target library paths
299 # so write an ld.so.conf to help them
300 ldsoconf = d.expand("${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf")
301 if os.path.exists(ldsoconf):
302 bb.utils.remove(ldsoconf)
303 bb.utils.mkdirhier(os.path.dirname(ldsoconf))
304 with open(ldsoconf, "w") as f:
305 f.write(d.getVar("base_libdir", True) + '\n')
306 f.write(d.getVar("libdir", True) + '\n')