From 0b6ca10033b4656661778742b48d06d7c2d7c990 Mon Sep 17 00:00:00 2001 From: Deepak Kodihalli Date: Wed, 9 Aug 2017 04:39:43 -0500 Subject: pimgen: ignore sdbusplus::object_path pimgen.py processes all d-bus interfaces defined by phosphor-dbus-interfaces, not just the ones under the Inventory/ namespace, because the inventory objects can implement any d-bus interface. The interface xyz.openbmc_project.Association has a property of type sdbusplus::object_path (a wrapper around std::string), which Cereal can't understand (and asserts at compile time). As a temporary solution, ignore this property type. It's safe to do that because xyz.openbmc_project.Association is un-implemented interface. Resolves openbmc/openbmc#957. Change-Id: I85dcd7a5d0885b29718c60b5062c8b5c7770a1ec Signed-off-by: Deepak Kodihalli --- pimgen.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pimgen.py b/pimgen.py index 73d1868..a31267f 100755 --- a/pimgen.py +++ b/pimgen.py @@ -543,6 +543,16 @@ class Everything(Renderer): properties = parsed.get('properties', None) if not properties: continue + # Cereal can't understand the type sdbusplus::object_path. This + # type is a wrapper around std::string. Ignore interfaces having + # a property of this type for now. The only interface that has a + # property of this type now is xyz.openbmc_project.Association, + # which is an unused interface. No inventory objects implement + # this interface. + # TODO via openbmc/openbmc#2123 : figure out how to make Cereal + # understand sdbusplus::object_path. + if any('path' in p['type'] for p in properties): + continue interface_composite[i] = properties interfaces.append(i) -- cgit v1.2.1