From 71de29a65246a65f0d8e4805ff204712ba4976be Mon Sep 17 00:00:00 2001 From: Kei Okada Date: Sat, 16 Jan 2016 09:21:50 +0900 Subject: [PATCH 1/2] genjava-extras.camke.em: do not run genjava when three is no message to build --- cmake/genjava-extras.cmake.em | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/genjava-extras.cmake.em b/cmake/genjava-extras.cmake.em index 02c3e86..be963da 100644 --- a/cmake/genjava-extras.cmake.em +++ b/cmake/genjava-extras.cmake.em @@ -52,14 +52,16 @@ macro(_generate_module_java ARG_PKG ARG_GEN_OUTPUT_DIR ARG_GENERATED_FILES) # So we leave this dropping to inform it when gradle needs to run so that we can skip by # without the huge latency whenever we don't. set(DROPPINGS_FILE "${GRADLE_BUILD_DIR}/${ARG_PKG}/droppings") - add_custom_command(OUTPUT ${GRADLE_BUILD_FILE} + if ( NOT "${ARG_GENERATED_FILES}" STREQUAL "" ) + add_custom_command(OUTPUT ${GRADLE_BUILD_FILE} DEPENDS ${GENJAVA_BIN} ${ARG_GENERATED_FILES} COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENJAVA_BIN} -o ${GRADLE_BUILD_DIR} -p ${ARG_PKG} COMMAND touch ${DROPPINGS_FILE} COMMENT "Generating Java gradle project from ${ARG_PKG}" - ) + ) + endif() ################################ # Compile Gradle Subproject From 0634856f4020ee98b022bd2c7b77d04d629e151c Mon Sep 17 00:00:00 2001 From: Kei Okada Date: Sat, 16 Jan 2016 09:23:00 +0900 Subject: [PATCH 2/2] gradle_project.py: run genjava if the package depends on message_generation/genmsg implicitly --- src/genjava/gradle_project.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/genjava/gradle_project.py b/src/genjava/gradle_project.py index 39d5957..232710a 100644 --- a/src/genjava/gradle_project.py +++ b/src/genjava/gradle_project.py @@ -116,14 +116,21 @@ def create_msg_package_index(): # this is inconvenient since it would always mean we should bump the version number in an overlay # when all that is necessary is for it to recognise that it is in an overlay # ros_paths = rospkg.get_ros_paths() + + r = rospkg.RosPack() + package_index = {} ros_paths = rospkg.get_ros_package_path() ros_paths = [x for x in ros_paths.split(':') if x] # packages that don't properly identify themselves as message packages (fix upstream). for path in reversed(ros_paths): # make sure we pick up the source overlays last for unused_package_path, package in find_packages(path).items(): - if ('message_generation' in [dep.name for dep in package.build_depends] or - 'genmsg' in [dep.name for dep in package.build_depends] or + try: + depends = r.get_depends(package.name) + except : # get_depends fails for metapackage + depends = [] + if ('message_generation' in depends or + 'genmsg' in depends or package.name in rosjava_build_tools.catkin.message_package_whitelist): # print(package.name) # print(" version: %s" % package.version)