On 21 December 2016 at 06:32, Chen Qi wrote: > > We need to have scriptlet output captured in log. If we don't do so, > some useful information from scriptlets (especially postinstall script) > would be missing. In case a script has a warning message but it does not > necessarily have to fail, the message should be captured. > > Opkg has already done that. Change for rpm and dpkg so that scriptlet > output is captured and no warning message is missing. > > Signed-off-by: Chen Qi > --- > meta/lib/oe/package_manager.py | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py > index e557473..6892106 100644 > --- a/meta/lib/oe/package_manager.py > +++ b/meta/lib/oe/package_manager.py > @@ -669,11 +669,11 @@ class RpmPM(PackageManager): > self.install_dir_path = os.path.join(self.target_rootfs, self.install_dir_name) > self.rpm_cmd = bb.utils.which(os.getenv('PATH'), "rpm") > self.smart_cmd = bb.utils.which(os.getenv('PATH'), "smart") > - # 0 = default, only warnings > - # 1 = --log-level=info (includes information about executing scriptlets and their output) > + # 0 = --log-level=warning, only warnings > + # 1 = --log-level=info (includes information about executing scriptlets and their output), default > # 2 = --log-level=debug > # 3 = --log-level=debug plus dumps of scriplet content and command invocation > - self.debug_level = int(d.getVar('ROOTFS_RPM_DEBUG') or "0") > + self.debug_level = int(d.getVar('ROOTFS_RPM_DEBUG') or "1") > self.smart_opt = ["--log-level=%s" % > ("warning" if self.debug_level == 0 else > "info" if self.debug_level == 1 else > @@ -2025,7 +2025,8 @@ class DpkgPM(OpkgDpkgPM): > bb.note("Executing %s for package: %s ..." % > (control_script.name.lower(), pkg_name)) > subprocess.check_output([p_full, control_script.argument], > - stderr=subprocess.STDOUT) > + stderr=subprocess.STDOUT).decode("utf-8") > + bb.note(output) This patch seems likely to be the reason for this autobuilder failure: https://autobuilder.yoctoproject.org/main/builders/nightly-deb-non-deb/builds/669/steps/BuildImages/logs/stdio --- ERROR: core-image-sato-sdk-1.0-r0 do_rootfs: Error executing a python function in exec_python_func() autogenerated: The stack trace of python calls that resulted in this exception/failure was: File: 'exec_python_func() autogenerated', lineno: 2, function: 0001: *** 0002:do_rootfs(d) 0003: File: '/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-deb-non-deb/build/meta/classes/image.bbclass', lineno: 266, function: do_rootfs 0262: 0263: progress_reporter.next_stage() 0264: 0265: # generate rootfs *** 0266: create_rootfs(d, progress_reporter=progress_reporter, logcatcher=logcatcher) 0267: 0268: progress_reporter.finish() 0269:} 0270:do_rootfs[dirs] = "${TOPDIR}" File: '/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-deb-non-deb/build/meta/lib/oe/rootfs.py', lineno: 1009, function: create_rootfs 1005: RpmRootfs(d, manifest_dir, progress_reporter, logcatcher).create() 1006: elif img_type == "ipk": 1007: OpkgRootfs(d, manifest_dir, progress_reporter, logcatcher).create() 1008: elif img_type == "deb": *** 1009: DpkgRootfs(d, manifest_dir, progress_reporter, logcatcher).create() 1010: 1011: os.environ.clear() 1012: os.environ.update(env_bkp) 1013: File: '/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-deb-non-deb/build/meta/lib/oe/rootfs.py', lineno: 202, function: create 0198: if self.progress_reporter: 0199: self.progress_reporter.next_stage() 0200: 0201: # call the package manager dependent create method *** 0202: self._create() 0203: 0204: sysconfdir = self.image_rootfs + self.d.getVar('sysconfdir') 0205: bb.utils.mkdirhier(sysconfdir) 0206: with open(sysconfdir + "/version", "w+") as ver: File: '/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-deb-non-deb/build/meta/lib/oe/rootfs.py', lineno: 691, function: _create 0687: self.pm.fix_broken_dependencies() 0688: 0689: self.pm.mark_packages("installed") 0690: *** 0691: self.pm.run_pre_post_installs() 0692: 0693: execute_pre_post_process(self.d, deb_post_process_cmds) 0694: 0695: if self.progress_reporter: File: '/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-deb-non-deb/build/meta/lib/oe/package_manager.py', lineno: 2029, function: run_pre_post_installs 2025: bb.note("Executing %s for package: %s ..." % 2026: (control_script.name.lower(), pkg_name)) 2027: subprocess.check_output([p_full, control_script.argument], 2028: stderr=subprocess.STDOUT).decode("utf-8") *** 2029: bb.note(output) 2030: except subprocess.CalledProcessError as e: 2031: bb.note("%s for package %s failed with %d:\n%s" % 2032: (control_script.name, pkg_name, e.returncode, 2033: e.output.decode("utf-8"))) Exception: NameError: name 'output' is not defined --- Thanks, Jussi > > except subprocess.CalledProcessError as e: > bb.note("%s for package %s failed with %d:\n%s" % > (control_script.name, pkg_name, e.returncode, > -- > 1.9.1 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core