All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation
@ 2023-10-04  6:57 Pavel Zhukov
  2023-10-04  6:57 ` [PATCH 2/3] package_deb: Revert versioned providers workaround Pavel Zhukov
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Pavel Zhukov @ 2023-10-04  6:57 UTC (permalink / raw)
  To: openembedded-devel; +Cc: Pavel Zhukov

From: Pavel Zhukov <pavel@zhukoff.net>

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

diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc
index bd26e39ad3..6ccafbf8bc 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 not None and 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}")
 }
 
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] package_deb: Revert versioned providers workaround
  2023-10-04  6:57 [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation Pavel Zhukov
@ 2023-10-04  6:57 ` Pavel Zhukov
  2023-10-04  6:57 ` [PATCH 3/3] selftest: Add tests for populate_sdk task Pavel Zhukov
  2023-10-04 15:51 ` [oe] [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation Khem Raj
  2 siblings, 0 replies; 6+ messages in thread
From: Pavel Zhukov @ 2023-10-04  6:57 UTC (permalink / raw)
  To: openembedded-devel; +Cc: Pavel Zhukov

From: Pavel Zhukov <pavel@zhukoff.net>

dpkg and apt seem to handle versioned provides correctly now [1] so this
workaround is not needed anymore.
This fixes [Yocto #14995] for package_deb.

[1]
Signed-off-by: Pavel Zhukov <pavel@zhukoff.net>
---
 meta/classes-global/package_deb.bbclass      | 9 +--------
 meta/recipes-core/meta/dummy-sdk-package.inc | 9 ++++++---
 2 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/meta/classes-global/package_deb.bbclass b/meta/classes-global/package_deb.bbclass
index 5aba3837bd..d7bbfae3fb 100644
--- a/meta/classes-global/package_deb.bbclass
+++ b/meta/classes-global/package_deb.bbclass
@@ -184,8 +184,6 @@ def deb_write_pkg(pkg, d):
             #   '<' = less or equal
             #   '>' = greater or equal
             # adjust these to the '<<' and '>>' equivalents
-            # Also, "=" specifiers only work if they have the PR in, so 1.2.3 != 1.2.3-r0
-            # so to avoid issues, map this to ">= 1.2.3 << 1.2.3.0"
             for dep in list(var.keys()):
                 if '(' in dep or '/' in dep:
                     newdep = re.sub(r'[(:)/]', '__', dep)
@@ -200,10 +198,6 @@ def deb_write_pkg(pkg, d):
                         var[dep][i] = var[dep][i].replace("< ", "<< ")
                     elif (v or "").startswith("> "):
                         var[dep][i] = var[dep][i].replace("> ", ">> ")
-                    elif (v or "").startswith("= ") and "-r" not in v:
-                        ver = var[dep][i].replace("= ", "")
-                        var[dep][i] = var[dep][i].replace("= ", ">= ")
-                        var[dep].append("<< " + ver + ".0")
 
         rdepends = bb.utils.explode_dep_versions2(localdata.getVar("RDEPENDS") or "")
         debian_cmp_remap(rdepends)
@@ -220,8 +214,7 @@ def deb_write_pkg(pkg, d):
                         del rrecommends[dep]
         rsuggests = bb.utils.explode_dep_versions2(localdata.getVar("RSUGGESTS") or "")
         debian_cmp_remap(rsuggests)
-        # Deliberately drop version information here, not wanted/supported by deb
-        rprovides = dict.fromkeys(bb.utils.explode_dep_versions2(localdata.getVar("RPROVIDES") or ""), [])
+        rprovides = bb.utils.explode_dep_versions2(localdata.getVar("RPROVIDES") or "")
         # Remove file paths if any from rprovides, debian does not support custom providers
         for key in list(rprovides.keys()):
             if key.startswith('/'):
diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc
index 6ccafbf8bc..8a07a431ab 100644
--- a/meta/recipes-core/meta/dummy-sdk-package.inc
+++ b/meta/recipes-core/meta/dummy-sdk-package.inc
@@ -18,15 +18,18 @@ ALLOW_EMPTY:${PN} = "1"
 PR[vardeps] += "DUMMYPROVIDES"
 PR[vardeps] += "DUMMYPROVIDES_PACKAGES"
 
+DUMMYMAXVER ?= "999.9-r9"
 DUMMYPROVIDES_PACKAGES ??= ""
 DUMMYPROVIDES_PACKAGES_FILTERED = "${@' '.join([pkg for pkg in d.getVar('DUMMYPROVIDES_PACKAGES').split() if d.getVar('IMAGE_INSTALL') is not None and 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_MAXVER := "${@' '.join(['{} (= {})'.format(pkg, d.getVar('DUMMYMAXVER')) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES_MULTILIB').split()]) + d.getVar('DUMMYPROVIDES')}"
+DUMMYCONFLICTS := "${@' '.join(['{} (< {})'.format(pkg, d.getVar('DUMMYMAXVER')) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES_MULTILIB').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_PACKAGES_MULTILIB}")
-    d.appendVar("RREPLACES:%s" % p, "${DUMMYPROVIDES_PACKAGES_MULTILIB}")
+    d.appendVar("RPROVIDES:%s" % p, "${DUMMYPROVIDES_MAXVER}")
+    d.appendVar("RCONFLICTS:%s" % p, "${DUMMYCONFLICTS}")
+    d.appendVar("RREPLACES:%s" % p, "${DUMMYCONFLICTS}")
 }
 
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] selftest: Add tests for populate_sdk task
  2023-10-04  6:57 [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation Pavel Zhukov
  2023-10-04  6:57 ` [PATCH 2/3] package_deb: Revert versioned providers workaround Pavel Zhukov
@ 2023-10-04  6:57 ` Pavel Zhukov
  2023-10-04 15:51 ` [oe] [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation Khem Raj
  2 siblings, 0 replies; 6+ messages in thread
From: Pavel Zhukov @ 2023-10-04  6:57 UTC (permalink / raw)
  To: openembedded-devel; +Cc: Pavel Zhukov

From: Pavel Zhukov <pavel@zhukoff.net>

Two tests to cover both installing package with IMAGE_INSTALL as
well as installing versioned dependencies of the package (using perl (>=
5.XX).

Related: [Yocto #13338] [Yocto #14995] [Yocto #14066]

Signed-off-by: Pavel Zhukov <pavel@zhukoff.net>
---
 .../testsdk-perldepends.bb                    | 16 ++++
 meta/lib/oeqa/selftest/cases/sdk.py           | 79 +++++++++++++++++++
 2 files changed, 95 insertions(+)
 create mode 100644 meta-selftest/recipes-test/testsdk-perldepends/testsdk-perldepends.bb
 create mode 100644 meta/lib/oeqa/selftest/cases/sdk.py

diff --git a/meta-selftest/recipes-test/testsdk-perldepends/testsdk-perldepends.bb b/meta-selftest/recipes-test/testsdk-perldepends/testsdk-perldepends.bb
new file mode 100644
index 0000000000..428e1f52e2
--- /dev/null
+++ b/meta-selftest/recipes-test/testsdk-perldepends/testsdk-perldepends.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Test recipe for sdk populate test case"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+RDEPENDS:${PN}="perl (>= 5.12)"
+
+do_install(){
+	mkdir -p ${D}/var/lib/
+	touch ${D}/var/lib/testname 
+	echo "${PN}" > ${D}/var/lib/testname
+}
+
+
+
diff --git a/meta/lib/oeqa/selftest/cases/sdk.py b/meta/lib/oeqa/selftest/cases/sdk.py
new file mode 100644
index 0000000000..35734d8a7a
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/sdk.py
@@ -0,0 +1,79 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+import os
+
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import get_bb_var, bitbake
+
+class PopulateSDK(OESelftestTestCase):
+    '''Tests for populate SDK task(s)'''
+
+    @classmethod
+    def setUpClass(self):
+
+        super(PopulateSDK, self).setUpClass()
+        self.buildtarget = 'core-image-minimal'
+        self.classname = 'PopulateSDK'
+
+    def sdk_build(self):
+        """
+        Test if package added via IMAGE_INSTALL
+        conflicts with dummy SDK providers
+        """
+        SDKTASK = '-c populate_sdk'
+        bbargs = "{} {}".format(SDKTASK, self.buildtarget)
+        self.logger.info("{}: doing bitbake {} ".format(self.classname, bbargs))
+        return bitbake(bbargs).status
+
+    def set_config(self, image_install, package_classes):
+        config = 'IMAGE_INSTALL:append = " {}"\n'.format(image_install)
+        config += 'PACKAGE_CLASSES = " package_{}"\n'.format(package_classes)
+        return config
+
+    def do_test_build(self, image_install, package_manager):
+        self.write_config(self.set_config(image_install, package_manager))
+        res = self.sdk_build()
+        self.assertEqual(0, res, "Failed to populate SDK with {} in IMAGE_INSTALL and {} package manager"\
+            .format(image_install, package_manager))
+
+    def test_image_install_ipk(self):
+        """
+        Regression test for [Yocto #13338] 
+        """
+        self.do_test_build("bash", "ipk")
+
+    def test_image_install_rpm(self):
+        """
+        Regression test for [Yocto #13338] 
+        """
+        self.do_test_build("bash", "rpm")
+
+    def test_image_install_deb(self):
+        """
+        Regression test for [Yocto #13338] 
+        """
+        self.do_test_build("bash", "deb")
+        
+
+    def test_image_install_confictdeps_ipk(self):
+        """
+        Regression test for [Yocto #14995]
+        """
+        self.skipTest("Disabled until [Yocto #14995] is fixed")
+        self.do_test_build("testsdk-perldepends", "ipk")
+        
+    def test_image_install_confictdeps_rpm(self):
+        """
+        Regression test for [Yocto #14995]
+        """
+        self.do_test_build("testsdk-perldepends", "rpm")
+
+    def test_image_install_confictdeps_deb(self):
+        """
+        Regression test for [Yocto #14995]
+        """
+        self.do_test_build("testsdk-perldepends", "deb")
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [oe] [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation
  2023-10-04  6:57 [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation Pavel Zhukov
  2023-10-04  6:57 ` [PATCH 2/3] package_deb: Revert versioned providers workaround Pavel Zhukov
  2023-10-04  6:57 ` [PATCH 3/3] selftest: Add tests for populate_sdk task Pavel Zhukov
@ 2023-10-04 15:51 ` Khem Raj
  2023-10-04 16:11   ` Pavel Zhukov
  2 siblings, 1 reply; 6+ messages in thread
From: Khem Raj @ 2023-10-04 15:51 UTC (permalink / raw)
  To: Pavel Zhukov; +Cc: openembedded-devel

[-- Attachment #1: Type: text/plain, Size: 2991 bytes --]

Wrong mailing list core layer patches go to oe-core mailing list not
oe-devel

On Wed, Oct 4, 2023 at 8:07 AM Pavel Zhukov <pavel@zhukoff.net> wrote:

> From: Pavel Zhukov <pavel@zhukoff.net>
>
> 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(-)
>
> diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc
> b/meta/recipes-core/meta/dummy-sdk-package.inc
> index bd26e39ad3..6ccafbf8bc 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
> not None and 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}")
>  }
>
> --
> 2.41.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#105332):
> https://lists.openembedded.org/g/openembedded-devel/message/105332
> Mute This Topic: https://lists.openembedded.org/mt/101757079/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>

[-- Attachment #2: Type: text/html, Size: 4266 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [oe] [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation
  2023-10-04 15:51 ` [oe] [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation Khem Raj
@ 2023-10-04 16:11   ` Pavel Zhukov
  0 siblings, 0 replies; 6+ messages in thread
From: Pavel Zhukov @ 2023-10-04 16:11 UTC (permalink / raw)
  To: Khem Raj; +Cc: openembedded-devel

[-- Attachment #1: Type: text/plain, Size: 2716 bytes --]

Whoops. Sorry. wrong alias.
I'm resending to proper ML. 

On Wed, Oct 4, 2023, at 17:51, Khem Raj wrote:
> Wrong mailing list core layer patches go to oe-core mailing list not oe-devel 
> 
> On Wed, Oct 4, 2023 at 8:07 AM Pavel Zhukov <pavel@zhukoff.net> wrote:
>> From: Pavel Zhukov <pavel@zhukoff.net>
>> 
>> 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(-)
>> 
>> diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc
>> index bd26e39ad3..6ccafbf8bc 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 not None and 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}")
>>  }
>> 
>> -- 
>> 2.41.0
>> 
>> 
>> 

[-- Attachment #2: Type: text/html, Size: 4233 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation
@ 2023-10-04 16:13 Pavel Zhukov
  0 siblings, 0 replies; 6+ messages in thread
From: Pavel Zhukov @ 2023-10-04 16:13 UTC (permalink / raw)
  To: openembedded-core; +Cc: Pavel Zhukov

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

diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc
index bd26e39ad3..6ccafbf8bc 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 not None and 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}")
 }
 
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-10-04 16:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-04  6:57 [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation Pavel Zhukov
2023-10-04  6:57 ` [PATCH 2/3] package_deb: Revert versioned providers workaround Pavel Zhukov
2023-10-04  6:57 ` [PATCH 3/3] selftest: Add tests for populate_sdk task Pavel Zhukov
2023-10-04 15:51 ` [oe] [PATCH 1/3] dummy-sdk-package.inc: Filter packages which are marked for installation Khem Raj
2023-10-04 16:11   ` Pavel Zhukov
2023-10-04 16:13 Pavel Zhukov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.