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

Commit e6498f1

Browse files
committed
another step forward.
1 parent eadc0fc commit e6498f1

File tree

16 files changed

+552
-110
lines changed

16 files changed

+552
-110
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.pyc

CMakeLists.txt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,37 @@ cmake_minimum_required(VERSION 2.8.3)
66
project(genjava)
77

88
##############################################################################
9-
# Dependencies
9+
# Find Package
1010
##############################################################################
1111

1212
find_package(catkin REQUIRED COMPONENTS genmsg)
1313

1414
##############################################################################
15-
# Package
15+
# Catkin
1616
##############################################################################
1717

1818
catkin_package(
1919
CATKIN_DEPENDS genmsg
2020
CFG_EXTRAS genjava-extras.cmake
2121
)
2222

23+
catkin_python_setup()
24+
25+
##############################################################################
26+
# Installs
27+
##############################################################################
28+
2329
add_subdirectory(scripts)
2430

25-
message(STATUS "GENMSG_LANGS_DESTINATION...........${GENMSG_LANGS_DESTINATION}")
2631
file(WRITE ${CATKIN_DEVEL_PREFIX}/${GENMSG_LANGS_DESTINATION}/genjava "Java")
2732
install(FILES ${CATKIN_DEVEL_PREFIX}/${GENMSG_LANGS_DESTINATION}/genjava
2833
DESTINATION ${GENMSG_LANGS_DESTINATION})
2934

30-
catkin_python_setup()
35+
##############################################################################
36+
# Tests
37+
##############################################################################
3138

32-
if(CATKIN_ENABLE_TESTING)
33-
catkin_add_nosetests(test)
34-
endif()
39+
#if(CATKIN_ENABLE_TESTING)
40+
# catkin_add_nosetests(test)
41+
#endif()
3542

cmake/genjava-extras.cmake.em

Lines changed: 79 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ set(GENJAVA_BIN_DIR "@(CMAKE_CURRENT_SOURCE_DIR)/scripts")
66
set(GENJAVA_BIN_DIR "${GENJAVA_DIR}/../../../@(CATKIN_PACKAGE_BIN_DESTINATION)")
77
@[end if]@
88

9-
set(GENMSG_JAVA_BIN ${GENJAVA_BIN_DIR}/genmsg_java.py)
10-
set(GENSRV_JAVA_BIN ${GENJAVA_BIN_DIR}/gensrv_java.py)
9+
set(GENJAVA_BIN ${GENJAVA_BIN_DIR}/genjava_gradle_project.py)
10+
#set(GENMSG_JAVA_BIN ${GENJAVA_BIN_DIR}/genmsg_java.py)
11+
#set(GENSRV_JAVA_BIN ${GENJAVA_BIN_DIR}/gensrv_java.py)
1112

1213
# genmsg usually uses this variable to configure the install location. we typically pick
1314
# it up from the environment configured by rosjava_build_tools.
14-
#set(genjava_INSTALL_DIR "maven/org/ros/rosjava_messages")
15+
set(genjava_INSTALL_DIR "maven/org/ros/rosjava_messages")
1516
set(ROS_MAVEN_DEPLOYMENT_REPOSITORY $ENV{ROS_MAVEN_DEPLOYMENT_REPOSITORY})
1617
if(NOT ROS_MAVEN_DEPLOYMENT_REPOSITORY)
17-
set(ROS_MAVEN_DEPLOYMENT_REPOSITORY "${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}")
18+
set(ROS_MAVEN_DEPLOYMENT_REPOSITORY "${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}")
1819
endif()
1920

2021
# Generate .msg->.h for py
@@ -29,95 +30,88 @@ endif()
2930
# ARG_GEN_OUTPUT_DIR : /mnt/zaphod/ros/rosjava/hydro/devel/${genjava_INSTALL_DIR}/foo_msgs
3031
macro(_generate_msg_java ARG_PKG ARG_MSG ARG_IFLAGS ARG_MSG_DEPS ARG_GEN_OUTPUT_DIR)
3132

32-
message(STATUS "GEN_MSG_JAVA..........._generate_msg_java")
33-
message(STATUS " ARG_PKG..............${ARG_PKG}")
34-
message(STATUS " ARG_MSG..............${ARG_MSG}")
35-
message(STATUS " ARG_IFLAGS...........${ARG_IFLAGS}")
36-
message(STATUS " ARG_MSG_DEPS.........${ARG_MSG_DEPS}")
37-
message(STATUS " ARG_GEN_OUTPUT_DIR...${ARG_GEN_OUTPUT_DIR}")
38-
message(STATUS "GEN_MSG_JAVA...........done")
39-
message(STATUS "CMAKE_CURRENT_BINARY_DIR.......${CMAKE_CURRENT_BINARY_DIR}")
40-
41-
#Append msg to output dir
42-
#set(GEN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
43-
#file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
44-
#Create input and output filenames
45-
get_filename_component(MSG_SHORT_NAME ${ARG_MSG} NAME_WE)
46-
47-
file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/gradle)
48-
49-
#set(MSG_GENERATED_NAME ${MSG_SHORT_NAME}.java)
50-
#set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/${MSG_GENERATED_NAME})
51-
#message(STATUS "GEN_OUTPUT_FILE..........${GEN_OUTPUT_FILE}")
52-
#add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
53-
# DEPENDS ${GENMSG_JAVA_BIN} ${ARG_MSG} ${ARG_MSG_DEPS}
54-
# COMMAND ${CATKIN_ENV} cmake
55-
# -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}
56-
# -m ${ARG_MSG}
57-
# ${ARG_IFLAGS}
58-
# -p ${ARG_PKG}
59-
# -o ${GEN_OUTPUT_DIR}
60-
# COMMENT "Generating Java code from MSG ${ARG_PKG}/${MSG_SHORT_NAME}"
61-
#)
62-
63-
#list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
64-
33+
message(STATUS "GEN_MSG_JAVA..........._generate_msg_java [${ARG_PKG}][${ARG_MSG}]")
34+
#message(STATUS " ARG_IFLAGS...........${ARG_IFLAGS}")
35+
#message(STATUS " ARG_MSG_DEPS.........${ARG_MSG_DEPS}")
36+
#message(STATUS " ARG_GEN_OUTPUT_DIR...${ARG_GEN_OUTPUT_DIR}")
37+
#message(STATUS "GEN_MSG_JAVA...........done")
38+
#message(STATUS "CMAKE_CURRENT_BINARY_DIR.......${CMAKE_CURRENT_BINARY_DIR}")
39+
40+
#Append msg to output dir
41+
#set(GEN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
42+
#file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
43+
# Create input and output filenames
44+
get_filename_component(MSG_SHORT_NAME ${ARG_MSG} NAME_WE)
45+
46+
#file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/gradle)
47+
48+
#set(MSG_GENERATED_NAME ${MSG_SHORT_NAME}.java)
49+
#set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/${MSG_GENERATED_NAME})
50+
#message(STATUS "GEN_OUTPUT_FILE..........${GEN_OUTPUT_FILE}")
51+
#add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
52+
# DEPENDS ${GENMSG_JAVA_BIN} ${ARG_MSG} ${ARG_MSG_DEPS}
53+
# COMMAND ${CATKIN_ENV} cmake
54+
# -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}
55+
# -m ${ARG_MSG}
56+
# ${ARG_IFLAGS}
57+
# -p ${ARG_PKG}
58+
# -o ${GEN_OUTPUT_DIR}
59+
# COMMENT "Generating Java code from MSG ${ARG_PKG}/${MSG_SHORT_NAME}"
60+
#)
61+
62+
#list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
63+
#set(GEN_OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/java/org/ros/rosjava_messages/${ARG_PKG}/${MSG_SHORT_NAME}.java")
64+
#list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
6565
endmacro()
6666

6767
#todo, these macros are practically equal. Check for input file extension instead
6868
macro(_generate_srv_java ARG_PKG ARG_SRV ARG_IFLAGS ARG_MSG_DEPS ARG_GEN_OUTPUT_DIR)
6969

70-
message(STATUS "GEN_SRV_JAVA..........._generate_srv_java")
71-
#Append msg to output dir
72-
# set(GEN_OUTPUT_DIR "${ARG_GEN_OUTPUT_DIR}/srv")
73-
# file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
74-
#
75-
#Create input and output filenames
76-
# get_filename_component(SRV_SHORT_NAME ${ARG_SRV} NAME_WE)
77-
#
78-
# set(SRV_GENERATED_NAME _${SRV_SHORT_NAME}.py)
79-
# set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/${SRV_GENERATED_NAME})
80-
#
81-
# add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
82-
# DEPENDS ${GENSRV_PY_BIN} ${ARG_SRV} ${ARG_MSG_DEPS}
83-
# COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENSRV_PY_BIN} ${ARG_SRV}
84-
# ${ARG_IFLAGS}
85-
# -p ${ARG_PKG}
86-
# -o ${GEN_OUTPUT_DIR}
87-
# COMMENT "Generating Python code from SRV ${ARG_PKG}/${SRV_SHORT_NAME}"
88-
# )
89-
#
90-
# list(APPEND ALL_GEN_OUTPUT_FILES_py ${GEN_OUTPUT_FILE})
91-
70+
message(STATUS "GEN_SRV_JAVA..........._generate_srv_java [${ARG_PKG}][${ARG_SRV}]")
71+
#Append msg to output dir
72+
# set(GEN_OUTPUT_DIR "${ARG_GEN_OUTPUT_DIR}/srv")
73+
# file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
74+
#
75+
#Create input and output filenames
76+
# get_filename_component(SRV_SHORT_NAME ${ARG_SRV} NAME_WE)
77+
#
78+
# set(SRV_GENERATED_NAME _${SRV_SHORT_NAME}.py)
79+
# set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/${SRV_GENERATED_NAME})
80+
#
81+
# add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
82+
# DEPENDS ${GENSRV_PY_BIN} ${ARG_SRV} ${ARG_MSG_DEPS}
83+
# COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENSRV_PY_BIN} ${ARG_SRV}
84+
# ${ARG_IFLAGS}
85+
# -p ${ARG_PKG}
86+
# -o ${GEN_OUTPUT_DIR}
87+
# COMMENT "Generating Python code from SRV ${ARG_PKG}/${SRV_SHORT_NAME}"
88+
# )
89+
#
90+
#list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
9291
endmacro()
9392

9493
macro(_generate_module_java ARG_PKG ARG_GEN_OUTPUT_DIR ARG_GENERATED_FILES)
9594

96-
message(STATUS "GEN_MODULE_JAVA..........._generate_module_java")
97-
# generate empty __init__ to make parent folder of msg/srv a python module
98-
if(NOT EXISTS ${ARG_GEN_OUTPUT_DIR}/__init__.py)
99-
file(WRITE ${ARG_GEN_OUTPUT_DIR}/__init__.py "")
100-
endif()
101-
102-
#Append msg to output dir
103-
foreach(type "msg" "srv")
104-
set(GEN_OUTPUT_DIR "${ARG_GEN_OUTPUT_DIR}/${type}")
105-
set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/__init__.py)
106-
107-
if(IS_DIRECTORY ${GEN_OUTPUT_DIR})
108-
add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
109-
DEPENDS ${GENMSG_PY_BIN} ${ARG_GENERATED_FILES}
110-
COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENMSG_PY_BIN}
111-
-o ${GEN_OUTPUT_DIR}
112-
--initpy
113-
COMMENT "Generating Python ${type} __init__.py for ${ARG_PKG}")
114-
list(APPEND ALL_GEN_OUTPUT_FILES_py ${GEN_OUTPUT_FILE})
115-
endif()
116-
117-
endforeach()
118-
95+
message(STATUS "GEN_MODULE_JAVA..........._generate_module_java")
96+
message(STATUS " ARG_PKG.................${ARG_PKG}")
97+
message(STATUS " ARG_GEN_OUTPUT_DIR......${ARG_GEN_OUTPUT_DIR}")
98+
message(STATUS " ARG_GENERATED_FILES.....${ARG_GENERATED_FILES}")
99+
100+
set(GEN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/java")
101+
set(GEN_OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/java/build.gradle")
102+
103+
message(STATUS " GEN_OUTPUT_FILE.........${GEN_OUTPUT_FILE}")
104+
message(STATUS " GENJAVA_BIN.............${GENJAVA_BIN}")
105+
file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
106+
# if(IS_DIRECTORY ${GEN_OUTPUT_DIR})
107+
list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
108+
add_custom_command(OUTPUT ${GEN_OUTPUT_FILE} # ${ARG_GENERATED_FILES}
109+
DEPENDS ${GENJAVA_BIN} # ${ARG_GENERATED_FILES}
110+
COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENJAVA_BIN}
111+
-o ${GEN_OUTPUT_DIR}
112+
-p ${ARG_PKG}
113+
COMMENT "Generating java gradle project for compiling ${ARG_PKG}"
114+
)
115+
# list(APPEND ALL_GEN_OUTPUT_FILES_py ${GEN_OUTPUT_FILE})
119116
endmacro()
120117

121-
if(NOT EXISTS @(PROJECT_NAME)_SOURCE_DIR)
122-
set(GENJAVA_INSTALL_DIR ${PYTHON_INSTALL_DIR})
123-
endif()

package.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,14 @@
1818
<buildtool_depend version_gte="0.5.78">catkin</buildtool_depend>
1919

2020
<build_depend>genmsg</build_depend>
21+
<build_depend>python-catkin-pkg</build_depend>
22+
<build_depend>python-rospkg</build_depend>
23+
<build_depend>rosjava_build_tools</build_depend>
2124

2225
<run_depend>genmsg</run_depend>
26+
<run_depend>python-catkin-pkg</run_depend>
27+
<run_depend>python-rospkg</run_depend>
28+
<run_depend>rosjava_build_tools</run_depend>
2329

2430
<export>
2531
<message_generator>java</message_generator>

scripts/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
##############################################################################
2+
# Installs
3+
##############################################################################
4+
15
catkin_install_python(
2-
PROGRAMS genjava.py gensrv_java.py
3-
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
6+
PROGRAMS genjava_gradle_project.py
7+
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
8+
)
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88
import os
99
import sys
1010

11-
#import genjava.generator
12-
import genjava.genjava_main
11+
import genjava
1312

1413
if __name__ == "__main__":
15-
genjava.genjava_main.genmain(sys.argv, 'genmsg_java.py') #, genpy.generator.MsgGenerator())
14+
genjava.main(sys.argv)
1615

scripts/gensrv_java.py

Whitespace-only changes.

src/genjava/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,5 @@
3535

3636
#__all__ = ['Time', 'Duration', 'TVal',
3737
# 'Message', 'SerializationError', 'DeserializationError', 'MessageException', 'struct_I']
38+
39+
from .genjava_main import main

src/genjava/genjava_main.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,46 +36,49 @@
3636

3737
from __future__ import print_function
3838
import argparse
39-
import os
39+
#import os
4040
#import sys
4141
#import traceback
4242
#import genmsg
43-
import genmsg.command_line
43+
#import genmsg.command_line
4444

4545
#from genmsg import MsgGenerationException
4646
#from . generate_initpy import write_modules
47+
from . import gradle_project
4748

4849
##############################################################################
4950
# Methods
5051
##############################################################################
5152

5253

53-
def parse_arguments():
54+
def parse_arguments(argv):
5455
'''
5556
The include path has a special format, e.g.
5657
-Ifoo_msgs:/mnt/zaphod/ros/rosjava/hydro/src/foo_msgs/msg;-Istd_msgs:/opt/ros/hydro/share/std_msgs/cmake/../msg
5758
'''
5859
parser = argparse.ArgumentParser(description='Generate java code for a single ros message.')
59-
parser.add_argument('-m', '--message', action='store', help='the message file')
60+
#parser.add_argument('-m', '--message', action='store', help='the message file')
6061
parser.add_argument('-p', '--package', action='store', help='package to find the message file')
6162
parser.add_argument('-o', '--output-dir', action='store', help='output directory for the java code (e.g. build/foo_msgs)')
62-
parser.add_argument('-I', '--include-path', action='append', help="include paths to the package and deps msg files")
63+
#parser.add_argument('-I', '--include-path', action='append', help="include paths to the package and deps msg files")
6364
#myargs = rospy.myargv(argv=sys.argv)
6465
#return parser.parse_args(args=myargs[1:])
65-
return parser.parse_args()
66+
return parser.parse_args(argv)
6667

6768
##############################################################################
6869
# Main
6970
##############################################################################
7071

71-
def genmain(argv, progname): # , gen):
72-
args = parse_arguments()
73-
print("genjava %s/%s" % (args.package, args.message))
72+
73+
def main(argv):
74+
args = parse_arguments(argv[1:])
75+
#print("genjava %s/%s" % (args.package, args.message))
7476
print(" output dir..........%s" % args.output_dir)
75-
search_path = genmsg.command_line.includepath_to_dict(args.include_path)
76-
print(" search path.......%s" % search_path)
77-
gradle_project_dir = os.path.join(args.output_dir, 'gradle')
78-
os.mkdir(gradle_project_dir)
77+
gradle_project.create(args.package, args.output_dir)
78+
#search_path = genmsg.command_line.includepath_to_dict(args.include_path)
79+
#print(" search path.......%s" % search_path)
80+
#gradle_project_dir = os.path.join(args.output_dir, 'gradle')
81+
#os.mkdir(gradle_project_dir)
7982

8083
# try:
8184
# if options.initpy:

src/genjava/genjava_main.pyc

-317 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)