summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oe/package_manager.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index e6319dc3b8..4d9e501f0e 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -578,6 +578,11 @@ class PackageManager(object, metaclass=ABCMeta):
578 # oe-pkgdata-util reads it from a file 578 # oe-pkgdata-util reads it from a file
579 with tempfile.NamedTemporaryFile(mode="w+", prefix="installed-pkgs") as installed_pkgs: 579 with tempfile.NamedTemporaryFile(mode="w+", prefix="installed-pkgs") as installed_pkgs:
580 pkgs = self.list_installed() 580 pkgs = self.list_installed()
581
582 provided_pkgs = set()
583 for pkg in pkgs.values():
584 provided_pkgs |= set(pkg.get('provs', []))
585
581 output = oe.utils.format_pkg_list(pkgs, "arch") 586 output = oe.utils.format_pkg_list(pkgs, "arch")
582 installed_pkgs.write(output) 587 installed_pkgs.write(output)
583 installed_pkgs.flush() 588 installed_pkgs.flush()
@@ -589,10 +594,15 @@ class PackageManager(object, metaclass=ABCMeta):
589 if exclude: 594 if exclude:
590 cmd.extend(['--exclude=' + '|'.join(exclude.split())]) 595 cmd.extend(['--exclude=' + '|'.join(exclude.split())])
591 try: 596 try:
592 bb.note("Installing complementary packages ...")
593 bb.note('Running %s' % cmd) 597 bb.note('Running %s' % cmd)
594 complementary_pkgs = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8") 598 complementary_pkgs = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8")
595 self.install(complementary_pkgs.split(), attempt_only=True) 599 complementary_pkgs = set(complementary_pkgs.split())
600 skip_pkgs = sorted(complementary_pkgs & provided_pkgs)
601 install_pkgs = sorted(complementary_pkgs - provided_pkgs)
602 bb.note("Installing complementary packages ... %s (skipped already provided packages %s)" % (
603 ' '.join(install_pkgs),
604 ' '.join(skip_pkgs)))
605 self.install(install_pkgs, attempt_only=True)
596 except subprocess.CalledProcessError as e: 606 except subprocess.CalledProcessError as e:
597 bb.fatal("Could not compute complementary packages list. Command " 607 bb.fatal("Could not compute complementary packages list. Command "
598 "'%s' returned %d:\n%s" % 608 "'%s' returned %d:\n%s" %