From 1362986886cc96c8cc11fb60795f729b41770414 Mon Sep 17 00:00:00 2001 From: Jian Liu Date: Tue, 25 Aug 2015 16:29:01 +0800 Subject: sdk.py: fix conflicts of packages If packages are conveyed to smart to install at the same time, conflicts will not happen. Try to install packages into sdk image at the same time. This patch is not so perfect. For example, IMAGE_INSTALL += "lib32-ncurses" IMAGE_INSTALL += "ncurses-dev" ncurses-dev and lib32-ncurses-dev will have conflicts during packages installation. (From OE-Core rev: f2b64f725803ad8be7c2876c531e057a4fe5ca7c) Signed-off-by: Jian Liu Signed-off-by: Richard Purdie --- meta/lib/oe/sdk.py | 45 +++++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) (limited to 'meta') diff --git a/meta/lib/oe/sdk.py b/meta/lib/oe/sdk.py index a6767412c7..53da0f01ad 100644 --- a/meta/lib/oe/sdk.py +++ b/meta/lib/oe/sdk.py @@ -107,10 +107,17 @@ class RpmSdk(Sdk): pm.dump_all_available_pkgs() pm.update() - for pkg_type in self.install_order: - if pkg_type in pkgs_to_install: - pm.install(pkgs_to_install[pkg_type], - [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY]) + pkgs = [] + pkgs_attempt = [] + for pkg_type in pkgs_to_install: + if pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY: + pkgs_attempt += pkgs_to_install[pkg_type] + else: + pkgs += pkgs_to_install[pkg_type] + + pm.install(pkgs) + + pm.install(pkgs_attempt, True) def _populate(self): bb.note("Installing TARGET packages") @@ -184,10 +191,17 @@ class OpkgSdk(Sdk): pm.update() - for pkg_type in self.install_order: - if pkg_type in pkgs_to_install: - pm.install(pkgs_to_install[pkg_type], - [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY]) + pkgs = [] + pkgs_attempt = [] + for pkg_type in pkgs_to_install: + if pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY: + pkgs_attempt += pkgs_to_install[pkg_type] + else: + pkgs += pkgs_to_install[pkg_type] + + pm.install(pkgs) + + pm.install(pkgs_attempt, True) def _populate(self): bb.note("Installing TARGET packages") @@ -260,10 +274,17 @@ class DpkgSdk(Sdk): pm.write_index() pm.update() - for pkg_type in self.install_order: - if pkg_type in pkgs_to_install: - pm.install(pkgs_to_install[pkg_type], - [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY]) + pkgs = [] + pkgs_attempt = [] + for pkg_type in pkgs_to_install: + if pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY: + pkgs_attempt += pkgs_to_install[pkg_type] + else: + pkgs += pkgs_to_install[pkg_type] + + pm.install(pkgs) + + pm.install(pkgs_attempt, True) def _populate(self): bb.note("Installing TARGET packages") -- cgit v1.2.3-54-g00ecf