aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>2020-06-04 16:14:26 -0400
committerGravatar Peter Korsgaard <peter@korsgaard.com>2020-07-16 18:22:12 +0200
commited383f99c83b45c0b52616adb36745da36b9f281 (patch)
tree1357004f43f949ad61146529e924fedb115bd359
parentb2ecee9ea74b94df5f7ba9857321224ed99d9458 (diff)
downloadbuildroot-ed383f99c83b45c0b52616adb36745da36b9f281.tar.gz
buildroot-ed383f99c83b45c0b52616adb36745da36b9f281.tar.bz2
packages/pkg-download.mk: fix file locking over NFS
BSD style locks such as implemented by flock are translated to POSIX advisory file locks (implemented by the fcntl system call on Linux). It is not possible to lock a directory using POSIX advisory file locks. Hence, the lock strategy used by Buildroot doesn't work when used over NFS. Using flock on a simple file works correctly though, so use a '.lock' file inside the download directory instead. If the lockfile does not exist, flock will create it (in a race-free fashion). Tested using NFS v4.2 and Linux 5.4.43. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com> [yann.morin.1998@free.fr: - slightly expand commit log about creation of the lockfile ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> (cherry picked from commit 2e9d6565fcc10268b7db6d44d74f9b48d2c2354c) Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r--package/pkg-download.mk2
1 files changed, 1 insertions, 1 deletions
diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index de619ba90a..951d2fb554 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -99,7 +99,7 @@ endif
define DOWNLOAD
$(Q)mkdir -p $($(2)_DL_DIR)
- $(Q)$(EXTRA_ENV) flock $($(2)_DL_DIR)/ $(DL_WRAPPER) \
+ $(Q)$(EXTRA_ENV) flock $($(2)_DL_DIR)/.lock $(DL_WRAPPER) \
-c '$($(2)_DL_VERSION)' \
-d '$($(2)_DL_DIR)' \
-D '$(DL_DIR)' \