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 @@ | |||
1 | do_rootfs[depends] += "prelink-native:do_populate_sysroot" | 1 | do_rootfs[depends] += "prelink-native:do_populate_sysroot" |
2 | 2 | ||
3 | IMAGE_PREPROCESS_COMMAND += "prelink_image; " | 3 | IMAGE_PREPROCESS_COMMAND += "prelink_setup; prelink_image; " |
4 | |||
5 | python prelink_setup () { | ||
6 | oe.utils.write_ld_so_conf(d) | ||
7 | } | ||
4 | 8 | ||
5 | prelink_image () { | 9 | prelink_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 ebf92ac621..7ac945d4cd 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 9a86410b15..30d30629f1 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 | |||
297 | def 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') | ||