class Couchdb < Formula desc "Document database server" homepage "https://couchdb.apache.org/" url "https://www.apache.org/dyn/closer.cgi?path=/couchdb/source/1.7.2/apache-couchdb-1.7.2.tar.gz" mirror "https://archive.apache.org/dist/couchdb/source/1.7.2/apache-couchdb-1.7.2.tar.gz" sha256 "7b7c0db046ded544a587a8935d495610dd10f01a9cae3cd42cf88c5ae40bc431" revision 1 bottle do sha256 "3418496d83e41753b9c27beef215728342da499fd3e0881ca2830377aefe36e0" => :mojave sha256 "ad409da6a2a7fd3fe27d3b2bedec565e15d197fe82e9607924c9441a7954b7d5" => :high_sierra sha256 "d06ec7cd12e85e87126a4cb1b28f28b9d8fcda789f3aa62431c68731b14fd1f9" => :sierra end head do url "https://github.com/apache/couchdb.git" depends_on "autoconf" => :build depends_on "autoconf-archive" => :build depends_on "automake" => :build depends_on "help2man" => :build depends_on "libtool" => :build depends_on "pkg-config" => :build end depends_on "erlang@19" depends_on "icu4c" depends_on "spidermonkey" # Allow overwriting old configuration with new symlinks. link_overwrite "etc/couchdb/default.ini" link_overwrite "etc/couchdb/local.ini" link_overwrite "etc/logrotate.d/couchdb" def install # CouchDB >=1.3.0 supports vendor names and versioning # in the welcome message inreplace "etc/couchdb/default.ini.tpl.in" do |s| s.gsub! "%package_author_name%", "Homebrew" s.gsub! "%version%", pkg_version end unless build.stable? # workaround for the auto-generation of THANKS file which assumes # a developer build environment incl access to git sha touch "THANKS" system "./bootstrap" end system "./configure", "--prefix=#{prefix}", "--localstatedir=#{var}", "--sysconfdir=#{prefix}/etc", "--disable-init", "--with-erlang=#{Formula["erlang@19"].opt_lib}/erlang/usr/include", "--with-js-include=#{HOMEBREW_PREFIX}/include/js", "--with-js-lib=#{HOMEBREW_PREFIX}/lib" system "make" system "make", "install" # Use our plist instead to avoid faffing with a new system user. (prefix/"Library/LaunchDaemons/org.apache.couchdb.plist").delete (lib/"couchdb/bin/couchjs").chmod 0755 end def post_install (var/"lib/couchdb").mkpath (var/"log/couchdb").mkpath (var/"run/couchdb").mkpath end plist_options :manual => "couchdb" def plist; <<~EOS KeepAlive Label #{plist_name} ProgramArguments #{opt_bin}/couchdb RunAtLoad EOS end test do # ensure couchdb embedded spidermonkey vm works system "#{bin}/couchjs", "-h" (testpath/"var/lib/couchdb").mkpath (testpath/"var/log/couchdb").mkpath (testpath/"var/run/couchdb").mkpath cp_r prefix/"etc/couchdb", testpath inreplace "#{testpath}/couchdb/default.ini", "/usr/local/var", testpath/"var" pid = fork do exec "#{bin}/couchdb -A #{testpath}/couchdb" end sleep 2 begin assert_match "Homebrew", shell_output("curl -# localhost:5984") ensure Process.kill("SIGINT", pid) Process.wait(pid) end end end