path: root/meta/recipes-core/base-files
diff options
authorBryan Evenson <>2015-04-14 17:08:15 -0400
committerRichard Purdie <>2015-04-20 15:01:20 +0100
commit272805f064848f14306b1ed2648a7760017ee318 (patch)
treecef474d45390c91e21ba5b100d045598374287f6 /meta/recipes-core/base-files
parent97d56a5b8e4f15eb32095f242eb2fd62fc5d85f2 (diff)
base-files: Check for /run and /var/lock softlinks on upgrade
Commit ea647cd9eebdc3e3121b84074519c4bb305adac9 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. Signed-off-by: Bryan Evenson <>
Diffstat (limited to 'meta/recipes-core/base-files')
1 files changed, 24 insertions, 0 deletions
diff --git a/meta/recipes-core/base-files/ b/meta/recipes-core/base-files/
index f2d254e6bd..e16fe722b8 100644
--- a/meta/recipes-core/base-files/
+++ b/meta/recipes-core/base-files/
@@ -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
ln -snf ../run ${D}${localstatedir}/run
ln -snf ../run/lock ${D}${localstatedir}/lock