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.1/apache-couchdb-1.7.1.tar.gz" mirror "https://archive.apache.org/dist/couchdb/source/1.7.1/apache-couchdb-1.7.1.tar.gz" sha256 "91200aa6fbc6fa5e2f3d78ef40e39d8c1ec7c83ea1c2cd730d270658735b2cad" revision 8 bottle do rebuild 1 sha256 "b07fcba0c273c81d43b6df6b96b923e14f18d2a5175aa657e699acd123bd3162" => :mojave sha256 "66d4b5aa4f6e8f94a2bebb255b3d43051d3a1fa798f04356f6bb713a83c0711d" => :high_sierra sha256 "c5257e44b71b803c685f855cabbd435d860b7478a89ac330b11f2d8580759f4c" => :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