homebrew-core/Formula/radare2.rb
Alex Kornitzer fd015ea58c radare2: Added signing option
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>
2016-08-22 20:12:28 -05:00

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