/* ### * 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 } } }