aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Ryabov2014-11-24 15:20:21 +0300
committerMike McQuaid2014-11-25 11:42:14 +0000
commit70ecaa706fb51ff3f581c0fabd444756037d943f (patch)
treec7ace0f706f62bd54d45c363e3ca48f09de92a89
parent04771ec883405e19be04ea4e8967f38e56b5b786 (diff)
downloadhomebrew-70ecaa706fb51ff3f581c0fabd444756037d943f.tar.bz2
smali 2.0.3 (new formula)
smali/baksmali is an assembler/disassembler for the dex format used by dalvik, Android's Java VM implementation. Closes #34414. Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
-rw-r--r--Library/Formula/smali.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/Library/Formula/smali.rb b/Library/Formula/smali.rb
new file mode 100644
index 000000000..b547bd32e
--- /dev/null
+++ b/Library/Formula/smali.rb
@@ -0,0 +1,63 @@
+require "formula"
+
+class Smali < Formula
+ homepage "http://smali.googlecode.com/"
+ url "https://bitbucket.org/JesusFreke/smali/downloads/smali-2.0.3.jar", :using => :nounzip
+ sha1 "42774f5d949add1739299785feb83f3dec32f240"
+
+ resource "baksmali-jar" do
+ url "https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.0.3.jar", :using => :nounzip
+ sha1 "39d860bc2539753c8575f39879cf8d515e1c1cb9"
+ end
+
+ resource "baksmali" do
+ url "https://bitbucket.org/JesusFreke/smali/downloads/baksmali", :using => :nounzip
+ sha1 "9f7a87ee158b89f9d376ba7de09e0bea39e0cad0"
+ end
+
+ resource "smali" do
+ url "https://bitbucket.org/JesusFreke/smali/downloads/smali", :using => :nounzip
+ sha1 "26423d6a1d882d3feac0fd0b93ddae0ab134551f"
+ end
+
+ def install
+ resource("baksmali-jar").stage {
+ libexec.install "baksmali-2.0.3.jar" => "baksmali.jar"
+ }
+ libexec.install resource("smali"), resource("baksmali"), "smali-2.0.3.jar" => "smali.jar"
+
+ inreplace "#{libexec}/smali" do |s|
+ s.gsub! /^libdir=.*$/, "libdir=\"#{libexec}\""
+ end
+ inreplace "#{libexec}/baksmali" do |s|
+ s.gsub! /^libdir=.*$/, "libdir=\"#{libexec}\""
+ end
+
+ chmod 0755, "#{libexec}/smali"
+ chmod 0755, "#{libexec}/baksmali"
+
+ bin.install_symlink libexec/"smali"
+ bin.install_symlink libexec/"baksmali"
+ end
+
+ test do
+ # From examples/HelloWorld/HelloWorld.smali in Smali project repo.
+ # See https://bitbucket.org/JesusFreke/smali/src/2d8cbfe6bc2d8ff2fcd7a0bf432cc808d842da4a/examples/HelloWorld/HelloWorld.smali?at=master
+ (testpath/"input.smali").write <<-EOS.undent
+ .class public LHelloWorld;
+ .super Ljava/lang/Object;
+
+ .method public static main([Ljava/lang/String;)V
+ .registers 2
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Hello World!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+ .end method
+ EOS
+
+ system "#{bin}/smali", "-o", "classes.dex", "input.smali"
+ system "#{bin}/baksmali", "-o", pwd, "classes.dex"
+ assert File.read("HelloWorld.smali").include?("Hello World!")
+ end
+end