UPSTREAM: Switch lock directory from /var/run to /run/lock

This allows for proper locking between executions of fwupdtool in
Chromium OS minijail environment. It is needed after commit
9cf5f8f7ff7b93473eabf21e8482bb8feace039a was introduced.

(cherry picked from commit a4fbe2a6f4d1e0ed60970b755dad5f033927b900)

BUG=b:187233828
TEST=start fwupdtool-getdevices

Change-Id: I593b32b78758562454aca89080e6005ac38c98a7
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/fwupd/+/2874630
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Benson Leung <bleung@google.com>
Commit-Queue: Daniel Campello <campello@chromium.org>
Commit-Queue: Benson Leung <bleung@google.com>
Tested-by: Daniel Campello <campello@chromium.org>
Auto-Submit: Daniel Campello <campello@chromium.org>
diff --git a/libfwupdplugin/fu-common.c b/libfwupdplugin/fu-common.c
index 2dcabb4..643192f 100644
--- a/libfwupdplugin/fu-common.c
+++ b/libfwupdplugin/fu-common.c
@@ -1253,6 +1253,9 @@
 			return g_build_filename (tmp, NULL);
 		basedir = fu_common_get_path (FU_PATH_KIND_LOCALSTATEDIR);
 		return g_build_filename (basedir, "cache", PACKAGE_NAME, NULL);
+	/* /run/lock */
+	case FU_PATH_KIND_LOCKDIR:
+		return g_strdup ("/run/lock");
 	case FU_PATH_KIND_OFFLINE_TRIGGER:
 		tmp = g_getenv ("FWUPD_OFFLINE_TRIGGER");
 		if (tmp != NULL)
diff --git a/libfwupdplugin/fu-common.h b/libfwupdplugin/fu-common.h
index f84ae51..2f95f0b 100644
--- a/libfwupdplugin/fu-common.h
+++ b/libfwupdplugin/fu-common.h
@@ -61,6 +61,7 @@
  * @FU_PATH_KIND_OFFLINE_TRIGGER:	The file for the offline trigger (IE /system-update)
  * @FU_PATH_KIND_SYSFSDIR_SECURITY:	The sysfs security location (IE /sys/kernel/security)
  * @FU_PATH_KIND_ACPI_TABLES:		The location of the ACPI tables
+ * @FU_PATH_KIND_LOCKDIR:		The lock directory (IE /run/lock)
  *
  * Path types to use when dynamically determining a path at runtime
  **/
@@ -81,6 +82,7 @@
 	FU_PATH_KIND_OFFLINE_TRIGGER,
 	FU_PATH_KIND_SYSFSDIR_SECURITY,
 	FU_PATH_KIND_ACPI_TABLES,
+	FU_PATH_KIND_LOCKDIR,
 	/*< private >*/
 	FU_PATH_KIND_LAST
 } FuPathKind;
diff --git a/src/fu-tool.c b/src/fu-tool.c
index e16ecd4..d652e0a 100644
--- a/src/fu-tool.c
+++ b/src/fu-tool.c
@@ -2840,12 +2840,12 @@
 		.l_type = F_WRLCK,
 		.l_whence = SEEK_SET,
 	};
-	g_autofree gchar *localstatedir = NULL;
+	g_autofree gchar *lockdir = NULL;
 	g_autofree gchar *lockfn = NULL;
 
 	/* open file */
-	localstatedir = fu_common_get_path (FU_PATH_KIND_LOCALSTATEDIR);
-	lockfn = g_build_filename (localstatedir, "run", "fwupdtool", NULL);
+	lockdir = fu_common_get_path (FU_PATH_KIND_LOCKDIR);
+	lockfn = g_build_filename (lockdir, "fwupdtool", NULL);
 	if (!fu_common_mkdir_parent (lockfn, error))
 		return FALSE;
 	priv->lock_fd = g_open (lockfn, O_RDWR | O_CREAT, S_IRWXU);