b546ce7bdf
This is taking a run at: https://github.com/facebook/watchman/issues/358 Watchman installs and updates its own launchd.plist file on behalf of the user; it is not integrated with `brew services`. In the linked issue, watchman would stop working for some homebrew users. The problem was that the launchd.plist used socket activation to set up the service, and because launchd is maintaining the socket, and the socket connection attempt just hangs, watchman never had a chance to fix up the plist and things stayed broken. To help solve this, we're forcing an unload in the post-install portion of the recipe.
61 lines
2.5 KiB
Ruby
61 lines
2.5 KiB
Ruby
class Watchman < Formula
|
|
desc "Watch files and take action when they change"
|
|
homepage "https://github.com/facebook/watchman"
|
|
url "https://github.com/facebook/watchman/archive/v4.7.0.tar.gz"
|
|
sha256 "77c7174c59d6be5e17382e414db4907a298ca187747c7fcb2ceb44da3962c6bf"
|
|
head "https://github.com/facebook/watchman.git"
|
|
|
|
bottle do
|
|
cellar :any
|
|
sha256 "370bf84f5a349db3ecd3e72c156b95a90bddf73029c062094a848dae123e3ada" => :sierra
|
|
sha256 "543ee937e060a61028041ce3f8ea490602fab29b1427bed40152d47e7baa523c" => :el_capitan
|
|
sha256 "c9ab24b2585ec3cce5641e4a31610916dd5e1a101a0c0e7695516ff32b4e5e9d" => :yosemite
|
|
sha256 "ee4ec6d737f55204f2b33a3701c494b66353550532a0ec600ee81668be8d6c54" => :mavericks
|
|
end
|
|
|
|
depends_on :python if MacOS.version <= :snow_leopard
|
|
depends_on "autoconf" => :build
|
|
depends_on "automake" => :build
|
|
depends_on "pcre"
|
|
|
|
def install
|
|
system "./autogen.sh"
|
|
system "./configure", "--disable-dependency-tracking",
|
|
"--prefix=#{prefix}",
|
|
"--with-pcre",
|
|
# we'll do the homebrew specific python
|
|
# installation below
|
|
"--without-python",
|
|
"--enable-statedir=#{var}/run/watchman"
|
|
system "make"
|
|
system "make", "install"
|
|
|
|
# Homebrew specific python application installation
|
|
ENV.prepend_create_path "PYTHONPATH", libexec/"lib/python2.7/site-packages"
|
|
cd "python" do
|
|
system "python", *Language::Python.setup_install_args(libexec)
|
|
end
|
|
bin.install Dir[libexec/"bin/*"]
|
|
bin.env_script_all_files(libexec/"bin", :PYTHONPATH => ENV["PYTHONPATH"])
|
|
end
|
|
|
|
def post_install
|
|
(var/"run/watchman").mkpath
|
|
chmod 042777, var/"run/watchman"
|
|
# Older versions would use socket activation in the launchd.plist, and since
|
|
# the homebrew paths are versioned, this meant that launchd would continue
|
|
# to reference the old version of the binary after upgrading.
|
|
# https://github.com/facebook/watchman/issues/358
|
|
# To help swing folks from an older version to newer versions, force unloading
|
|
# the plist here. This is needed even if someone wanted to add brew services
|
|
# support; while there are still folks with watchman <4.8 this is still an
|
|
# upgrade concern.
|
|
home = ENV["HOME"]
|
|
system "launchctl", "unload",
|
|
"-F", "#{home}/Library/LaunchAgents/com.github.facebook.watchman.plist"
|
|
end
|
|
|
|
test do
|
|
assert_equal /(\d+\.\d+\.\d+)/.match(version)[0], shell_output("#{bin}/watchman -v").chomp
|
|
end
|
|
end
|