Skip to content
This repository was archived by the owner on Jan 14, 2023. It is now read-only.

Commit edbae49

Browse files
committed
msg subproject generation, the right way.
1 parent 75ea608 commit edbae49

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

gradle_plugins/src/main/groovy/org/ros/gradle_plugins/CatkinPlugin.groovy

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,60 @@ class CatkinPackages {
102102
}
103103
}
104104
}
105+
106+
def isMessagePackage(String package_name) {
107+
def pkg
108+
def result = false
109+
try {
110+
pkg = this.pkgs[package_name]
111+
/* println(" Name: " + pkg.name + "-" + pkg.version) */
112+
/* println(" Dep-dependencies: " + pkg.dependencies) */
113+
pkg.dependencies.each { d ->
114+
if ( d.equalsIgnoreCase("message_generation") ) {
115+
result = true
116+
}
117+
}
118+
} catch (NullPointerException e) {
119+
/* Not a catkin package dependency (e.g. boost), ignore */
120+
result = false
121+
}
122+
return result
123+
}
124+
125+
def void generateMessageArtifact(Project p, String package_name) {
126+
def pkg = this.pkgs[package_name]
127+
p.version = pkg.version
128+
/* println("Artifact: " + pkg.name + "-" + pkg.version) */
129+
p.dependencies.add("compile", 'org.ros.rosjava_bootstrap:message_generation:[0.1,0.2)')
130+
List<String> messageDependencies = []
131+
pkg.dependencies.each { d ->
132+
/* println(" Dependency: " + d) */
133+
if ( this.isMessagePackage(d) ) {
134+
messageDependencies.add(d)
135+
/* println(" Msg Pkg: yes") */
136+
} else {
137+
/* println(" Msg Pkg: no") */
138+
}
139+
}
140+
messageDependencies.each { d ->
141+
if ( p.getParent().getChildProjects().containsKey(d) ) {
142+
/* println(" Internal: " + d) */
143+
p.dependencies.add("compile", p.dependencies.project(path: ':' + d))
144+
} else {
145+
/* println(" External: " + d) */
146+
p.dependencies.add("compile", 'org.ros.rosjava_messages:' + d + ':[0.0,)')
147+
}
148+
}
149+
def generatedSourcesDir = "${p.buildDir}/generated-src"
150+
def generateSourcesTask = p.tasks.create("generateSources", JavaExec)
151+
generateSourcesTask.description = "Generate sources for " + pkg.name
152+
generateSourcesTask.outputs.dir(p.file(generatedSourcesDir))
153+
/* generateSourcesTask.args = new ArrayList<String>([generatedSourcesDir, pkg.name]) */
154+
generateSourcesTask.args = new ArrayList<String>([generatedSourcesDir, '--package-path=' + pkg.directory, pkg.name])
155+
generateSourcesTask.classpath = p.configurations.runtime
156+
generateSourcesTask.main = 'org.ros.internal.message.GenerateInterfaces'
157+
p.tasks.compileJava.source generateSourcesTask.outputs.files
158+
}
105159
}
106160

107161
class CatkinPackage {
@@ -134,6 +188,8 @@ class CatkinPackage {
134188
* Find and annotate a list of package package dependencies.
135189
* Useful for message artifact generation).
136190
*
191+
* Depracated, but kept around for legacy purposes, remove in igloo
192+
*
137193
* @return List<String> : dependencies (package name strings)
138194
*/
139195
def List<String> messageDependencies() {
@@ -146,6 +202,7 @@ class CatkinPackage {
146202
return msgDependencies
147203
}
148204

205+
/* Depracated, but kept around for legacy purposes, remove in igloo */
149206
def void generateMessageArtifact(Project p) {
150207
p.version = version
151208
p.dependencies.add("compile", 'org.ros.rosjava_bootstrap:message_generation:[0.1,0.2)')
@@ -162,6 +219,7 @@ class CatkinPackage {
162219
p.tasks.compileJava.source generateSourcesTask.outputs.files
163220
}
164221

222+
/* Depracated, but kept around for legacy purposes, remove in igloo */
165223
def void generateUnofficialMessageArtifact(Project p) {
166224
/* Couple of constraints here:
167225
1) maven group forced to org.ros.rosjava_messages to that all message artifact

0 commit comments

Comments
 (0)