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 [ "$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

	# 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."
}
