Can you demonstrate how the issue can be observed on current poky master please?
Alex On Mon 13. May 2024 at 11.47, pmi183 via lists.openembedded.org <pmi183= [email protected]> wrote: > Hi Richard, > > While using buildhistory, i faced an issue with files-in-package.txt > missing and digging into the logs i found out: > > > > find: > ‘/home/user/src/poky-master/build/tmp/work/core2-64-poky-linux/base-passwd/3.6.3/packages-split/*’: > No such file or directory > Calling `buildhistory_list_pkg_files` from do_package seems to be > accessing the dir before being ready and fails. > > Additionally, using `BUILDHISTORY_RESET` along with > `BUILDHISTORY_PRESERVE` looks to fail to preserve files since there is > nothing to handle buildhistory/old dir and ends up losing all files marked > to preserve. > > Thank you, > Pedro > > ---------------------------------------- > > meta/classes/buildhistory.bbclass | 29 ++++++++++++++++++++++++----- > 1 file changed, 24 insertions(+), 5 deletions(-) > > diff --git a/meta/classes/buildhistory.bbclass > b/meta/classes/buildhistory.bbclass > index fd53e92402..4962c53cae 100644 > --- a/meta/classes/buildhistory.bbclass > +++ b/meta/classes/buildhistory.bbclass > @@ -98,11 +98,6 @@ python buildhistory_emit_pkghistory() { > if not "package" in (d.getVar('BUILDHISTORY_FEATURES') or "").split(): > return 0 > > - if d.getVar('BB_CURRENTTASK') in ['package', 'package_setscene']: > - # Create files-in-<package-name>.txt files containing a list of > files of each recipe's package > - bb.build.exec_func("buildhistory_list_pkg_files", d) > - return 0 > - > if not d.getVar('BB_CURRENTTASK') in ['packagedata', > 'packagedata_setscene']: > return 0 > > @@ -110,6 +105,7 @@ python buildhistory_emit_pkghistory() { > import json > import shlex > import errno > + import shutil > > pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE') > oldpkghistdir = d.getVar('BUILDHISTORY_OLD_DIR_PACKAGE') > @@ -223,6 +219,20 @@ python buildhistory_emit_pkghistory() { > items.sort() > return ' '.join(items) > > + def copypreservedoldpkgdatafiles(pkg, preserve): > + if os.path.exists(os.path.join(oldpkghistdir, pkg)): > + listofobjs = os.listdir(os.path.join(oldpkghistdir, pkg)) > + for obj in listofobjs: > + if obj not in preserve: > + continue > + try: > + bb.utils.mkdirhier(os.path.join(pkghistdir, pkg)) > + shutil.copyfile(os.path.join(oldpkghistdir, pkg, > obj), os.path.join(pkghistdir, pkg, obj)) > + except IOError as e: > + bb.note("Unable to copy file. %s" % e) > + except EnvironmentError as e: > + bb.note("Unable to copy file. %s" % e) > + > pn = d.getVar('PN') > pe = d.getVar('PE') or "0" > pv = d.getVar('PV') > @@ -250,6 +260,11 @@ python buildhistory_emit_pkghistory() { > if not os.path.exists(pkghistdir): > bb.utils.mkdirhier(pkghistdir) > else: > + reset = d.getVar("BUILDHISTORY_RESET") > + if reset: > + for pkg in packagelist: > + copypreservedoldpkgdatafiles(pkg, preserve) > + > # Remove files for packages that no longer exist > for item in os.listdir(pkghistdir): > if item not in preserve: > @@ -327,6 +342,10 @@ python buildhistory_emit_pkghistory() { > > write_pkghistory(pkginfo, d) > > + # Only executed when running task `packagedata` > + if d.getVar('BB_CURRENTTASK') == 'packagedata': > + bb.build.exec_func("buildhistory_list_pkg_files", d) > + > oe.qa.exit_if_errors(d) > } > > -- > 2.34.1 > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#199227): https://lists.openembedded.org/g/openembedded-core/message/199227 Mute This Topic: https://lists.openembedded.org/mt/87258776/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
