diff options
| author | 2015-01-24 15:31:59 -0500 | |
|---|---|---|
| committer | 2015-01-24 15:31:59 -0500 | |
| commit | c8b77b7444cd6ebd30f34ec31e32447d12b94b9c (patch) | |
| tree | c1a53bbf48cb1b7d1f9775c9f722a6081d86093f | |
| parent | switched to new and improved ssjb (diff) | |
| download | enigma-c8b77b7444cd6ebd30f34ec31e32447d12b94b9c.tar.gz enigma-c8b77b7444cd6ebd30f34ec31e32447d12b94b9c.tar.xz enigma-c8b77b7444cd6ebd30f34ec31e32447d12b94b9c.zip | |
finish build script
| -rw-r--r-- | build.py | 98 |
1 files changed, 45 insertions, 53 deletions
| @@ -4,9 +4,6 @@ import sys | |||
| 4 | 4 | ||
| 5 | # settings | 5 | # settings |
| 6 | PathSsjb = "../ssjb" | 6 | PathSsjb = "../ssjb" |
| 7 | GroupId = "cuchaz" | ||
| 8 | ProjectName = "enigma" | ||
| 9 | Version = "0.6b" | ||
| 10 | Author = "Cuchaz" | 7 | Author = "Cuchaz" |
| 11 | 8 | ||
| 12 | DirBin = "bin" | 9 | DirBin = "bin" |
| @@ -15,12 +12,15 @@ DirBuild = "build" | |||
| 15 | DirTemp = os.path.join(DirBuild, "tmp") | 12 | DirTemp = os.path.join(DirBuild, "tmp") |
| 16 | PathLocalMavenRepo = "../maven" | 13 | PathLocalMavenRepo = "../maven" |
| 17 | 14 | ||
| 15 | |||
| 18 | # import ssjb | 16 | # import ssjb |
| 19 | sys.path.insert(0, PathSsjb) | 17 | sys.path.insert(0, PathSsjb) |
| 20 | import ssjb | 18 | import ssjb |
| 21 | import ssjb.ivy | 19 | import ssjb.ivy |
| 22 | 20 | ||
| 23 | 21 | ||
| 22 | ThisArtifact = ssjb.ivy.Dep("cuchaz:enigma:0.6b") | ||
| 23 | |||
| 24 | # dependencies | 24 | # dependencies |
| 25 | ExtraRepos = [ | 25 | ExtraRepos = [ |
| 26 | "http://maven.cuchazinteractive.com" | 26 | "http://maven.cuchazinteractive.com" |
| @@ -31,9 +31,7 @@ Deps = [ | |||
| 31 | ssjb.ivy.Dep("org.javassist:javassist:3.18.1-GA"), | 31 | ssjb.ivy.Dep("org.javassist:javassist:3.18.1-GA"), |
| 32 | ssjb.ivy.Dep("org.bitbucket.mstrobel:procyon-decompiler:0.5.26-enigma") | 32 | ssjb.ivy.Dep("org.bitbucket.mstrobel:procyon-decompiler:0.5.26-enigma") |
| 33 | ] | 33 | ] |
| 34 | ProguardDeps = [ | 34 | ProguardDep = ssjb.ivy.Dep("net.sf.proguard:proguard-base:5.1") |
| 35 | ssjb.ivy.Dep("net.sf.proguard:proguard-base:5.1") | ||
| 36 | ] | ||
| 37 | TestDeps = [ | 35 | TestDeps = [ |
| 38 | ssjb.ivy.Dep("junit:junit:4.12"), | 36 | ssjb.ivy.Dep("junit:junit:4.12"), |
| 39 | ssjb.ivy.Dep("org.hamcrest:hamcrest-all:1.3") | 37 | ssjb.ivy.Dep("org.hamcrest:hamcrest-all:1.3") |
| @@ -41,51 +39,16 @@ TestDeps = [ | |||
| 41 | 39 | ||
| 42 | # functions | 40 | # functions |
| 43 | 41 | ||
| 44 | def getJarFullName(name=None) : | 42 | def buildTestJar(name, glob): |
| 45 | if name is not None: | ||
| 46 | return "%s-%s-%s.jar" % (ProjectName, name, Version) | ||
| 47 | else: | ||
| 48 | return "%s-%s.jar" % (ProjectName, Version) | ||
| 49 | |||
| 50 | def buildJar(): | ||
| 51 | os.makedirs(DirTemp) | ||
| 52 | ssjb.copyFiles(DirTemp, DirBin, ssjb.findFiles(DirBin)) | ||
| 53 | # TODO: teach ssjb where to find ivy jars | ||
| 54 | ssjb.unpackJars(DirTemp, "ivy/bundles", recursive=True) | ||
| 55 | ssjb.unpackJars(DirTemp, "ivy/jars", recursive=True) | ||
| 56 | ssjb.unpackJars(DirTemp, "libs", recursive=True) | ||
| 57 | ssjb.delete(os.path.join(DirTemp, "LICENSE.txt")) | ||
| 58 | ssjb.delete(os.path.join(DirTemp, "META-INF/maven")) | ||
| 59 | ssjb.copyFile(DirTemp, "license.APL2.txt") | ||
| 60 | ssjb.copyFile(DirTemp, "license.GPL3.txt") | ||
| 61 | ssjb.copyFile(DirTemp, "readme.txt") | ||
| 62 | manifest = ssjb.buildManifest(ProjectName, Version, Author, "cuchaz.enigma.Main") | ||
| 63 | pathJar = os.path.join(DirBuild, getJarFullName()) | ||
| 64 | ssjb.jar(pathJar, DirTemp, manifest=manifest) | ||
| 65 | ssjb.delete(DirTemp) | ||
| 66 | ssjb.deployJarToLocalMavenRepo( | ||
| 67 | PathLocalMavenRepo, | ||
| 68 | pathJar, | ||
| 69 | "%s:%s:%s" % (GroupId, ProjectName, Version) | ||
| 70 | ) | ||
| 71 | |||
| 72 | def taskMain(): | ||
| 73 | ssjb.delete(DirBuild) | ||
| 74 | os.makedirs(DirBuild) | ||
| 75 | buildJar() | ||
| 76 | |||
| 77 | def makeTestJar(name, glob): | ||
| 78 | 43 | ||
| 79 | pathJar = os.path.join(DirBuild, "%s.jar" % name) | 44 | pathJar = os.path.join(DirBuild, "%s.jar" % name) |
| 80 | pathObfJar = os.path.join(DirBuild, "%s.obf.jar" % name) | 45 | pathObfJar = os.path.join(DirBuild, "%s.obf.jar" % name) |
| 81 | 46 | ||
| 82 | # build the deobf jar | 47 | # build the deobf jar |
| 83 | ssjb.file.delete(DirTemp) | 48 | with ssjb.file.TempDir(DirTemp) as dirTemp: |
| 84 | ssjb.file.mkdir(DirTemp) | 49 | ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin, "cuchaz/enigma/inputs/Keep.class")) |
| 85 | ssjb.file.copyTree(DirTemp, DirBin, ssjb.file.find(DirBin, "cuchaz/enigma/inputs/Keep.class")) | 50 | ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin, glob)) |
| 86 | ssjb.file.copyTree(DirTemp, DirBin, ssjb.file.find(DirBin, glob)) | 51 | ssjb.jar.makeJar(pathJar, dirTemp) |
| 87 | ssjb.jar.makeJar(pathJar, DirTemp) | ||
| 88 | ssjb.file.delete(DirTemp) | ||
| 89 | 52 | ||
| 90 | # build the obf jar | 53 | # build the obf jar |
| 91 | ssjb.callJavaJar( | 54 | ssjb.callJavaJar( |
| @@ -100,17 +63,46 @@ def taskGetDeps(): | |||
| 100 | ssjb.file.mkdir(DirLib) | 63 | ssjb.file.mkdir(DirLib) |
| 101 | ssjb.ivy.makeLibsJar(os.path.join(DirLib, "deps.jar"), Deps, extraRepos=ExtraRepos) | 64 | ssjb.ivy.makeLibsJar(os.path.join(DirLib, "deps.jar"), Deps, extraRepos=ExtraRepos) |
| 102 | ssjb.ivy.makeLibsJar(os.path.join(DirLib, "test-deps.jar"), TestDeps) | 65 | ssjb.ivy.makeLibsJar(os.path.join(DirLib, "test-deps.jar"), TestDeps) |
| 103 | ssjb.ivy.makeJar(os.path.join(DirLib, "proguard.jar"), ProguardDeps) | 66 | ssjb.ivy.makeJar(os.path.join(DirLib, "proguard.jar"), ProguardDep) |
| 104 | 67 | ||
| 105 | def taskBuildTestJars(): | 68 | def taskBuildTestJars(): |
| 106 | makeTestJar("testLoneClass", "cuchaz/enigma/inputs/loneClass/*.class") | 69 | buildTestJar("testLoneClass", "cuchaz/enigma/inputs/loneClass/*.class") |
| 107 | makeTestJar("testConstructors", "cuchaz/enigma/inputs/constructors/*.class") | 70 | buildTestJar("testConstructors", "cuchaz/enigma/inputs/constructors/*.class") |
| 108 | makeTestJar("testInheritanceTree", "cuchaz/enigma/inputs/inheritanceTree/*.class") | 71 | buildTestJar("testInheritanceTree", "cuchaz/enigma/inputs/inheritanceTree/*.class") |
| 109 | makeTestJar("testInnerClasses", "cuchaz/enigma/inputs/innerClasses/*.class") | 72 | buildTestJar("testInnerClasses", "cuchaz/enigma/inputs/innerClasses/*.class") |
| 110 | 73 | ||
| 74 | def taskBuild(): | ||
| 75 | |||
| 76 | # make the build directory | ||
| 77 | ssjb.file.delete(DirBuild) | ||
| 78 | ssjb.file.mkdir(DirBuild) | ||
| 79 | |||
| 80 | # make the main jar | ||
| 81 | with ssjb.file.TempDir(DirTemp) as dirTemp: | ||
| 82 | ssjb.file.copyTree(dirTemp, DirBin, ssjb.file.find(DirBin)) | ||
| 83 | ssjb.jar.unpackJar(dirTemp, os.path.join(DirLib, "deps.jar")) | ||
| 84 | ssjb.file.delete(os.path.join(dirTemp, "LICENSE.txt")) | ||
| 85 | ssjb.file.delete(os.path.join(dirTemp, "META-INF/maven")) | ||
| 86 | ssjb.file.copy(dirTemp, "license.APL2.txt") | ||
| 87 | ssjb.file.copy(dirTemp, "license.GPL3.txt") | ||
| 88 | ssjb.file.copy(dirTemp, "readme.txt") | ||
| 89 | manifest = ssjb.jar.buildManifest( | ||
| 90 | ThisArtifact.artifactId, | ||
| 91 | ThisArtifact.version, | ||
| 92 | Author, | ||
| 93 | "cuchaz.enigma.Main" | ||
| 94 | ) | ||
| 95 | pathJar = os.path.join(DirBuild, "%s.jar" % ThisArtifact.getName()) | ||
| 96 | ssjb.jar.makeJar(pathJar, dirTemp, manifest=manifest) | ||
| 97 | |||
| 98 | ssjb.ivy.deployJarToLocalMavenRepo( | ||
| 99 | PathLocalMavenRepo, | ||
| 100 | pathJar, | ||
| 101 | ThisArtifact | ||
| 102 | ) | ||
| 111 | 103 | ||
| 112 | ssjb.registerTask("getDeps", taskGetDeps) | 104 | ssjb.registerTask("getDeps", taskGetDeps) |
| 113 | ssjb.registerTask("main", taskMain) | ||
| 114 | ssjb.registerTask("buildTestJars", taskBuildTestJars) | 105 | ssjb.registerTask("buildTestJars", taskBuildTestJars) |
| 106 | ssjb.registerTask("build", taskBuild) | ||
| 115 | ssjb.run() | 107 | ssjb.run() |
| 116 | 108 | ||