Skip to content
This repository has been 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

Closed
xiongdu opened this issue Aug 4, 2016 · 6 comments
Closed

Comments

@xiongdu
Copy link

xiongdu commented Aug 4, 2016

#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="[email protected]">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)
@xiongdu xiongdu changed the title catkin_make_isolated failed to generate java source for message catkin_make_isolated failed to generate java source for message file Aug 4, 2016
@stonier
Copy link
Contributor

stonier commented Mar 2, 2017

This is coming from the filename generated by the package object created with catkin_pkg.packages.find_package, e.g.

when you call:

path = /mnt/mervin/workspaces/dude/src/py_trees_msgs
unused_package_path, package in find_packages(path).items()
print("%s" % package.filename)

you get

/mnt/mervin/workspaces/dude/src/py_trees_msgs/./package.xml

Ideally should have catkin_pkg fix this, but adding the abspath here will make it more robust anyway.

@stonier stonier closed this as completed in 3e8cae4 Mar 2, 2017
@stonier
Copy link
Contributor

stonier commented Mar 2, 2017

@adamantivm I've bugfixed, version bumped (0.3.2) and tagged this. Could you re-release it for kinetic? Thanks!

@adamantivm
Copy link
Contributor

sure think, thanks for the fix @stonier !
To make things a bit easier to track for me, may I ask next time:

  • send through a PR
  • don't do the tagging and version bumping --> I'm using catkin_prepare_release now to do that

@stonier
Copy link
Contributor

stonier commented Mar 2, 2017

Aye, apologies....definitely a PR.

I was actually going to push this release for you, but got to the blooming stage and discovered you must be using a different release repo somewhere. Anyway, thanks for following up :)

@adamantivm
Copy link
Contributor

I don't mind taking care of this.
Something is odd with bloom today, I wasn't particularly trying to use a different release repo or anything, but I'll figure it out. I'll report when it's out.

@adamantivm
Copy link
Contributor

Ok, I had to manually send the PR for bloom, let's hope it's all OK.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants