Skip to content

Commit 977979b

Browse files
Re-working add/remove deps and split into build/host/run; fix #1
1 parent 1bcbd57 commit 977979b

File tree

1 file changed

+28
-40
lines changed

1 file changed

+28
-40
lines changed

vinca/main.py

Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -129,25 +129,22 @@ def parse_command_line(argv):
129129

130130
def 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

Comments
 (0)