Optionally use Python's flock instead of Ruby's
Ruby first gained flock in 1.8.7, which is a problem since we're using this lock utility in `vendor-install` in order to install a newer Ruby. Fortunately, Python 2.3(!) has flock support.
This commit is contained in:
parent
fdd9972aa7
commit
129ee966f8
@ -38,14 +38,19 @@ _create_lock() {
|
||||
local lock_fd="$1"
|
||||
local name="$2"
|
||||
local ruby="/usr/bin/ruby"
|
||||
local python="/usr/bin/python"
|
||||
[[ -x "$ruby" ]] || ruby="$(which ruby 2>/dev/null)"
|
||||
[[ -x "$python" ]] || python="$(which python 2>/dev/null)"
|
||||
|
||||
if [[ -n "$ruby" ]]
|
||||
if [[ -n "$ruby" && $("$ruby" -e "puts RUBY_VERSION >= '1.8.7' ? 0 : 1") = 0 ]]
|
||||
then
|
||||
"$ruby" -e "File.new($lock_fd).flock(File::LOCK_EX | File::LOCK_NB) || exit(1)"
|
||||
elif [[ -n "$(which flock)" ]]
|
||||
then
|
||||
flock -n "$lock_fd"
|
||||
elif [[ -n "$python" ]]
|
||||
then
|
||||
"$python" -c "import fcntl; fcntl.flock($lock_fd, fcntl.LOCK_EX | fcntl.LOCK_NB)"
|
||||
else
|
||||
onoe "Cannot create $name lock, please avoid running Homebrew in parallel."
|
||||
fi
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user