do_rootfs[depends] += "prelink-native:do_populate_sysroot" 
 | 
  
 | 
IMAGE_PREPROCESS_COMMAND:append:libc-glibc = " prelink_setup; prelink_image; " 
 | 
  
 | 
python prelink_setup () { 
 | 
    oe.utils.write_ld_so_conf(d) 
 | 
} 
 | 
  
 | 
inherit linuxloader 
 | 
  
 | 
prelink_image () { 
 | 
#    export PSEUDO_DEBUG=4 
 | 
#    /bin/env | /bin/grep PSEUDO 
 | 
#    echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" 
 | 
#    echo "LD_PRELOAD=$LD_PRELOAD" 
 | 
  
 | 
    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 \ 
 | 
            ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf 
 | 
        dummy_prelink_conf=true; 
 | 
    else 
 | 
        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 
 | 
  
 | 
    dynamic_loader=${@get_linuxloader(d)} 
 | 
  
 | 
    # prelink! 
 | 
    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 
 | 
        rm -f ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf 
 | 
    fi 
 | 
  
 | 
    if [ -e $ldsoconf.prelink ]; then 
 | 
        mv $ldsoconf.prelink $ldsoconf 
 | 
    else 
 | 
        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." 
 | 
} 
 |