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

Commit 826d77c

Browse files
committed
better message artifact generation.
1 parent 48c4955 commit 826d77c

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

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

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,51 @@ 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+
pkg.dependencies.each { d ->
112+
if ( d.equalsIgnoreCase("message_generation") ) {
113+
result = true
114+
}
115+
}
116+
} catch (NullPointerException e) {
117+
/* Not a catkin package dependency (e.g. boost), ignore */
118+
result = false
119+
}
120+
return result
121+
}
122+
123+
def void generateMessageArtifact(Project p, String package_name) {
124+
def pkg = this.pkgs[package_name]
125+
p.version = pkg.version
126+
p.dependencies.add("compile", 'org.ros.rosjava_bootstrap:message_generation:[0.2,0.3)')
127+
List<String> messageDependencies = []
128+
pkg.dependencies.each { d ->
129+
if ( this.isMessagePackage(d) ) {
130+
messageDependencies.add(d)
131+
} else {
132+
}
133+
}
134+
messageDependencies.each { d ->
135+
if ( p.getParent().getChildProjects().containsKey(d) ) {
136+
p.dependencies.add("compile", p.dependencies.project(path: ':' + d))
137+
} else {
138+
p.dependencies.add("compile", 'org.ros.rosjava_messages:' + d + ':[0.0,)')
139+
}
140+
}
141+
def generatedSourcesDir = "${p.buildDir}/generated-src"
142+
def generateSourcesTask = p.tasks.create("generateSources", JavaExec)
143+
generateSourcesTask.description = "Generate sources for " + pkg.name
144+
generateSourcesTask.outputs.dir(p.file(generatedSourcesDir))
145+
generateSourcesTask.args = new ArrayList<String>([generatedSourcesDir, '--package-path=' + pkg.directory, pkg.name])
146+
generateSourcesTask.classpath = p.configurations.runtime
147+
generateSourcesTask.main = 'org.ros.internal.message.GenerateInterfaces'
148+
p.tasks.compileJava.source generateSourcesTask.outputs.files
149+
}
105150
}
106151

107152
class CatkinPackage {
@@ -134,6 +179,8 @@ class CatkinPackage {
134179
* Find and annotate a list of package package dependencies.
135180
* Useful for message artifact generation).
136181
*
182+
* Depracated, but kept around for legacy purposes, remove in igloo
183+
*
137184
* @return List<String> : dependencies (package name strings)
138185
*/
139186
def List<String> messageDependencies() {
@@ -145,7 +192,8 @@ class CatkinPackage {
145192
}
146193
return msgDependencies
147194
}
148-
195+
196+
/* Depracated, but kept around for legacy purposes, remove in igloo */
149197
def void generateMessageArtifact(Project p) {
150198
p.version = version
151199
p.dependencies.add("compile", 'org.ros.rosjava_bootstrap:message_generation:[0.2,0.3)')
@@ -162,6 +210,7 @@ class CatkinPackage {
162210
p.tasks.compileJava.source generateSourcesTask.outputs.files
163211
}
164212

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

0 commit comments

Comments
 (0)