Get psu inventory path

Invoke GetSubTreePaths on configurable psu inventory base path to get
all the PSU paths.
Add unit test case and meson.build to build the unit test case.

In test/meson.build, manually adding dynamic_linker related options for
OE SDK environment to link_args, so that the built test binary could be
executed in OE SDK environment. Otherwise, the ld will not find the
correct shared libraries in OE SDK.

And you have to execute the test binaries manually in OE SDK, because
meson skips running the tests due to it thinks it's cross compiling.
This is described in README as well.

Tested: Verify the build and unit test run OK in OE SDK
        environment and in OpenBMC CI.
        Verify it gets the PSU inventory paths correctly on Witherspoon.

Signed-off-by: Lei YU <mine260309@gmail.com>
Change-Id: I2e2003c5897d7a623fad7f87d263b71c926fc46d
diff --git a/src/item_updater.hpp b/src/item_updater.hpp
index 96006f4..aacd77f 100644
--- a/src/item_updater.hpp
+++ b/src/item_updater.hpp
@@ -4,8 +4,10 @@
 
 #include "activation.hpp"
 #include "types.hpp"
+#include "utils.hpp"
 #include "version.hpp"
 
+#include <phosphor-logging/log.hpp>
 #include <sdbusplus/server.hpp>
 #include <xyz/openbmc_project/Association/Definitions/server.hpp>
 #include <xyz/openbmc_project/Collection/DeleteAll/server.hpp>
@@ -43,6 +45,13 @@
                      std::bind(std::mem_fn(&ItemUpdater::createActivation),
                                this, std::placeholders::_1))
     {
+        // TODO: create psu inventory objects based on the paths
+        using namespace phosphor::logging;
+        auto paths = utils::getPSUInventoryPath(bus);
+        for (const auto& p : paths)
+        {
+            log<level::INFO>("PSU path", entry("PATH=%s", p.c_str()));
+        }
     }
 
     /** @brief Deletes version