diff options
| author | 2015-05-21 23:30:00 +0100 | |
|---|---|---|
| committer | 2015-05-21 23:30:00 +0100 | |
| commit | e3f452250e51b7271f3989c7dfd12e4422934942 (patch) | |
| tree | 5aa482f9a6e21eb318a3e23e7d8274d77c73faf6 /build.py | |
| download | enigma-e3f452250e51b7271f3989c7dfd12e4422934942.tar.gz enigma-e3f452250e51b7271f3989c7dfd12e4422934942.tar.xz enigma-e3f452250e51b7271f3989c7dfd12e4422934942.zip | |
Support Gradle alongside SSJB
This makes builds faster, simpler and better automated but still keeps
Cuchaz happy. :)
Diffstat (limited to 'build.py')
| -rw-r--r-- | build.py | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/build.py b/build.py new file mode 100644 index 00000000..40da3271 --- /dev/null +++ b/build.py | |||
| @@ -0,0 +1,131 @@ | |||
| 1 | |||
| 2 | import os | ||
| 3 | import sys | ||
| 4 | |||
| 5 | # settings | ||
| 6 | PathSsjb = "../ssjb" | ||
| 7 | Author = "Cuchaz" | ||
| 8 | Version = "0.10.4b" | ||
| 9 | |||
| 10 | DirBin = "bin" | ||
| 11 | DirLib = "lib" | ||
| 12 | DirBuild = "build" | ||
| 13 | PathLocalMavenRepo = "../maven" | ||
| 14 | |||
| 15 | |||
| 16 | # import ssjb | ||
| 17 | sys.path.insert(0, PathSsjb) | ||
| 18 | import ssjb | ||
| 19 | import ssjb.ivy | ||
| 20 | |||
| 21 | |||
| 22 | ArtifactStandalone = ssjb.ivy.Dep("cuchaz:enigma:%s" % Version) | ||
| 23 | ArtifactLib = ssjb.ivy.Dep("cuchaz:enigma-lib:%s" % Version) | ||
| 24 | |||
| 25 | # dependencies | ||
| 26 | ExtraRepos = [ | ||
| 27 | "http://maven.cuchazinteractive.com" | ||
| 28 | ] | ||
| 29 | LibDeps = [ | ||
| 30 | ssjb.ivy.Dep("com.google.guava:guava:17.0"), | ||
| 31 | ssjb.ivy.Dep("org.javassist:javassist:3.19.0-GA"), | ||
| 32 | ssjb.ivy.Dep("org.bitbucket.mstrobel:procyon-decompiler:0.5.28-enigma") | ||
| 33 | ] | ||
| 34 | StandaloneDeps = LibDeps + [ | ||
| 35 | ssjb.ivy.Dep("de.sciss:syntaxpane:1.1.4") | ||
| 36 | ] | ||
| 37 | ProguardDep = ssjb.ivy.Dep("net.sf.proguard:proguard-base:5.1") | ||
| 38 | TestDeps = [ | ||
| 39 | ssjb.ivy.Dep("junit:junit:4.12"), | ||
| 40 | ssjb.ivy.Dep("org.hamcrest:hamcrest-all:1.3") | ||
| 41 | ] | ||
| 42 | |||
| 43 | # functions | ||
| 44 | |||
| 45 | def buildTestJar(name, glob): | ||
| 46 | |||
| 47 | pathJar = os.path.join(DirBuild, "test-inputs/%s.jar" % name) | ||
| 48 | pathObfJar = os.path.join(DirBuild, "test-obf/%s.jar" % name) | ||
| 49 | |||
| 50 | # build the unobf jar | ||
| 51 | with ssjb.file.TempDir("tmp") as dirTemp: | ||
| 52 | ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin, "cuchaz/enigma/inputs/Keep.class")) | ||
| 53 | ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin, glob)) | ||
| 54 | ssjb.jar.makeJar(pathJar, dirTemp) | ||
| 55 | |||
| 56 | # build the obf jar | ||
| 57 | ssjb.callJavaJar( | ||
| 58 | os.path.join(DirLib, "proguard.jar"), | ||
| 59 | ["@proguard-test.conf", "-injars", pathJar, "-outjars", pathObfJar] | ||
| 60 | ) | ||
| 61 | |||
| 62 | def buildDeobfTestJar(outPath, inPath): | ||
| 63 | ssjb.callJava( | ||
| 64 | [DirBin, os.path.join(DirLib, "deps.jar")], | ||
| 65 | "cuchaz.enigma.CommandMain", | ||
| 66 | ["deobfuscate", inPath, outPath] | ||
| 67 | ) | ||
| 68 | |||
| 69 | def applyReadme(dirTemp): | ||
| 70 | ssjb.file.copy(dirTemp, "license.APL2.txt") | ||
| 71 | ssjb.file.copy(dirTemp, "license.LGPL3.txt") | ||
| 72 | ssjb.file.copy(dirTemp, "readme.txt") | ||
| 73 | |||
| 74 | def buildStandaloneJar(dirOut): | ||
| 75 | with ssjb.file.TempDir(os.path.join(dirOut, "tmp")) as dirTemp: | ||
| 76 | ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin)) | ||
| 77 | for path in ssjb.ivy.getJarPaths(StandaloneDeps, ExtraRepos): | ||
| 78 | ssjb.jar.unpackJar(dirTemp, path) | ||
| 79 | ssjb.file.delete(os.path.join(dirTemp, "LICENSE.txt")) | ||
| 80 | ssjb.file.delete(os.path.join(dirTemp, "META-INF/maven")) | ||
| 81 | applyReadme(dirTemp) | ||
| 82 | manifest = ssjb.jar.buildManifest( | ||
| 83 | ArtifactStandalone.artifactId, | ||
| 84 | ArtifactStandalone.version, | ||
| 85 | Author, | ||
| 86 | "cuchaz.enigma.Main" | ||
| 87 | ) | ||
| 88 | pathJar = os.path.join(DirBuild, "%s.jar" % ArtifactStandalone.getName()) | ||
| 89 | ssjb.jar.makeJar(pathJar, dirTemp, manifest=manifest) | ||
| 90 | ssjb.ivy.deployJarToLocalMavenRepo(PathLocalMavenRepo, pathJar, ArtifactStandalone) | ||
| 91 | |||
| 92 | def buildLibJar(dirOut): | ||
| 93 | with ssjb.file.TempDir(os.path.join(dirOut, "tmp")) as dirTemp: | ||
| 94 | ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin)) | ||
| 95 | applyReadme(dirTemp) | ||
| 96 | pathJar = os.path.join(DirBuild, "%s.jar" % ArtifactLib.getName()) | ||
| 97 | ssjb.jar.makeJar(pathJar, dirTemp) | ||
| 98 | ssjb.ivy.deployJarToLocalMavenRepo(PathLocalMavenRepo, pathJar, ArtifactLib, deps=LibDeps) | ||
| 99 | |||
| 100 | |||
| 101 | # tasks | ||
| 102 | |||
| 103 | def taskGetDeps(): | ||
| 104 | ssjb.file.mkdir(DirLib) | ||
| 105 | ssjb.ivy.makeLibsJar(os.path.join(DirLib, "deps.jar"), StandaloneDeps, extraRepos=ExtraRepos) | ||
| 106 | ssjb.ivy.makeLibsJar(os.path.join(DirLib, "test-deps.jar"), TestDeps) | ||
| 107 | ssjb.ivy.makeJar(os.path.join(DirLib, "proguard.jar"), ProguardDep) | ||
| 108 | |||
| 109 | def taskBuildTestJars(): | ||
| 110 | buildTestJar("loneClass", "cuchaz/enigma/inputs/loneClass/*.class") | ||
| 111 | buildTestJar("constructors", "cuchaz/enigma/inputs/constructors/*.class") | ||
| 112 | buildTestJar("inheritanceTree", "cuchaz/enigma/inputs/inheritanceTree/*.class") | ||
| 113 | buildTestJar("innerClasses", "cuchaz/enigma/inputs/innerClasses/*.class") | ||
| 114 | taskBuildTranslationTestJar() | ||
| 115 | |||
| 116 | def taskBuildTranslationTestJar(): | ||
| 117 | buildTestJar("translation", "cuchaz/enigma/inputs/translation/*.class") | ||
| 118 | buildDeobfTestJar(os.path.join(DirBuild, "test-deobf/translation.jar"), os.path.join(DirBuild, "test-obf/translation.jar")) | ||
| 119 | |||
| 120 | def taskBuild(): | ||
| 121 | ssjb.file.delete(DirBuild) | ||
| 122 | ssjb.file.mkdir(DirBuild) | ||
| 123 | buildStandaloneJar(DirBuild) | ||
| 124 | buildLibJar(DirBuild) | ||
| 125 | |||
| 126 | ssjb.registerTask("getDeps", taskGetDeps) | ||
| 127 | ssjb.registerTask("buildTestJars", taskBuildTestJars) | ||
| 128 | ssjb.registerTask("buildTranslationTestJar", taskBuildTranslationTestJar) | ||
| 129 | ssjb.registerTask("build", taskBuild) | ||
| 130 | ssjb.run() | ||
| 131 | |||