Skip to content
Snippets Groups Projects
Commit 129ee966 authored by Misty De Meo's avatar Misty De Meo
Browse files

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.
parent fdd9972a
Branches
Tags
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment