[PATCH] buildhistory.bbclass: restore BUILDHISTORY_PRESERVE files

Pedro Ferreira
2025-01-15T15:32:04Z

From: Pedro Ferreira <Pedro.Silva.Ferreira@criticaltechworks.com>

On each build using sstate-cache, buildhistory will move
content to a temporary folder named `old`.
When buildhistory looks for the main dir, it wont find it
and ends up creating it.
As a consequence how code is structured wont restore any
preserved file.

Code block moved to ensure if old dir exists, it will
attempt to restore those files marked to preserve.

Signed-off-by: Pedro Silva Ferreira <Pedro.Silva.Ferreira@criticaltechworks.com>
---
meta/classes/buildhistory.bbclass | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index d735dd5fb5..b0f395f05e 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -260,14 +260,6 @@ python buildhistory_emit_pkghistory() {
if not os.path.exists(pkghistdir):
bb.utils.mkdirhier(pkghistdir)
else:
- # We need to make sure that all files kept in
- # buildhistory/old are restored successfully
- # otherwise next block of code wont have files to
- # check and purge
- if d.getVar("BUILDHISTORY_RESET"):
- for pkg in packagelist:
- preservebuildhistoryfiles(pkg, preserve)
-
# Remove files for packages that no longer exist
for item in os.listdir(pkghistdir):
if item not in preserve:
@@ -280,6 +272,13 @@ python buildhistory_emit_pkghistory() {
else:
os.unlink(itempath)

+ if os.path.exists(oldpkghistdir):
+ # We need to make sure that all files in preserve
+ # are restored from buildhistory/old successfully
+ if d.getVar("BUILDHISTORY_RESET"):
+ for pkg in packagelist:
+ preservebuildhistoryfiles(pkg, preserve)
+
rcpinfo = RecipeInfo(pn)
rcpinfo.pe = pe
rcpinfo.pv = pv
--
2.34.1