* [PATCH 1/3] yocto-compat-layer: fix also other command invocations
2017-04-05 13:36 [PATCH 0/3] yocto-compat-layer: various enhancements + bitbake-diffsigs support Patrick Ohly
@ 2017-04-05 13:36 ` Patrick Ohly
2017-04-05 13:36 ` [PATCH 2/3] yocto-compat-layer: limit report of signature changes Patrick Ohly
` (2 subsequent siblings)
3 siblings, 0 replies; 9+ messages in thread
From: Patrick Ohly @ 2017-04-05 13:36 UTC (permalink / raw)
To: openembedded-core; +Cc: paul.eggleton
In commit 5b9ac62ab535d, one place was fixed where a command was
invoked such that failures caused double stack traces and stderr was
lost. The same problem also occurs elsewhere, triggered for example by
a layer with parsing problems.
Now a new utility method is used instead of repeating the code.
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
---
scripts/lib/compatlayer/__init__.py | 23 ++++++++++++++++-------
scripts/lib/compatlayer/cases/common.py | 25 +++++--------------------
2 files changed, 21 insertions(+), 27 deletions(-)
diff --git a/scripts/lib/compatlayer/__init__.py b/scripts/lib/compatlayer/__init__.py
index 86f86eb..9eb862d 100644
--- a/scripts/lib/compatlayer/__init__.py
+++ b/scripts/lib/compatlayer/__init__.py
@@ -4,6 +4,7 @@
# Released under the MIT license (see COPYING.MIT)
import os
+import subprocess
from enum import Enum
class LayerType(Enum):
@@ -199,8 +200,20 @@ def add_layer(bblayersconf, layer, layers, logger):
return True
+def check_command(error_msg, cmd):
+ '''
+ Run a command under a shell, capture stdout and stderr in a single stream,
+ throw an error when command returns non-zero exit code. Returns the output.
+ '''
+
+ p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ output, _ = p.communicate()
+ if p.returncode:
+ msg = "%s\nCommand: %s\nOutput:\n%s" % (error_msg, cmd, output.decode('utf-8'))
+ raise RuntimeError(msg)
+ return output
+
def get_signatures(builddir, failsafe=False):
- import subprocess
import re
# some recipes needs to be excluded like meta-world-pkgdata
@@ -214,12 +227,8 @@ def get_signatures(builddir, failsafe=False):
if failsafe:
cmd += '-k '
cmd += '-S none world'
- p = subprocess.Popen(cmd, shell=True,
- stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- output, _ = p.communicate()
- if p.returncode:
- msg = "Generating signatures failed. This might be due to some parse error and/or general layer incompatibilities.\nCommand: %s\nOutput:\n%s" % (cmd, output.decode('utf-8'))
- raise RuntimeError(msg)
+ check_command('Generating signatures failed. This might be due to some parse error and/or general layer incompatibilities.',
+ cmd)
sigs_file = os.path.join(builddir, 'locked-sigs.inc')
sig_regex = re.compile("^(?P<task>.*:.*):(?P<hash>.*) .$")
diff --git a/scripts/lib/compatlayer/cases/common.py b/scripts/lib/compatlayer/cases/common.py
index 4d328ec..9cc682e 100644
--- a/scripts/lib/compatlayer/cases/common.py
+++ b/scripts/lib/compatlayer/cases/common.py
@@ -2,9 +2,8 @@
# Released under the MIT license (see COPYING.MIT)
import os
-import subprocess
import unittest
-from compatlayer import get_signatures, LayerType
+from compatlayer import get_signatures, LayerType, check_command
from compatlayer.case import OECompatLayerTestCase
class CommonCompatLayer(OECompatLayerTestCase):
@@ -20,26 +19,12 @@ class CommonCompatLayer(OECompatLayerTestCase):
msg="Layer contains README file but is empty.")
def test_parse(self):
- try:
- output = subprocess.check_output('bitbake -p', shell=True,
- stderr=subprocess.PIPE)
- except subprocess.CalledProcessError as e:
- import traceback
- exc = traceback.format_exc()
- msg = 'Layer %s failed to parse.\n%s\n%s\n' % (self.tc.layer['name'],
- exc, e.output.decode('utf-8'))
- raise RuntimeError(msg)
+ check_command('Layer %s failed to parse.' % self.tc.layer['name'],
+ 'bitbake -p')
def test_show_environment(self):
- try:
- output = subprocess.check_output('bitbake -e', shell=True,
- stderr=subprocess.PIPE)
- except subprocess.CalledProcessError as e:
- import traceback
- exc = traceback.format_exc()
- msg = 'Layer %s failed to show environment.\n%s\n%s\n' % \
- (self.tc.layer['name'], exc, e.output.decode('utf-8'))
- raise RuntimeError(msg)
+ check_command('Layer %s failed to show environment.' % self.tc.layer['name'],
+ 'bitbake -e')
def test_signatures(self):
if self.tc.layer['type'] == LayerType.SOFTWARE:
--
git-series 0.9.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] yocto-compat-layer: limit report of signature changes
2017-04-05 13:36 [PATCH 0/3] yocto-compat-layer: various enhancements + bitbake-diffsigs support Patrick Ohly
2017-04-05 13:36 ` [PATCH 1/3] yocto-compat-layer: fix also other command invocations Patrick Ohly
@ 2017-04-05 13:36 ` Patrick Ohly
2017-04-06 20:38 ` Paul Eggleton
2017-04-05 13:36 ` [PATCH 3/3] yocto-compat-layer: include bitbake-diffsigs output Patrick Ohly
2017-04-06 16:25 ` [PATCH 0/3] yocto-compat-layer: various enhancements + bitbake-diffsigs support Aníbal Limón
3 siblings, 1 reply; 9+ messages in thread
From: Patrick Ohly @ 2017-04-05 13:36 UTC (permalink / raw)
To: openembedded-core; +Cc: paul.eggleton
Typically a single change cascades through the entire task dependency
chain. Developers had to figure that out themselves, based on hard to
read and interpret output (not sorted, no indention, no explanations):
$ yocto-compat-layer.py -n meta-xxxx
...
AssertionError: True is not false : Layer meta-xxxx changed signatures.
webkitgtk:do_install changed fe2edc9082bc0da98f9cb1391c52f565 -> b3a44684c5cd9aacd3f7c6ed88eefab5
gstreamer1.0-plugins-good:do_configure changed 3b2f8211be3fe08422bf6087f3af16d1 -> 7d80e42fa1f4f01ff4dfe2ea4477d382
pulseaudio:do_package_qa changed 5d0a58ada66ff17f5576555302ac319a -> 0e13bcb96143d1ae54c451bc3de0aa30
epiphany:do_prepare_recipe_sysroot changed 29e1b277dbcb005bd54950594c50d91b -> d3c45527b37677a0668ce483c6db3052
...
gst-player:do_packagedata changed 9ce6efdd357dd74919bc4957458b1e95 -> d0c083ce629f37adfc9c4ba9eff81f83
gstreamer1.0-plugins-base:do_install changed 1161cd867d15bea63e5dd5d9abf0519c -> 5bf2b652a2d77fee3eedb35af2f201a0
gstreamer1.0-rtsp-server:do_packagedata changed 6781dc3070f80b843ed1970d74dd323e -> 454620c2e3b9fea87e525d14b6ed0344
alsa-plugins:do_packagedata changed 1808c3f737cb805b169d004e948ea19c -> 480124b7fa5eab1f73bf96440d725231
Now the tool automates the problem analysis: it retrieves the depgraph
using the tinfoil API and only reports those tasks with modified
signatures whose dependencies have not changed, i.e. those tasks which
definitely introduce a change.
From the previous example, that just leaves two tasks that need to be
checked:
AssertionError: False is not true : Layer meta-xxxx changed 120 signatures, initial differences (first hash without, second with layer):
gstreamer1.0-plugins-base:do_fetch: 76973f19f2e30d282152bdd7e4efe5bb -> e6e7c6fa9f2bd59d7d8d107f7c6ca1ac
pulseaudio:do_install: 668eb1e30af129df9806b0aa0d7c10cd -> 1196bdb88eef56eeee4613bb06b9387e
This pruning might be a bit too aggressive in the sense that tasks
which inherit a change and then add more changes themselves won't be
reported initially. They will be found when fixing the reported tasks
and re-running the check.
For a developer it seems better to have something listed which
definitely is a problem and needs fixing instead of everything,
including the tasks which don't need fixes.
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
---
scripts/lib/compatlayer/__init__.py | 32 +++++++++++++++-
scripts/lib/compatlayer/cases/common.py | 54 +++++++++++++++++++-------
2 files changed, 73 insertions(+), 13 deletions(-)
diff --git a/scripts/lib/compatlayer/__init__.py b/scripts/lib/compatlayer/__init__.py
index 9eb862d..b46527a 100644
--- a/scripts/lib/compatlayer/__init__.py
+++ b/scripts/lib/compatlayer/__init__.py
@@ -7,6 +7,8 @@ import os
import subprocess
from enum import Enum
+import bb.tinfoil
+
class LayerType(Enum):
BSP = 0
DISTRO = 1
@@ -252,3 +254,33 @@ def get_signatures(builddir, failsafe=False):
raise RuntimeError('Can\'t load signatures from %s' % sigs_file)
return sigs
+
+def get_depgraph(targets=['world']):
+ '''
+ Returns the dependency graph for the given target(s).
+ The dependency graph is taken directly from DepTreeEvent.
+ '''
+ depgraph = None
+ with bb.tinfoil.Tinfoil() as tinfoil:
+ tinfoil.prepare(config_only=False)
+ tinfoil.set_event_mask(['bb.event.NoProvider', 'bb.event.DepTreeGenerated', 'bb.command.CommandCompleted'])
+ if not tinfoil.run_command('generateDepTreeEvent', targets, 'do_build'):
+ raise RuntimeError('starting generateDepTreeEvent failed')
+ while True:
+ event = tinfoil.wait_event(timeout=1000)
+ if event:
+ if isinstance(event, bb.command.CommandFailed):
+ raise RuntimeError('Generating dependency information failed: %s' % event.error)
+ elif isinstance(event, bb.command.CommandCompleted):
+ break
+ elif isinstance(event, bb.event.NoProvider):
+ if event._reasons:
+ raise RuntimeError('Nothing provides %s: %s' % (event._item, event._reasons))
+ else:
+ raise RuntimeError('Nothing provides %s.' % (event._item))
+ elif isinstance(event, bb.event.DepTreeGenerated):
+ depgraph = event._depgraph
+
+ if depgraph is None:
+ raise RuntimeError('Could not retrieve the depgraph.')
+ return depgraph
diff --git a/scripts/lib/compatlayer/cases/common.py b/scripts/lib/compatlayer/cases/common.py
index 9cc682e..b91da9b 100644
--- a/scripts/lib/compatlayer/cases/common.py
+++ b/scripts/lib/compatlayer/cases/common.py
@@ -3,7 +3,7 @@
import os
import unittest
-from compatlayer import get_signatures, LayerType, check_command
+from compatlayer import get_signatures, LayerType, check_command, get_depgraph
from compatlayer.case import OECompatLayerTestCase
class CommonCompatLayer(OECompatLayerTestCase):
@@ -31,21 +31,49 @@ class CommonCompatLayer(OECompatLayerTestCase):
raise unittest.SkipTest("Layer %s isn't BSP or DISTRO one." \
% self.tc.layer['name'])
+ # task -> (old signature, new signature)
sig_diff = {}
-
curr_sigs = get_signatures(self.td['builddir'], failsafe=True)
for task in self.td['sigs']:
- if task not in curr_sigs:
- continue
-
- if self.td['sigs'][task] != curr_sigs[task]:
- sig_diff[task] = '%s -> %s' % \
- (self.td['sigs'][task], curr_sigs[task])
+ if task in curr_sigs and \
+ self.td['sigs'][task] != curr_sigs[task]:
+ sig_diff[task] = (self.td['sigs'][task], curr_sigs[task])
- detail = ''
if sig_diff:
- for task in sig_diff:
- detail += "%s changed %s\n" % (task, sig_diff[task])
- self.assertFalse(bool(sig_diff), "Layer %s changed signatures.\n%s" % \
- (self.tc.layer['name'], detail))
+ # Beware, depgraph uses task=<pn>.<taskname> whereas get_signatures()
+ # uses <pn>:<taskname>. Need to convert sometimes. The output follows
+ # the convention from get_signatures() because that seems closer to
+ # normal bitbake output.
+ def sig2graph(task):
+ pn, taskname = task.rsplit(':', 1)
+ return pn + '.' + taskname
+ def graph2sig(task):
+ pn, taskname = task.rsplit('.', 1)
+ return pn + ':' + taskname
+ depgraph = get_depgraph()
+ depends = depgraph['tdepends']
+
+ # If a task A has a changed signature, but none of its
+ # dependencies, then we need to report it because it is
+ # the one which introduces a change. Any task depending on
+ # A (directly or indirectly) will also have a changed
+ # signature, but we don't need to report it. It might have
+ # its own changes, which will become apparent once the
+ # issues that we do report are fixed and the test gets run
+ # again.
+ sig_diff_filtered = []
+ for task, (old_sig, new_sig) in sig_diff.items():
+ deps_tainted = False
+ for dep in depends.get(sig2graph(task), ()):
+ if graph2sig(dep) in sig_diff:
+ deps_tainted = True
+ break
+ if not deps_tainted:
+ sig_diff_filtered.append((task, old_sig, new_sig))
+ msg = []
+ msg.append('Layer %s changed %d signatures, initial differences (first hash without, second with layer):' %
+ (self.tc.layer['name'], len(sig_diff)))
+ for diff in sorted(sig_diff_filtered):
+ msg.append(' %s: %s -> %s' % diff)
+ self.assertTrue(False, '\n'.join(msg))
--
git-series 0.9.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] yocto-compat-layer: limit report of signature changes
2017-04-05 13:36 ` [PATCH 2/3] yocto-compat-layer: limit report of signature changes Patrick Ohly
@ 2017-04-06 20:38 ` Paul Eggleton
2017-04-07 6:41 ` Patrick Ohly
0 siblings, 1 reply; 9+ messages in thread
From: Paul Eggleton @ 2017-04-06 20:38 UTC (permalink / raw)
To: Patrick Ohly, anibal.limon; +Cc: openembedded-core
On Thursday, 6 April 2017 1:36:05 AM NZST you wrote:
> AssertionError: False is not true : Layer meta-xxxx changed 120
> signatures, initial differences (first hash without, second with layer):
BTW, rather than self.assertTrue(False, ... ) you can just use self.fail(...)
and then you avoid this ugly "False is not True" bit.
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] yocto-compat-layer: limit report of signature changes
2017-04-06 20:38 ` Paul Eggleton
@ 2017-04-07 6:41 ` Patrick Ohly
0 siblings, 0 replies; 9+ messages in thread
From: Patrick Ohly @ 2017-04-07 6:41 UTC (permalink / raw)
To: Paul Eggleton; +Cc: openembedded-core
On Fri, 2017-04-07 at 08:38 +1200, Paul Eggleton wrote:
> On Thursday, 6 April 2017 1:36:05 AM NZST you wrote:
> > AssertionError: False is not true : Layer meta-xxxx changed 120
> > signatures, initial differences (first hash without, second with layer):
>
> BTW, rather than self.assertTrue(False, ... ) you can just use self.fail(...)
> and then you avoid this ugly "False is not True" bit.
I suspected that there must be something like that when changing the
message, but then was too lazy to look it up - thanks for pointing it
out ;-}
I'll change that in a V2.
--
Best Regards, Patrick Ohly
The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/3] yocto-compat-layer: include bitbake-diffsigs output
2017-04-05 13:36 [PATCH 0/3] yocto-compat-layer: various enhancements + bitbake-diffsigs support Patrick Ohly
2017-04-05 13:36 ` [PATCH 1/3] yocto-compat-layer: fix also other command invocations Patrick Ohly
2017-04-05 13:36 ` [PATCH 2/3] yocto-compat-layer: limit report of signature changes Patrick Ohly
@ 2017-04-05 13:36 ` Patrick Ohly
2017-04-05 15:26 ` Leonardo Sandoval
2017-04-06 16:25 ` [PATCH 0/3] yocto-compat-layer: various enhancements + bitbake-diffsigs support Aníbal Limón
3 siblings, 1 reply; 9+ messages in thread
From: Patrick Ohly @ 2017-04-05 13:36 UTC (permalink / raw)
To: openembedded-core; +Cc: paul.eggleton
After filtering out potential false positives, it becomes feasible to
include the output of bitbake-diffsigs for those tasks which
definitely have a change.
Depends on bitbake-diffsigs with the "--signature" parameter.
Enhanced output now is:
AssertionError: False is not true : Layer meta-xxxx changed 120 signatures, initial differences (first hash without, second with layer):
gstreamer1.0-plugins-base:do_fetch: 76973f19f2e30d282152bdd7e4efe5bb -> e6e7c6fa9f2bd59d7d8d107f7c6ca1ac
Task dependencies changed from:
['PV', 'SRCREV', 'SRC_URI', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]', 'base_do_fetch']
to:
['GST_IMX_PATCHES_TO_APPEND', 'PV', 'SRCREV', 'SRC_URI', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]', 'base_do_fetch']
basehash changed from d679d30bd1ea41c56e57419b57587f3c to 090a79b45f5fa26d10f9d34e2ed7a1e6
List of dependencies for variable SRC_URI changed from '{'PV', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]'}' to '{'GST_IMX_PATCHES_TO_APPEND', 'PV', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]'}'
changed items: {'GST_IMX_PATCHES_TO_APPEND'}
Dependency on variable GST_IMX_PATCHES_TO_APPEND was added
Variable SRC_URI value changed:
" http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz file://get-caps-from-src-pad-when-query-caps.patch file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch file://encodebin-Need-more-buffers-in-output-queue-for-bett.patch file://make-gio_unix_2_0-dependency-configurable.patch file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch file://0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch file://0003-riff-add-missing-include-directories-when-calling-in.patch file://0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch [--] {+${GST_IMX_PATCHES_TO_APPEND}+}"
pulseaudio:do_install: 6bb6fe23e11a6d5fef9c3a25e73e4f9c -> 3f54ea75673a792e307197cfa6ef2694
basehash changed from ac4efcfa783bd04a5a98a2c38719aedd to 37679d99623a37c8df955da3a01415a5
Variable do_install value changed:
@@ -1,3 +1,7 @@
autotools_do_install
install -d ${D}${sysconfdir}/default/volatiles
install -m 0644 ${WORKDIR}/volatiles.04_pulse ${D}${sysconfdir}/default/volatiles/volatiles.04_pulse
+ if [ -e "${WORKDIR}/daemon.conf" ] && [ -e "${WORKDIR}/default.pa" ]; then
+ install -m 0644 ${WORKDIR}/daemon.conf ${D}${sysconfdir}/pulse/daemon.conf
+ install -m 0644 ${WORKDIR}/default.pa ${D}${sysconfdir}/pulse/default.pa
+ fi
[YOCTO #11161]
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
---
scripts/lib/compatlayer/cases/common.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/scripts/lib/compatlayer/cases/common.py b/scripts/lib/compatlayer/cases/common.py
index b91da9b..d909d5b 100644
--- a/scripts/lib/compatlayer/cases/common.py
+++ b/scripts/lib/compatlayer/cases/common.py
@@ -76,4 +76,14 @@ class CommonCompatLayer(OECompatLayerTestCase):
(self.tc.layer['name'], len(sig_diff)))
for diff in sorted(sig_diff_filtered):
msg.append(' %s: %s -> %s' % diff)
+ try:
+ recipe, taskname = diff[0].rsplit(':', 1)
+ output = check_command('Determining signature difference failed.',
+ 'bitbake-diffsigs --task %s %s --signature %s %s' %
+ (recipe, taskname, diff[1], diff[2])).decode('utf-8')
+ except RuntimeError as error:
+ output = str(error)
+ if output:
+ msg.extend([' ' + line for line in output.splitlines()])
+ msg.append('')
self.assertTrue(False, '\n'.join(msg))
--
git-series 0.9.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] yocto-compat-layer: include bitbake-diffsigs output
2017-04-05 13:36 ` [PATCH 3/3] yocto-compat-layer: include bitbake-diffsigs output Patrick Ohly
@ 2017-04-05 15:26 ` Leonardo Sandoval
2017-04-05 18:10 ` Patrick Ohly
0 siblings, 1 reply; 9+ messages in thread
From: Leonardo Sandoval @ 2017-04-05 15:26 UTC (permalink / raw)
To: Patrick Ohly; +Cc: paul.eggleton, openembedded-core
On Wed, 2017-04-05 at 15:36 +0200, Patrick Ohly wrote:
> After filtering out potential false positives, it becomes feasible to
> include the output of bitbake-diffsigs for those tasks which
> definitely have a change.
>
> Depends on bitbake-diffsigs with the "--signature" parameter.
>
> Enhanced output now is:
>
> AssertionError: False is not true : Layer meta-xxxx changed 120 signatures, initial differences (first hash without, second with layer):
> gstreamer1.0-plugins-base:do_fetch: 76973f19f2e30d282152bdd7e4efe5bb -> e6e7c6fa9f2bd59d7d8d107f7c6ca1ac
> Task dependencies changed from:
> ['PV', 'SRCREV', 'SRC_URI', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]', 'base_do_fetch']
> to:
> ['GST_IMX_PATCHES_TO_APPEND', 'PV', 'SRCREV', 'SRC_URI', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]', 'base_do_fetch']
> basehash changed from d679d30bd1ea41c56e57419b57587f3c to 090a79b45f5fa26d10f9d34e2ed7a1e6
> List of dependencies for variable SRC_URI changed from '{'PV', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]'}' to '{'GST_IMX_PATCHES_TO_APPEND', 'PV', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]'}'
> changed items: {'GST_IMX_PATCHES_TO_APPEND'}
> Dependency on variable GST_IMX_PATCHES_TO_APPEND was added
> Variable SRC_URI value changed:
> " http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz file://get-caps-from-src-pad-when-query-caps.patch file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch file://encodebin-Need-more-buffers-in-output-queue-for-bett.patch file://make-gio_unix_2_0-dependency-configurable.patch file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch file://0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch file://0003-riff-add-missing-include-directories-when-calling-in.patch file://0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch [--] {+${GST_IMX_PATCHES_TO_APPEND}+}"
>
> pulseaudio:do_install: 6bb6fe23e11a6d5fef9c3a25e73e4f9c -> 3f54ea75673a792e307197cfa6ef2694
> basehash changed from ac4efcfa783bd04a5a98a2c38719aedd to 37679d99623a37c8df955da3a01415a5
> Variable do_install value changed:
> @@ -1,3 +1,7 @@
> autotools_do_install
> install -d ${D}${sysconfdir}/default/volatiles
> install -m 0644 ${WORKDIR}/volatiles.04_pulse ${D}${sysconfdir}/default/volatiles/volatiles.04_pulse
> + if [ -e "${WORKDIR}/daemon.conf" ] && [ -e "${WORKDIR}/default.pa" ]; then
> + install -m 0644 ${WORKDIR}/daemon.conf ${D}${sysconfdir}/pulse/daemon.conf
> + install -m 0644 ${WORKDIR}/default.pa ${D}${sysconfdir}/pulse/default.pa
> + fi
>
> [YOCTO #11161]
>
> Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
> ---
> scripts/lib/compatlayer/cases/common.py | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/scripts/lib/compatlayer/cases/common.py b/scripts/lib/compatlayer/cases/common.py
> index b91da9b..d909d5b 100644
> --- a/scripts/lib/compatlayer/cases/common.py
> +++ b/scripts/lib/compatlayer/cases/common.py
> @@ -76,4 +76,14 @@ class CommonCompatLayer(OECompatLayerTestCase):
> (self.tc.layer['name'], len(sig_diff)))
> for diff in sorted(sig_diff_filtered):
> msg.append(' %s: %s -> %s' % diff)
> + try:
> + recipe, taskname = diff[0].rsplit(':', 1)
> + output = check_command('Determining signature difference failed.',
> + 'bitbake-diffsigs --task %s %s --signature %s %s' %
> + (recipe, taskname, diff[1], diff[2])).decode('utf-8')
> + except RuntimeError as error:
> + output = str(error)
Patrick, just a minor comment: there is no need for the 'if' check,
because the try and the except bodies set the output variable.
Leo
> + if output:
> + msg.extend([' ' + line for line in output.splitlines()])
> + msg.append('')
> self.assertTrue(False, '\n'.join(msg))
> --
> git-series 0.9.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] yocto-compat-layer: include bitbake-diffsigs output
2017-04-05 15:26 ` Leonardo Sandoval
@ 2017-04-05 18:10 ` Patrick Ohly
0 siblings, 0 replies; 9+ messages in thread
From: Patrick Ohly @ 2017-04-05 18:10 UTC (permalink / raw)
To: Leonardo Sandoval; +Cc: paul.eggleton, openembedded-core
On Wed, 2017-04-05 at 10:26 -0500, Leonardo Sandoval wrote:
> > diff --git a/scripts/lib/compatlayer/cases/common.py b/scripts/lib/compatlayer/cases/common.py
> > index b91da9b..d909d5b 100644
> > --- a/scripts/lib/compatlayer/cases/common.py
> > +++ b/scripts/lib/compatlayer/cases/common.py
> > @@ -76,4 +76,14 @@ class CommonCompatLayer(OECompatLayerTestCase):
> > (self.tc.layer['name'], len(sig_diff)))
> > for diff in sorted(sig_diff_filtered):
> > msg.append(' %s: %s -> %s' % diff)
> > + try:
> > + recipe, taskname = diff[0].rsplit(':', 1)
> > + output = check_command('Determining signature difference failed.',
> > + 'bitbake-diffsigs --task %s %s --signature %s %s' %
> > + (recipe, taskname, diff[1], diff[2])).decode('utf-8')
> > + except RuntimeError as error:
> > + output = str(error)
>
> Patrick, just a minor comment: there is no need for the 'if' check,
> because the try and the except bodies set the output variable.
I added that for the case that the command prints nothing (output ==
''). It's unlikely, but I prefer explicit, easy checking over making
assumptions.
--
Best Regards, Patrick Ohly
The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] yocto-compat-layer: various enhancements + bitbake-diffsigs support
2017-04-05 13:36 [PATCH 0/3] yocto-compat-layer: various enhancements + bitbake-diffsigs support Patrick Ohly
` (2 preceding siblings ...)
2017-04-05 13:36 ` [PATCH 3/3] yocto-compat-layer: include bitbake-diffsigs output Patrick Ohly
@ 2017-04-06 16:25 ` Aníbal Limón
3 siblings, 0 replies; 9+ messages in thread
From: Aníbal Limón @ 2017-04-06 16:25 UTC (permalink / raw)
To: Patrick Ohly, openembedded-core; +Cc: paul.eggleton
[-- Attachment #1: Type: text/plain, Size: 1670 bytes --]
Acked-by: Aníbal Limón <anibal.limon@linux.intel.com>
On 04/05/2017 08:36 AM, Patrick Ohly wrote:
> I started applying yocto-compat-layer to some real BSP layers and ran
> into some usability issues with the tool.
>
> I also didn't want to do the root cause analysis manually, so I
> automated the dependency analysis and the running of
> bitbake-diffsigs.
>
> This patch series is based on Mark's "yocto-compat-layer.py updates"
> series. The last commit depends on Paul's "bitbake-diffsigs: add an
> option to find and compare specific signatures" patch from
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=paule/sigstuff&id=5bb69edfb4bbaa7373061daeb4f233a7e2f43a43
>
> Regarding the BSP example that I ended up using: it actually was one
> of the better BSP layers and only had one problem in a "bitbake world"
> build instead of several as in other BSP layers. Nevertheless I
> obscured the name to protect the (not so) guilty in the commit
> messages ;-}
>
> The two changes that show up in test_signatures look harmless at first
> glance, but probably would need to be done differently to avoid a
> false positive when doing the signature check.
>
> Patrick Ohly (3):
> yocto-compat-layer: fix also other command invocations
> yocto-compat-layer: limit report of signature changes
> yocto-compat-layer: include bitbake-diffsigs output
>
> scripts/lib/compatlayer/__init__.py | 55 +++++++++++++---
> scripts/lib/compatlayer/cases/common.py | 87 ++++++++++++++++----------
> 2 files changed, 103 insertions(+), 39 deletions(-)
>
> base-commit: f6b68a87a11a84c7baf7784fc71e07c6595d598b
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread