/* ### * 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. */ apply from: "$rootProject.projectDir/gradle/distributableGhidraModule.gradle" apply from: "$rootProject.projectDir/gradle/javaProject.gradle" apply from: "$rootProject.projectDir/gradle/helpProject.gradle" apply from: "$rootProject.projectDir/gradle/jacocoProject.gradle" apply from: "$rootProject.projectDir/gradle/javaTestProject.gradle" apply from: "$rootProject.projectDir/gradle/javadoc.gradle" apply from: "${rootProject.projectDir}/gradle/hasPythonPackage.gradle" apply plugin: 'eclipse' eclipse.project.name = 'Features PyGhidra' dependencies { api project(':Base') } // NOTE: The Python package is a "Pure Python" package. Building the wheel does not // require any dependencies except setuptools. Installing the wheel will require // the correct os/python version of Jpype and packaging. Installing the wheel does // not require Ghidra. distributePyDep("JPype1-1.5.0-cp310-cp310-macosx_10_9_universal2.whl") distributePyDep("JPype1-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl") distributePyDep("JPype1-1.5.0-cp310-cp310-win_amd64.whl") distributePyDep("JPype1-1.5.0-cp311-cp311-macosx_10_9_universal2.whl") distributePyDep("JPype1-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl") distributePyDep("JPype1-1.5.0-cp311-cp311-win_amd64.whl") distributePyDep("JPype1-1.5.0-cp312-cp312-macosx_10_9_universal2.whl") distributePyDep("JPype1-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl") distributePyDep("JPype1-1.5.0-cp312-cp312-win_amd64.whl") distributePyDep("JPype1-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl") distributePyDep("JPype1-1.5.0-cp39-cp39-win_amd64.whl") distributePyDep("packaging-23.2-py3-none-any.whl") distributePyDep("setuptools-68.0.0-py3-none-any.whl") // Install JPype into the development virtual environment task installJPype(type: Exec) { dependsOn(":createPythonVirtualEnvironment") File depsDir = file("${DEPS_DIR}/PyGhidra") File binRepoDir = file("${BIN_REPO}/ExternalPyWheels") def dir = depsDir.exists() ? depsDir : binRepoDir commandLine "$PYTHON3_VENV", "-m", "pip", "install", "--no-index", "-f", "$dir", "JPype1" } // Install PyGhidra in editable mode to the development virtual environment task installEditablePyGhidra(type: Exec) { dependsOn("installJPype") commandLine "$PYTHON3_VENV", "-m", "pip", "install", "-e", "src/main/py" } rootProject.prepDev.dependsOn installEditablePyGhidra // Add pyghidra_launcher.py to the release rootProject.assembleDistribution { dependsOn(buildPyPackage) def p = this.project def zipPath = getZipPath(p) from (this.project.projectDir.toString()) { include "pyghidra_launcher.py" into { zipPath } } }