Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
executable file 78 lines (58 sloc) 1.63 KB
#!/usr/bin/env ruby
ENV["GEM_HOME"] = File.expand_path("../../vendor/gems", __FILE__)
ENV["GEM_PATH"] = File.expand_path("../../vendor/gems", __FILE__)
require "rubygems"
id = ARGV.shift
require "couchrest"
require "fileutils"
require "tmpdir"
require "rest_client"
db = CouchRest.database!(ENV["CLOUDANT_URL"] + "/make")
Dir.mktmpdir do |dir|
Dir.chdir(dir) do
doc = db.get(id)
command = doc["command"]
prefix = doc["prefix"]
deps = doc["deps"] || []
File.open("input.tgz", "wb") do |file|
file.print doc.fetch_attachment("input")
end
deps.each_with_index do |dep, index|
puts "downloading #{dep}"
File.open("dep_#{index}.tgz", "wb") do |file|
begin
file.print RestClient.get(dep)
rescue Exception => ex
puts ex.inspect
end
end
end
FileUtils.mkdir_p "deps"
Dir.chdir("deps") do
deps.each_with_index do |dep, index|
%x{ tar xzf ../dep_#{index}.tgz 2>&1 }
end
end
unless deps.empty?
ENV["LDFLAGS"] ||= ""
ENV["LDFLAGS"] += " -L%s/deps/lib" % dir
ENV["CFLAGS"] ||= ""
ENV["CFLAGS"] += " -I%s/deps/include" % dir
ENV["CXXFLAGS"] ||= ""
ENV["CXXFLAGS"] += " -I%s/deps/include" % dir
end
FileUtils.mkdir_p "input"
Dir.chdir("input") do
%x{ tar xzf ../input.tgz 2>&1 }
system command
end
Dir.chdir(prefix) do
%x{ tar czf #{dir}/output.tgz * 2>&1 }
end
begin
doc.put_attachment("output", File.open("#{dir}/output.tgz"))
rescue RestClient::Conflict
# temporarily work around problem with bigcouch
end
end
end
Something went wrong with that request. Please try again.