summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jeff2015-01-21 00:16:31 -0500
committerGravatar jeff2015-01-21 00:16:31 -0500
commitadfe7f87ffb77fd8285af56140480c242d324de8 (patch)
tree24a42d0015024ac8beb7d379aac7be01ae795baa
parentupdate ignore list so we save the Eclipse build settings (diff)
downloadenigma-fork-adfe7f87ffb77fd8285af56140480c242d324de8.tar.gz
enigma-fork-adfe7f87ffb77fd8285af56140480c242d324de8.tar.xz
enigma-fork-adfe7f87ffb77fd8285af56140480c242d324de8.zip
update build system to make maven artifacts
-rw-r--r--.hgignore1
-rw-r--r--build.py96
-rw-r--r--readme.translate.txt12
-rw-r--r--ssjb.py17
4 files changed, 61 insertions, 65 deletions
diff --git a/.hgignore b/.hgignore
index aa6a93f..659df81 100644
--- a/.hgignore
+++ b/.hgignore
@@ -6,3 +6,4 @@ build
6data 6data
7input 7input
8ivy 8ivy
9*.pyc \ No newline at end of file
diff --git a/build.py b/build.py
index b9d1121..2868b75 100644
--- a/build.py
+++ b/build.py
@@ -3,67 +3,61 @@ import os
3import ssjb 3import ssjb
4 4
5# settings 5# settings
6projectName = "enigma" 6GroupId = "cuchaz"
7version = "0.6b" 7ProjectName = "enigma"
8author = "Cuchaz" 8Version = "0.6b"
9Author = "Cuchaz"
9 10
10dirBin = "bin" 11DirBin = "bin"
11dirBuild = "build" 12DirBuild = "build"
12dirTemp = os.path.join(dirBuild, "tmp") 13DirTemp = os.path.join(DirBuild, "tmp")
14PathLocalMavenRepo = "../maven"
13 15
14 16
15def getJarFullName(name=None) : 17def getJarFullName(name=None) :
16 if name is not None: 18 if name is not None:
17 return "%s-%s-%s.jar" % (projectName, name, version) 19 return "%s-%s-%s.jar" % (ProjectName, name, Version)
18 else: 20 else:
19 return "%s-%s.jar" % (projectName, version) 21 return "%s-%s.jar" % (ProjectName, Version)
20 22
21def buildGuiJar(): 23def buildJar():
22 jarName = "gui" 24 os.makedirs(DirTemp)
23 os.makedirs(dirTemp) 25 ssjb.copyFiles(DirTemp, DirBin, ssjb.findFiles(DirBin))
24 ssjb.copyFiles(dirTemp, dirBin, ssjb.findFiles(dirBin)) 26 # TODO: teach ssjb where to find ivy jars
25 ssjb.unpackJars(dirTemp, "ivy/bundles", recursive=True) 27 ssjb.unpackJars(DirTemp, "ivy/bundles", recursive=True)
26 ssjb.unpackJars(dirTemp, "ivy/jars", recursive=True) 28 ssjb.unpackJars(DirTemp, "ivy/jars", recursive=True)
27 ssjb.unpackJars(dirTemp, "libs", recursive=True) 29 ssjb.unpackJars(DirTemp, "libs", recursive=True)
28 ssjb.delete(os.path.join(dirTemp, "LICENSE.txt")) 30 ssjb.delete(os.path.join(DirTemp, "LICENSE.txt"))
29 ssjb.copyFile(dirTemp, "license.APL2.txt") 31 ssjb.delete(os.path.join(DirTemp, "META-INF/maven"))
30 ssjb.copyFile(dirTemp, "license.GPL3.txt") 32 ssjb.copyFile(DirTemp, "license.APL2.txt")
31 ssjb.copyFile(dirTemp, "readme.txt") 33 ssjb.copyFile(DirTemp, "license.GPL3.txt")
32 manifest = ssjb.buildManifest(projectName, version, author, "cuchaz.enigma.Main") 34 ssjb.copyFile(DirTemp, "readme.txt")
33 ssjb.jar(os.path.join(dirBuild, getJarFullName()), dirTemp, manifest=manifest) 35 manifest = ssjb.buildManifest(ProjectName, Version, Author, "cuchaz.enigma.Main")
34 ssjb.delete(dirTemp) 36 ssjb.jar(os.path.join(DirBuild, getJarFullName()), DirTemp, manifest=manifest)
35 37 ssjb.delete(DirTemp)
36def buildTranslateJar(): 38 ssjb.deployJarToLocalMavenRepo(
37 jarName = "translate" 39 PathLocalMavenRepo,
38 os.makedirs(dirTemp) 40 getJarFullName(),
39 files = ssjb.findFiles(dirBin, "cuchaz/enigma/mapping/*") 41 "%s:%s:%s" % (GroupId, ProjectName, Version)
40 files += ssjb.findFiles(dirBin, "cuchaz/enigma/bytecode/*") 42 )
41 ssjb.copyFiles(dirTemp, dirBin, files)
42 ssjb.copyFile(dirTemp, "license.GPL3.txt", renameTo="license.txt")
43 ssjb.copyFile(dirTemp, "readme.translate.txt", renameTo="readme.txt")
44 manifest = ssjb.buildManifest("%s-%s" % (projectName, jarName), version, author)
45 ssjb.jar(os.path.join(dirBuild, getJarFullName(jarName)), dirTemp, manifest=manifest)
46 ssjb.delete(dirTemp)
47 43
48def taskMain(): 44def taskMain():
49 ssjb.delete(dirBuild) 45 ssjb.delete(DirBuild)
50 os.makedirs(dirBuild) 46 os.makedirs(DirBuild)
51 buildGuiJar() 47 buildJar()
52 buildTranslateJar()
53
54 48
55def makeTestJar(name, glob): 49def makeTestJar(name, glob):
56 50
57 pathJar = os.path.join(dirBuild, "%s.jar" % name) 51 pathJar = os.path.join(DirBuild, "%s.jar" % name)
58 pathObfJar = os.path.join(dirBuild, "%s.obf.jar" % name) 52 pathObfJar = os.path.join(DirBuild, "%s.obf.jar" % name)
59 53
60 # build the deobf jar 54 # build the deobf jar
61 ssjb.delete(dirTemp) 55 ssjb.delete(DirTemp)
62 os.makedirs(dirTemp) 56 os.makedirs(DirTemp)
63 ssjb.copyFiles(dirTemp, dirBin, ssjb.findFiles(dirBin, "cuchaz/enigma/inputs/Keep.class")) 57 ssjb.copyFiles(DirTemp, DirBin, ssjb.findFiles(DirBin, "cuchaz/enigma/inputs/Keep.class"))
64 ssjb.copyFiles(dirTemp, dirBin, ssjb.findFiles(dirBin, glob)) 58 ssjb.copyFiles(DirTemp, DirBin, ssjb.findFiles(DirBin, glob))
65 ssjb.jar(pathJar, dirTemp) 59 ssjb.jar(pathJar, DirTemp)
66 ssjb.delete(dirTemp) 60 ssjb.delete(DirTemp)
67 61
68 # build the obf jar 62 # build the obf jar
69 ssjb.callJavaJar("libs/proguard.jar", ["@proguard.conf", "-injars", pathJar, "-outjars", pathObfJar]) 63 ssjb.callJavaJar("libs/proguard.jar", ["@proguard.conf", "-injars", pathJar, "-outjars", pathObfJar])
@@ -74,10 +68,8 @@ def taskBuildTestJars():
74 makeTestJar("testInheritanceTree", "cuchaz/enigma/inputs/inheritanceTree/*.class") 68 makeTestJar("testInheritanceTree", "cuchaz/enigma/inputs/inheritanceTree/*.class")
75 makeTestJar("testInnerClasses", "cuchaz/enigma/inputs/innerClasses/*.class") 69 makeTestJar("testInnerClasses", "cuchaz/enigma/inputs/innerClasses/*.class")
76 70
71
77ssjb.registerTask("main", taskMain) 72ssjb.registerTask("main", taskMain)
78ssjb.registerTask("buildTestJars", taskBuildTestJars) 73ssjb.registerTask("buildTestJars", taskBuildTestJars)
79 74ssjb.run()
80
81if __name__ == "__main__":
82 ssjb.run()
83 75
diff --git a/readme.translate.txt b/readme.translate.txt
deleted file mode 100644
index 455d16e..0000000
--- a/readme.translate.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1
2Enigma v0.6 beta
3A tool for deobfuscation of Java bytecode
4
5Copyright Jeff Martin, 2014
6
7
8LICENSE
9
10Enigma is distributed under the GNU General Public license version 3
11
12A copy of the GNU General Public license verion 3 has been included in this distribution.
diff --git a/ssjb.py b/ssjb.py
index 7f051cc..fa98c82 100644
--- a/ssjb.py
+++ b/ssjb.py
@@ -1,7 +1,6 @@
1 1
2# stupidly simple jar builder 2# stupidly simple jar builder
3# Jeff Martin 3# Jeff Martin
4# 2015-01-05
5 4
6import os 5import os
7import sys 6import sys
@@ -168,3 +167,19 @@ def callJava(classpath, className, javaArgs):
168def callJavaJar(jar, javaArgs): 167def callJavaJar(jar, javaArgs):
169 subprocess.call(["java", "-jar", jar] + javaArgs) 168 subprocess.call(["java", "-jar", jar] + javaArgs)
170 169
170def deployJarToLocalMavenRepo(pathLocalRepo, pathJar, artifactDesc):
171
172 # parse the artifact description
173 (groupId, artifactId, version) = artifactDesc.split(":")
174
175 args = ["mvn", "install:install-file",
176 "-Dmaven.repo.local=%s" % pathLocalRepo,
177 "-Dfile=%s" % pathJar,
178 "-Dpackaging=jar",
179 "-DgroupId=%s" % groupId,
180 "-DartifactId=%s" % artifactId,
181 "-Dversion=%s" % version
182 ]
183 subprocess.call(args)
184 print "Deployed Maven artifact %s to %s" % (artifactDesc, pathLocalRepo)
185