summaryrefslogtreecommitdiff
path: root/build.py
diff options
context:
space:
mode:
Diffstat (limited to 'build.py')
-rw-r--r--build.py147
1 files changed, 0 insertions, 147 deletions
diff --git a/build.py b/build.py
deleted file mode 100644
index 55dc85f0..00000000
--- a/build.py
+++ /dev/null
@@ -1,147 +0,0 @@
1
2import os
3import sys
4
5# settings
6PathSsjb = "../ssjb"
7Author = "Cuchaz"
8Version = "0.11b"
9
10DirBin = "bin"
11DirLib = "lib"
12DirBuild = "build"
13PathLocalMavenRepo = "../maven"
14
15
16# import ssjb
17sys.path.insert(0, PathSsjb)
18import ssjb
19import ssjb.ivy
20
21
22ArtifactStandalone = ssjb.ivy.Dep("cuchaz:enigma:%s" % Version)
23ArtifactLib = ssjb.ivy.Dep("cuchaz:enigma-lib:%s" % Version)
24
25# dependencies
26ExtraRepos = [
27 "http://maven.cuchazinteractive.com"
28]
29LibDeps = [
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]
34StandaloneDeps = LibDeps + [
35 ssjb.ivy.Dep("de.sciss:syntaxpane:1.1.4")
36]
37ProguardDep = ssjb.ivy.Dep("net.sf.proguard:proguard-base:5.1")
38TestDeps = [
39 ssjb.ivy.Dep("junit:junit:4.12"),
40 ssjb.ivy.Dep("org.hamcrest:hamcrest-all:1.3")
41]
42
43# functions
44
45def buildTestJar(name, glob):
46
47 ssjb.file.mkdir(os.path.join(DirBuild, "test-inputs"))
48 ssjb.file.mkdir(os.path.join(DirBuild, "test-obf"))
49 pathJar = os.path.join(DirBuild, "test-inputs/%s.jar" % name)
50 pathObfJar = os.path.join(DirBuild, "test-obf/%s.jar" % name)
51
52 # build the unobf jar
53 with ssjb.file.TempDir("tmp") as dirTemp:
54 ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin, "cuchaz/enigma/inputs/Keep.class"))
55 ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin, glob))
56 ssjb.jar.makeJar(pathJar, dirTemp)
57
58 # build the obf jar
59 ssjb.callJavaJar(
60 os.path.join(DirLib, "proguard.jar"),
61 ["@proguard-test.conf", "-injars", pathJar, "-outjars", pathObfJar]
62 )
63
64def buildDeobfTestJar(outPath, inPath):
65 ssjb.callJava(
66 [DirBin, os.path.join(DirLib, "deps.jar")],
67 "cuchaz.enigma.CommandMain",
68 ["deobfuscate", inPath, outPath]
69 )
70
71def applyReadme(dirTemp):
72 ssjb.file.copy(dirTemp, "license.APL2.txt")
73 ssjb.file.copy(dirTemp, "license.LGPL3.txt")
74 ssjb.file.copy(dirTemp, "readme.txt")
75
76def buildStandaloneJar(dirOut):
77 with ssjb.file.TempDir(os.path.join(dirOut, "tmp")) as dirTemp:
78 ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin))
79 for path in ssjb.ivy.getJarPaths(StandaloneDeps, ExtraRepos):
80 ssjb.jar.unpackJar(dirTemp, path)
81 ssjb.file.delete(os.path.join(dirTemp, "LICENSE.txt"))
82 ssjb.file.delete(os.path.join(dirTemp, "META-INF/maven"))
83 applyReadme(dirTemp)
84 manifest = ssjb.jar.buildManifest(
85 ArtifactStandalone.artifactId,
86 ArtifactStandalone.version,
87 Author,
88 "cuchaz.enigma.Main"
89 )
90 pathFatJar = os.path.join(DirBuild, "%s-fat.jar" % ArtifactStandalone.getName())
91 ssjb.jar.makeJar(pathFatJar, dirTemp, manifest=manifest)
92
93 # proguard the jar (without obfuscating) to remove some bloat
94 # the guava library is particularly bad...
95 pathDietJar = os.path.join(DirBuild, "%s.jar" % ArtifactStandalone.getName())
96 ssjb.callJavaJar(
97 os.path.join(DirLib, "proguard.jar"),
98 ["@proguard-build.conf", "-injars", pathFatJar, "-outjars", pathDietJar]
99 )
100
101 ssjb.ivy.deployJarToLocalMavenRepo(PathLocalMavenRepo, pathDietJar, ArtifactStandalone)
102
103
104def buildLibJar(dirOut):
105 with ssjb.file.TempDir(os.path.join(dirOut, "tmp")) as dirTemp:
106 ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin))
107 applyReadme(dirTemp)
108 pathJar = os.path.join(DirBuild, "%s.jar" % ArtifactLib.getName())
109 ssjb.jar.makeJar(pathJar, dirTemp)
110 ssjb.ivy.deployJarToLocalMavenRepo(PathLocalMavenRepo, pathJar, ArtifactLib, deps=LibDeps)
111
112
113# tasks
114
115def taskGetDeps():
116 """Get all the Deps."""
117 ssjb.file.mkdir(DirLib)
118 ssjb.ivy.makeLibsJar(os.path.join(DirLib, "deps.jar"), StandaloneDeps, extraRepos=ExtraRepos)
119 ssjb.ivy.makeLibsJar(os.path.join(DirLib, "test-deps.jar"), TestDeps)
120 ssjb.ivy.makeJar(os.path.join(DirLib, "proguard.jar"), ProguardDep)
121
122def taskBuildTestJars():
123 """Build the test jar."""
124 buildTestJar("loneClass", "cuchaz/enigma/inputs/loneClass/*.class")
125 buildTestJar("constructors", "cuchaz/enigma/inputs/constructors/*.class")
126 buildTestJar("inheritanceTree", "cuchaz/enigma/inputs/inheritanceTree/*.class")
127 buildTestJar("innerClasses", "cuchaz/enigma/inputs/innerClasses/*.class")
128 taskBuildTranslationTestJar()
129
130def taskBuildTranslationTestJar():
131 """Build the Translation test jar."""
132 buildTestJar("translation", "cuchaz/enigma/inputs/translation/*.class")
133 buildDeobfTestJar(os.path.join(DirBuild, "test-deobf/translation.jar"), os.path.join(DirBuild, "test-obf/translation.jar"))
134
135def taskBuild():
136 """Build the engima jar."""
137 ssjb.file.delete(DirBuild)
138 ssjb.file.mkdir(DirBuild)
139 buildStandaloneJar(DirBuild)
140 buildLibJar(DirBuild)
141
142ssjb.registerTask("getDeps", taskGetDeps)
143ssjb.registerTask("buildTestJars", taskBuildTestJars)
144ssjb.registerTask("buildTranslationTestJar", taskBuildTranslationTestJar)
145ssjb.registerTask("build", taskBuild)
146ssjb.run()
147