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