diff mbox series

[v3,1/4] dummy-sdk-package.inc: Filter packages which are marked for installation

Message ID 20231009144001.21150-1-pavel@zhukoff.net
State New
Headers show
Series [v3,1/4] dummy-sdk-package.inc: Filter packages which are marked for installation | expand

Commit Message

Pavel Zhukov Oct. 9, 2023, 2:39 p.m. UTC
if packages is provided by dummysdk and in the same time marked for
installation with IMAGE_INSTALL it causes conflict in apt because virtual providers are
not taken into account if package is asked to be installed explicitly.
Filter such packages from provides/conflicts to workaround this problem.
This workaround brakes RPM usecase because of file conlicts with
DUMMYPROVIDES, use DUMMYPROVIDES_PACKAGES_MULTILIB instead (which
doesn't include file based conflicts).
While this is needed for the case of package_deb only adding it for all
package managers to not complicate the code.

Fixes: [Yocto #13338] [Yocto #14066]

Fixes:
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 target-sdk-provides-dummy : Conflicts: bash
E: Unable to correct problems, you have held broken packages.

Signed-off-by: Pavel Zhukov <pavel@zhukoff.net>
---
 meta/recipes-core/meta/dummy-sdk-package.inc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Luca Ceresoli Oct. 12, 2023, 7:36 a.m. UTC | #1
Hello Pavel,

On Mon,  9 Oct 2023 16:39:58 +0200
"Pavel Zhukov" <pavel@zhukoff.net> wrote:

> if packages is provided by dummysdk and in the same time marked for
> installation with IMAGE_INSTALL it causes conflict in apt because virtual providers are
> not taken into account if package is asked to be installed explicitly.
> Filter such packages from provides/conflicts to workaround this problem.
> This workaround brakes RPM usecase because of file conlicts with
> DUMMYPROVIDES, use DUMMYPROVIDES_PACKAGES_MULTILIB instead (which
> doesn't include file based conflicts).
> While this is needed for the case of package_deb only adding it for all
> package managers to not complicate the code.
> 
> Fixes: [Yocto #13338] [Yocto #14066]
> 
> Fixes:
> The following information may help to resolve the situation:
> 
> The following packages have unmet dependencies:
>  target-sdk-provides-dummy : Conflicts: bash
> E: Unable to correct problems, you have held broken packages.
> 
> Signed-off-by: Pavel Zhukov <pavel@zhukoff.net>

Testing with this series applied results in lots of errors like these:

stdio: ERROR: core-image-minimal-1.0-r0 do_rootfs: No SPDX file found for package base-files, False sstate:base-files:qemux86_64-poky-linux:3.0.14:r0:qemux86_64:11: sstate:base-files::3.0.14:r0::11:
stdio: ERROR: core-image-minimal-mtdutils-1.0-r0 do_rootfs: No SPDX file found for package base-files, False sstate:base-files:qemux86_64-poky-linux:3.0.14:r0:qemux86_64:11: sstate:base-files::3.0.14:r0::11:

See the full log at:

https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/5894/steps/14/logs/stdio

Luca
pazhukov Dec. 18, 2023, 10:28 a.m. UTC | #2
Hi Alex, Luca,

Can you please retest this patchset one more time please?
Neither myself nor RP could reproduce build failure with recent
master/sstate so it might be fixed in the meantime.
Alexandre Belloni Jan. 1, 2024, 12:57 p.m. UTC | #3
Hello,

This still causes issues:

https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/6252/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/80/builds/6203/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/6256/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/87/builds/6263/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/127/builds/2682/steps/15/logs/stdio

2023-12-31 22:35:38,306 - oe-selftest - INFO - 5: 63/78 555/579 (65.04s) (0 failed) (spdx.SPDXCheck.test_spdx_base_files)
2023-12-31 22:35:38,306 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
  File "/home/pokybuild/yocto-worker/oe-selftest-centos/build/meta/lib/oeqa/selftest/cases/spdx.py", line 54, in test_spdx_base_files
    self.check_recipe_spdx("packages", "base-files.spdx.json", "base-files")
  File "/home/pokybuild/yocto-worker/oe-selftest-centos/build/meta/lib/oeqa/selftest/cases/spdx.py", line 50, in check_recipe_spdx
    self.assertExists(full_file_path)
  File "/home/pokybuild/yocto-worker/oe-selftest-centos/build/meta/lib/oeqa/selftest/case.py", line 251, in assertExists
    raise self.failureException(msg)
AssertionError: '/home/pokybuild/yocto-worker/oe-selftest-centos/build/build-st-3943718/tmp/deploy/spdx/qemux86_64/packages/base-files.spdx.json' does not exist



On 18/12/2023 11:28:04+0100, Pavel Zhukov wrote:
> Hi Alex, Luca,
> 
> Can you please retest this patchset one more time please?
> Neither myself nor RP could reproduce build failure with recent
> master/sstate so it might be fixed in the meantime.
> 
> -- 
> Pavel
> 
> On 2023-10-12 09:36, Luca Ceresoli via lists.openembedded.org wrote:
> > Hello Pavel,
> > 
> > On Mon,  9 Oct 2023 16:39:58 +0200
> > "Pavel Zhukov" <pavel@zhukoff.net> wrote:
> > 
> > > if packages is provided by dummysdk and in the same time marked for
> > > installation with IMAGE_INSTALL it causes conflict in apt because
> > > virtual providers are
> > > not taken into account if package is asked to be installed explicitly.
> > > Filter such packages from provides/conflicts to workaround this
> > > problem.
> > > This workaround brakes RPM usecase because of file conlicts with
> > > DUMMYPROVIDES, use DUMMYPROVIDES_PACKAGES_MULTILIB instead (which
> > > doesn't include file based conflicts).
> > > While this is needed for the case of package_deb only adding it for
> > > all
> > > package managers to not complicate the code.
> > > 
> > > Fixes: [Yocto #13338] [Yocto #14066]
> > > 
> > > Fixes:
> > > The following information may help to resolve the situation:
> > > 
> > > The following packages have unmet dependencies:
> > >  target-sdk-provides-dummy : Conflicts: bash
> > > E: Unable to correct problems, you have held broken packages.
> > > 
> > > Signed-off-by: Pavel Zhukov <pavel@zhukoff.net>
> > 
> > Testing with this series applied results in lots of errors like these:
> > 
> > stdio: ERROR: core-image-minimal-1.0-r0 do_rootfs: No SPDX file found
> > for package base-files, False
> > sstate:base-files:qemux86_64-poky-linux:3.0.14:r0:qemux86_64:11:
> > sstate:base-files::3.0.14:r0::11:
> > stdio: ERROR: core-image-minimal-mtdutils-1.0-r0 do_rootfs: No SPDX
> > file found for package base-files, False
> > sstate:base-files:qemux86_64-poky-linux:3.0.14:r0:qemux86_64:11:
> > sstate:base-files::3.0.14:r0::11:
> > 
> > See the full log at:
> > 
> > https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/5894/steps/14/logs/stdio
> > 
> > Luca
> > 
> > 
> > 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192628): https://lists.openembedded.org/g/openembedded-core/message/192628
> Mute This Topic: https://lists.openembedded.org/mt/101853406/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc
index bd26e39ad3..99863b86f1 100644
--- a/meta/recipes-core/meta/dummy-sdk-package.inc
+++ b/meta/recipes-core/meta/dummy-sdk-package.inc
@@ -19,13 +19,14 @@  PR[vardeps] += "DUMMYPROVIDES"
 PR[vardeps] += "DUMMYPROVIDES_PACKAGES"
 
 DUMMYPROVIDES_PACKAGES ??= ""
-DUMMYPROVIDES_PACKAGES_MULTILIB = "${@' '.join([multilib_pkg_extend(d, pkg) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES').split()])}"
+DUMMYPROVIDES_PACKAGES_FILTERED = "${@' '.join([pkg for pkg in d.getVar('DUMMYPROVIDES_PACKAGES').split() if d.getVar('IMAGE_INSTALL') is None or pkg not in d.getVar('IMAGE_INSTALL').split()])}"
+DUMMYPROVIDES_PACKAGES_MULTILIB = "${@' '.join([multilib_pkg_extend(d, pkg) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES_FILTERED').split()])}"
 DUMMYPROVIDES += "${DUMMYPROVIDES_PACKAGES_MULTILIB}"
 
 python populate_packages:prepend() {
     p = d.getVar("PN")
     d.appendVar("RPROVIDES:%s" % p, "${DUMMYPROVIDES}")
-    d.appendVar("RCONFLICTS:%s" % p, "${DUMMYPROVIDES}")
+    d.appendVar("RCONFLICTS:%s" % p, "${DUMMYPROVIDES_PACKAGES_MULTILIB}")
     d.appendVar("RREPLACES:%s" % p, "${DUMMYPROVIDES_PACKAGES_MULTILIB}")
 }