ObjectMapper: match interfaces with reality

The documented ObjectMapper interfaces do not match the reference
implementation in phosphor-objmgr.  Lots of code currently uses
hand-written dbus calls to the ObjectMapper, using the real interfaces
and not the documented ones.  Refactoring all of these implementations
is quite a bit of effort, which could be staged at a later time (or
leverage a versioned interface).  Update the interface to match reality
so that generated bindings could be leveraged.

Tested:

Ran the reference implementation and compared the signatures with the
YAML and updated as necessary.
```
$ busctl --user introspect xyz.openbmc_project.ObjectMapper /xyz/openbmc_project/object_mapper xyz.openbmc_project.ObjectMapper
NAME                             TYPE      SIGNATURE RESULT/VALUE FLAGS
.GetAncestors                    method    sas       a{sa{sas}}   -
.GetAssociatedSubTree            method    ooias     a{sa{sas}}   -
.GetAssociatedSubTreePaths       method    ooias     as           -
.GetObject                       method    sas       a{sas}       -
.GetSubTree                      method    sias      a{sa{sas}}   -
.GetSubTreePaths                 method    sias      as           -
```

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: If6fc6a403d602d6c18c6e30dc1a216a47d059860
1 file changed
tree: 0a3b9ae75938c10a55a18e88556c285f7d927716
  1. gen/
  2. subprojects/
  3. yaml/
  4. .gitignore
  5. .markdownlint.yaml
  6. .prettierrc.yaml
  7. .shellcheck
  8. LICENSE
  9. meson.build
  10. meson.options
  11. OWNERS
  12. README.md
  13. requirements.md
README.md

phosphor-dbus-interfaces

YAML descriptors of standard D-Bus interfaces. The format is described by the sdbusplus binding generation tool sdbus++.

Before defining a new D-Bus interface or modifying an existing one, please read through the documented set of the common requirements and expectations.

Building

This project can be built with meson. The typical meson workflow is: meson builddir && ninja -C builddir.

The meson files used to handle the YAML files are automatically generated and found under the gen subdirectory. When adding or removing YAML files, this must be regenerated. This can be done with the helper script found in the gen subdirectory: cd gen && ./regenerate-meson.

Configuration

Only the xyz/openbmc_project and org/freedesktop interfaces are built by default. Other interfaces can be enabled by meson options:

  • com/ibm - -Ddata_com_ibm=true
  • org/open_power - -Ddata_org_open_power=true

Example: meson builddir -Ddata_com_ibm=true && ninja -C builddir

References