/* ### * 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. */ configurations { pypkgInstall } task assemblePyPackage(type: Copy) { from "src/main/py" into "build/pypkg/" } def getGdbPython() { def out = new ByteArrayOutputStream() exec { commandLine "gdb", "--batch" args "-ex", "python import sys" args "-ex", "python print(f'python{sys.version_info.major}.{sys.version_info.minor}')" standardOutput = out } return "$out".strip() } def getLldbPython() { def out = new ByteArrayOutputStream() exec { commandLine "lldb", "--batch" args "-ex", "python import sys" args "-ex", "python print(f'python{sys.version_info.major}.{sys.version_info.minor}')" standardOutput = out } return "$out".strip() } task configureBuildPyPackage { doLast { def gdbPython = getGdbPython() buildPyPackage.commandLine gdbPython, "-m", "build" } } task buildPyPackage(type: Exec) { dependsOn(configureBuildPyPackage) ext.dist = { file("build/pypkg/dist") } inputs.files(assemblePyPackage) outputs.dir(dist) workingDir { "build/pypkg" } } task configureInstallPyPackage { dependsOn(configurations.pypkgInstall) doLast { def gdbPython = getGdbPython() installPyPackage.commandLine gdbPython, "-m", "pip", "install", "--force-reinstall" installPyPackage.args configurations.pypkgInstall.filter { f -> !f.name.endsWith(".jar") } installPyPackage.args file("build/pypkg") } } task installPyPackage(type: Exec) { dependsOn(configureInstallPyPackage) inputs.files(assemblePyPackage) } task phonyJarPyPackage(type: Jar) { dependsOn(assemblePyPackage) } afterEvaluate { artifacts { pypkgInstall file("build/pypkg") pypkgInstall phonyJarPyPackage } }