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 <jian.liu@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jian Liu 2015-08-25 16:29:01 +08:00 committed by Richard Purdie
parent 635d38594c
commit 1362986886
1 changed files with 33 additions and 12 deletions

View File

@ -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")