buck.rb (55 lines of code) (raw):
# Copyright (c) Facebook, Inc. and its affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
# frozen_string_literal: true
class Buck < Formula
BUCK_VERSION = "2021.01.12.01"
BUCK_RELEASE_TIMESTAMP = "1610431978"
desc "Facebook's Buck build system"
homepage "https://buckbuild.com/"
url "https://github.com/facebook/buck/archive/v#{BUCK_VERSION}.tar.gz"
sha256 "c89e86e8a8355f6bc921afe8218a3cb1138c896a97e3168cf5dd220b07d8d1b5"
license "Apache-2.0"
revision 0
head "https://github.com/facebook/buck.git", branch: "main"
bottle do
root_url "https://github.com/facebook/buck/releases/download/v#{BUCK_VERSION}"
sha256 cellar: :any_skip_relocation, yosemite: "84ed6c26e1796170bb1733c6ef8638099405a5007fc832d937a7c1e03ee337e2"
end
depends_on "ant@1.9"
depends_on "openjdk@8"
def install
# First, bootstrap the build by building Buck with Apache Ant.
ENV["JAVA_HOME"] = Formula["openjdk@8"].opt_libexec/"openjdk.jdk/Contents/Home"
ant_path = `"#{HOMEBREW_PREFIX}"/bin/brew --prefix ant@1.9`
ant_1_9 = ant_path.strip + "/bin/ant"
ohai "Bootstrapping buck with ant using " + ant_1_9
system(
ant_1_9,
"-Drelease.version=#{BUCK_VERSION}",
"-Drelease.timestamp=#{BUCK_RELEASE_TIMESTAMP}",
)
# Mark the build as successful.
touch "ant-out/successful-build"
# Now, build the Buck PEX archive with the Buck bootstrap.
ohai "Building buck with buck"
mkdir_p bin
system(
"./bin/buck",
"build",
"-c",
"buck.release_version=#{BUCK_VERSION}",
"-c",
"buck.release_timestamp=#{BUCK_RELEASE_TIMESTAMP}",
"--out",
"#{bin}/buck",
"buck",
)
bin.env_script_all_files(libexec/"bin",
JAVA_HOME: Formula["openjdk@8"].opt_libexec/"openjdk.jdk/Contents/Home")
end
test do
ohai "Setting up Buck repository in " + testpath
(testpath/".buckconfig").write("")
(testpath/"BUCK").write("cxx_binary(name = 'foo', srcs = ['foo.c'])")
(testpath/"foo.c").write("#include <stdio.h>\nint main(int argc, char **argv) { printf(\"Hello world!\\n\"); }\n")
ohai "Building and running C binary..."
stdout = shell_output("#{bin}/buck run :foo").chomp
ohai "Got output from binary: " + stdout
assert_equal "Hello world!", stdout
ohai "Test complete."
end
end