mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-10 06:02:09 +00:00
GT-2897: User/script now puts yajsw.zip directly into the ghidra source
repo eliminating the need for a ghidra.bin directory to be created.
This commit is contained in:
parent
e326f98c0e
commit
9e209d90cf
@ -179,8 +179,8 @@ Download `yajsw-stable-12.12.zip` from their project on www.sourceforge.net, and
|
||||
```bash
|
||||
cd ~/Downloads # Or wherever
|
||||
curl -OL https://sourceforge.net/projects/yajsw/files/yajsw/yajsw-stable-12.12/yajsw-stable-12.12.zip
|
||||
mkdir -p ~/git/ghidra.bin/Ghidra/Features/GhidraServer/
|
||||
cp ~/Downloads/yajsw-stable-12.12.zip ~/git/ghidra.bin/Ghidra/Features/GhidraServer/
|
||||
mkdir -p ~/git/ghidra/Ghidra/Features/GhidraServer/build/data/
|
||||
cp ~/Downloads/yajsw-stable-12.12.zip ~/git/ghidra/Ghidra/Features/GhidraServer/build/data/
|
||||
```
|
||||
|
||||
#### Get Dependencies for GhidraDev
|
||||
|
@ -25,7 +25,14 @@ addExports([
|
||||
])
|
||||
|
||||
CopySpec yajswCopySpec = copySpec {
|
||||
from(zipTree("${BIN_REPO}/Ghidra/Features/GhidraServer/${yajswRelease}.zip")) {
|
||||
File localFile = file("build/data/${yajswRelease}.zip")
|
||||
File binFile = file("${BIN_REPO}/Ghidra/Features/GhidraServer/${yajswRelease}.zip")
|
||||
|
||||
// First check if the file was downloaded and dropped in locally. If not, check in the bin
|
||||
// repo.
|
||||
def yajswZipTree = localFile.exists() ? zipTree(localFile) : zipTree(binFile)
|
||||
|
||||
from(yajswZipTree) {
|
||||
include "${yajswRelease}/lib/core/**"
|
||||
include "${yajswRelease}/lib/extended/**"
|
||||
include "${yajswRelease}/templates/**"
|
||||
|
@ -9,13 +9,13 @@
|
||||
* *
|
||||
* Specifically, this task: *
|
||||
* *
|
||||
* 1. Downloads various jars required by the ghidra build and *
|
||||
* puts them in <USER_HOME>/flatRepo. The jars to be *
|
||||
* 1. Downloads various dependencies required by the ghidra build and *
|
||||
* puts them in <USER_HOME>/flatRepo. The files to be *
|
||||
* downloaded: *
|
||||
* - dex-tools-2.0.zip *
|
||||
* - AXMLPrinter2.jar *
|
||||
* - hfsexplorer-0_21-bin.zip *
|
||||
* - yajsw-stable-12.12.zip (placed in GhidraServer location) *
|
||||
* - yajsw-stable-12.12.zip *
|
||||
* - cdt-8.6.0.zip *
|
||||
* - PyDev 6.3.1.zip *
|
||||
* *
|
||||
@ -47,6 +47,7 @@ import org.apache.commons.io.*;
|
||||
import org.apache.commons.io.filefilter.*;
|
||||
|
||||
ext.HOME_DIR = System.getProperty('user.home')
|
||||
ext.REPO_DIR = ((Script)this).buildscript.getSourceFile().getParentFile().getParentFile()
|
||||
ext.FLAT_REPO_DIR = new File(HOME_DIR, "flatRepo")
|
||||
File TMP_DIR = new File(System.getProperty('java.io.tmpdir'))
|
||||
ext.DOWNLOADS_DIR = new File(TMP_DIR, "ghidra")
|
||||
@ -245,10 +246,9 @@ def populateFlatRepo() {
|
||||
// 2. Unzip the dependencies
|
||||
unzip(DOWNLOADS_DIR, DOWNLOADS_DIR, "dex-tools-2.0.zip")
|
||||
unzipHfsx()
|
||||
unzipYajsw()
|
||||
|
||||
// 3. Copy the necessary jars to the flatRepo directory. Yajsw is the
|
||||
// exception; it needs to go in a GhidraServer folder.
|
||||
// 3. Copy the necessary jars to the flatRepo directory. Yajsw, CDT, and PyDev go directly into
|
||||
// the source repository.
|
||||
copyDexTools()
|
||||
copyHfsx()
|
||||
copyYajsw()
|
||||
@ -283,14 +283,6 @@ def unzipHfsx() {
|
||||
unzip (DOWNLOADS_DIR, hfsxdir, "hfsexplorer-0_21-bin.zip")
|
||||
}
|
||||
|
||||
/**
|
||||
* Unzips the yajsw zip file
|
||||
*/
|
||||
def unzipYajsw() {
|
||||
def yajswdir = getOrCreateTempYajswDir()
|
||||
unzip (DOWNLOADS_DIR, yajswdir, "yajsw-stable-12.12.zip")
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies the dex-tools jars to the flat repository
|
||||
*
|
||||
@ -312,36 +304,23 @@ def copyHfsx() {
|
||||
|
||||
/**
|
||||
* Copies the yajswdir zip to its location in the GhidraServer project.
|
||||
*
|
||||
* Note: There is a Gradle task to do all of this (yajswDevUnpack) but we cannot execute
|
||||
* that from here so just copy everything manually
|
||||
*/
|
||||
def copyYajsw() {
|
||||
def userdir = System.getProperty("user.dir")
|
||||
def yajswdir = new File(getOrCreateTempYajswDir(),"yajsw-stable-12.12")
|
||||
def yajswdirTarget = new File(userdir, "/../ghidra/Ghidra/Features/GhidraServer/build/data/yajsw-stable-12.12")
|
||||
|
||||
FileUtils.copyFile(new File(yajswdir, "yajsw.policy.txt"), new File(yajswdirTarget, "yajsw.policy.txt"));
|
||||
FileUtils.copyFile(new File(yajswdir, "LICENSE.txt"), new File(yajswdirTarget, "LICENSE.txt"));
|
||||
FileUtils.copyDirectory(yajswdir, yajswdirTarget, new WildcardFileFilter("*.jar"));
|
||||
FileUtils.copyDirectory(new File(yajswdir, "templates"), new File(yajswdirTarget, "templates"));
|
||||
FileUtils.copyDirectory(new File(yajswdir, "lib/extended"), new File(yajswdirTarget, "lib/extended"));
|
||||
FileUtils.copyDirectory(new File(yajswdir, "doc"), new File(yajswdirTarget, "doc"));
|
||||
FileUtils.copyDirectory(new File(yajswdir, "lib/core"), new File(yajswdirTarget, "lib/core"));
|
||||
FileUtils.copyFile(new File(DOWNLOADS_DIR, "yajsw-stable-12.12.zip"), new File(REPO_DIR, "Ghidra/Features/GhidraServer/build/data/yajsw-stable-12.12.zip"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies the pydev zip to its bin repository location
|
||||
*/
|
||||
def copyPyDev() {
|
||||
FileUtils.copyFile(new File(DOWNLOADS_DIR, '/PyDev 6.3.1.zip'), new File(HOME_DIR, '/git/ghidra.bin/GhidraBuild/EclipsePlugins/GhidraDev/buildDependencies/PyDev 6.3.1.zip'));
|
||||
FileUtils.copyFile(new File(DOWNLOADS_DIR, 'PyDev 6.3.1.zip'), new File(REPO_DIR, "GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/build/data/buildDependencies/PyDev 6.3.1.zip"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies the cdt zip to its bin repository location
|
||||
*/
|
||||
def copyCdt() {
|
||||
FileUtils.copyFile(new File(DOWNLOADS_DIR, '/cdt-8.6.0.zip'), new File(HOME_DIR, '/git/ghidra.bin/GhidraBuild/EclipsePlugins/GhidraDev/buildDependencies/cdt-8.6.0.zip'));
|
||||
FileUtils.copyFile(new File(DOWNLOADS_DIR, 'cdt-8.6.0.zip'), new File(REPO_DIR, "GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/build/data/buildDependencies/cdt-8.6.0.zip"));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -358,18 +337,6 @@ def getOrCreateTempHfsxDir() {
|
||||
return hfsxdir;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a temporary folder to house the yajsw zip contents
|
||||
*/
|
||||
def getOrCreateTempYajswDir() {
|
||||
def yajswdir = new File (DOWNLOADS_DIR, "yajsw")
|
||||
if (!yajswdir.exists()) {
|
||||
yajswdir.mkdir()
|
||||
}
|
||||
|
||||
return yajswdir;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs any cleanup operations that need to be performed after the flat repo has
|
||||
* been populated.
|
||||
|
Loading…
Reference in New Issue
Block a user