diff options
| author | 2015-01-21 00:16:31 -0500 | |
|---|---|---|
| committer | 2015-01-21 00:16:31 -0500 | |
| commit | adfe7f87ffb77fd8285af56140480c242d324de8 (patch) | |
| tree | 24a42d0015024ac8beb7d379aac7be01ae795baa | |
| parent | update ignore list so we save the Eclipse build settings (diff) | |
| download | enigma-fork-adfe7f87ffb77fd8285af56140480c242d324de8.tar.gz enigma-fork-adfe7f87ffb77fd8285af56140480c242d324de8.tar.xz enigma-fork-adfe7f87ffb77fd8285af56140480c242d324de8.zip | |
update build system to make maven artifacts
| -rw-r--r-- | .hgignore | 1 | ||||
| -rw-r--r-- | build.py | 96 | ||||
| -rw-r--r-- | readme.translate.txt | 12 | ||||
| -rw-r--r-- | ssjb.py | 17 |
4 files changed, 61 insertions, 65 deletions
| @@ -6,3 +6,4 @@ build | |||
| 6 | data | 6 | data |
| 7 | input | 7 | input |
| 8 | ivy | 8 | ivy |
| 9 | *.pyc \ No newline at end of file | ||
| @@ -3,67 +3,61 @@ import os | |||
| 3 | import ssjb | 3 | import ssjb |
| 4 | 4 | ||
| 5 | # settings | 5 | # settings |
| 6 | projectName = "enigma" | 6 | GroupId = "cuchaz" |
| 7 | version = "0.6b" | 7 | ProjectName = "enigma" |
| 8 | author = "Cuchaz" | 8 | Version = "0.6b" |
| 9 | Author = "Cuchaz" | ||
| 9 | 10 | ||
| 10 | dirBin = "bin" | 11 | DirBin = "bin" |
| 11 | dirBuild = "build" | 12 | DirBuild = "build" |
| 12 | dirTemp = os.path.join(dirBuild, "tmp") | 13 | DirTemp = os.path.join(DirBuild, "tmp") |
| 14 | PathLocalMavenRepo = "../maven" | ||
| 13 | 15 | ||
| 14 | 16 | ||
| 15 | def getJarFullName(name=None) : | 17 | def 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 | ||
| 21 | def buildGuiJar(): | 23 | def 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) | |
| 36 | def 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 | ||
| 48 | def taskMain(): | 44 | def 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 | ||
| 55 | def makeTestJar(name, glob): | 49 | def 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 | |||
| 77 | ssjb.registerTask("main", taskMain) | 72 | ssjb.registerTask("main", taskMain) |
| 78 | ssjb.registerTask("buildTestJars", taskBuildTestJars) | 73 | ssjb.registerTask("buildTestJars", taskBuildTestJars) |
| 79 | 74 | ssjb.run() | |
| 80 | |||
| 81 | if __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 | |||
| 2 | Enigma v0.6 beta | ||
| 3 | A tool for deobfuscation of Java bytecode | ||
| 4 | |||
| 5 | Copyright Jeff Martin, 2014 | ||
| 6 | |||
| 7 | |||
| 8 | LICENSE | ||
| 9 | |||
| 10 | Enigma is distributed under the GNU General Public license version 3 | ||
| 11 | |||
| 12 | A copy of the GNU General Public license verion 3 has been included in this distribution. | ||
| @@ -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 | ||
| 6 | import os | 5 | import os |
| 7 | import sys | 6 | import sys |
| @@ -168,3 +167,19 @@ def callJava(classpath, className, javaArgs): | |||
| 168 | def callJavaJar(jar, javaArgs): | 167 | def callJavaJar(jar, javaArgs): |
| 169 | subprocess.call(["java", "-jar", jar] + javaArgs) | 168 | subprocess.call(["java", "-jar", jar] + javaArgs) |
| 170 | 169 | ||
| 170 | def 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 | |||