Richard Purdie <[email protected]> escreveu no dia quinta,
28/07/2022 à(s) 12:01:

> 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).
>

The snip that delete this files is in cleanupcontrol
https://git.yoctoproject.org/poky/tree/meta/classes/package_ipk.bbclass#n51

So these files are not shipped in the ipk package produced.
It breaks the do_create_spdx because it runs after the do_package
and the same happens for do_package_write_ipk so the two tasks
can run at the same time.


> Ideally we'd fix opkg (and maybe dpkg) to allow creation of packages
> with the files placed externally.
>

I think I didn't quite understand this part, can you please explain it a
bit more?


>
> 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.
>

yeah, It's a bit ugly because it adds some tasks that don't even run (all
types of packages
in this case). Since I don't know what package types are chosen by the
user, I added all of them.

Jose


>
> Cheers,
>
> Richard
>


-- 
Best regards,

José Quaresma
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#168603): 
https://lists.openembedded.org/g/openembedded-core/message/168603
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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to