From adfe7f87ffb77fd8285af56140480c242d324de8 Mon Sep 17 00:00:00 2001 From: jeff Date: Wed, 21 Jan 2015 00:16:31 -0500 Subject: update build system to make maven artifacts --- .hgignore | 1 + build.py | 96 ++++++++++++++++++++++++---------------------------- readme.translate.txt | 12 ------- ssjb.py | 17 +++++++++- 4 files changed, 61 insertions(+), 65 deletions(-) delete mode 100644 readme.translate.txt diff --git a/.hgignore b/.hgignore index aa6a93f..659df81 100644 --- a/.hgignore +++ b/.hgignore @@ -6,3 +6,4 @@ build data input ivy +*.pyc \ No newline at end of file diff --git a/build.py b/build.py index b9d1121..2868b75 100644 --- a/build.py +++ b/build.py @@ -3,67 +3,61 @@ import os import ssjb # settings -projectName = "enigma" -version = "0.6b" -author = "Cuchaz" +GroupId = "cuchaz" +ProjectName = "enigma" +Version = "0.6b" +Author = "Cuchaz" -dirBin = "bin" -dirBuild = "build" -dirTemp = os.path.join(dirBuild, "tmp") +DirBin = "bin" +DirBuild = "build" +DirTemp = os.path.join(DirBuild, "tmp") +PathLocalMavenRepo = "../maven" def getJarFullName(name=None) : if name is not None: - return "%s-%s-%s.jar" % (projectName, name, version) + return "%s-%s-%s.jar" % (ProjectName, name, Version) else: - return "%s-%s.jar" % (projectName, version) - -def buildGuiJar(): - jarName = "gui" - os.makedirs(dirTemp) - ssjb.copyFiles(dirTemp, dirBin, ssjb.findFiles(dirBin)) - ssjb.unpackJars(dirTemp, "ivy/bundles", recursive=True) - ssjb.unpackJars(dirTemp, "ivy/jars", recursive=True) - ssjb.unpackJars(dirTemp, "libs", recursive=True) - ssjb.delete(os.path.join(dirTemp, "LICENSE.txt")) - ssjb.copyFile(dirTemp, "license.APL2.txt") - ssjb.copyFile(dirTemp, "license.GPL3.txt") - ssjb.copyFile(dirTemp, "readme.txt") - manifest = ssjb.buildManifest(projectName, version, author, "cuchaz.enigma.Main") - ssjb.jar(os.path.join(dirBuild, getJarFullName()), dirTemp, manifest=manifest) - ssjb.delete(dirTemp) - -def buildTranslateJar(): - jarName = "translate" - os.makedirs(dirTemp) - files = ssjb.findFiles(dirBin, "cuchaz/enigma/mapping/*") - files += ssjb.findFiles(dirBin, "cuchaz/enigma/bytecode/*") - ssjb.copyFiles(dirTemp, dirBin, files) - ssjb.copyFile(dirTemp, "license.GPL3.txt", renameTo="license.txt") - ssjb.copyFile(dirTemp, "readme.translate.txt", renameTo="readme.txt") - manifest = ssjb.buildManifest("%s-%s" % (projectName, jarName), version, author) - ssjb.jar(os.path.join(dirBuild, getJarFullName(jarName)), dirTemp, manifest=manifest) - ssjb.delete(dirTemp) + return "%s-%s.jar" % (ProjectName, Version) + +def buildJar(): + os.makedirs(DirTemp) + ssjb.copyFiles(DirTemp, DirBin, ssjb.findFiles(DirBin)) + # TODO: teach ssjb where to find ivy jars + ssjb.unpackJars(DirTemp, "ivy/bundles", recursive=True) + ssjb.unpackJars(DirTemp, "ivy/jars", recursive=True) + ssjb.unpackJars(DirTemp, "libs", recursive=True) + ssjb.delete(os.path.join(DirTemp, "LICENSE.txt")) + ssjb.delete(os.path.join(DirTemp, "META-INF/maven")) + ssjb.copyFile(DirTemp, "license.APL2.txt") + ssjb.copyFile(DirTemp, "license.GPL3.txt") + ssjb.copyFile(DirTemp, "readme.txt") + manifest = ssjb.buildManifest(ProjectName, Version, Author, "cuchaz.enigma.Main") + ssjb.jar(os.path.join(DirBuild, getJarFullName()), DirTemp, manifest=manifest) + ssjb.delete(DirTemp) + ssjb.deployJarToLocalMavenRepo( + PathLocalMavenRepo, + getJarFullName(), + "%s:%s:%s" % (GroupId, ProjectName, Version) + ) def taskMain(): - ssjb.delete(dirBuild) - os.makedirs(dirBuild) - buildGuiJar() - buildTranslateJar() - + ssjb.delete(DirBuild) + os.makedirs(DirBuild) + buildJar() def makeTestJar(name, glob): - pathJar = os.path.join(dirBuild, "%s.jar" % name) - pathObfJar = os.path.join(dirBuild, "%s.obf.jar" % name) + pathJar = os.path.join(DirBuild, "%s.jar" % name) + pathObfJar = os.path.join(DirBuild, "%s.obf.jar" % name) # build the deobf jar - ssjb.delete(dirTemp) - os.makedirs(dirTemp) - ssjb.copyFiles(dirTemp, dirBin, ssjb.findFiles(dirBin, "cuchaz/enigma/inputs/Keep.class")) - ssjb.copyFiles(dirTemp, dirBin, ssjb.findFiles(dirBin, glob)) - ssjb.jar(pathJar, dirTemp) - ssjb.delete(dirTemp) + ssjb.delete(DirTemp) + os.makedirs(DirTemp) + ssjb.copyFiles(DirTemp, DirBin, ssjb.findFiles(DirBin, "cuchaz/enigma/inputs/Keep.class")) + ssjb.copyFiles(DirTemp, DirBin, ssjb.findFiles(DirBin, glob)) + ssjb.jar(pathJar, DirTemp) + ssjb.delete(DirTemp) # build the obf jar ssjb.callJavaJar("libs/proguard.jar", ["@proguard.conf", "-injars", pathJar, "-outjars", pathObfJar]) @@ -74,10 +68,8 @@ def taskBuildTestJars(): makeTestJar("testInheritanceTree", "cuchaz/enigma/inputs/inheritanceTree/*.class") makeTestJar("testInnerClasses", "cuchaz/enigma/inputs/innerClasses/*.class") + ssjb.registerTask("main", taskMain) ssjb.registerTask("buildTestJars", taskBuildTestJars) - - -if __name__ == "__main__": - ssjb.run() +ssjb.run() 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 @@ - -Enigma v0.6 beta -A tool for deobfuscation of Java bytecode - -Copyright Jeff Martin, 2014 - - -LICENSE - -Enigma is distributed under the GNU General Public license version 3 - -A copy of the GNU General Public license verion 3 has been included in this distribution. diff --git a/ssjb.py b/ssjb.py index 7f051cc..fa98c82 100644 --- a/ssjb.py +++ b/ssjb.py @@ -1,7 +1,6 @@ # stupidly simple jar builder # Jeff Martin -# 2015-01-05 import os import sys @@ -168,3 +167,19 @@ def callJava(classpath, className, javaArgs): def callJavaJar(jar, javaArgs): subprocess.call(["java", "-jar", jar] + javaArgs) +def deployJarToLocalMavenRepo(pathLocalRepo, pathJar, artifactDesc): + + # parse the artifact description + (groupId, artifactId, version) = artifactDesc.split(":") + + args = ["mvn", "install:install-file", + "-Dmaven.repo.local=%s" % pathLocalRepo, + "-Dfile=%s" % pathJar, + "-Dpackaging=jar", + "-DgroupId=%s" % groupId, + "-DartifactId=%s" % artifactId, + "-Dversion=%s" % version + ] + subprocess.call(args) + print "Deployed Maven artifact %s to %s" % (artifactDesc, pathLocalRepo) + -- cgit v1.2.3