mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-27 06:30:51 +00:00
92 lines
2.4 KiB
Groovy
92 lines
2.4 KiB
Groovy
/* ###
|
|
* IP: GHIDRA
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/**
|
|
* NOTE: Supported Python3 command is established by root project build.gradle
|
|
*/
|
|
|
|
// Enable the Python Nature in the Eclipse project
|
|
eclipse.project {
|
|
natures 'org.python.pydev.pythonNature'
|
|
}
|
|
|
|
ext.findPyDep = { name ->
|
|
File inDeps = file("${DEPS_DIR}/${project.name}/${name}")
|
|
File inRepo = file("${BIN_REPO}/ExternalPyWheels/${name}")
|
|
if (inDeps.exists()) {
|
|
return inDeps
|
|
}
|
|
if (inRepo.exists()) {
|
|
return inRepo
|
|
}
|
|
println("Warning: Could not find '${name}' for ${project.name}")
|
|
return inDeps
|
|
}
|
|
|
|
task assemblePyPackage(type: Copy) {
|
|
from "src/main/py"
|
|
into "build/pypkg/"
|
|
}
|
|
|
|
task buildPyPackage {
|
|
dependsOn assemblePyPackage
|
|
ext.dist = { file("build/pypkg/dist") }
|
|
inputs.files(assemblePyPackage)
|
|
outputs.dir(dist)
|
|
|
|
doLast {
|
|
if (rootProject.PYTHON3 == null) {
|
|
throw new GradleException("A supported version of Python ${SUPPORTED_PY_VERSIONS} was not found!")
|
|
}
|
|
|
|
File setuptools = project(":Debugger-rmi-trace").findPyDep(".")
|
|
exec {
|
|
workingDir { "build/pypkg" }
|
|
commandLine rootProject.PYTHON3
|
|
args "-m", "pip", "wheel", "-w", "dist/", "--no-index", "--no-deps", "-f", setuptools, "."
|
|
}
|
|
}
|
|
}
|
|
|
|
// At the moment, any module with a python package also distributes it.
|
|
// We can separate this into `distributePythonPackage` later, if necessary.
|
|
|
|
rootProject.assembleDistribution {
|
|
dependsOn(buildPyPackage)
|
|
def p = this.project
|
|
def zipPath = getZipPath(p)
|
|
from (p.assemblePyPackage) {
|
|
exclude '**/*.pyc'
|
|
exclude '**/*.pyo'
|
|
exclude '**/__pycache__/**'
|
|
exclude '**/.pytest_cache'
|
|
exclude '**/*.egg-info'
|
|
exclude 'build'
|
|
into { zipPath + "/pypkg" }
|
|
}
|
|
}
|
|
|
|
ext.distributePyDep = { name ->
|
|
File dep = findPyDep(name)
|
|
PYTHON_DEPS.add(dep)
|
|
def zipPath = getZipPath(project)
|
|
rootProject.assembleDistribution {
|
|
into ("${zipPath}/pypkg/dist") {
|
|
from dep
|
|
}
|
|
}
|
|
}
|