mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-20 00:51:41 +00:00
Cleanup project-wide gradle configuration.
removes native dependencies from java only projects
increases readability
Pass generated headers in setup instead of modifying model
140 lines
4.5 KiB
Groovy
140 lines
4.5 KiB
Groovy
plugins {
|
|
id "application"
|
|
id 'com.github.johnrengelman.shadow' version '8.1.1'
|
|
id "com.github.node-gradle.node" version "7.0.1"
|
|
id "org.hidetake.ssh" version "2.11.2"
|
|
id 'edu.wpi.first.WpilibTools' version '1.3.0'
|
|
}
|
|
|
|
apply from: "${rootDir}/shared/common.gradle"
|
|
|
|
dependencies {
|
|
implementation project(':photon-core')
|
|
|
|
// Needed for Javalin Runtime Logging
|
|
implementation "org.slf4j:slf4j-simple:2.0.7"
|
|
}
|
|
|
|
group 'org.photonvision'
|
|
version versionString + (project.hasProperty('pionly') ? "-raspi" : "")
|
|
|
|
application {
|
|
mainClass = 'org.photonvision.Main'
|
|
}
|
|
|
|
shadowJar {
|
|
archiveBaseName = "photonvision"
|
|
archiveVersion = project.version as String
|
|
archiveClassifier.set(wpilibTools.currentPlatform.platformName)
|
|
configurations = [
|
|
project.configurations.runtimeClasspath
|
|
]
|
|
}
|
|
|
|
node {
|
|
nodeProjectDir = file("${projectDir}/../photon-client")
|
|
}
|
|
|
|
tasks.register('copyClientUIToResources', Copy) {
|
|
from "${projectDir}/../photon-client/dist/"
|
|
into "${projectDir}/src/main/resources/web/"
|
|
}
|
|
|
|
tasks.register("buildAndCopyUI") {
|
|
dependsOn "npm_run_build"
|
|
finalizedBy "copyClientUIToResources"
|
|
}
|
|
|
|
run {
|
|
environment "PATH_PREFIX", "../"
|
|
}
|
|
|
|
run {
|
|
if (project.hasProperty("profile")) {
|
|
jvmArgs=[
|
|
"-Dcom.sun.management.jmxremote=true",
|
|
"-Dcom.sun.management.jmxremote.ssl=false",
|
|
"-Dcom.sun.management.jmxremote.authenticate=false",
|
|
"-Dcom.sun.management.jmxremote.port=5000",
|
|
"-Djava.rmi.server.hostname=0.0.0.0",
|
|
]
|
|
}
|
|
}
|
|
|
|
remotes {
|
|
pi {
|
|
host = 'photonvision.local'
|
|
user = 'pi'
|
|
password = 'raspberry'
|
|
knownHosts = allowAnyHosts
|
|
}
|
|
gloworm {
|
|
host = 'gloworm.local'
|
|
user = 'pi'
|
|
password = 'raspberry'
|
|
knownHosts = allowAnyHosts
|
|
}
|
|
}
|
|
|
|
task findDeployTarget {
|
|
doLast {
|
|
if(project.hasProperty('tgtIP')){
|
|
//If user specificed IP, default to using the PI profile
|
|
// but adjust hostname to match the provided IP address
|
|
findDeployTarget.ext.rmt = remotes.pi
|
|
findDeployTarget.ext.rmt.host=tgtIP
|
|
} else {
|
|
findDeployTarget.ext.rmt = null
|
|
for(testRmt in remotes){
|
|
println "Checking for " + testRmt.host
|
|
boolean canContact = false;
|
|
try {
|
|
InetAddress testAddr = InetAddress.getByName(testRmt.host)
|
|
canContact = testAddr.isReachable(2000)
|
|
} catch(UnknownHostException e) {
|
|
canContact = false;
|
|
}
|
|
if(canContact){
|
|
println "Found!"
|
|
findDeployTarget.ext.rmt = testRmt
|
|
break
|
|
} else {
|
|
println "Not Found."
|
|
}
|
|
}
|
|
if(findDeployTarget.ext.rmt == null ){
|
|
throw new GradleException("Could not find a supported target for deployment!")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task deploy {
|
|
dependsOn findDeployTarget
|
|
dependsOn assemble
|
|
|
|
doLast {
|
|
println 'Starting deployment to ' + findDeployTarget.rmt.host
|
|
println 'targetArch = ' + wpilibTools.platformMapper.currentPlatform.platformName
|
|
ssh.run{
|
|
session(findDeployTarget.rmt) {
|
|
//Stop photonvision before manipulating its files
|
|
execute 'sudo systemctl stop photonvision.service'
|
|
// gerth2 - I was having issues with the .jar being in use still - waiting a tiny bit here seems to get rid of it on a pi4
|
|
execute 'sleep 3'
|
|
// Copy into a folder owned by PI. Mostly because, as far as I can tell, the put command doesn't support sudo.
|
|
put from: "${projectDir}/build/libs/photonvision-${project.version}-${wpilibTools.platformMapper.currentPlatform.platformName}.jar", into: "/tmp/photonvision.jar"
|
|
//belt-and-suspenders. Make sure the old jar is gone first.
|
|
execute 'sudo rm -f /opt/photonvision/photonvision.jar'
|
|
//Copy in the new .jar and make sure it's executable
|
|
execute 'sudo mv /tmp/photonvision.jar /opt/photonvision/photonvision.jar'
|
|
execute 'sudo chmod +x /opt/photonvision/photonvision.jar'
|
|
//Fire up photonvision again
|
|
execute 'sudo systemctl start photonvision.service'
|
|
//Cleanup
|
|
execute 'sudo rm -f /tmp/photonvision.jar'
|
|
}
|
|
}
|
|
}
|
|
}
|