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

catkin_make_isolated failed to generate java source for message file #6

Description

@xiongdu

#1. reproduce steps

1.1 create a test message catkin package
mkdir -p ~/test/src/my_msgs/msg

echo "
<?xml version="1.0"?>
<package>
  <name>my_msgs</name>
  <version>0.0.1</version>
  <description>
  This package is just for message test.
  </description>
  <maintainer email="test@test.com">Test</maintainer>
  <license>BSD</license>
  <url type="website">http://ros.org/wiki/test</url>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>message_generation</build_depend>
  <build_depend>geometry_msgs</build_depend>
  <build_depend>std_msgs</build_depend>
  <run_depend>message_runtime</run_depend>
  <run_depend>geometry_msgs</run_depend>
  <run_depend>std_msgs</run_depend>
</package>
" >  ~/test/src/my_msgs/package.xml
echo "
cmake_minimum_required(VERSION 2.8.3)
project(my_msgs)

set(MSG_DEPS
    std_msgs
    geometry_msgs
    )

find_package(catkin REQUIRED COMPONENTS
  message_generation
  ${MSG_DEPS}
)

set(MSG_FILES Test.msg)
add_message_files(DIRECTORY msg FILES ${MSG_FILES})
generate_messages(DEPENDENCIES ${MSG_DEPS})

catkin_package(CATKIN_DEPENDS message_runtime ${MSG_DEPS})
" > ~/test/src/my_msgs/CMakeLists.txt
echo "
Header header
uint32 id
uint32 confidence
geometry_msgs/PoseStamped pose
" > ~/test/src/my_msgs/msg/Test.msg

1.2 build test package using catkin_make_isolated
cd ~/test && catkin_make_isolated

1.3 check generated java source for message
$ ls build_isolated/my_msgs/java/my_msgs/src/main/java/my_msgs
ls: cannot access build_isolated/my_msgs/java/my_msgs/src/main/java/my_msgs: No such file or directory
#2. the cause

By comparing to the build.gradle generated by catkin_make, I find that there is trailing "/." in "--package-path" path:
$ grep package-path build_isolated/my_msgs/java/my_msgs/build.gradle
args = new ArrayList<String>([generated_sources_directory, '--package-path=/home/xxx/test/src/my_msgs/.', 'my_msgs'])

After removing the trailing "/." in "--package-path" path in build.gradle, it could successfully generate the java source:
$ ls build_isolated/my_msgs/java/my_msgs/src/main/java/my_msgs
Test.java
#3. how to fix

Here is the change I made on genjava/src/genjava/gradle_project.py (just for your reference).

diff --git a/src/genjava/gradle_project.py b/src/genjava/gradle_project.py
index 39d5957..3d1df38 100644
--- a/src/genjava/gradle_project.py
+++ b/src/genjava/gradle_project.py
@@ -155,6 +155,7 @@ def create(msg_pkg_name, output_dir):

     create_gradle_wrapper(genjava_gradle_dir)
     pkg_directory = os.path.dirname(msg_package_index[msg_pkg_name].filename)
+    pkg_directory = os.path.abspath(pkg_directory)
     msg_pkg_version = msg_package_index[msg_pkg_name].version
     populate_project(msg_pkg_name, msg_pkg_version, pkg_directory, genjava_gradle_dir, msg_dependencies)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions