summaryrefslogtreecommitdiff
path: root/build.py
diff options
context:
space:
mode:
Diffstat (limited to 'build.py')
-rw-r--r--build.py131
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
2import os
3import sys
4
5# settings
6PathSsjb = "../ssjb"
7Author = "Cuchaz"
8Version = "0.10.4b"
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 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
62def buildDeobfTestJar(outPath, inPath):
63 ssjb.callJava(
64 [DirBin, os.path.join(DirLib, "deps.jar")],
65 "cuchaz.enigma.CommandMain",
66 ["deobfuscate", inPath, outPath]
67 )
68
69def 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
74def 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
92def 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
103def 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
109def 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
116def 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
120def taskBuild():
121 ssjb.file.delete(DirBuild)
122 ssjb.file.mkdir(DirBuild)
123 buildStandaloneJar(DirBuild)
124 buildLibJar(DirBuild)
125
126ssjb.registerTask("getDeps", taskGetDeps)
127ssjb.registerTask("buildTestJars", taskBuildTestJars)
128ssjb.registerTask("buildTranslationTestJar", taskBuildTranslationTestJar)
129ssjb.registerTask("build", taskBuild)
130ssjb.run()
131