From 7d206333535b2276065c5c6e5ae5e424b5b2ff86 Mon Sep 17 00:00:00 2001 From: Jeremy Whitlock Date: Mon, 7 Jul 2014 17:43:44 -0600 Subject: [PATCH] cayley 0.3.0 (new formula) --- Formula/cayley.rb | 116 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 Formula/cayley.rb diff --git a/Formula/cayley.rb b/Formula/cayley.rb new file mode 100644 index 00000000000..72334395be1 --- /dev/null +++ b/Formula/cayley.rb @@ -0,0 +1,116 @@ +require "formula" + +class Cayley < Formula + homepage "https://github.com/google/cayley" + url "https://github.com/google/cayley/archive/v0.3.0.tar.gz" + sha1 "b69b1da6854cf174854034061ab0919fcf0c18b8" + head "https://github.com/google/cayley.git" + + depends_on "bazaar" => :build + depends_on :hg => :build + depends_on "go" => :build + + option "without-samples", "Disable installing sample data" + + def install + # Prepare for Go build + ENV["GOPATH"] = buildpath + + # To avoid re-downloading Cayley, symlink its source from the tarball so that Go can find it + mkdir_p "src/github.com/google/" + ln_s buildpath, "src/github.com/google/cayley" + + # Install Go dependencies + system "go", "get", "github.com/badgerodon/peg" + system "go", "get", "github.com/barakmich/glog" + system "go", "get", "github.com/julienschmidt/httprouter" + system "go", "get", "github.com/petar/GoLLRB/llrb" + system "go", "get", "github.com/robertkrimen/otto" + system "go", "get", "github.com/russross/blackfriday" + system "go", "get", "github.com/syndtr/goleveldb/leveldb" + system "go", "get", "github.com/syndtr/goleveldb/leveldb/cache" + system "go", "get", "github.com/syndtr/goleveldb/leveldb/iterator" + system "go", "get", "github.com/syndtr/goleveldb/leveldb/opt" + system "go", "get", "github.com/syndtr/goleveldb/leveldb/util" + system "go", "get", "labix.org/v2/mgo" + system "go", "get", "labix.org/v2/mgo/bson" + + # HEAD does not require the extra work to get 0.3.0 to build properly so avoid it + unless build.head? + # Install Go dependencies + system "go", "get", "github.com/stretchrcom/testify/mock" + + # Fix issue where 0.3.0 builds againsts an old version of syndtr/goleveldb + inreplace "graph/leveldb/leveldb_triplestore.go", "GetApproximateSizes", "SizeOf" + end + + # Build + system "go", "build", "-o", "cayley" + + # Create sample configuration that uses the Homebrew-based directories + inreplace "cayley.cfg.example", "/tmp/cayley_test", "#{var}/cayley/data.nt" + + # Install binary and configuration + bin.install "cayley" + etc.install "cayley.cfg.example" => "cayley.conf" + + # Create data directory + (var/"cayley").mkpath + + if build.with? "samples" + system "gzip", "-d", "30kmoviedata.nt.gz" + + # Copy over sample data + (share/'cayley/samples').install "testdata.nt" + (share/'cayley/samples').install "30kmoviedata.nt" + end + end + + plist_options :manual => "cayley --config=#{HOMEBREW_PREFIX}/etc/cayley.conf" + + def plist; <<-EOS.undent + + + + + KeepAlive + + SuccessfulExit + + + Label + #{plist_name} + ProgramArguments + + #{opt_bin}/cayley + --config=#{etc}/cayley.conf + + RunAtLoad + + WorkingDirectory + #{var}/cayley + StandardErrorPath + #{var}/log/cayley.log + StandardOutPath + #{var}/log/cayley.log + + + EOS + end + + test do + require 'open3' + + touch "test.nt" + + Open3.popen3("#{bin}/cayley", "repl", "--dbpath=#{testpath}/test.nt") do |stdin, stdout, _| + stdin.write "graph.Vertex().All()" + stdin.close + + result = stdout.read.strip + + assert !result.include?("Error:") + assert result.include?("Elapsed time:") + end + end +end