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 lock_fd="$1"
|
||||||
local name="$2"
|
local name="$2"
|
||||||
local ruby="/usr/bin/ruby"
|
local ruby="/usr/bin/ruby"
|
||||||
|
local python="/usr/bin/python"
|
||||||
[[ -x "$ruby" ]] || ruby="$(which ruby 2>/dev/null)"
|
[[ -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
|
then
|
||||||
"$ruby" -e "File.new($lock_fd).flock(File::LOCK_EX | File::LOCK_NB) || exit(1)"
|
"$ruby" -e "File.new($lock_fd).flock(File::LOCK_EX | File::LOCK_NB) || exit(1)"
|
||||||
elif [[ -n "$(which flock)" ]]
|
elif [[ -n "$(which flock)" ]]
|
||||||
then
|
then
|
||||||
flock -n "$lock_fd"
|
flock -n "$lock_fd"
|
||||||
|
elif [[ -n "$python" ]]
|
||||||
|
then
|
||||||
|
"$python" -c "import fcntl; fcntl.flock($lock_fd, fcntl.LOCK_EX | fcntl.LOCK_NB)"
|
||||||
else
|
else
|
||||||
onoe "Cannot create $name lock, please avoid running Homebrew in parallel."
|
onoe "Cannot create $name lock, please avoid running Homebrew in parallel."
|
||||||
fi
|
fi
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user