[OE-core] [PATCH 1/2] package_manager: default to have scriptlet output captured in log
Jussi Kukkonen
jussi.kukkonen at intel.com
Thu Dec 22 09:36:17 UTC 2016
On 21 December 2016 at 06:32, Chen Qi <Qi.Chen at windriver.com> 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 <Qi.Chen at windriver.com>
> ---
> 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: <module>
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 at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20161222/aee1a436/attachment-0002.html>
More information about the Openembedded-core
mailing list