]> code.ossystems Code Review - openembedded-core.git/commitdiff
image-prelink: remove assumption of sysconfdir presence
authorChristopher Clark <christopher.w.clark@gmail.com>
Tue, 10 Mar 2020 21:55:13 +0000 (14:55 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 11 Mar 2020 11:44:12 +0000 (11:44 +0000)
If sysconfdir is not present in the image filesystem then the temporary
creation of a prelink.conf will fail. Fix this by creating sysconfdir
temporarily if needed beforehand and then remove any directories that
were created afterwards.

fixes: OpenXT OXT-1751

Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/image-prelink.bbclass

index 04dd57c940a32b952f9d8d9f2b96ad1f59c216b4..ebf6e6d7ee815bbb341582944c62361eeca903ea 100644 (file)
@@ -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 \
@@ -59,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."
 }