summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiko Mauno <niko.mauno@vaisala.com>2018-03-16 09:01:53 (GMT)
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-04-04 10:06:48 (GMT)
commit736ef9be76e46d3e2a4d26155629e87420dde3ca (patch)
tree5349dac9fe9ec1dde1dc379163a84bb49fef13ae
parentd74851311644caa24f439e911e0fde55010eaf05 (diff)
downloadpoky-736ef9be76e46d3e2a4d26155629e87420dde3ca.tar.gz
package_manager.py: Explicit complementary fail
When running bitbake -c populate_sdk <image_name>, it is expected that packages matching SDKIMAGE_INSTALL_COMPLEMENTARY name mask (unless declared in PACKAGE_EXCLUDE_COMPLEMENTARY) are installed to resulting SDK. Underlying mechanism issues a package manager install call for set of complementary packages. However the mechanism doesn't seem to inform the user all too obviously in case the package manager command behind install_complementary() method fails -- and since it is combined with attempt_only=True option, user might end up wondering why several *-dev, *-dbg packages are missing from resulting SDK. Improve associated install() method behaviour in affected OpkgPM and DpkgPM classes so that a problematic state of affairs becomes directly obvious for bitbake user, resulting in shell output like: WARNING: someimage-1.0-r0 do_populate_sdk: Unable to install packages. Command '...' returned 1: Collected errors: * Solver encountered 1 problem(s): * Problem 1/1: * - package somepkg-dev-1.0-r0.x86 requires somepkg = 1.0-r0, but none of the providers can be installed * * Solution 1: * - allow deinstallation of someotherpkg-1.1-r1.x86 * - do not ask to install a package providing somepkg-dev * Solution 2: * - do not ask to install a package providing somepkg-dev (From OE-Core rev: 2502bd591c37bf532d02dc6b37fc1e8b5224fb0a) (From OE-Core rev: 88bbc4b84ce97f82d08c841edf25e6fc29d408b0) Signed-off-by: Niko Mauno <niko.mauno@vaisala.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 0d4459e7086fced5e9e0b4ad10378c9eddec56a8) Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oe/package_manager.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index a907d6c..1a2914f 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -1078,7 +1078,7 @@ class OpkgPM(OpkgDpkgPM):
1078 output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT).decode("utf-8") 1078 output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT).decode("utf-8")
1079 bb.note(output) 1079 bb.note(output)
1080 except subprocess.CalledProcessError as e: 1080 except subprocess.CalledProcessError as e:
1081 (bb.fatal, bb.note)[attempt_only]("Unable to install packages. " 1081 (bb.fatal, bb.warn)[attempt_only]("Unable to install packages. "
1082 "Command '%s' returned %d:\n%s" % 1082 "Command '%s' returned %d:\n%s" %
1083 (cmd, e.returncode, e.output.decode("utf-8"))) 1083 (cmd, e.returncode, e.output.decode("utf-8")))
1084 1084
@@ -1377,7 +1377,7 @@ class DpkgPM(OpkgDpkgPM):
1377 bb.note("Installing the following packages: %s" % ' '.join(pkgs)) 1377 bb.note("Installing the following packages: %s" % ' '.join(pkgs))
1378 subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT) 1378 subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
1379 except subprocess.CalledProcessError as e: 1379 except subprocess.CalledProcessError as e:
1380 (bb.fatal, bb.note)[attempt_only]("Unable to install packages. " 1380 (bb.fatal, bb.warn)[attempt_only]("Unable to install packages. "
1381 "Command '%s' returned %d:\n%s" % 1381 "Command '%s' returned %d:\n%s" %
1382 (cmd, e.returncode, e.output.decode("utf-8"))) 1382 (cmd, e.returncode, e.output.decode("utf-8")))
1383 1383