cmu-rss-lab / roswire

A library for static and dynamic analysis of ROS applications via Docker 🔌
http://christimperley.co.uk/roswire
Apache License 2.0
8 stars 0 forks source link

CMake parsing crashes on TurtleBot #495

Open ChrisTimperley opened 3 years ago

ChrisTimperley commented 3 years ago
Traceback (most recent call last):

  File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 377, in <module>
    main()
    └ <function main at 0x7f76554efdc0>

  File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 371, in main
    recover_all(config)
    │           └ {'type': 'recovery', 'subject': 'turtlebot', 'image': 'rosdiscover-experiments/turtlebot:2.4.2', 'distro': 'kinetic', 'build_...
    └ <function recover_all at 0x7f76554efb80>

  File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 222, in recover_all
    package_node_to_sources = obtain_node_sources(experiment_config)
                              │                   └ {'type': 'recovery', 'subject': 'turtlebot', 'image': 'rosdiscover-experiments/turtlebot:2.4.2', 'distro': 'kinetic', 'build_...
                              └ <function obtain_node_sources at 0x7f76554efaf0>

  File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 203, in obtain_node_sources
    generate_node_sources(experiment_config)
    │                     └ {'type': 'recovery', 'subject': 'turtlebot', 'image': 'rosdiscover-experiments/turtlebot:2.4.2', 'distro': 'kinetic', 'build_...
    └ <function generate_node_sources at 0x7f76554ef670>

> File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 186, in generate_node_sources
    rosdiscover.cli.main(args)
    │           │   │    └ ['sources', '--save-to', '/home/chris/experiments/rosdiscover-evaluation/experiments/recovery/subjects/turtlebot/rosdiscover-...
    │           │   └ <function main at 0x7f7655512af0>
    │           └ <module 'rosdiscover.cli' from '/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py'>
    └ <module 'rosdiscover' from '/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/__init__.py'>

  File "/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 356, in main
    parsed_args.func(parsed_args)
    │           │    └ Namespace(config=<_io.TextIOWrapper name='/tmp/tmp2tst2pxf.rosdiscover.yml' mode='r' encoding='UTF-8'>, save_to='/home/chris/...
    │           └ <function sources at 0x7f7655512940>
    └ Namespace(config=<_io.TextIOWrapper name='/tmp/tmp2tst2pxf.rosdiscover.yml' mode='r' encoding='UTF-8'>, save_to='/home/chris/...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 212, in sources
    config_with_sources = config.with_recovered_node_sources()
                          │      └ <function Config.with_recovered_node_sources at 0x7f7655698820>
                          └ Config(image='rosdiscover-experiments/turtlebot:2.4.2', sources=('/opt/ros/kinetic/setup.bash', '/ros_ws/devel_isolated/setup...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/config.py", line 235, in with_recovered_node_sources
    recovered_node_sources = self.find_node_sources()
                             │    └ <function Config.find_node_sources at 0x7f76556988b0>
                             └ Config(image='rosdiscover-experiments/turtlebot:2.4.2', sources=('/opt/ros/kinetic/setup.bash', '/ros_ws/devel_isolated/setup...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/config.py", line 261, in find_node_sources
    for package_cmake_targets in ros.cmake_targets_for_all_packages():
                                 │   └ <function ROS1.cmake_targets_for_all_packages at 0x7f76578e4f70>
                                 └ <roswire.ros1.ros1.ROS1 object at 0x7f7653f0cb50>

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/ros1/ros1.py", line 475, in cmake_targets_for_all_packages
    target_to_info = self.package_node_sources(package)
                     │    │                    └ ROS1Package(name='realsense_camera', path='/ros_ws/src/realsense_camera', messages=(ROS1MsgFormat(package='realsense_camera',...                     │    └ <function ROS1.package_node_sources at 0x7f76578e4ee0>
                     └ <roswire.ros1.ros1.ROS1 object at 0x7f7653f0cb50>

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/ros1/ros1.py", line 456, in package_node_sources
    return self.__package_source_extractor.get_cmake_info(
           └ <roswire.ros1.ros1.ROS1 object at 0x7f7653f0cb50>

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/ros1/source.py", line 37, in get_cmake_info
    return self._info_from_cmakelists(cmakelists_path, package)
           │    │                     │                └ ROS1Package(name='realsense_camera', path='/ros_ws/src/realsense_camera', messages=(ROS1MsgFormat(package='realsense_camera',...
           │    │                     └ '/ros_ws/src/realsense_camera/CMakeLists.txt'
           │    └ <function CMakeExtractor._info_from_cmakelists at 0x7f76559ef940>
           └ ROS1PackageSourceExtractor(_app_instance=AppInstance(_dockerblade=Container(daemon=DockerDaemon(url='unix:///run/user/1000/do...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/common/source.py", line 198, in _info_from_cmakelists
    nodelet_libraries = self.get_nodelet_entrypoints(package)
                        │    │                       └ ROS1Package(name='realsense_camera', path='/ros_ws/src/realsense_camera', messages=(ROS1MsgFormat(package='realsense_camera',...
                        │    └ <function CMakeExtractor.get_nodelet_entrypoints at 0x7f76559ef8b0>
                        └ ROS1PackageSourceExtractor(_app_instance=AppInstance(_dockerblade=Container(daemon=DockerDaemon(url='unix:///run/user/1000/do...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/common/source.py", line 183, in get_nodelet_entrypoints
    nodelet_info = NodeletsInfo.from_nodelet_xml(contents)
                   │            │                └ '<library path="lib/librealsense_camera_nodelet">\n  <class name="realsense_camera/R200Nodelet" type="realsense_camera::R200N...
                   │            └ <classmethod object at 0x7f76559f33a0>
                   └ <class 'roswire.common.nodelet_xml.NodeletsInfo'>

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/common/nodelet_xml.py", line 53, in from_nodelet_xml
    assert len(class_doms) == 1
               └ [<DOM Element: class at 0x7f7654e83b80>, <DOM Element: class at 0x7f7654e83820>, <DOM Element: class at 0x7f765422e4c0>, <DOM...

AssertionError: assert len(class_doms) == 1