From e396e33ad2ea10633c42ec4c580770cb92148dbc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20B=C3=BCsch?= <mb@bu3sch.de>
Date: Fri, 29 Oct 2010 14:53:16 +0000
Subject: [PATCH] Add macro for locking of recipe commands.

SVN-Revision: 23708
---
 rules.mk | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/rules.mk b/rules.mk
index 23445bfaee..007e5bc9b2 100644
--- a/rules.mk
+++ b/rules.mk
@@ -249,6 +249,16 @@ define include_mk
 $(eval -include $(if $(DUMP),,$(STAGING_DIR)/mk/$(strip $(1))))
 endef
 
+# Execute commands under flock
+# $(1) => The shell expression.
+# $(2) => The lock name. If not given, the global lock will be used.
+# $(3) => The filedescriptor used for the lock. Defaults to 1023.
+define locked
+    ( $(STAGING_DIR_HOST)/bin/flock -x $(if $(3),$(3),1023) && \
+      $(1) \
+    ) $(if $(3),$(strip $(3)),1023)>$(TMP_DIR)/.$(if $(2),$(strip $(2)),global).flock
+endef
+
 # file extension
 ext=$(word $(words $(subst ., ,$(1))),$(subst ., ,$(1)))
 
-- 
GitLab