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