From 085789089bf301b7a08dab79c7355be372b66b11 Mon Sep 17 00:00:00 2001
From: Daniel Stonier <d.stonier@gmail.com>
Date: Wed, 11 Dec 2013 00:46:05 +0900
Subject: [PATCH] provide a limited scope path for unofficial message
 generation to avoid picking up old versions.

---
 .../groovy/org/ros/gradle_plugins/CatkinPlugin.groovy |  4 +++-
 .../org/ros/internal/message/GenerateInterfaces.java  | 11 ++++++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/CatkinPlugin.groovy b/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/CatkinPlugin.groovy
index 3729c5b..a72e069 100644
--- a/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/CatkinPlugin.groovy
+++ b/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/CatkinPlugin.groovy
@@ -108,9 +108,11 @@ class CatkinPackage {
     def name
     def version
     def dependencies
+    def directory
     
     def CatkinPackage(File packageXmlFilename) {
         def packageXml = new XmlParser().parse(packageXmlFilename)
+        directory = packageXmlFilename.parent
         name = packageXml.name.text()
         version = packageXml.version.text()
         dependencies = []
@@ -181,7 +183,7 @@ class CatkinPackage {
         def generateSourcesTask = p.tasks.create("generateSources", JavaExec)
         generateSourcesTask.description = "Generate sources for " + name
         generateSourcesTask.outputs.dir(p.file(generatedSourcesDir))
-        generateSourcesTask.args = new ArrayList<String>([generatedSourcesDir, name])
+        generateSourcesTask.args = new ArrayList<String>([generatedSourcesDir, '--package-path=' + directory, name])
         generateSourcesTask.classpath = p.configurations.runtime
         generateSourcesTask.main = 'org.ros.internal.message.GenerateInterfaces'
         p.tasks.compileJava.source generateSourcesTask.outputs.files
diff --git a/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java b/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java
index 1acdfcb..46756b8 100644
--- a/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java
+++ b/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java
@@ -33,6 +33,7 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
+import java.util.ListIterator;
 
 /**
  * @author damonkohler@google.com (Damon Kohler)
@@ -69,7 +70,6 @@ public class GenerateInterfaces {
       packages = topicDefinitionFileProvider.getPackages();
     }
     for (String pkg : packages) {
-    	System.out.println("Package: " + pkg);
       Collection<MessageIdentifier> messageIdentifiers =
           topicDefinitionFileProvider.getMessageIdentifiersByPackage(pkg);
       if (messageIdentifiers != null) {
@@ -159,6 +159,15 @@ public class GenerateInterfaces {
       arguments.add(".");
     }
     String rosPackagePath = System.getenv(ROS_PACKAGE_PATH);
+    // Overwrite with a supplied package path if specified (--package-path=)
+    for (ListIterator<String> iter = arguments.listIterator(); iter.hasNext(); ) {
+    	String arg = iter.next();
+    	if (arg.contains("--package-path=")) {
+    		rosPackagePath = arg.replace("--package-path=", "");
+    		iter.remove();
+    		break;
+    	}
+    }
     Collection<File> packagePath = Lists.newArrayList();
     for (String path : rosPackagePath.split(File.pathSeparator)) {
       File packageDirectory = new File(path);
-- 
GitLab