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') | ||
