item_updater: Use relative path to append OS_RELEASE_FILE
The path append behavior changed between std::experimental and
std::filesystem where appending an absolute path replaces the path
instead of appending, therefore need to use .relative_path().
This was causing the item updater to recreate the d-bus objects with
version OS_RELEASE_FILE instead of MEDIA_DIR/rofs-x/OS_RELEASE_FILE
marking the 2 versions of the system functional and with the same
version string.
Fixes openbmc/phosphor-bmc-code-mgmt#5
Tested: Verified with debug logs that the path was just OS_RELEASE_FILE
without this change, and it was MEDIA_DIR/rofs-x/OS_RELEASE_FILE
after this change, the version strings were correct, and only 1
functional BMC association was created.
Change-Id: I2f81942d7fbb24e839e8f712cd2d84a80b7cd125
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/item_updater.cpp b/item_updater.cpp
index 7c9a202..71ed3fd 100644
--- a/item_updater.cpp
+++ b/item_updater.cpp
@@ -178,7 +178,8 @@
// The versionId is extracted from the path
// for example /media/ro-2a1022fe.
auto id = iter.path().native().substr(BMC_RO_PREFIX_LEN);
- auto osRelease = iter.path() / OS_RELEASE_FILE;
+ fs::path releaseFile(OS_RELEASE_FILE);
+ auto osRelease = iter.path() / releaseFile.relative_path();
if (!fs::is_regular_file(osRelease))
{
log<level::ERR>(