diff options
| author | Pedro Ferreira <pedro.silva.ferreira@criticaltechworks.com> | 2024-08-06 13:59:55 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2024-08-07 15:47:15 +0100 |
| commit | 7355465f9ead0c4969adbfc167d7f29d0ca1fc11 (patch) | |
| tree | 6526a36e5a6c883be6c02cd59f0a1bed37894533 /meta/classes | |
| parent | 738b3b1e6516625c7c99ff81ca28d183bc30e200 (diff) | |
| download | poky-7355465f9ead0c4969adbfc167d7f29d0ca1fc11.tar.gz | |
buildhistory: Restoring files from preserve list
This fix will ensure that, when we activate feature
`BUILDHISTORY_RESET`, files marked to keep on feature
`BUILDHISTORY_PRESERVE` will indeed exist is buildhistory
final path since they are moved to buildhistory/old but
not restored at any point.
(From OE-Core rev: 9f68a45aa238ae5fcdfaca71ba0e7015e9cb720e)
Signed-off-by: Pedro Ferreira <Pedro.Silva.Ferreira@criticaltechworks.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
| -rw-r--r-- | meta/classes/buildhistory.bbclass | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass index ebb8dafbce..bac2abdab0 100644 --- a/meta/classes/buildhistory.bbclass +++ b/meta/classes/buildhistory.bbclass | |||
| @@ -110,6 +110,7 @@ python buildhistory_emit_pkghistory() { | |||
| 110 | import json | 110 | import json |
| 111 | import shlex | 111 | import shlex |
| 112 | import errno | 112 | import errno |
| 113 | import shutil | ||
| 113 | 114 | ||
| 114 | pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE') | 115 | pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE') |
| 115 | oldpkghistdir = d.getVar('BUILDHISTORY_OLD_DIR_PACKAGE') | 116 | oldpkghistdir = d.getVar('BUILDHISTORY_OLD_DIR_PACKAGE') |
| @@ -223,6 +224,20 @@ python buildhistory_emit_pkghistory() { | |||
| 223 | items.sort() | 224 | items.sort() |
| 224 | return ' '.join(items) | 225 | return ' '.join(items) |
| 225 | 226 | ||
| 227 | def preservebuildhistoryfiles(pkg, preserve): | ||
| 228 | if os.path.exists(os.path.join(oldpkghistdir, pkg)): | ||
| 229 | listofobjs = os.listdir(os.path.join(oldpkghistdir, pkg)) | ||
| 230 | for obj in listofobjs: | ||
| 231 | if obj not in preserve: | ||
| 232 | continue | ||
| 233 | try: | ||
| 234 | bb.utils.mkdirhier(os.path.join(pkghistdir, pkg)) | ||
| 235 | shutil.copyfile(os.path.join(oldpkghistdir, pkg, obj), os.path.join(pkghistdir, pkg, obj)) | ||
| 236 | except IOError as e: | ||
| 237 | bb.note("Unable to copy file. %s" % e) | ||
| 238 | except EnvironmentError as e: | ||
| 239 | bb.note("Unable to copy file. %s" % e) | ||
| 240 | |||
| 226 | pn = d.getVar('PN') | 241 | pn = d.getVar('PN') |
| 227 | pe = d.getVar('PE') or "0" | 242 | pe = d.getVar('PE') or "0" |
| 228 | pv = d.getVar('PV') | 243 | pv = d.getVar('PV') |
| @@ -250,6 +265,14 @@ python buildhistory_emit_pkghistory() { | |||
| 250 | if not os.path.exists(pkghistdir): | 265 | if not os.path.exists(pkghistdir): |
| 251 | bb.utils.mkdirhier(pkghistdir) | 266 | bb.utils.mkdirhier(pkghistdir) |
| 252 | else: | 267 | else: |
| 268 | # We need to make sure that all files kept in | ||
| 269 | # buildhistory/old are restored successfully | ||
| 270 | # otherwise next block of code wont have files to | ||
| 271 | # check and purge | ||
| 272 | if d.getVar("BUILDHISTORY_RESET"): | ||
| 273 | for pkg in packagelist: | ||
| 274 | preservebuildhistoryfiles(pkg, preserve) | ||
| 275 | |||
| 253 | # Remove files for packages that no longer exist | 276 | # Remove files for packages that no longer exist |
| 254 | for item in os.listdir(pkghistdir): | 277 | for item in os.listdir(pkghistdir): |
| 255 | if item not in preserve: | 278 | if item not in preserve: |
