diff options
Diffstat (limited to 'meta/classes/image-prelink.bbclass')
-rw-r--r-- | meta/classes/image-prelink.bbclass | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/meta/classes/image-prelink.bbclass b/meta/classes/image-prelink.bbclass index 4157df021a..ebf6e6d7ee 100644 --- a/meta/classes/image-prelink.bbclass +++ b/meta/classes/image-prelink.bbclass @@ -1,6 +1,6 @@ do_rootfs[depends] += "prelink-native:do_populate_sysroot" -IMAGE_PREPROCESS_COMMAND += "prelink_setup; prelink_image; " +IMAGE_PREPROCESS_COMMAND_append_libc-glibc = " prelink_setup; prelink_image; " python prelink_setup () { oe.utils.write_ld_so_conf(d) @@ -17,6 +17,16 @@ prelink_image () { pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'` echo "Size before prelinking $pre_prelink_size." + # The filesystem may not contain sysconfdir so establish what is present + # to enable cleanup after temporary creation of sysconfdir if needed + presentdir="${IMAGE_ROOTFS}${sysconfdir}" + while [ "${IMAGE_ROOTFS}" != "${presentdir}" ] ; do + [ ! -d "${presentdir}" ] || break + presentdir=`dirname "${presentdir}"` + done + + mkdir -p "${IMAGE_ROOTFS}${sysconfdir}" + # We need a prelink conf on the filesystem, add one if it's missing if [ ! -e ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf ]; then cp ${STAGING_ETCDIR_NATIVE}/prelink.conf \ @@ -33,10 +43,20 @@ prelink_image () { fi cat ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf >> $ldsoconf - dynamic_loader=$(linuxloader) + dynamic_loader=${@get_linuxloader(d)} # prelink! - ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader + if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then + bbnote " prelink: BUILD_REPRODUCIBLE_BINARIES..." + if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then + export PRELINK_TIMESTAMP=`git log -1 --pretty=%ct ` + else + export PRELINK_TIMESTAMP=$REPRODUCIBLE_TIMESTAMP_ROOTFS + fi + ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -am -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader + else + ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader + fi # Remove the prelink.conf if we had to add it. if [ "$dummy_prelink_conf" = "true" ]; then @@ -49,6 +69,13 @@ prelink_image () { rm $ldsoconf fi + # Remove any directories temporarily created for sysconfdir + cleanupdir="${IMAGE_ROOTFS}${sysconfdir}" + while [ "${presentdir}" != "${cleanupdir}" ] ; do + rmdir "${cleanupdir}" + cleanupdir=`dirname ${cleanupdir}` + done + pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'` echo "Size after prelinking $pre_prelink_size." } |