orocos-toolchain / rtt

Orocos Real-Time Toolkit
http://www.orocos.org
Other
72 stars 79 forks source link

Change component loader behaviour to consider a component found on first valid path #288

Closed francisco-miguel-almeida closed 5 years ago

francisco-miguel-almeida commented 5 years ago

Fixes issue #161.

meyerj commented 5 years ago

For reference: This PR implements what has been proposed in https://github.com/orocos-toolchain/rtt/issues/161#issuecomment-242874748.

It would be an option to simply load a package from the first path found in ComponentLoader::importInstalledPackage(). This should fix the overlay semantics of the import() operation and would not break the component or typekit overwrite behavior of a subsequent import call of another package.

So if a package exists with the same name in multiple directories in the RTT_COMPONENT_PATH (e.g. catkin overlay and underlay), only the first one is imported (prefer overlay). If packages with different names provide component types, service plugins or Orocos types with conflicting names (e.g. name clashes or renamed package in one workspace), the inconsistent overlay semantics described in https://github.com/orocos-toolchain/rtt/issues/161#issuecomment-234884716 still apply.