fd015ea58c
Added the option to sign the build, it uses the built in commands from the radare2 Makefile. In order for it to succeed the org.radare.radare2 certificate must exist in the keychain. The process is defined in https://github.com/radare/radare2/blob/master/doc/osx.md Closes #3838. Signed-off-by: Andrew Janke <janke@eilonwy.local>
130 lines
4.1 KiB
Ruby
130 lines
4.1 KiB
Ruby
class CodesignRequirement < Requirement
|
|
include FileUtils
|
|
fatal true
|
|
|
|
satisfy(:build_env => false) do
|
|
mktemp do
|
|
cp "/usr/bin/false", "radare2_check"
|
|
quiet_system "/usr/bin/codesign", "-f", "-s", "org.radare.radare2", "--dryrun", "radare2_check"
|
|
end
|
|
end
|
|
|
|
def message
|
|
<<-EOS.undent
|
|
org.radare.radare2 identity must be available to build with automated signing.
|
|
See: https://github.com/radare/radare2/blob/master/doc/osx.md
|
|
EOS
|
|
end
|
|
end
|
|
|
|
class Radare2 < Formula
|
|
desc "Reverse engineering framework"
|
|
homepage "http://radare.org"
|
|
|
|
stable do
|
|
url "http://www.radare.org/get/radare2-0.10.5.tar.xz"
|
|
sha256 "e534e89b1ddc06b962766fab1d9a8c6957ce1eeac4b6babdd0cd3345c6d14ca5"
|
|
|
|
resource "bindings" do
|
|
url "http://www.radare.org/get/radare2-bindings-0.10.5.tar.xz"
|
|
sha256 "04eb9a31e752d393e240a5d2e77f6313f1e5b7ccf7471e6fea2d346781173fb1"
|
|
end
|
|
|
|
resource "extras" do
|
|
url "http://www.radare.org/get/radare2-extras-0.10.5.tar.xz"
|
|
sha256 "2dd23a4ab8f787f47b22cdd0df76d7b575a80e9afaf0ee95a553deaaba65e6f6"
|
|
end
|
|
end
|
|
|
|
bottle do
|
|
sha256 "9eb9eb34f22803323480de1af7ca57336cda9d51429901772b94d1d223a0d10f" => :el_capitan
|
|
sha256 "9795fb8f8091df0cb505767d6cb9c2f6c7b9f9a0b3d19d99778cf0c86c2bfa46" => :yosemite
|
|
sha256 "faef9e723a152abaf0e1e11dba293a203a1801fd7e2c8420ce59fc83ad5546c7" => :mavericks
|
|
end
|
|
|
|
head do
|
|
url "https://github.com/radare/radare2.git"
|
|
|
|
resource "bindings" do
|
|
url "https://github.com/radare/radare2-bindings.git"
|
|
end
|
|
|
|
resource "extras" do
|
|
url "https://github.com/radare/radare2-extras.git"
|
|
end
|
|
end
|
|
|
|
option "with-code-signing", "Codesign executables to provide unprivileged process attachment"
|
|
|
|
depends_on "pkg-config" => :build
|
|
depends_on "valabind" => :build
|
|
depends_on "swig" => :build
|
|
depends_on "gobject-introspection" => :build
|
|
depends_on "gmp"
|
|
depends_on "libewf"
|
|
depends_on "libmagic"
|
|
depends_on "lua51" # It seems to latch onto Lua51 rather than Lua. Enquire this upstream.
|
|
depends_on "openssl"
|
|
depends_on "yara"
|
|
|
|
depends_on CodesignRequirement if build.with? "code-signing"
|
|
|
|
def install
|
|
# Build Radare2 before bindings, otherwise compile = nope.
|
|
system "./configure", "--prefix=#{prefix}", "--with-openssl"
|
|
system "make", "CS_PATCHES=0"
|
|
if build.with? "code-signing"
|
|
# Brew changes the HOME directory which breaks codesign
|
|
home = `eval printf "~$USER"`
|
|
system "make", "HOME=#{home}", "-C", "binr/radare2", "osxsign"
|
|
system "make", "HOME=#{home}", "-C", "binr/radare2", "osx-sign-libs"
|
|
end
|
|
system "make", "install"
|
|
|
|
resource("extras").stage do
|
|
ENV.append_path "PATH", bin
|
|
ENV.append_path "PKG_CONFIG_PATH", "#{lib}/pkgconfig"
|
|
|
|
system "./configure", "--prefix=#{prefix}"
|
|
system "make", "all"
|
|
system "make", "install"
|
|
end
|
|
|
|
resource("bindings").stage do
|
|
ENV.append_path "PATH", bin
|
|
ENV.append_path "PKG_CONFIG_PATH", "#{lib}/pkgconfig"
|
|
|
|
# Language versions.
|
|
perl_version = `/usr/bin/perl -e 'printf "%vd", $^V;'`
|
|
lua_version = "5.1"
|
|
|
|
# Lazily bind to Python.
|
|
inreplace "do-swig.sh", "VALABINDFLAGS=\"\"", "VALABINDFLAGS=\"--nolibpython\""
|
|
make_binding_args = ["CFLAGS=-undefined dynamic_lookup"]
|
|
|
|
# Ensure that plugins and bindings are installed in the correct Cellar
|
|
# paths.
|
|
inreplace "libr/lang/p/Makefile", "R2_PLUGIN_PATH=", "#R2_PLUGIN_PATH="
|
|
inreplace "Makefile", "LUAPKG=", "#LUAPKG="
|
|
inreplace "Makefile", "${DESTDIR}$$_LUADIR", "#{lib}/lua/#{lua_version}"
|
|
make_install_args = %W[
|
|
R2_PLUGIN_PATH=#{lib}/radare2/#{version}
|
|
LUAPKG=lua-#{lua_version}
|
|
PERLPATH=#{lib}/perl5/site_perl/#{perl_version}
|
|
PYTHON_PKGDIR=#{lib}/python2.7/site-packages
|
|
RUBYPATH=#{lib}/ruby/#{RUBY_VERSION}
|
|
]
|
|
|
|
system "./configure", "--prefix=#{prefix}"
|
|
["lua", "perl", "python"].each do |binding|
|
|
system "make", "-C", binding, *make_binding_args
|
|
end
|
|
system "make"
|
|
system "make", "install", *make_install_args
|
|
end
|
|
end
|
|
|
|
test do
|
|
assert_match "radare2 #{version}", shell_output("#{bin}/r2 -version")
|
|
end
|
|
end
|