base-files: Check for /run and /var/lock softlinks on upgrade

Commit ea647cd9ee moved the locations
of /run and /var/lock to match the FHS 3 draft specifications.
However, the install doesn't remove the existing directories.
As a result, upgrading a system may result in /run as a softlink
to /var/run and /var/run as a softlink to /run, creating a circular
link.

During pre-install, check for the existence of the old softlinks and
remove them so the new directories can be installed.

(From OE-Core rev: 272805f064848f14306b1ed2648a7760017ee318)

Signed-off-by: Bryan Evenson <bevenson@melinkcorp.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Bryan Evenson 2015-04-14 17:08:15 -04:00 committed by Richard Purdie
parent 72d88f29da
commit 6f03a8d7ae
1 changed files with 24 additions and 0 deletions

View File

@ -69,6 +69,29 @@ hostname = "${MACHINE}"
BASEFILESISSUEINSTALL ?= "do_install_basefilesissue"
# In previous versions of base-files, /run was a softlink to /var/run and the
# directory was located in /var/volatlie/run. Also, /var/lock was a softlink
# to /var/volatile/lock which is where the real directory was located. Now,
# /run and /run/lock are the real directories. If we are upgrading, we may
# need to remove the symbolic links first before we create the directories.
# Otherwise the directory creation will fail and we will have circular symbolic
# links.
#
pkg_preinst_${PN} () {
#!/bin/sh -e
if [ x"$D" = "x" ]; then
if [ -h "/var/lock" ]; then
# Remove the symbolic link
rm -f /var/lock
fi
if [ -h "/run" ]; then
# Remove the symbolic link
rm -f /run
fi
fi
}
do_install () {
for d in ${dirs755}; do
install -m 0755 -d ${D}$d
@ -82,6 +105,7 @@ do_install () {
for d in ${volatiles}; do
ln -sf volatile/$d ${D}${localstatedir}/$d
done
ln -snf ../run ${D}${localstatedir}/run
ln -snf ../run/lock ${D}${localstatedir}/lock