@@ -129,25 +129,22 @@ def parse_command_line(argv):
129129
130130def get_depmods (vinca_conf , pkg_name ):
131131 depmods = vinca_conf ["depmods" ].get (pkg_name , {})
132- rm_deps , add_deps = {"build" : set (), "run" : set ()}, {"build" : set (), "run" : set ()}
133-
134- if depmods .get ("remove" ):
135- for el in depmods ["remove" ]:
136- if type (el ) is str :
137- rm_deps ["build" ].add (el )
138- rm_deps ["run" ].add (el )
139- elif type (el ) == dict :
140- rm_deps ["build" ] = set (el .get ("build" , []))
141- rm_deps ["run" ] = set (el .get ("run" , []))
142-
143- if depmods .get ("add" ):
144- for el in depmods ["add" ]:
145- if type (el ) is str :
146- add_deps ["build" ].add (el )
147- add_deps ["run" ].add (el )
148- elif type (el ) == dict :
149- add_deps ["build" ] = set (el .get ("build" , []))
150- add_deps ["run" ] = set (el .get ("run" , []))
132+ rm_deps , add_deps = {"build" : [], "host" : [], "run" : []}, {"build" : [], "host" : [], "run" : []}
133+
134+ for dep_type in ["build" , "host" , "run" ]:
135+ if depmods .get ("remove_" + dep_type ):
136+ for el in depmods ["remove_" + dep_type ]:
137+ if isinstance (el , dict ):
138+ rm_deps [dep_type ].append (dict (el ))
139+ else :
140+ rm_deps [dep_type ].append (el )
141+
142+ if depmods .get ("add_" + dep_type ):
143+ for el in depmods ["add_" + dep_type ]:
144+ if isinstance (el , dict ):
145+ add_deps [dep_type ].append (dict (el ))
146+ else :
147+ add_deps [dep_type ].append (el )
151148
152149 return rm_deps , add_deps
153150
@@ -225,23 +222,6 @@ def generate_output(pkg_shortname, vinca_conf, distro, version):
225222 "build" : {"script" : "" },
226223 }
227224
228- if pkg_shortname == "eigenpy" or pkg_shortname .replace ("-" , "_" ) == "slam_toolbox" :
229- output ["requirements" ]["build" ] += ["pkg-config" ]
230- if pkg_shortname .replace ("-" , "_" ) == "ur_client_library" :
231- output ["requirements" ]["host" ] += ["ros-noetic-catkin" ]
232- if pkg_shortname .replace ("-" , "_" ) == "mqtt_bridge" :
233- output ["requirements" ]["run" ] += ["inject" , "msgpack-python" , "paho-mqtt" , "pymongo" ]
234- if pkg_shortname .replace ("-" , "_" ) == "sainsmart_relay_usb" or pkg_shortname .replace ("-" , "_" ) == "kobuki_ftdi" or pkg_shortname .replace ("-" , "_" ) == "sick_tim" or pkg_shortname == "mrpt2" :
235- output ["requirements" ]["build" ] += [{"sel(linux)" : "{{ cdt('libudev') }}" }, {"sel(linux)" : "{{ cdt('libudev-devel') }}" }]
236- if pkg_shortname == "mrpt2" :
237- output ["requirements" ]["host" ] += ["tinyxml2" , "boost-cpp" , "jsoncpp" , "gtest" , "boost" , "libdc1394" , "xorg-libxcomposite" , "ros-noetic-octomap" , "libftdi" ]
238- output ["requirements" ]["run" ] += ["tinyxml2" , "boost-cpp" , "jsoncpp" , "gtest" , "boost" , "libdc1394" , "xorg-libxcomposite" , "ros-noetic-octomap" , "libftdi" ]
239- output ["requirements" ]["build" ] += [{"sel(linux)" : "{{ cdt('libxcomposite-devel') }}" }]
240- if pkg_shortname .replace ("-" , "_" ) == "jsk_recognition_utils" :
241- output ["requirements" ]["host" ] += ["glew" ]
242- output ["requirements" ]["run" ] += ["glew" ]
243-
244-
245225 pkg = catkin_pkg .package .parse_package_string (
246226 distro .get_release_package_xml (pkg_shortname )
247227 )
@@ -287,7 +267,6 @@ def generate_output(pkg_shortname, vinca_conf, distro, version):
287267 build_deps += pkg .buildtool_export_depends
288268 build_deps += pkg .test_depends
289269 build_deps = [d .name for d in build_deps if d .evaluated_condition ]
290- build_deps = (set (build_deps ) - rm_deps ["build" ]) | add_deps ["build" ]
291270
292271 for dep in build_deps :
293272 if dep in ["REQUIRE_OPENGL" , "REQUIRE_GL" ]:
@@ -305,7 +284,6 @@ def generate_output(pkg_shortname, vinca_conf, distro, version):
305284 run_deps += pkg .build_export_depends
306285 run_deps += pkg .buildtool_export_depends
307286 run_deps = [d .name for d in run_deps if d .evaluated_condition ]
308- run_deps = (set (run_deps ) - rm_deps ["run" ]) | add_deps ["run" ]
309287
310288 for dep in run_deps :
311289 if dep in ["REQUIRE_OPENGL" , "REQUIRE_GL" ]:
@@ -318,8 +296,12 @@ def generate_output(pkg_shortname, vinca_conf, distro, version):
318296 continue
319297 output ["requirements" ]["run" ].extend (resolved_dep )
320298
321- output ["requirements" ]["run" ] = list (set (output ["requirements" ]["run" ]))
322- output ["requirements" ]["host" ] = list (set (output ["requirements" ]["host" ]))
299+ for dep_type in ["build" , "host" , "run" ]:
300+ for dep in add_deps [dep_type ]:
301+ output ["requirements" ][dep_type ].append (dep )
302+ for dep in rm_deps [dep_type ]:
303+ output ["requirements" ][dep_type ].remove (dep )
304+
323305 output ["requirements" ]["run" ] = sorted (output ["requirements" ]["run" ])
324306 output ["requirements" ]["host" ] = sorted (output ["requirements" ]["host" ])
325307
@@ -403,6 +385,12 @@ def generate_output(pkg_shortname, vinca_conf, distro, version):
403385 {"sel(linux)" : "{{ cdt('libxxf86vm') }}" },
404386 ]
405387
388+ # remove duplicates
389+ for dep_type in ["build" , "host" , "run" ]:
390+ tmp_nonduplicate = []
391+ [tmp_nonduplicate .append (x ) for x in output ["requirements" ][dep_type ] if x not in tmp_nonduplicate ]
392+ output ["requirements" ][dep_type ] = tmp_nonduplicate
393+
406394 return output
407395
408396
0 commit comments