Skip to content

Commit

Permalink
recc 1.2.24
Browse files Browse the repository at this point in the history
RECC is a compiler launcher that caches the results on compilation and
link command, and optionally forward them to a remote execution service.

Remove running launchctrl command in caveat

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

recc 1.2.21

Address review comments

recc 1.2.21 tests

Added tests to start recc-server and run recc-cc command twice.
The second run should result in a cache hit.

Update test case

Update test

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

recc 1.2.21: Update user configuration location

Use etc as location for system wide recc.conf location.
In the absense of the etc/recc.conf, a default configuration installed
in prefix/etc/recc/recc.conf will be used.

recc 1.2.21

Add caveat about how to invoke compiler using recc.
The instructions in caveat is specific to how homebrew is configured

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

Update Formula/r/recc.rb

Co-authored-by: Carlo Cabrera
<[email protected]>

recc 1.2.24

Update version
Use wrapper scripts from the upstream project
  • Loading branch information
msabakka authored and Sakeeb Sabakka committed Oct 11, 2024
1 parent 930d9a1 commit c529445
Showing 1 changed file with 118 additions and 0 deletions.
118 changes: 118 additions & 0 deletions Formula/r/recc.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
class Recc < Formula
desc "Remote Execution Caching Compiler"
homepage "https://buildgrid.gitlab.io/recc"
url "https://gitlab.com/BuildGrid/buildbox/buildbox/-/archive/1.2.24/buildbox-1.2.24.tar.gz"
sha256 "098de85fa2dc25c3aff4c91d9b7482dfc5842125344e51571991b0eddecbb1c2"
license "Apache-2.0"
head "https://gitlab.com/BuildGrid/buildbox/buildbox.git", branch: "master"

depends_on "cmake" => :build
depends_on "gettext" => :build # for envsubst
depends_on "tomlplusplus" => :build
depends_on "abseil"
depends_on "c-ares"
depends_on "glog"
depends_on "grpc"
depends_on "openssl@3"
depends_on "protobuf"
depends_on "re2"
uses_from_macos "zlib"

on_macos do
depends_on "gflags"
end

on_linux do
depends_on "pkg-config" => :build
depends_on "util-linux"
end

def install
buildbox_cmake_args = %W[
-DCASD=ON
-DCASD_BUILD_BENCHMARK=OFF
-DCASDOWNLOAD=OFF
-DCASUPLOAD=OFF
-DFUSE=OFF
-DLOGSTREAMRECEIVER=OFF
-DLOGSTREAMTAIL=OFF
-DOUTPUTSTREAMER=OFF
-DRECC=ON
-DREXPLORER=OFF
-DRUMBA=OFF
-DRUN_BUBBLEWRAP=OFF
-DRUN_HOSTTOOLS=ON
-DRUN_OCI=OFF
-DRUN_USERCHROOT=OFF
-DTREXE=OFF
-DWORKER=OFF
-DRECC_CONFIG_PREFIX_DIR=#{etc}
]
system "cmake", "-S", ".", "-B", "build", *buildbox_cmake_args, *std_cmake_args
system "cmake", "--build", "build"
system "cmake", "--install", "build"

ENV["RECC_BIN"] = bin/"recc"
system "command envsubst < scripts/wrapper-templates/recc-c++.in > recc-c++"
system "command envsubst < scripts/wrapper-templates/recc-cc.in > recc-cc"
bin.install "recc-c++"
bin.install "recc-cc"

ENV["RECC_CONFIG_PREFIX"] = "$(brew --prefix)/etc"
ENV["RECC_CONFIG_DIRECTORY"] = "\"${RECC_CONFIG_DIRECTORY}\""
ENV["RECC_SERVER"] = "unix://#{var}/recc/casd/casd.sock"
ENV["RECC_INSTANCE"] = "recc-server"
ENV["RECC_REMOTE_PLATFORM_ISA"] = Hardware::CPU.arch.to_s
ENV["RECC_REMOTE_PLATFORM_OS"] = OS.kernel_name.downcase
ENV["RECC_REMOTE_PLATFORM_OS_VERSION"] = OS.kernel_version.to_s
system "command envsubst < scripts/wrapper-templates/recc.conf.in > recc.conf"
etc.install "recc.conf"

bin.install "scripts/wrapper-templates/casd-helper" => "recc-server"
end

service do
run [opt_bin/"recc-server", "--local-server-instance", "recc-server", "#{var}/recc/casd}"]
keep_alive true
working_dir var/"recc"
log_path var/"log/recc-server.log"
error_log_path var/"log/recc-server-error.log"
end

def caveats
<<~EOS
To launch a compiler with recc, set the following variables:
CC=#{opt_bin}/recc-cc
CXX=#{opt_bin}/recc-c++
EOS
end

test do
# Start recc server
recc_cache_dir = testpath/"recc_cache"
recc_cache_dir.mkdir
recc_casd_pid = spawn bin/"recc-server", "--local-server-instance", "recc-server", recc_cache_dir

# Create a source file to test caching
test_file = testpath/"test.c"
test_file.write <<~EOS
int main() {}
EOS

# Wait for the server to start
sleep 2 unless (recc_cache_dir/"casd.sock").exist?

# Override default values of server and log_level
ENV["RECC_SERVER"] = "unix://#{recc_cache_dir}/casd.sock"
ENV["RECC_LOG_LEVEL"] = "info"
recc_test=[bin/"recc-cc", "-c", test_file]

# Compile the test file twice. The second run should get a cache hit
system(*recc_test)
output = shell_output("#{recc_test.join(" ")} 2>&1")
assert_match "Action Cache hit", output

# Stop the server
Process.kill("TERM", recc_casd_pid)
end
end

0 comments on commit c529445

Please sign in to comment.