On Thu, 2022-07-28 at 09:54 +0100, Jose Quaresma wrote: > Otherwise spdx can have references for data that is not packed. > in the package delivered. > > During do_package_write_ipk task in do_package_ipk some files > is cleaned up from packages-split directory in the funcion > cleanupcontrol. > > This also fixes the following race condictions when the do_create_spdx > task runs the add_package_files function and these files is been deleted > at same time in the task do_package_write_ipk: > > ERROR: alsa-topology-conf-1.2.5.1-r0 do_create_spdx: Error executing a python > function in exec_func_python() autogenerated: > > The stack trace of python calls that resulted in this exception/failure was: > File: 'exec_func_python() autogenerated', lineno: 2, function: <module> > 0001: > *** 0002:do_create_spdx(d) > 0003: > File: > '/srv/oe/build/conf/../../layers/openembedded-core/meta/classes/create-spdx.bbclass', > lineno: 567, function: do_create_spdx > 0563: package_doc.add_relationship(package_doc, "DESCRIBES", > spdx_package) > 0564: > 0565: package_archive = deploy_dir_spdx / "packages" / > (package_doc.name + ".tar.zst") > 0566: with optional_tarfile(package_archive, > archive_packaged) as archive: > *** 0567: package_files = add_package_files( > 0568: d, > 0569: package_doc, > 0570: spdx_package, > 0571: pkgdest / package, > File: > '/srv/oe/build/conf/../../layers/openembedded-core/meta/classes/create-spdx.bbclass', > lineno: 234, function: add_package_files > 0230: info.mtime = source_date_epoch > 0231: > 0232: archive.addfile(info, f) > 0233: > *** 0234: sha1 = bb.utils.sha1_file(filepath) > 0235: sha1s.append(sha1) > 0236: spdx_file.checksums.append(oe.spdx.SPDXChecksum( > 0237: algorithm="SHA1", > 0238: checksumValue=sha1, > File: '/srv/oe/bitbake/lib/bb/utils.py', lineno: 559, function: sha1_file > 0555: """ > 0556: Return the hex string representation of the SHA1 checksum of > the filename > 0557: """ > 0558: import hashlib > *** 0559: return _hasher(hashlib.sha1(), filename) > 0560: > 0561:def sha384_file(filename): > 0562: """ > 0563: Return the hex string representation of the SHA384 checksum of > the filename > File: '/srv/oe/bitbake/lib/bb/utils.py', lineno: 528, function: _hasher > 0524: > 0525:def _hasher(method, filename): > 0526: import mmap > 0527: > *** 0528: with open(filename, "rb") as f: > 0529: try: > 0530: with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) > as mm: > 0531: for chunk in iter(lambda: mm.read(8192), b''): > 0532: method.update(chunk) > Exception: FileNotFoundError: [Errno 2] No such file or directory: > '/srv/oe/build/tmp-lmp/work/all-lmp-linux/alsa-topology-conf/1.2.5.1-r0/packages-split/alsa-topology-conf/CONTROL/control'
We have other places where we've had to teach the code to ignore the control files and we'll probably have to do that here (grep for CONTROL). Ideally we'd fix opkg (and maybe dpkg) to allow creation of packages with the files placed externally. I have also wondered if we should create a specific hardlinked tree to handle this but that does come at an IO cost. I don't really want to add a dependency constraint like this for something we already handle differently elsewhere though. Cheers, Richard
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#168599): https://lists.openembedded.org/g/openembedded-core/message/168599 Mute This Topic: https://lists.openembedded.org/mt/92666627/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
