From 24a8d83d68af09e4b59882481a61e9206bfac556 Mon Sep 17 00:00:00 2001 From: Adriana Kobylak Date: Wed, 10 Jun 2020 08:29:36 -0500 Subject: [PATCH] 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 --- item_updater.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/item_updater.cpp b/item_updater.cpp index 7c9a2028..71ed3fd2 100644 --- a/item_updater.cpp +++ b/item_updater.cpp @@ -178,7 +178,8 @@ void ItemUpdater::processBMCImage() // 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(