summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/package_manager.py
diff options
context:
space:
mode:
authorAlexander Kanavin <alexander.kanavin@linux.intel.com>2018-06-11 16:38:22 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-06-18 11:07:58 +0100
commit4699d29ac2a1a8607970638df9cf6478b1c02331 (patch)
treeb580b6c62475011d6e1710e65d935235cbd679e9 /meta/lib/oe/package_manager.py
parentbdfca89b8025dd1fe7c09445c178993dfa9cdab9 (diff)
downloadpoky-4699d29ac2a1a8607970638df9cf6478b1c02331.tar.gz
package_manager.py: rework postinst_intercept failures
Previously a warning was printed regardless of context and nature of the failure, and because it was only a warning, it was mostly ignored. Now, the following is considered when a failure happens: 1) whether we are installing packages into a target image, or populating a SDK with host or target packages. 2) whether the failure was due to qemu not supporting the target machine. Accordingly, warnings, notes, and failures are printed, and postponing to first boot happens if possible. (From OE-Core rev: a335e78672b1e1ae3ea6427f6a805218e513bb52) Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe/package_manager.py')
-rw-r--r--meta/lib/oe/package_manager.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 5ac729455e..20a41d53f8 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -370,7 +370,7 @@ class PackageManager(object, metaclass=ABCMeta):
370 self._handle_intercept_failure(registered_pkgs) 370 self._handle_intercept_failure(registered_pkgs)
371 371
372 372
373 def run_intercepts(self): 373 def run_intercepts(self, populate_sdk=None):
374 intercepts_dir = self.intercepts_dir 374 intercepts_dir = self.intercepts_dir
375 375
376 bb.note("Running intercept scripts:") 376 bb.note("Running intercept scripts:")
@@ -392,9 +392,22 @@ class PackageManager(object, metaclass=ABCMeta):
392 output = subprocess.check_output(script_full, stderr=subprocess.STDOUT) 392 output = subprocess.check_output(script_full, stderr=subprocess.STDOUT)
393 if output: bb.note(output.decode("utf-8")) 393 if output: bb.note(output.decode("utf-8"))
394 except subprocess.CalledProcessError as e: 394 except subprocess.CalledProcessError as e:
395 bb.warn("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
396 bb.note("Exit code %d. Output:\n%s" % (e.returncode, e.output.decode("utf-8"))) 395 bb.note("Exit code %d. Output:\n%s" % (e.returncode, e.output.decode("utf-8")))
397 self._postpone_to_first_boot(script_full) 396 if populate_sdk == 'host':
397 bb.warn("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
398 elif populate_sdk == 'target':
399 if "qemuwrapper: qemu usermode is not supported" in e.output.decode("utf-8"):
400 bb.warn("The postinstall intercept hook '%s' could not be executed due to missing qemu usermode support, details in %s/log.do_%s"
401 % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
402 else:
403 bb.fatal("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
404 else:
405 if "qemuwrapper: qemu usermode is not supported" in e.output.decode("utf-8"):
406 bb.note("The postinstall intercept hook '%s' could not be executed due to missing qemu usermode support, details in %s/log.do_%s"
407 % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
408 self._postpone_to_first_boot(script_full)
409 else:
410 bb.fatal("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
398 411
399 @abstractmethod 412 @abstractmethod
400 def update(self): 413 def update(self):