* [PATCH] scripts: analyze_patch: Analyze patch and suggest tests.
@ 2015-11-20 14:22 Daniel Istrate
2015-11-23 15:55 ` Leonardo Sandoval
0 siblings, 1 reply; 4+ messages in thread
From: Daniel Istrate @ 2015-11-20 14:22 UTC (permalink / raw)
To: openembedded-core
[YOCTO #8647] - Script to analyse what areas a patch changes
and what tests need running
This script will analyze files modified by a commit and
attempt to suggest what tests to run.
It is somewhat dependent of the 'snakefood' tool to determine
the import relationship between files. If this pkg is missing
a backup file will be used instead: deps.txt
Usage: analyze_patch --revision <rev>
Example: analyze_patch --revision 351c69a
Revision: 351c69a
Modified files:
meta/recipes-support/sqlite/files/0001-using-the-dynamic-library.patch
meta/recipes-support/sqlite/sqlite3_3.8.10.2.bb
meta/recipes-support/sqlite/sqlite3_3.9.0.bb
Suggested tests:
Rebuild: sqlite3
Signed-off-by: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
---
scripts/analyze_patch | 300 ++++++++++++++++++++++++
scripts/deps.txt | 628 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 928 insertions(+)
create mode 100755 scripts/analyze_patch
create mode 100644 scripts/deps.txt
diff --git a/scripts/analyze_patch b/scripts/analyze_patch
new file mode 100755
index 0000000..1b6609b
--- /dev/null
+++ b/scripts/analyze_patch
@@ -0,0 +1,300 @@
+#!/usr/bin/env python
+
+# Description: This will analyze the files modified by a commit and attempt to suggest what tests to run.
+# It uses an adjacent file 'deps.txt' that was generated by 'snakefood' tool:
+# sfood <poky_dir> | grep -v /usr/lib/python | grep -v /usr/share/pyshared/ |
+# grep -v None | grep ".py')," | grep ".py\'))" > deps.txt
+# This file has to be edited further: remove the <poky_dir> and replace "', '" with '/'.
+# In the end you should have something like this: a matrix with 2 columns, which represent
+# elements from the left import elements from the right.
+# (('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/event.py'))
+# (('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/msg.py'))
+#
+# How to use it: analyze_patch --revision <rev>
+# analyze_patch -r 2d1071e
+# Notes: if revision is not provided, will default to HEAD
+# Author: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
+
+import argparse
+import os
+import glob
+import ast
+import re
+from subprocess import PIPE, Popen, STDOUT
+
+parser = argparse.ArgumentParser()
+parser.add_argument('-r', '--revision', help='<revision> changes to analyze.')
+args = parser.parse_args()
+
+revision = args.revision or 'HEAD'
+
+this_file_path = os.path.dirname(os.path.abspath(__file__))
+poky_dir = os.path.abspath(os.path.join(this_file_path, os.pardir))
+# Move into the the poky dir
+os.chdir(poky_dir)
+
+# Where are the available tests located
+bb_test_dir = 'bitbake/lib/bb/tests/'
+selftest_dir = 'meta/lib/oeqa/selftest/'
+runtime_dir = 'meta/lib/oeqa/runtime/'
+
+RETOK = 0
+
+
+def run_cmd(cmd, ignore_err=False):
+ """
+ Run cmd in bash shell
+ :param cmd: command to be ran.
+ :param ignore_err: redirect stderr to /dev/null, otherwise redirect stderr to stdout
+ :return: tuple containing exit code & output of the cmd
+ """
+ DEVNULL = open(os.devnull, 'w')
+
+ if ignore_err:
+ proc = Popen(args=cmd, stdout=PIPE, stderr=DEVNULL, shell=True, executable='/bin/bash')
+ else:
+ proc = Popen(args=cmd, stdout=PIPE, stderr=STDOUT, shell=True, executable='/bin/bash')
+ retval = proc.communicate()[0]
+ retcode = proc.returncode
+
+ return retcode, retval
+
+
+def get_modified_files(rev=revision):
+ """
+ Determine modified files by a commit
+ :param rev: the revision number to determine modified files for.
+ :return: a list of modified files
+ """
+ cmd = 'git diff-tree --no-commit-id --name-only -r ' + rev
+ retcode, retval = run_cmd(cmd)
+
+ if retcode != RETOK:
+ return retcode, retval
+
+ retlist = retval.split('\n')
+ retlist.remove('')
+
+ return retlist
+
+
+def get_list_of_testuites(test_dir):
+ """
+ Looks for .py files in test_dir
+ :param test_dir: directory containing (hopefully) test suites
+ :return: list of test suites
+ """
+ test_suites = []
+ test_list = glob.glob(test_dir + '*.py')
+
+ # trim the .py extension and the path to each testsuite
+ for ts in test_list:
+ test_suites.append(ts.replace(test_dir, '').replace('.py', ''))
+
+ # remove __init__ from test_suites
+ try:
+ test_suites.remove('__init__')
+ except:
+ pass
+
+ return test_suites
+
+
+def get_modules_dependencies(mfile):
+ """
+ Get modules dependencies from poky.
+ It uses 'snakefood' pkg (please make sure it is installed)
+ In case 'snakefood' is not installed a backup file will be used instead.
+ :return: a list of all modules deps
+ """
+
+ cmd = 'sfood %s | grep -v /usr/lib/python | grep -v /usr/share/pyshared/ | ' \
+ 'grep -v None | grep ".py\')," | grep ".py\'))"' % poky_dir
+
+ retcode, retval = run_cmd(cmd)
+
+ if retcode != 0:
+ # cmd failed, most likely 'snakefood' is not installed
+ # will look for deps.txt
+ # print "WARNING: 'snakefood' not installed. Will proceed with 'deps.txt'."
+ deps = open('scripts/deps.txt', 'r').read()
+ else:
+ deps = retval.replace(poky_dir + '/', '').replace("', '", '/')
+
+ deps_m = []
+ for i in deps.split('\n'):
+ try:
+ deps_m.append(ast.literal_eval(i))
+ except:
+ # There might be a '\n' at the end of the file --> will ignore
+ pass
+
+ def find_deps(mfile, visited):
+
+ if isinstance(mfile, list):
+ for i in mfile:
+ find_deps(i, visited)
+ else:
+ for i in deps_m:
+ if i[1] == mfile and i[0] not in visited:
+ visited.append(i[0])
+ find_deps(i[0], visited)
+
+ return visited
+
+ return find_deps(mfile, [])
+
+
+def is_documentation(mfile):
+ """All files under documentation"""
+ doc_patt = r'documentation/'
+ if doc_patt in mfile:
+ return True
+ return False
+
+
+def is_recipe(mfile):
+ recipe_patt = r'\.(bbappend|bb)$'
+ if re.search(recipe_patt, mfile):
+ return True
+ return False
+
+
+def is_part_of_recipe(mfile):
+ """Everything that is inside meta/recipes-* or meta-*/recipes-* """
+ part_recipe_patt = r'^meta(-\S+)?/recipes-'
+ if re.search(part_recipe_patt, mfile):
+ return True
+ return False
+
+
+def is_test(mfile):
+ """Check that the file is a test file"""
+ global selftest_dir
+ global runtime_dir
+ global bb_test_dir
+
+ if runtime_dir in mfile or selftest_dir in mfile or bb_test_dir in mfile:
+ return True
+ return False
+
+
+def get_test_name(mfile):
+ ret_list = []
+ test_name = os.path.basename(mfile).split('.')[0]
+ if is_test(mfile) and test_name != '__init__':
+ ret_list.append(test_name)
+ return ret_list
+
+
+def get_test_for(mfile):
+ """ Attempt to guess a test for the given file """
+ # Not very happy with this, it needs to be clever
+ global all_tests
+ ret_list = []
+
+ for i in all_tests:
+ if i in mfile:
+ ret_list.append(i)
+
+ return ret_list
+
+
+def get_recipe_name(mfile):
+ """ Trim the file extension and pn from filename"""
+ # Most files follow this format recipename_pn.bb | recipe-name_pn.bb | recipe-name.bb
+ ret_list = []
+ temp_list = []
+ if is_recipe(mfile):
+ ret_list.append(os.path.basename(mfile).split('_')[0].replace('.bb', ''))
+ return ret_list
+ # If it's a file that has something to do with a recipe attempt to guess the recipe
+ # Look for .bb|.bbappend files in the current dir up to 2 lvl above till bb files are found
+ # There might be cases when it will find more bb files, some perhaps not directly related to
+ # the file, but at least we are covered.
+ if is_part_of_recipe(mfile):
+ levels_list = ['/*.bb*', '/../*.bb*', '/../../*.bb*']
+ for lvl in levels_list:
+ recipes = glob.glob(os.path.dirname(mfile) + lvl)
+ if recipes:
+ temp_list += recipes
+ break
+ # Trim the file extension and pn from filename
+ for i in temp_list:
+ ret_list.append(os.path.basename(i).split('_')[0].replace('.bb', ''))
+ return ret_list
+
+ return ret_list
+
+
+def suggest_tests(mfile):
+ """ Suggest tests """
+ global documentation_updated
+ global recipes_to_rebuild
+ global tests_to_run
+
+ if is_documentation(mfile):
+ documentation_updated = True
+ elif is_recipe(mfile) or is_part_of_recipe(mfile):
+ recipes_to_rebuild.update(get_recipe_name(mfile))
+ elif is_test(mfile):
+ tests_to_run.update(get_test_name(mfile))
+ #else
+ tests_to_run.update(get_test_for(mfile))
+
+
+selftest_tests = get_list_of_testuites(selftest_dir)
+runtime_tests = get_list_of_testuites(runtime_dir)
+bb_tests = get_list_of_testuites(bb_test_dir)
+all_tests = bb_tests + runtime_tests + selftest_tests
+
+mfiles = get_modified_files()
+ind_mfiles = get_modules_dependencies(mfiles)
+# mfiles might be included in ind_files if there are circular imports
+all_mfiles = set(mfiles + ind_mfiles)
+
+recipes_to_rebuild = set()
+tests_to_run = set()
+documentation_updated = False
+
+
+# Print results
+print '\nRevision: %s' % revision
+print '\nModified files:'
+for i in mfiles:
+ print i
+if ind_mfiles:
+ print '\nIndirect modified files:'
+ for i in ind_mfiles:
+ print i
+print '\nSuggested tests:'
+for i in all_mfiles:
+ suggest_tests(i)
+
+if documentation_updated:
+ print 'Documentation updated, nothing to do.'
+
+if recipes_to_rebuild:
+ ret_recipe = ''
+ for i in recipes_to_rebuild:
+ ret_recipe += i + ' '
+ print 'Rebuild: %s' % ret_recipe
+
+if tests_to_run:
+ ret_bb, ret_selftest, ret_runtime = ('',)*3
+ for i in tests_to_run:
+ if i in bb_tests:
+ ret_bb += i + ' '
+ elif i in runtime_tests:
+ ret_runtime += i + ' '
+ elif i in selftest_tests:
+ ret_selftest += i + ' '
+ if ret_bb:
+ print 'bitbake-selftest: %s ' % ret_bb
+ if ret_selftest:
+ print 'oe-selftest: %s ' % ret_selftest
+ if ret_runtime:
+ print 'runtime: %s ' % ret_runtime
+
+if not (recipes_to_rebuild or documentation_updated or tests_to_run):
+ print None
diff --git a/scripts/deps.txt b/scripts/deps.txt
new file mode 100644
index 0000000..421897d
--- /dev/null
+++ b/scripts/deps.txt
@@ -0,0 +1,628 @@
+(('bitbake/contrib/dump_cache.py'), ('bitbake/lib/bb/cache.py'))
+(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/event.py'))
+(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/msg.py'))
+(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/process.py'))
+(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/cache.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/cache_extra.py'), ('bitbake/lib/bb/cache.py'))
+(('bitbake/lib/bb/checksum.py'), ('bitbake/lib/bb/cache.py'))
+(('bitbake/lib/bb/checksum.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/cache.py'))
+(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
+(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/pyshyacc.py'))
+(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
+(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/codegen.py'))
+(('bitbake/lib/bb/command.py'), ('bitbake/lib/bb/cooker.py'))
+(('bitbake/lib/bb/command.py'), ('bitbake/lib/bb/event.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/build.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/cache.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/command.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/event.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/exceptions.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/providers.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/runqueue.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/shell.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/taskdata.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/prserv/serv.py'))
+(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/pyinotify.py'))
+(('bitbake/lib/bb/cookerdata.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/data.py'), ('bitbake/lib/bb/codeparser.py'))
+(('bitbake/lib/bb/data.py'), ('bitbake/lib/bb/data_smart.py'))
+(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/COW.py'))
+(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/codeparser.py'))
+(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/compat.py'))
+(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/exceptions.py'))
+(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/msg.py'))
+(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/exceptions.py'), ('bitbake/lib/bb/namedtuple_with_abc.py'))
+(('bitbake/lib/bb/fetch2/bzr.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/clearcase.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/git.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/gitannex.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/gitannex.py'), ('bitbake/lib/bb/fetch2/git.py'))
+(('bitbake/lib/bb/fetch2/gitsm.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/gitsm.py'), ('bitbake/lib/bb/fetch2/git.py'))
+(('bitbake/lib/bb/fetch2/hg.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/local.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/local.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/fetch2/osc.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/perforce.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/repo.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/sftp.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/ssh.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/svn.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/fetch2/wget.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/cooker.py'))
+(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/cookerdata.py'))
+(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/event.py'))
+(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/msg.py'))
+(('bitbake/lib/bb/methodpool.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/msg.py'), ('bitbake/lib/bb/event.py'))
+(('bitbake/lib/bb/parse/ast.py'), ('bitbake/lib/bb/methodpool.py'))
+(('bitbake/lib/bb/parse/parse_py'), ('bitbake/lib/bb/parse/parse_py/BBHandler.py'))
+(('bitbake/lib/bb/parse/parse_py'), ('bitbake/lib/bb/parse/parse_py/ConfHandler.py'))
+(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/build.py'))
+(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/parse/ast.py'))
+(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/parse/parse_py/ConfHandler.py'))
+(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/parse/parse_py/ConfHandler.py'), ('bitbake/lib/bb/parse/ast.py'))
+(('bitbake/lib/bb/parse/parse_py/ConfHandler.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/persist_data.py'), ('bitbake/lib/bb/compat.py'))
+(('bitbake/lib/bb/persist_data.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/providers.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/providers.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/pysh/builtin.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
+(('bitbake/lib/bb/pysh/builtin.py'), ('bitbake/lib/bb/pysh/subprocess_fix.py'))
+(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/builtin.py'))
+(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
+(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/pyshyacc.py'))
+(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
+(('bitbake/lib/bb/pysh/pysh.py'), ('bitbake/lib/bb/pysh/interp.py'))
+(('bitbake/lib/bb/pysh/pysh.py'), ('bitbake/lib/bb/pysh/lsprof.py'))
+(('bitbake/lib/bb/pysh/pyshlex.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
+(('bitbake/lib/bb/pysh/pyshlex.py'), ('bitbake/lib/ply/lex.py'))
+(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
+(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
+(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/ply/yacc.py'))
+(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/event.py'))
+(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/monitordisk.py'))
+(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/msg.py'))
+(('bitbake/lib/bb/server/process.py'), ('bitbake/lib/bb/event.py'))
+(('bitbake/lib/bb/server/xmlrpc.py'), ('bitbake/lib/bb/daemonize.py'))
+(('bitbake/lib/bb/server/xmlrpc.py'), ('bitbake/lib/bb/ui/uievent.py'))
+(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/build.py'))
+(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/cache.py'))
+(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/providers.py'))
+(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/runqueue.py'))
+(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/taskdata.py'))
+(('bitbake/lib/bb/siggen.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/tests/codeparser.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/tests/cow.py'), ('bitbake/lib/bb/COW.py'))
+(('bitbake/lib/bb/tests/data.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/tests/parse.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/tests/parse.py'), ('bitbake/lib/bb/siggen.py'))
+(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cache.py'))
+(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cooker.py'))
+(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cookerdata.py'))
+(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/providers.py'))
+(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/bb/ui/buildinfohelper.py'), ('bitbake/lib/bb/msg.py'))
+(('bitbake/lib/bb/ui/buildinfohelper.py'), ('bitbake/lib/toaster/orm/models.py'))
+(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/process.py'))
+(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
+(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
+(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
+(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/builddetailspage.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/persistenttooltip.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'))
+(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/utils.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/process.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/utils.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
+(('bitbake/lib/bb/ui/crumbs/hobeventhandler.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
+(('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
+(('bitbake/lib/bb/ui/crumbs/hobpages.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
+(('bitbake/lib/bb/ui/crumbs/hobpages.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/hobwidget.py'), ('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'))
+(('bitbake/lib/bb/ui/crumbs/hobwidget.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
+(('bitbake/lib/bb/ui/crumbs/hobwidget.py'), ('bitbake/lib/bb/ui/crumbs/persistenttooltip.py'))
+(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hig/retrieveimagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
+(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
+(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
+(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
+(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
+(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'))
+(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
+(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
+(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
+(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
+(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
+(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/progressbar.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
+(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
+(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
+(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
+(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/runningbuild.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
+(('bitbake/lib/bb/ui/crumbs/runningbuild.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
+(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
+(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
+(('bitbake/lib/bb/ui/depexp.py'), ('bitbake/lib/bb/event.py'))
+(('bitbake/lib/bb/ui/depexp.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
+(('bitbake/lib/bb/ui/goggle.py'), ('bitbake/lib/bb/ui/crumbs/progress.py'))
+(('bitbake/lib/bb/ui/goggle.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
+(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/crumbs/builder.py'))
+(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/crumbs/hobeventhandler.py'))
+(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
+(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/uihelper.py'))
+(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/bb/msg.py'))
+(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/bb/ui/uihelper.py'))
+(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/progressbar.py'))
+(('bitbake/lib/bb/ui/ncurses.py'), ('bitbake/lib/bb/ui/uihelper.py'))
+(('bitbake/lib/bb/ui/puccho.py'), ('bitbake/lib/bb/ui/crumbs/buildmanager.py'))
+(('bitbake/lib/bb/ui/puccho.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
+(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/msg.py'))
+(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/ui/buildinfohelper.py'))
+(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/ui/uihelper.py'))
+(('bitbake/lib/bb/ui/uihelper.py'), ('bitbake/lib/bb/build.py'))
+(('bitbake/lib/bb/ui/uihelper.py'), ('bitbake/lib/bb/server/xmlrpc.py'))
+(('bitbake/lib/bb/utils.py'), ('bitbake/lib/bb/data.py'))
+(('bitbake/lib/bb/utils.py'), ('bitbake/lib/bb/msg.py'))
+(('bitbake/lib/bs4/builder/_html5lib.py'), ('bitbake/lib/bs4/element.py'))
+(('bitbake/lib/bs4/builder/_htmlparser.py'), ('bitbake/lib/bs4/dammit.py'))
+(('bitbake/lib/bs4/builder/_htmlparser.py'), ('bitbake/lib/bs4/element.py'))
+(('bitbake/lib/bs4/builder/_lxml.py'), ('bitbake/lib/bs4/dammit.py'))
+(('bitbake/lib/bs4/builder/_lxml.py'), ('bitbake/lib/bs4/element.py'))
+(('bitbake/lib/bs4/element.py'), ('bitbake/lib/bs4/dammit.py'))
+(('bitbake/lib/bs4/testing.py'), ('bitbake/lib/bs4/element.py'))
+(('bitbake/lib/bs4/tests/test_html5lib.py'), ('bitbake/lib/bs4/element.py'))
+(('bitbake/lib/bs4/tests/test_html5lib.py'), ('bitbake/lib/bs4/testing.py'))
+(('bitbake/lib/bs4/tests/test_htmlparser.py'), ('bitbake/lib/bs4/testing.py'))
+(('bitbake/lib/bs4/tests/test_lxml.py'), ('bitbake/lib/bs4/element.py'))
+(('bitbake/lib/bs4/tests/test_lxml.py'), ('bitbake/lib/bs4/testing.py'))
+(('bitbake/lib/bs4/tests/test_lxml.py'), ('bitbake/lib/bs4/tests/test_htmlparser.py'))
+(('bitbake/lib/bs4/tests/test_soup.py'), ('bitbake/lib/bs4/dammit.py'))
+(('bitbake/lib/bs4/tests/test_soup.py'), ('bitbake/lib/bs4/element.py'))
+(('bitbake/lib/bs4/tests/test_soup.py'), ('bitbake/lib/bs4/testing.py'))
+(('bitbake/lib/bs4/tests/test_tree.py'), ('bitbake/lib/bs4/element.py'))
+(('bitbake/lib/bs4/tests/test_tree.py'), ('bitbake/lib/bs4/testing.py'))
+(('bitbake/lib/ply/yacc.py'), ('bitbake/lib/ply/lex.py'))
+(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/bb/server/xmlrpc.py'))
+(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/bb/utils.py'))
+(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/prserv/db.py'))
+(('bitbake/lib/toaster/bldcontrol/admin.py'), ('bitbake/lib/toaster/bldcontrol/models.py'))
+(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'), ('bitbake/lib/bb/server/xmlrpc.py'))
+(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'), ('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'))
+(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'), ('bitbake/lib/toaster/bldcontrol/sshbecontroller.py'))
+(('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'), ('bitbake/lib/toaster/bldcontrol/bbcontroller.py'))
+(('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'), ('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'))
+(('bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py'), ('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'))
+(('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'), ('bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py'))
+(('bitbake/lib/toaster/bldcontrol/sshbecontroller.py'), ('bitbake/lib/toaster/bldcontrol/bbcontroller.py'))
+(('bitbake/lib/toaster/contrib/tts/launcher.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
+(('bitbake/lib/toaster/contrib/tts/launcher.py'), ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
+(('bitbake/lib/toaster/contrib/tts/recv.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
+(('bitbake/lib/toaster/contrib/tts/recv.py'), ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
+(('bitbake/lib/toaster/contrib/tts/runner.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
+(('bitbake/lib/toaster/contrib/tts/runner.py'), ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
+(('bitbake/lib/toaster/contrib/tts/shellutils.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
+(('bitbake/lib/toaster/contrib/tts/tests.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
+(('bitbake/lib/toaster/contrib/tts/tests.py'), ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
+(('bitbake/lib/toaster/contrib/tts/tests.py'), ('bitbake/lib/toaster/contrib/tts/urlcheck.py'))
+(('bitbake/lib/toaster/contrib/tts/tests.py'), ('bitbake/lib/toaster/contrib/tts/urllist.py'))
+(('bitbake/lib/toaster/contrib/tts/urlcheck.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
+(('bitbake/lib/toaster/contrib/tts/urlcheck.py'), ('bitbake/lib/toaster/contrib/tts/urllist.py'))
+(('meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py'), ('meta/lib/oeqa/controllers/masterimage.py'))
+(('meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
+(('meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py'), ('meta/lib/oeqa/controllers/masterimage.py'))
+(('meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
+(('meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py'), ('meta/lib/oeqa/controllers/masterimage.py'))
+(('meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
+(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oe/buildhistory_analysis.py'), ('bitbake/lib/bb/utils.py'))
+(('meta/lib/oe/data.py'), ('meta/lib/oe/maketype.py'))
+(('meta/lib/oe/image.py'), ('meta/lib/oe/utils.py'))
+(('meta/lib/oe/maketype.py'), ('meta/lib/oe/types.py'))
+(('meta/lib/oe/package_manager.py'), ('meta/lib/oe/utils.py'))
+(('meta/lib/oe/packagegroup.py'), ('meta/lib/oe/packagedata.py'))
+(('meta/lib/oe/patch.py'), ('meta/lib/oe/path.py'))
+(('meta/lib/oe/prservice.py'), ('bitbake/lib/bb/utils.py'))
+(('meta/lib/oe/prservice.py'), ('bitbake/lib/prserv/serv.py'))
+(('meta/lib/oe/qa.py'), ('bitbake/lib/bb/process.py'))
+(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/cache.py'))
+(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/cookerdata.py'))
+(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/providers.py'))
+(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/taskdata.py'))
+(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/patch.py'))
+(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/path.py'))
+(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/utils.py'))
+(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/manifest.py'))
+(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/package_manager.py'))
+(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/path.py'))
+(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/utils.py'))
+(('meta/lib/oe/sdk.py'), ('meta/lib/oe/manifest.py'))
+(('meta/lib/oe/sdk.py'), ('meta/lib/oe/package_manager.py'))
+(('meta/lib/oe/sdk.py'), ('meta/lib/oe/utils.py'))
+(('meta/lib/oe/sstatesig.py'), ('bitbake/lib/bb/siggen.py'))
+(('meta/lib/oe/terminal.py'), ('bitbake/lib/bb/process.py'))
+(('meta/lib/oe/terminal.py'), ('meta/lib/oe/classutils.py'))
+(('meta/lib/oe/tests/test_license.py'), ('meta/lib/oe/license.py'))
+(('meta/lib/oe/tests/test_path.py'), ('meta/lib/oe/path.py'))
+(('meta/lib/oe/tests/test_types.py'), ('meta/lib/oe/maketype.py'))
+(('meta/lib/oe/tests/test_utils.py'), ('meta/lib/oe/utils.py'))
+(('meta/lib/oeqa/controllers/masterimage.py'), ('meta/lib/oeqa/targetcontrol.py'))
+(('meta/lib/oeqa/controllers/masterimage.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/controllers/masterimage.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
+(('meta/lib/oeqa/controllers/testtargetloader.py'), ('meta/lib/oeqa/targetcontrol.py'))
+(('meta/lib/oeqa/oetest.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/utils/dump.py'))
+(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
+(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oe/package_manager.py'))
+(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/utils/httpserver.py'))
+(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/utils/logparser.py'))
+(('meta/lib/oeqa/runtime/_qemutiny.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/_qemutiny.py'), ('meta/lib/oeqa/utils/qemutinyrunner.py'))
+(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
+(('meta/lib/oeqa/runtime/buildiptables.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/buildiptables.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/buildiptables.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
+(('meta/lib/oeqa/runtime/buildsudoku.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/buildsudoku.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/buildsudoku.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
+(('meta/lib/oeqa/runtime/connman.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/connman.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/date.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/date.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/df.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/df.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/dmesg.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/dmesg.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/gcc.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/gcc.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/kernelmodule.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/kernelmodule.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/ldd.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/ldd.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/logrotate.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/logrotate.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/multilib.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/multilib.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/pam.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/pam.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/parselogs.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/parselogs.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/perl.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/perl.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/ping.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/ping.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/python.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/python.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/rpm.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/rpm.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/scanelf.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/scanelf.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/scp.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/scp.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/skeletoninit.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/skeletoninit.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/utils/httpserver.py'))
+(('meta/lib/oeqa/runtime/ssh.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/ssh.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/syslog.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/syslog.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/systemd.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/systemd.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/vnc.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/vnc.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/x32lib.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/x32lib.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/runtime/xorg.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/runtime/xorg.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
+(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
+(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
+(('meta/lib/oeqa/sdk/gcc.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/sdk/gcc.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/sdk/perl.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/sdk/perl.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/sdk/python.py'), ('meta/lib/oeqa/oetest.py'))
+(('meta/lib/oeqa/sdk/python.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'), ('meta/lib/oeqa/selftest/sstate.py'))
+(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/archiver.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/archiver.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/archiver.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/base.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/base.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/base.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/buildhistory.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/buildhistory.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/buildhistory.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/selftest/buildhistory.py'))
+(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/imagefeatures.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/imagefeatures.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/imagefeatures.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/imagefeatures.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
+(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/selftest/buildhistory.py'))
+(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/lic-checksum.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/lic-checksum.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/lic-checksum.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/manifest.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/manifest.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/manifest.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/selftest/buildhistory.py'))
+(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/recipetool.py'), ('meta/lib/oeqa/selftest/devtool.py'))
+(('meta/lib/oeqa/selftest/recipetool.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/recipetool.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/sstate.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/sstate.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/sstate.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/selftest/sstate.py'))
+(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/selftest/wic.py'), ('meta/lib/oeqa/selftest/base.py'))
+(('meta/lib/oeqa/selftest/wic.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/selftest/wic.py'), ('meta/lib/oeqa/utils/decorators.py'))
+(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oe/path.py'))
+(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/controllers/testtargetloader.py'))
+(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/dump.py'))
+(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/qemurunner.py'))
+(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/qemutinyrunner.py'))
+(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
+(('meta/lib/oeqa/utils/commands.py'), ('bitbake/lib/bb/build.py'))
+(('meta/lib/oeqa/utils/commands.py'), ('bitbake/lib/bb/tinfoil.py'))
+(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oe/recipeutils.py'))
+(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oeqa/targetcontrol.py'))
+(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/utils/dump.py'), ('meta/lib/oeqa/utils/commands.py'))
+(('meta/lib/oeqa/utils/logparser.py'), ('meta/lib/oeqa/utils/ftools.py'))
+(('meta/lib/oeqa/utils/qemurunner.py'), ('meta/lib/oeqa/utils/dump.py'))
+(('meta/lib/oeqa/utils/qemutinyrunner.py'), ('meta/lib/oeqa/utils/qemurunner.py'))
+(('meta/lib/oeqa/utils/targetbuild.py'), ('bitbake/lib/bb/utils.py'))
+(('scripts/contrib/devtool-stress.py'), ('bitbake/lib/bb/process.py'))
+(('scripts/contrib/devtool-stress.py'), ('bitbake/lib/bb/tinfoil.py'))
+(('scripts/contrib/devtool-stress.py'), ('scripts/lib/scriptpath.py'))
+(('scripts/contrib/devtool-stress.py'), ('scripts/lib/scriptutils.py'))
+(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/cache.py'))
+(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/cooker.py'))
+(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/providers.py'))
+(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/tinfoil.py'))
+(('scripts/contrib/list-packageconfig-flags.py'), ('scripts/lib/scriptpath.py'))
+(('scripts/contrib/verify-homepage.py'), ('bitbake/lib/bb/tinfoil.py'))
+(('scripts/lib/bsp/engine.py'), ('scripts/lib/bsp/tags.py'))
+(('scripts/lib/bsp/kernel.py'), ('scripts/lib/bsp/engine.py'))
+(('scripts/lib/bsp/kernel.py'), ('scripts/lib/bsp/tags.py'))
+(('scripts/lib/devtool/build-image.py'), ('bitbake/lib/bb/process.py'))
+(('scripts/lib/devtool/deploy.py'), ('meta/lib/oe/recipeutils.py'))
+(('scripts/lib/devtool/package.py'), ('bitbake/lib/bb/process.py'))
+(('scripts/lib/devtool/standard.py'), ('bitbake/lib/bb/event.py'))
+(('scripts/lib/devtool/standard.py'), ('bitbake/lib/bb/utils.py'))
+(('scripts/lib/devtool/standard.py'), ('meta/lib/oe/patch.py'))
+(('scripts/lib/devtool/standard.py'), ('meta/lib/oe/recipeutils.py'))
+(('scripts/lib/devtool/standard.py'), ('scripts/lib/scriptutils.py'))
+(('scripts/lib/devtool/upgrade.py'), ('meta/lib/oe/recipeutils.py'))
+(('scripts/lib/devtool/upgrade.py'), ('scripts/lib/scriptutils.py'))
+(('scripts/lib/recipetool/append.py'), ('meta/lib/oe/recipeutils.py'))
+(('scripts/lib/recipetool/append.py'), ('scripts/lib/scriptutils.py'))
+(('scripts/lib/recipetool/create.py'), ('bitbake/lib/bb/process.py'))
+(('scripts/lib/recipetool/create.py'), ('bitbake/lib/bb/utils.py'))
+(('scripts/lib/recipetool/create.py'), ('scripts/lib/scriptutils.py'))
+(('scripts/lib/recipetool/create_buildsys.py'), ('meta/lib/oe/package.py'))
+(('scripts/lib/recipetool/create_buildsys.py'), ('scripts/lib/recipetool/create.py'))
+(('scripts/lib/recipetool/create_buildsys_python.py'), ('scripts/lib/recipetool/create.py'))
+(('scripts/lib/recipetool/newappend.py'), ('bitbake/lib/bb/providers.py'))
+(('scripts/lib/recipetool/newappend.py'), ('meta/lib/oe/recipeutils.py'))
+(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/data.py'))
+(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/msg.py'))
+(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/process.py'))
+(('scripts/lib/wic/conf.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/conf.py'), ('scripts/lib/wic/utils/misc.py'))
+(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/conf.py'))
+(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/plugin.py'))
+(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/utils/errors.py'))
+(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/creator.py'))
+(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/plugin.py'))
+(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/utils/misc.py'))
+(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/help.py'), ('scripts/lib/wic/plugin.py'))
+(('scripts/lib/wic/imager/baseimager.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/imager/baseimager.py'), ('scripts/lib/wic/utils/errors.py'))
+(('scripts/lib/wic/imager/baseimager.py'), ('scripts/lib/wic/utils/runner.py'))
+(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/imager/baseimager.py'))
+(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/plugin.py'))
+(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/errors.py'))
+(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/fs_related.py'))
+(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/partitionedfs.py'))
+(('scripts/lib/wic/kickstart/custom_commands/partition.py'), ('scripts/lib/wic/plugin.py'))
+(('scripts/lib/wic/kickstart/custom_commands/partition.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/utils/errors.py'))
+(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/pluginbase.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/utils/fs_related.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/scriptpath.py'))
+(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/wic/utils/runner.py'))
+(('scripts/lib/wic/utils/partitionedfs.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/utils/partitionedfs.py'), ('scripts/lib/wic/utils/errors.py'))
+(('scripts/lib/wic/utils/partitionedfs.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/utils/runner.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/utils/syslinux.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/options.py'), ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/options.py'), ('scripts/lib/wic/3rdparty/pykickstart/errors.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/options.py'), ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/errors.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/ko.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/sections.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/sections.py'), ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/sections.py'), ('scripts/lib/wic/3rdparty/pykickstart/options.py'))
+(('scripts/lib/wic/3rdparty/pykickstart/sections.py'), ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
+(('scripts/lib/wic/plugins/imager/direct_plugin.py'), ('scripts/lib/wic/conf.py'))
+(('scripts/lib/wic/plugins/imager/direct_plugin.py'), ('scripts/lib/wic/imager/direct.py'))
+(('scripts/lib/wic/plugins/imager/direct_plugin.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugins/imager/direct_plugin.py'), ('scripts/lib/wic/utils/errors.py'))
+(('scripts/lib/wic/plugins/source/bootimg-efi.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/plugins/source/bootimg-efi.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugins/source/bootimg-efi.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/plugins/source/bootimg-partition.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/plugins/source/bootimg-partition.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugins/source/bootimg-partition.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/utils/errors.py'))
+(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/utils/runner.py'))
+(('scripts/lib/wic/plugins/source/fsimage.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/plugins/source/fsimage.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugins/source/fsimage.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/plugins/source/rawcopy.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/plugins/source/rawcopy.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugins/source/rawcopy.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/plugins/source/rootfs.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/plugins/source/rootfs.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugins/source/rootfs.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/msger.py'))
+(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/pluginbase.py'))
+(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/utils/errors.py'))
+(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/utils/oe/misc.py'))
+(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/utils/runner.py'))
+(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/utils/syslinux.py'))
+(('scripts/pybootchartgui/pybootchartgui/batch.py'), ('scripts/pybootchartgui/pybootchartgui/draw.py'))
+(('scripts/pybootchartgui/pybootchartgui/gui.py'), ('scripts/pybootchartgui/pybootchartgui/draw.py'))
+(('scripts/pybootchartgui/pybootchartgui/main.py'), ('scripts/pybootchartgui/pybootchartgui/batch.py'))
+(('scripts/pybootchartgui/pybootchartgui/main.py'), ('scripts/pybootchartgui/pybootchartgui/gui.py'))
+(('scripts/pybootchartgui/pybootchartgui/main.py'), ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
+(('scripts/pybootchartgui/pybootchartgui/parsing.py'), ('scripts/pybootchartgui/pybootchartgui/process_tree.py'))
+(('scripts/pybootchartgui/pybootchartgui/parsing.py'), ('scripts/pybootchartgui/pybootchartgui/samples.py'))
+(('scripts/pybootchartgui/pybootchartgui/tests/parser_test.py'), ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
+(('scripts/pybootchartgui/pybootchartgui/tests/process_tree_test.py'), ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
+(('scripts/pybootchartgui/pybootchartgui/tests/process_tree_test.py'), ('scripts/pybootchartgui/pybootchartgui/process_tree.py'))
\ No newline at end of file
--
2.1.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] scripts: analyze_patch: Analyze patch and suggest tests.
2015-11-20 14:22 [PATCH] scripts: analyze_patch: Analyze patch and suggest tests Daniel Istrate
@ 2015-11-23 15:55 ` Leonardo Sandoval
2015-11-23 17:53 ` Randy Witt
0 siblings, 1 reply; 4+ messages in thread
From: Leonardo Sandoval @ 2015-11-23 15:55 UTC (permalink / raw)
To: Daniel Istrate, openembedded-core
Hi Daniel,
Some comments inline. BTW, is the script's output intended to be used as
input of another one? Currently, the output is human-friendly (which is
good) but at the end the purpose is to use the output and run this set
of scripts/tests automatically, trying to detect possible issues. Also,
I briefly tried the sfood library, and took quite a lot of time compared
to deps.txts. I wonder if we can fasten somehow this sfood process.
On 11/20/2015 08:22 AM, Daniel Istrate wrote:
> [YOCTO #8647] - Script to analyse what areas a patch changes
> and what tests need running
>
> This script will analyze files modified by a commit and
> attempt to suggest what tests to run.
> It is somewhat dependent of the 'snakefood' tool to determine
> the import relationship between files. If this pkg is missing
> a backup file will be used instead: deps.txt
>
> Usage: analyze_patch --revision <rev>
> Example: analyze_patch --revision 351c69a
>
> Revision: 351c69a
>
> Modified files:
> meta/recipes-support/sqlite/files/0001-using-the-dynamic-library.patch
> meta/recipes-support/sqlite/sqlite3_3.8.10.2.bb
> meta/recipes-support/sqlite/sqlite3_3.9.0.bb
>
> Suggested tests:
> Rebuild: sqlite3
>
> Signed-off-by: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
> ---
> scripts/analyze_patch | 300 ++++++++++++++++++++++++
> scripts/deps.txt | 628 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 928 insertions(+)
> create mode 100755 scripts/analyze_patch
> create mode 100644 scripts/deps.txt
>
> diff --git a/scripts/analyze_patch b/scripts/analyze_patch
> new file mode 100755
> index 0000000..1b6609b
> --- /dev/null
> +++ b/scripts/analyze_patch
> @@ -0,0 +1,300 @@
> +#!/usr/bin/env python
> +
THE GPL license should be included on this part.
> +# Description: This will analyze the files modified by a commit and attempt to suggest what tests to run.
> +# It uses an adjacent file 'deps.txt' that was generated by 'snakefood' tool:
> +# sfood <poky_dir> | grep -v /usr/lib/python | grep -v /usr/share/pyshared/ |
> +# grep -v None | grep ".py')," | grep ".py\'))" > deps.txt
> +# This file has to be edited further: remove the <poky_dir> and replace "', '" with '/'.
> +# In the end you should have something like this: a matrix with 2 columns, which represent
> +# elements from the left import elements from the right.
> +# (('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/event.py'))
> +# (('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/msg.py'))
> +#
> +# How to use it: analyze_patch --revision <rev>
> +# analyze_patch -r 2d1071e
> +# Notes: if revision is not provided, will default to HEAD
> +# Author: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
> +
> +import argparse
> +import os
> +import glob
> +import ast
> +import re
> +from subprocess import PIPE, Popen, STDOUT
> +
> +parser = argparse.ArgumentParser()
> +parser.add_argument('-r', '--revision', help='<revision> changes to analyze.')
Another option would be to define which method to use (sfood or deps.tx)
in case we have more than one method
> +args = parser.parse_args()
> +
> +revision = args.revision or 'HEAD'
This default can be include on the same line were the argument was added.
> +
> +this_file_path = os.path.dirname(os.path.abspath(__file__))
> +poky_dir = os.path.abspath(os.path.join(this_file_path, os.pardir))
> +# Move into the the poky dir
> +os.chdir(poky_dir)
> +
> +# Where are the available tests located
> +bb_test_dir = 'bitbake/lib/bb/tests/'
> +selftest_dir = 'meta/lib/oeqa/selftest/'
> +runtime_dir = 'meta/lib/oeqa/runtime/'
> +
> +RETOK = 0
> +
> +
> +def run_cmd(cmd, ignore_err=False):
> + """
> + Run cmd in bash shell
> + :param cmd: command to be ran.
> + :param ignore_err: redirect stderr to /dev/null, otherwise redirect stderr to stdout
> + :return: tuple containing exit code & output of the cmd
> + """
> + DEVNULL = open(os.devnull, 'w')
> +
> + if ignore_err:
> + proc = Popen(args=cmd, stdout=PIPE, stderr=DEVNULL, shell=True, executable='/bin/bash')
> + else:
> + proc = Popen(args=cmd, stdout=PIPE, stderr=STDOUT, shell=True, executable='/bin/bash')
> + retval = proc.communicate()[0]
> + retcode = proc.returncode
> +
> + return retcode, retval
> +
> +
> +def get_modified_files(rev=revision):
> + """
> + Determine modified files by a commit
> + :param rev: the revision number to determine modified files for.
> + :return: a list of modified files
> + """
> + cmd = 'git diff-tree --no-commit-id --name-only -r ' + rev
> + retcode, retval = run_cmd(cmd)
> +
> + if retcode != RETOK:
> + return retcode, retval
> +
> + retlist = retval.split('\n')
> + retlist.remove('')
> +
> + return retlist
> +
> +
> +def get_list_of_testuites(test_dir):
> + """
> + Looks for .py files in test_dir
> + :param test_dir: directory containing (hopefully) test suites
> + :return: list of test suites
> + """
> + test_suites = []
> + test_list = glob.glob(test_dir + '*.py')
> +
> + # trim the .py extension and the path to each testsuite
> + for ts in test_list:
> + test_suites.append(ts.replace(test_dir, '').replace('.py', ''))
> +
> + # remove __init__ from test_suites
> + try:
> + test_suites.remove('__init__')
> + except:
> + pass
> +
> + return test_suites
> +
> +
> +def get_modules_dependencies(mfile):
> + """
> + Get modules dependencies from poky.
> + It uses 'snakefood' pkg (please make sure it is installed)
> + In case 'snakefood' is not installed a backup file will be used instead.
> + :return: a list of all modules deps
> + """
> +
> + cmd = 'sfood %s | grep -v /usr/lib/python | grep -v /usr/share/pyshared/ | ' \
> + 'grep -v None | grep ".py\')," | grep ".py\'))"' % poky_dir
> +
I have not looked into the sfood code/documentation, but it would be
nicer/faster if we use the sfood API instead of the command. This way,
we wont need to spawn a new command and create this long pipeline.
> + retcode, retval = run_cmd(cmd)
> +
> + if retcode != 0:
> + # cmd failed, most likely 'snakefood' is not installed
> + # will look for deps.txt
> + # print "WARNING: 'snakefood' not installed. Will proceed with 'deps.txt'."
> + deps = open('scripts/deps.txt', 'r').read()
> + else:
> + deps = retval.replace(poky_dir + '/', '').replace("', '", '/')
> +
> + deps_m = []
> + for i in deps.split('\n'):
> + try:
> + deps_m.append(ast.literal_eval(i))
> + except:
> + # There might be a '\n' at the end of the file --> will ignore
> + pass
> +
> + def find_deps(mfile, visited):
> +
> + if isinstance(mfile, list):
> + for i in mfile:
> + find_deps(i, visited)
> + else:
> + for i in deps_m:
> + if i[1] == mfile and i[0] not in visited:
> + visited.append(i[0])
> + find_deps(i[0], visited)
> +
> + return visited
> +
> + return find_deps(mfile, [])
> +
> +
> +def is_documentation(mfile):
> + """All files under documentation"""
> + doc_patt = r'documentation/'
> + if doc_patt in mfile:
> + return True
> + return False
a minor comment: 'return doc_patt in mfile' does the same as the three
statements before
> +
> +
> +def is_recipe(mfile):
> + recipe_patt = r'\.(bbappend|bb)$'
> + if re.search(recipe_patt, mfile):
> + return True
> + return False
> +
> +
> +def is_part_of_recipe(mfile):
> + """Everything that is inside meta/recipes-* or meta-*/recipes-* """
> + part_recipe_patt = r'^meta(-\S+)?/recipes-'
> + if re.search(part_recipe_patt, mfile):
> + return True
> + return False
> +
> +
> +def is_test(mfile):
> + """Check that the file is a test file"""
> + global selftest_dir
> + global runtime_dir
> + global bb_test_dir
> +
Can we omit the global statements?
> + if runtime_dir in mfile or selftest_dir in mfile or bb_test_dir in mfile:
> + return True
> + return False
> +
> +
> +def get_test_name(mfile):
> + ret_list = []
> + test_name = os.path.basename(mfile).split('.')[0]
> + if is_test(mfile) and test_name != '__init__':
> + ret_list.append(test_name)
> + return ret_list
> +
> +
> +def get_test_for(mfile):
> + """ Attempt to guess a test for the given file """
> + # Not very happy with this, it needs to be clever
> + global all_tests
> + ret_list = []
> +
> + for i in all_tests:
> + if i in mfile:
> + ret_list.append(i)
> +
> + return ret_list
> +
> +
> +def get_recipe_name(mfile):
> + """ Trim the file extension and pn from filename"""
> + # Most files follow this format recipename_pn.bb | recipe-name_pn.bb | recipe-name.bb
> + ret_list = []
> + temp_list = []
> + if is_recipe(mfile):
> + ret_list.append(os.path.basename(mfile).split('_')[0].replace('.bb', ''))
> + return ret_list
> + # If it's a file that has something to do with a recipe attempt to guess the recipe
> + # Look for .bb|.bbappend files in the current dir up to 2 lvl above till bb files are found
> + # There might be cases when it will find more bb files, some perhaps not directly related to
> + # the file, but at least we are covered.
> + if is_part_of_recipe(mfile):
> + levels_list = ['/*.bb*', '/../*.bb*', '/../../*.bb*']
> + for lvl in levels_list:
> + recipes = glob.glob(os.path.dirname(mfile) + lvl)
> + if recipes:
> + temp_list += recipes
> + break
> + # Trim the file extension and pn from filename
> + for i in temp_list:
> + ret_list.append(os.path.basename(i).split('_')[0].replace('.bb', ''))
> + return ret_list
> +
> + return ret_list
> +
> +
> +def suggest_tests(mfile):
> + """ Suggest tests """
> + global documentation_updated
> + global recipes_to_rebuild
> + global tests_to_run
> +
> + if is_documentation(mfile):
> + documentation_updated = True
> + elif is_recipe(mfile) or is_part_of_recipe(mfile):
> + recipes_to_rebuild.update(get_recipe_name(mfile))
> + elif is_test(mfile):
> + tests_to_run.update(get_test_name(mfile))
> + #else
> + tests_to_run.update(get_test_for(mfile))
> +
> +
> +selftest_tests = get_list_of_testuites(selftest_dir)
> +runtime_tests = get_list_of_testuites(runtime_dir)
> +bb_tests = get_list_of_testuites(bb_test_dir)
> +all_tests = bb_tests + runtime_tests + selftest_tests
> +
> +mfiles = get_modified_files()
> +ind_mfiles = get_modules_dependencies(mfiles)
> +# mfiles might be included in ind_files if there are circular imports
> +all_mfiles = set(mfiles + ind_mfiles)
> +
> +recipes_to_rebuild = set()
> +tests_to_run = set()
> +documentation_updated = False
> +
> +
> +# Print results
> +print '\nRevision: %s' % revision
> +print '\nModified files:'
> +for i in mfiles:
> + print i
> +if ind_mfiles:
> + print '\nIndirect modified files:'
> + for i in ind_mfiles:
> + print i
> +print '\nSuggested tests:'
> +for i in all_mfiles:
> + suggest_tests(i)
> +
> +if documentation_updated:
> + print 'Documentation updated, nothing to do.'
> +
> +if recipes_to_rebuild:
> + ret_recipe = ''
> + for i in recipes_to_rebuild:
> + ret_recipe += i + ' '
> + print 'Rebuild: %s' % ret_recipe
> +
> +if tests_to_run:
> + ret_bb, ret_selftest, ret_runtime = ('',)*3
> + for i in tests_to_run:
> + if i in bb_tests:
> + ret_bb += i + ' '
> + elif i in runtime_tests:
> + ret_runtime += i + ' '
> + elif i in selftest_tests:
> + ret_selftest += i + ' '
> + if ret_bb:
> + print 'bitbake-selftest: %s ' % ret_bb
> + if ret_selftest:
> + print 'oe-selftest: %s ' % ret_selftest
> + if ret_runtime:
> + print 'runtime: %s ' % ret_runtime
> +
> +if not (recipes_to_rebuild or documentation_updated or tests_to_run):
> + print None
> diff --git a/scripts/deps.txt b/scripts/deps.txt
> new file mode 100644
> index 0000000..421897d
> --- /dev/null
> +++ b/scripts/deps.txt
> @@ -0,0 +1,628 @@
> +(('bitbake/contrib/dump_cache.py'), ('bitbake/lib/bb/cache.py'))
> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/event.py'))
> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/msg.py'))
> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/process.py'))
> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/cache.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/cache_extra.py'), ('bitbake/lib/bb/cache.py'))
> +(('bitbake/lib/bb/checksum.py'), ('bitbake/lib/bb/cache.py'))
> +(('bitbake/lib/bb/checksum.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/cache.py'))
> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/pyshyacc.py'))
> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/codegen.py'))
> +(('bitbake/lib/bb/command.py'), ('bitbake/lib/bb/cooker.py'))
> +(('bitbake/lib/bb/command.py'), ('bitbake/lib/bb/event.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/build.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/cache.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/command.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/event.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/exceptions.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/providers.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/runqueue.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/shell.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/taskdata.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/prserv/serv.py'))
> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/pyinotify.py'))
> +(('bitbake/lib/bb/cookerdata.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/data.py'), ('bitbake/lib/bb/codeparser.py'))
> +(('bitbake/lib/bb/data.py'), ('bitbake/lib/bb/data_smart.py'))
> +(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/COW.py'))
> +(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/codeparser.py'))
> +(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/compat.py'))
> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/exceptions.py'))
> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/msg.py'))
> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/exceptions.py'), ('bitbake/lib/bb/namedtuple_with_abc.py'))
> +(('bitbake/lib/bb/fetch2/bzr.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/clearcase.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/git.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/gitannex.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/gitannex.py'), ('bitbake/lib/bb/fetch2/git.py'))
> +(('bitbake/lib/bb/fetch2/gitsm.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/gitsm.py'), ('bitbake/lib/bb/fetch2/git.py'))
> +(('bitbake/lib/bb/fetch2/hg.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/local.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/local.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/fetch2/osc.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/perforce.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/repo.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/sftp.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/ssh.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/svn.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/fetch2/wget.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/cooker.py'))
> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/cookerdata.py'))
> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/event.py'))
> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/msg.py'))
> +(('bitbake/lib/bb/methodpool.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/msg.py'), ('bitbake/lib/bb/event.py'))
> +(('bitbake/lib/bb/parse/ast.py'), ('bitbake/lib/bb/methodpool.py'))
> +(('bitbake/lib/bb/parse/parse_py'), ('bitbake/lib/bb/parse/parse_py/BBHandler.py'))
> +(('bitbake/lib/bb/parse/parse_py'), ('bitbake/lib/bb/parse/parse_py/ConfHandler.py'))
> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/build.py'))
> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/parse/ast.py'))
> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/parse/parse_py/ConfHandler.py'))
> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/parse/parse_py/ConfHandler.py'), ('bitbake/lib/bb/parse/ast.py'))
> +(('bitbake/lib/bb/parse/parse_py/ConfHandler.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/persist_data.py'), ('bitbake/lib/bb/compat.py'))
> +(('bitbake/lib/bb/persist_data.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/providers.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/providers.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/pysh/builtin.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
> +(('bitbake/lib/bb/pysh/builtin.py'), ('bitbake/lib/bb/pysh/subprocess_fix.py'))
> +(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/builtin.py'))
> +(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
> +(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/pyshyacc.py'))
> +(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
> +(('bitbake/lib/bb/pysh/pysh.py'), ('bitbake/lib/bb/pysh/interp.py'))
> +(('bitbake/lib/bb/pysh/pysh.py'), ('bitbake/lib/bb/pysh/lsprof.py'))
> +(('bitbake/lib/bb/pysh/pyshlex.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
> +(('bitbake/lib/bb/pysh/pyshlex.py'), ('bitbake/lib/ply/lex.py'))
> +(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
> +(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
> +(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/ply/yacc.py'))
> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/event.py'))
> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/monitordisk.py'))
> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/msg.py'))
> +(('bitbake/lib/bb/server/process.py'), ('bitbake/lib/bb/event.py'))
> +(('bitbake/lib/bb/server/xmlrpc.py'), ('bitbake/lib/bb/daemonize.py'))
> +(('bitbake/lib/bb/server/xmlrpc.py'), ('bitbake/lib/bb/ui/uievent.py'))
> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/build.py'))
> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/cache.py'))
> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/providers.py'))
> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/runqueue.py'))
> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/taskdata.py'))
> +(('bitbake/lib/bb/siggen.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/tests/codeparser.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/tests/cow.py'), ('bitbake/lib/bb/COW.py'))
> +(('bitbake/lib/bb/tests/data.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/tests/parse.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/tests/parse.py'), ('bitbake/lib/bb/siggen.py'))
> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cache.py'))
> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cooker.py'))
> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cookerdata.py'))
> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/providers.py'))
> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/bb/ui/buildinfohelper.py'), ('bitbake/lib/bb/msg.py'))
> +(('bitbake/lib/bb/ui/buildinfohelper.py'), ('bitbake/lib/toaster/orm/models.py'))
> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/process.py'))
> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/builddetailspage.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/persistenttooltip.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'))
> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/utils.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/process.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/utils.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
> +(('bitbake/lib/bb/ui/crumbs/hobeventhandler.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
> +(('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
> +(('bitbake/lib/bb/ui/crumbs/hobpages.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
> +(('bitbake/lib/bb/ui/crumbs/hobpages.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/hobwidget.py'), ('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/hobwidget.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
> +(('bitbake/lib/bb/ui/crumbs/hobwidget.py'), ('bitbake/lib/bb/ui/crumbs/persistenttooltip.py'))
> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hig/retrieveimagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'))
> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/progressbar.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/runningbuild.py'), ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
> +(('bitbake/lib/bb/ui/crumbs/runningbuild.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'), ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
> +(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'), ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
> +(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
> +(('bitbake/lib/bb/ui/depexp.py'), ('bitbake/lib/bb/event.py'))
> +(('bitbake/lib/bb/ui/depexp.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
> +(('bitbake/lib/bb/ui/goggle.py'), ('bitbake/lib/bb/ui/crumbs/progress.py'))
> +(('bitbake/lib/bb/ui/goggle.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
> +(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/crumbs/builder.py'))
> +(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/crumbs/hobeventhandler.py'))
> +(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
> +(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/uihelper.py'))
> +(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/bb/msg.py'))
> +(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/bb/ui/uihelper.py'))
> +(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/progressbar.py'))
> +(('bitbake/lib/bb/ui/ncurses.py'), ('bitbake/lib/bb/ui/uihelper.py'))
> +(('bitbake/lib/bb/ui/puccho.py'), ('bitbake/lib/bb/ui/crumbs/buildmanager.py'))
> +(('bitbake/lib/bb/ui/puccho.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
> +(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/msg.py'))
> +(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/ui/buildinfohelper.py'))
> +(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/ui/uihelper.py'))
> +(('bitbake/lib/bb/ui/uihelper.py'), ('bitbake/lib/bb/build.py'))
> +(('bitbake/lib/bb/ui/uihelper.py'), ('bitbake/lib/bb/server/xmlrpc.py'))
> +(('bitbake/lib/bb/utils.py'), ('bitbake/lib/bb/data.py'))
> +(('bitbake/lib/bb/utils.py'), ('bitbake/lib/bb/msg.py'))
> +(('bitbake/lib/bs4/builder/_html5lib.py'), ('bitbake/lib/bs4/element.py'))
> +(('bitbake/lib/bs4/builder/_htmlparser.py'), ('bitbake/lib/bs4/dammit.py'))
> +(('bitbake/lib/bs4/builder/_htmlparser.py'), ('bitbake/lib/bs4/element.py'))
> +(('bitbake/lib/bs4/builder/_lxml.py'), ('bitbake/lib/bs4/dammit.py'))
> +(('bitbake/lib/bs4/builder/_lxml.py'), ('bitbake/lib/bs4/element.py'))
> +(('bitbake/lib/bs4/element.py'), ('bitbake/lib/bs4/dammit.py'))
> +(('bitbake/lib/bs4/testing.py'), ('bitbake/lib/bs4/element.py'))
> +(('bitbake/lib/bs4/tests/test_html5lib.py'), ('bitbake/lib/bs4/element.py'))
> +(('bitbake/lib/bs4/tests/test_html5lib.py'), ('bitbake/lib/bs4/testing.py'))
> +(('bitbake/lib/bs4/tests/test_htmlparser.py'), ('bitbake/lib/bs4/testing.py'))
> +(('bitbake/lib/bs4/tests/test_lxml.py'), ('bitbake/lib/bs4/element.py'))
> +(('bitbake/lib/bs4/tests/test_lxml.py'), ('bitbake/lib/bs4/testing.py'))
> +(('bitbake/lib/bs4/tests/test_lxml.py'), ('bitbake/lib/bs4/tests/test_htmlparser.py'))
> +(('bitbake/lib/bs4/tests/test_soup.py'), ('bitbake/lib/bs4/dammit.py'))
> +(('bitbake/lib/bs4/tests/test_soup.py'), ('bitbake/lib/bs4/element.py'))
> +(('bitbake/lib/bs4/tests/test_soup.py'), ('bitbake/lib/bs4/testing.py'))
> +(('bitbake/lib/bs4/tests/test_tree.py'), ('bitbake/lib/bs4/element.py'))
> +(('bitbake/lib/bs4/tests/test_tree.py'), ('bitbake/lib/bs4/testing.py'))
> +(('bitbake/lib/ply/yacc.py'), ('bitbake/lib/ply/lex.py'))
> +(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/bb/server/xmlrpc.py'))
> +(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/bb/utils.py'))
> +(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/prserv/db.py'))
> +(('bitbake/lib/toaster/bldcontrol/admin.py'), ('bitbake/lib/toaster/bldcontrol/models.py'))
> +(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'), ('bitbake/lib/bb/server/xmlrpc.py'))
> +(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'), ('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'))
> +(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'), ('bitbake/lib/toaster/bldcontrol/sshbecontroller.py'))
> +(('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'), ('bitbake/lib/toaster/bldcontrol/bbcontroller.py'))
> +(('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'), ('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'))
> +(('bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py'), ('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'))
> +(('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'), ('bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py'))
> +(('bitbake/lib/toaster/bldcontrol/sshbecontroller.py'), ('bitbake/lib/toaster/bldcontrol/bbcontroller.py'))
> +(('bitbake/lib/toaster/contrib/tts/launcher.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
> +(('bitbake/lib/toaster/contrib/tts/launcher.py'), ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
> +(('bitbake/lib/toaster/contrib/tts/recv.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
> +(('bitbake/lib/toaster/contrib/tts/recv.py'), ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
> +(('bitbake/lib/toaster/contrib/tts/runner.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
> +(('bitbake/lib/toaster/contrib/tts/runner.py'), ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
> +(('bitbake/lib/toaster/contrib/tts/shellutils.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
> +(('bitbake/lib/toaster/contrib/tts/tests.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
> +(('bitbake/lib/toaster/contrib/tts/tests.py'), ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
> +(('bitbake/lib/toaster/contrib/tts/tests.py'), ('bitbake/lib/toaster/contrib/tts/urlcheck.py'))
> +(('bitbake/lib/toaster/contrib/tts/tests.py'), ('bitbake/lib/toaster/contrib/tts/urllist.py'))
> +(('bitbake/lib/toaster/contrib/tts/urlcheck.py'), ('bitbake/lib/toaster/contrib/tts/config.py'))
> +(('bitbake/lib/toaster/contrib/tts/urlcheck.py'), ('bitbake/lib/toaster/contrib/tts/urllist.py'))
> +(('meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py'), ('meta/lib/oeqa/controllers/masterimage.py'))
> +(('meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
> +(('meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py'), ('meta/lib/oeqa/controllers/masterimage.py'))
> +(('meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
> +(('meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py'), ('meta/lib/oeqa/controllers/masterimage.py'))
> +(('meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
> +(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oe/buildhistory_analysis.py'), ('bitbake/lib/bb/utils.py'))
> +(('meta/lib/oe/data.py'), ('meta/lib/oe/maketype.py'))
> +(('meta/lib/oe/image.py'), ('meta/lib/oe/utils.py'))
> +(('meta/lib/oe/maketype.py'), ('meta/lib/oe/types.py'))
> +(('meta/lib/oe/package_manager.py'), ('meta/lib/oe/utils.py'))
> +(('meta/lib/oe/packagegroup.py'), ('meta/lib/oe/packagedata.py'))
> +(('meta/lib/oe/patch.py'), ('meta/lib/oe/path.py'))
> +(('meta/lib/oe/prservice.py'), ('bitbake/lib/bb/utils.py'))
> +(('meta/lib/oe/prservice.py'), ('bitbake/lib/prserv/serv.py'))
> +(('meta/lib/oe/qa.py'), ('bitbake/lib/bb/process.py'))
> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/cache.py'))
> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/cookerdata.py'))
> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/providers.py'))
> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/taskdata.py'))
> +(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/patch.py'))
> +(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/path.py'))
> +(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/utils.py'))
> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/manifest.py'))
> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/package_manager.py'))
> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/path.py'))
> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/utils.py'))
> +(('meta/lib/oe/sdk.py'), ('meta/lib/oe/manifest.py'))
> +(('meta/lib/oe/sdk.py'), ('meta/lib/oe/package_manager.py'))
> +(('meta/lib/oe/sdk.py'), ('meta/lib/oe/utils.py'))
> +(('meta/lib/oe/sstatesig.py'), ('bitbake/lib/bb/siggen.py'))
> +(('meta/lib/oe/terminal.py'), ('bitbake/lib/bb/process.py'))
> +(('meta/lib/oe/terminal.py'), ('meta/lib/oe/classutils.py'))
> +(('meta/lib/oe/tests/test_license.py'), ('meta/lib/oe/license.py'))
> +(('meta/lib/oe/tests/test_path.py'), ('meta/lib/oe/path.py'))
> +(('meta/lib/oe/tests/test_types.py'), ('meta/lib/oe/maketype.py'))
> +(('meta/lib/oe/tests/test_utils.py'), ('meta/lib/oe/utils.py'))
> +(('meta/lib/oeqa/controllers/masterimage.py'), ('meta/lib/oeqa/targetcontrol.py'))
> +(('meta/lib/oeqa/controllers/masterimage.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/controllers/masterimage.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
> +(('meta/lib/oeqa/controllers/testtargetloader.py'), ('meta/lib/oeqa/targetcontrol.py'))
> +(('meta/lib/oeqa/oetest.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/utils/dump.py'))
> +(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oe/package_manager.py'))
> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/utils/httpserver.py'))
> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/utils/logparser.py'))
> +(('meta/lib/oeqa/runtime/_qemutiny.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/_qemutiny.py'), ('meta/lib/oeqa/utils/qemutinyrunner.py'))
> +(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
> +(('meta/lib/oeqa/runtime/buildiptables.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/buildiptables.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/buildiptables.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
> +(('meta/lib/oeqa/runtime/buildsudoku.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/buildsudoku.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/buildsudoku.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
> +(('meta/lib/oeqa/runtime/connman.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/connman.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/date.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/date.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/df.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/df.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/dmesg.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/dmesg.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/gcc.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/gcc.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/kernelmodule.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/kernelmodule.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/ldd.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/ldd.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/logrotate.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/logrotate.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/multilib.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/multilib.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/pam.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/pam.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/parselogs.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/parselogs.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/perl.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/perl.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/ping.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/ping.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/python.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/python.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/rpm.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/rpm.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/scanelf.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/scanelf.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/scp.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/scp.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/skeletoninit.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/skeletoninit.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/utils/httpserver.py'))
> +(('meta/lib/oeqa/runtime/ssh.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/ssh.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/syslog.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/syslog.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/systemd.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/systemd.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/vnc.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/vnc.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/x32lib.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/x32lib.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/runtime/xorg.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/runtime/xorg.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
> +(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
> +(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
> +(('meta/lib/oeqa/sdk/gcc.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/sdk/gcc.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/sdk/perl.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/sdk/perl.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/sdk/python.py'), ('meta/lib/oeqa/oetest.py'))
> +(('meta/lib/oeqa/sdk/python.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'), ('meta/lib/oeqa/selftest/sstate.py'))
> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/archiver.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/archiver.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/archiver.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/base.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/base.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/base.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/buildhistory.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/buildhistory.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/buildhistory.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/selftest/buildhistory.py'))
> +(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/imagefeatures.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/imagefeatures.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/imagefeatures.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/imagefeatures.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
> +(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/selftest/buildhistory.py'))
> +(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/lic-checksum.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/lic-checksum.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/lic-checksum.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/manifest.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/manifest.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/manifest.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/selftest/buildhistory.py'))
> +(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/recipetool.py'), ('meta/lib/oeqa/selftest/devtool.py'))
> +(('meta/lib/oeqa/selftest/recipetool.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/recipetool.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/sstate.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/sstate.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/sstate.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/selftest/sstate.py'))
> +(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/selftest/wic.py'), ('meta/lib/oeqa/selftest/base.py'))
> +(('meta/lib/oeqa/selftest/wic.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/selftest/wic.py'), ('meta/lib/oeqa/utils/decorators.py'))
> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oe/path.py'))
> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/controllers/testtargetloader.py'))
> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/dump.py'))
> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/qemurunner.py'))
> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/qemutinyrunner.py'))
> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
> +(('meta/lib/oeqa/utils/commands.py'), ('bitbake/lib/bb/build.py'))
> +(('meta/lib/oeqa/utils/commands.py'), ('bitbake/lib/bb/tinfoil.py'))
> +(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oe/recipeutils.py'))
> +(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oeqa/targetcontrol.py'))
> +(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/utils/dump.py'), ('meta/lib/oeqa/utils/commands.py'))
> +(('meta/lib/oeqa/utils/logparser.py'), ('meta/lib/oeqa/utils/ftools.py'))
> +(('meta/lib/oeqa/utils/qemurunner.py'), ('meta/lib/oeqa/utils/dump.py'))
> +(('meta/lib/oeqa/utils/qemutinyrunner.py'), ('meta/lib/oeqa/utils/qemurunner.py'))
> +(('meta/lib/oeqa/utils/targetbuild.py'), ('bitbake/lib/bb/utils.py'))
> +(('scripts/contrib/devtool-stress.py'), ('bitbake/lib/bb/process.py'))
> +(('scripts/contrib/devtool-stress.py'), ('bitbake/lib/bb/tinfoil.py'))
> +(('scripts/contrib/devtool-stress.py'), ('scripts/lib/scriptpath.py'))
> +(('scripts/contrib/devtool-stress.py'), ('scripts/lib/scriptutils.py'))
> +(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/cache.py'))
> +(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/cooker.py'))
> +(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/providers.py'))
> +(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/tinfoil.py'))
> +(('scripts/contrib/list-packageconfig-flags.py'), ('scripts/lib/scriptpath.py'))
> +(('scripts/contrib/verify-homepage.py'), ('bitbake/lib/bb/tinfoil.py'))
> +(('scripts/lib/bsp/engine.py'), ('scripts/lib/bsp/tags.py'))
> +(('scripts/lib/bsp/kernel.py'), ('scripts/lib/bsp/engine.py'))
> +(('scripts/lib/bsp/kernel.py'), ('scripts/lib/bsp/tags.py'))
> +(('scripts/lib/devtool/build-image.py'), ('bitbake/lib/bb/process.py'))
> +(('scripts/lib/devtool/deploy.py'), ('meta/lib/oe/recipeutils.py'))
> +(('scripts/lib/devtool/package.py'), ('bitbake/lib/bb/process.py'))
> +(('scripts/lib/devtool/standard.py'), ('bitbake/lib/bb/event.py'))
> +(('scripts/lib/devtool/standard.py'), ('bitbake/lib/bb/utils.py'))
> +(('scripts/lib/devtool/standard.py'), ('meta/lib/oe/patch.py'))
> +(('scripts/lib/devtool/standard.py'), ('meta/lib/oe/recipeutils.py'))
> +(('scripts/lib/devtool/standard.py'), ('scripts/lib/scriptutils.py'))
> +(('scripts/lib/devtool/upgrade.py'), ('meta/lib/oe/recipeutils.py'))
> +(('scripts/lib/devtool/upgrade.py'), ('scripts/lib/scriptutils.py'))
> +(('scripts/lib/recipetool/append.py'), ('meta/lib/oe/recipeutils.py'))
> +(('scripts/lib/recipetool/append.py'), ('scripts/lib/scriptutils.py'))
> +(('scripts/lib/recipetool/create.py'), ('bitbake/lib/bb/process.py'))
> +(('scripts/lib/recipetool/create.py'), ('bitbake/lib/bb/utils.py'))
> +(('scripts/lib/recipetool/create.py'), ('scripts/lib/scriptutils.py'))
> +(('scripts/lib/recipetool/create_buildsys.py'), ('meta/lib/oe/package.py'))
> +(('scripts/lib/recipetool/create_buildsys.py'), ('scripts/lib/recipetool/create.py'))
> +(('scripts/lib/recipetool/create_buildsys_python.py'), ('scripts/lib/recipetool/create.py'))
> +(('scripts/lib/recipetool/newappend.py'), ('bitbake/lib/bb/providers.py'))
> +(('scripts/lib/recipetool/newappend.py'), ('meta/lib/oe/recipeutils.py'))
> +(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/data.py'))
> +(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/msg.py'))
> +(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/process.py'))
> +(('scripts/lib/wic/conf.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/conf.py'), ('scripts/lib/wic/utils/misc.py'))
> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/conf.py'))
> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/plugin.py'))
> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/utils/errors.py'))
> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/creator.py'))
> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/plugin.py'))
> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/utils/misc.py'))
> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/help.py'), ('scripts/lib/wic/plugin.py'))
> +(('scripts/lib/wic/imager/baseimager.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/imager/baseimager.py'), ('scripts/lib/wic/utils/errors.py'))
> +(('scripts/lib/wic/imager/baseimager.py'), ('scripts/lib/wic/utils/runner.py'))
> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/imager/baseimager.py'))
> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/plugin.py'))
> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/errors.py'))
> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/fs_related.py'))
> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/partitionedfs.py'))
> +(('scripts/lib/wic/kickstart/custom_commands/partition.py'), ('scripts/lib/wic/plugin.py'))
> +(('scripts/lib/wic/kickstart/custom_commands/partition.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/utils/errors.py'))
> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/pluginbase.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/utils/fs_related.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/scriptpath.py'))
> +(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/wic/utils/runner.py'))
> +(('scripts/lib/wic/utils/partitionedfs.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/utils/partitionedfs.py'), ('scripts/lib/wic/utils/errors.py'))
> +(('scripts/lib/wic/utils/partitionedfs.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/utils/runner.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/utils/syslinux.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/options.py'), ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/options.py'), ('scripts/lib/wic/3rdparty/pykickstart/errors.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/options.py'), ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/errors.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/ko.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/sections.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'), ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/sections.py'), ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/sections.py'), ('scripts/lib/wic/3rdparty/pykickstart/options.py'))
> +(('scripts/lib/wic/3rdparty/pykickstart/sections.py'), ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'), ('scripts/lib/wic/conf.py'))
> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'), ('scripts/lib/wic/imager/direct.py'))
> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'), ('scripts/lib/wic/utils/errors.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-efi.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-efi.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-efi.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-partition.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-partition.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-partition.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/utils/errors.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'), ('scripts/lib/wic/utils/runner.py'))
> +(('scripts/lib/wic/plugins/source/fsimage.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/plugins/source/fsimage.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugins/source/fsimage.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/plugins/source/rawcopy.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/plugins/source/rawcopy.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugins/source/rawcopy.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/plugins/source/rootfs.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/plugins/source/rootfs.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugins/source/rootfs.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/msger.py'))
> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/pluginbase.py'))
> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/utils/errors.py'))
> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/utils/oe/misc.py'))
> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/utils/runner.py'))
> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'), ('scripts/lib/wic/utils/syslinux.py'))
> +(('scripts/pybootchartgui/pybootchartgui/batch.py'), ('scripts/pybootchartgui/pybootchartgui/draw.py'))
> +(('scripts/pybootchartgui/pybootchartgui/gui.py'), ('scripts/pybootchartgui/pybootchartgui/draw.py'))
> +(('scripts/pybootchartgui/pybootchartgui/main.py'), ('scripts/pybootchartgui/pybootchartgui/batch.py'))
> +(('scripts/pybootchartgui/pybootchartgui/main.py'), ('scripts/pybootchartgui/pybootchartgui/gui.py'))
> +(('scripts/pybootchartgui/pybootchartgui/main.py'), ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
> +(('scripts/pybootchartgui/pybootchartgui/parsing.py'), ('scripts/pybootchartgui/pybootchartgui/process_tree.py'))
> +(('scripts/pybootchartgui/pybootchartgui/parsing.py'), ('scripts/pybootchartgui/pybootchartgui/samples.py'))
> +(('scripts/pybootchartgui/pybootchartgui/tests/parser_test.py'), ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
> +(('scripts/pybootchartgui/pybootchartgui/tests/process_tree_test.py'), ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
> +(('scripts/pybootchartgui/pybootchartgui/tests/process_tree_test.py'), ('scripts/pybootchartgui/pybootchartgui/process_tree.py'))
> \ No newline at end of file
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] scripts: analyze_patch: Analyze patch and suggest tests.
2015-11-23 15:55 ` Leonardo Sandoval
@ 2015-11-23 17:53 ` Randy Witt
2015-11-23 18:26 ` Leonardo Sandoval
0 siblings, 1 reply; 4+ messages in thread
From: Randy Witt @ 2015-11-23 17:53 UTC (permalink / raw)
To: Leonardo Sandoval, Daniel Istrate, openembedded-core
On 11/23/2015 07:55 AM, Leonardo Sandoval wrote:
> Hi Daniel,
>
> Some comments inline. BTW, is the script's output intended to be used as input
> of another one? Currently, the output is human-friendly (which is good) but at
> the end the purpose is to use the output and run this set of scripts/tests
> automatically, trying to detect possible issues. Also, I briefly tried the sfood
> library, and took quite a lot of time compared to deps.txts. I wonder if we can
> fasten somehow this sfood process.
>
What is a "long time"? I don't like deps.txt at all because it will most likely
become stale rather quickly.
>
> On 11/20/2015 08:22 AM, Daniel Istrate wrote:
>> [YOCTO #8647] - Script to analyse what areas a patch changes
>> and what tests need running
>>
>> This script will analyze files modified by a commit and
>> attempt to suggest what tests to run.
>> It is somewhat dependent of the 'snakefood' tool to determine
>> the import relationship between files. If this pkg is missing
>> a backup file will be used instead: deps.txt
>>
>> Usage: analyze_patch --revision <rev>
>> Example: analyze_patch --revision 351c69a
>>
>> Revision: 351c69a
>>
>> Modified files:
>> meta/recipes-support/sqlite/files/0001-using-the-dynamic-library.patch
>> meta/recipes-support/sqlite/sqlite3_3.8.10.2.bb
>> meta/recipes-support/sqlite/sqlite3_3.9.0.bb
>>
>> Suggested tests:
>> Rebuild: sqlite3
>>
>> Signed-off-by: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
>> ---
>> scripts/analyze_patch | 300 ++++++++++++++++++++++++
>> scripts/deps.txt | 628 ++++++++++++++++++++++++++++++++++++++++++++++++++
>> 2 files changed, 928 insertions(+)
>> create mode 100755 scripts/analyze_patch
>> create mode 100644 scripts/deps.txt
>>
>> diff --git a/scripts/analyze_patch b/scripts/analyze_patch
>> new file mode 100755
>> index 0000000..1b6609b
>> --- /dev/null
>> +++ b/scripts/analyze_patch
>> @@ -0,0 +1,300 @@
>> +#!/usr/bin/env python
>> +
> THE GPL license should be included on this part.
>> +# Description: This will analyze the files modified by a commit and attempt
>> to suggest what tests to run.
>> +# It uses an adjacent file 'deps.txt' that was generated by
>> 'snakefood' tool:
>> +# sfood <poky_dir> | grep -v /usr/lib/python | grep -v
>> /usr/share/pyshared/ |
>> +# grep -v None | grep ".py')," | grep ".py\'))" > deps.txt
>> +# This file has to be edited further: remove the <poky_dir> and
>> replace "', '" with '/'.
>> +# In the end you should have something like this: a matrix with
>> 2 columns, which represent
>> +# elements from the left import elements from the right.
>> +# (('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/event.py'))
>> +# (('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/msg.py'))
>> +#
>> +# How to use it: analyze_patch --revision <rev>
>> +# analyze_patch -r 2d1071e
>> +# Notes: if revision is not provided, will default to HEAD
>> +# Author: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
>> +
>> +import argparse
>> +import os
>> +import glob
>> +import ast
>> +import re
>> +from subprocess import PIPE, Popen, STDOUT
>> +
>> +parser = argparse.ArgumentParser()
>> +parser.add_argument('-r', '--revision', help='<revision> changes to analyze.')
> Another option would be to define which method to use (sfood or deps.tx) in case
> we have more than one method
>> +args = parser.parse_args()
>> +
>> +revision = args.revision or 'HEAD'
> This default can be include on the same line were the argument was added.
>> +
>> +this_file_path = os.path.dirname(os.path.abspath(__file__))
>> +poky_dir = os.path.abspath(os.path.join(this_file_path, os.pardir))
>> +# Move into the the poky dir
>> +os.chdir(poky_dir)
>> +
>> +# Where are the available tests located
>> +bb_test_dir = 'bitbake/lib/bb/tests/'
>> +selftest_dir = 'meta/lib/oeqa/selftest/'
>> +runtime_dir = 'meta/lib/oeqa/runtime/'
>> +
>> +RETOK = 0
>> +
>> +
>> +def run_cmd(cmd, ignore_err=False):
>> + """
>> + Run cmd in bash shell
>> + :param cmd: command to be ran.
>> + :param ignore_err: redirect stderr to /dev/null, otherwise redirect
>> stderr to stdout
>> + :return: tuple containing exit code & output of the cmd
>> + """
>> + DEVNULL = open(os.devnull, 'w')
>> +
>> + if ignore_err:
>> + proc = Popen(args=cmd, stdout=PIPE, stderr=DEVNULL, shell=True,
>> executable='/bin/bash')
>> + else:
>> + proc = Popen(args=cmd, stdout=PIPE, stderr=STDOUT, shell=True,
>> executable='/bin/bash')
>> + retval = proc.communicate()[0]
>> + retcode = proc.returncode
>> +
>> + return retcode, retval
>> +
>> +
>> +def get_modified_files(rev=revision):
>> + """
>> + Determine modified files by a commit
>> + :param rev: the revision number to determine modified files for.
>> + :return: a list of modified files
>> + """
>> + cmd = 'git diff-tree --no-commit-id --name-only -r ' + rev
>> + retcode, retval = run_cmd(cmd)
>> +
>> + if retcode != RETOK:
>> + return retcode, retval
>> +
>> + retlist = retval.split('\n')
>> + retlist.remove('')
>> +
>> + return retlist
>> +
>> +
>> +def get_list_of_testuites(test_dir):
>> + """
>> + Looks for .py files in test_dir
>> + :param test_dir: directory containing (hopefully) test suites
>> + :return: list of test suites
>> + """
>> + test_suites = []
>> + test_list = glob.glob(test_dir + '*.py')
>> +
>> + # trim the .py extension and the path to each testsuite
>> + for ts in test_list:
>> + test_suites.append(ts.replace(test_dir, '').replace('.py', ''))
>> +
>> + # remove __init__ from test_suites
>> + try:
>> + test_suites.remove('__init__')
>> + except:
>> + pass
>> +
>> + return test_suites
>> +
>> +
>> +def get_modules_dependencies(mfile):
>> + """
>> + Get modules dependencies from poky.
>> + It uses 'snakefood' pkg (please make sure it is installed)
>> + In case 'snakefood' is not installed a backup file will be used instead.
>> + :return: a list of all modules deps
>> + """
>> +
>> + cmd = 'sfood %s | grep -v /usr/lib/python | grep -v /usr/share/pyshared/
>> | ' \
>> + 'grep -v None | grep ".py\')," | grep ".py\'))"' % poky_dir
>> +
> I have not looked into the sfood code/documentation, but it would be
> nicer/faster if we use the sfood API instead of the command. This way, we wont
> need to spawn a new command and create this long pipeline.
>> + retcode, retval = run_cmd(cmd)
>> +
>> + if retcode != 0:
>> + # cmd failed, most likely 'snakefood' is not installed
>> + # will look for deps.txt
>> + # print "WARNING: 'snakefood' not installed. Will proceed with
>> 'deps.txt'."
>> + deps = open('scripts/deps.txt', 'r').read()
>> + else:
>> + deps = retval.replace(poky_dir + '/', '').replace("', '", '/')
>> +
>> + deps_m = []
>> + for i in deps.split('\n'):
>> + try:
>> + deps_m.append(ast.literal_eval(i))
>> + except:
>> + # There might be a '\n' at the end of the file --> will ignore
>> + pass
>> +
>> + def find_deps(mfile, visited):
>> +
>> + if isinstance(mfile, list):
>> + for i in mfile:
>> + find_deps(i, visited)
>> + else:
>> + for i in deps_m:
>> + if i[1] == mfile and i[0] not in visited:
>> + visited.append(i[0])
>> + find_deps(i[0], visited)
>> +
>> + return visited
>> +
>> + return find_deps(mfile, [])
>> +
>> +
>> +def is_documentation(mfile):
>> + """All files under documentation"""
>> + doc_patt = r'documentation/'
>> + if doc_patt in mfile:
>> + return True
>> + return False
> a minor comment: 'return doc_patt in mfile' does the same as the three
> statements before
>> +
>> +
>> +def is_recipe(mfile):
>> + recipe_patt = r'\.(bbappend|bb)$'
>> + if re.search(recipe_patt, mfile):
>> + return True
>> + return False
>> +
>> +
>> +def is_part_of_recipe(mfile):
>> + """Everything that is inside meta/recipes-* or meta-*/recipes-* """
>> + part_recipe_patt = r'^meta(-\S+)?/recipes-'
>> + if re.search(part_recipe_patt, mfile):
>> + return True
>> + return False
>> +
>> +
>> +def is_test(mfile):
>> + """Check that the file is a test file"""
>> + global selftest_dir
>> + global runtime_dir
>> + global bb_test_dir
>> +
> Can we omit the global statements?
>
>> + if runtime_dir in mfile or selftest_dir in mfile or bb_test_dir in mfile:
>> + return True
>> + return False
>> +
>
>
>> +
>> +def get_test_name(mfile):
>> + ret_list = []
>> + test_name = os.path.basename(mfile).split('.')[0]
>> + if is_test(mfile) and test_name != '__init__':
>> + ret_list.append(test_name)
>> + return ret_list
>> +
>> +
>> +def get_test_for(mfile):
>> + """ Attempt to guess a test for the given file """
>> + # Not very happy with this, it needs to be clever
>> + global all_tests
>> + ret_list = []
>> +
>> + for i in all_tests:
>> + if i in mfile:
>> + ret_list.append(i)
>> +
>> + return ret_list
>> +
>> +
>> +def get_recipe_name(mfile):
>> + """ Trim the file extension and pn from filename"""
>> + # Most files follow this format recipename_pn.bb | recipe-name_pn.bb |
>> recipe-name.bb
>> + ret_list = []
>> + temp_list = []
>> + if is_recipe(mfile):
>> + ret_list.append(os.path.basename(mfile).split('_')[0].replace('.bb',
>> ''))
>> + return ret_list
>> + # If it's a file that has something to do with a recipe attempt to guess
>> the recipe
>> + # Look for .bb|.bbappend files in the current dir up to 2 lvl above till
>> bb files are found
>> + # There might be cases when it will find more bb files, some perhaps not
>> directly related to
>> + # the file, but at least we are covered.
>> + if is_part_of_recipe(mfile):
>> + levels_list = ['/*.bb*', '/../*.bb*', '/../../*.bb*']
>> + for lvl in levels_list:
>> + recipes = glob.glob(os.path.dirname(mfile) + lvl)
>> + if recipes:
>> + temp_list += recipes
>> + break
>> + # Trim the file extension and pn from filename
>> + for i in temp_list:
>> + ret_list.append(os.path.basename(i).split('_')[0].replace('.bb',
>> ''))
>> + return ret_list
>> +
>> + return ret_list
>> +
>> +
>> +def suggest_tests(mfile):
>> + """ Suggest tests """
>> + global documentation_updated
>> + global recipes_to_rebuild
>> + global tests_to_run
>> +
>> + if is_documentation(mfile):
>> + documentation_updated = True
>> + elif is_recipe(mfile) or is_part_of_recipe(mfile):
>> + recipes_to_rebuild.update(get_recipe_name(mfile))
>> + elif is_test(mfile):
>> + tests_to_run.update(get_test_name(mfile))
>> + #else
>> + tests_to_run.update(get_test_for(mfile))
>> +
>> +
>> +selftest_tests = get_list_of_testuites(selftest_dir)
>> +runtime_tests = get_list_of_testuites(runtime_dir)
>> +bb_tests = get_list_of_testuites(bb_test_dir)
>> +all_tests = bb_tests + runtime_tests + selftest_tests
>> +
>> +mfiles = get_modified_files()
>> +ind_mfiles = get_modules_dependencies(mfiles)
>> +# mfiles might be included in ind_files if there are circular imports
>> +all_mfiles = set(mfiles + ind_mfiles)
>> +
>> +recipes_to_rebuild = set()
>> +tests_to_run = set()
>> +documentation_updated = False
>> +
>> +
>> +# Print results
>> +print '\nRevision: %s' % revision
>> +print '\nModified files:'
>> +for i in mfiles:
>> + print i
>> +if ind_mfiles:
>> + print '\nIndirect modified files:'
>> + for i in ind_mfiles:
>> + print i
>> +print '\nSuggested tests:'
>> +for i in all_mfiles:
>> + suggest_tests(i)
>> +
>> +if documentation_updated:
>> + print 'Documentation updated, nothing to do.'
>> +
>> +if recipes_to_rebuild:
>> + ret_recipe = ''
>> + for i in recipes_to_rebuild:
>> + ret_recipe += i + ' '
>> + print 'Rebuild: %s' % ret_recipe
>> +
>> +if tests_to_run:
>> + ret_bb, ret_selftest, ret_runtime = ('',)*3
>> + for i in tests_to_run:
>> + if i in bb_tests:
>> + ret_bb += i + ' '
>> + elif i in runtime_tests:
>> + ret_runtime += i + ' '
>> + elif i in selftest_tests:
>> + ret_selftest += i + ' '
>> + if ret_bb:
>> + print 'bitbake-selftest: %s ' % ret_bb
>> + if ret_selftest:
>> + print 'oe-selftest: %s ' % ret_selftest
>> + if ret_runtime:
>> + print 'runtime: %s ' % ret_runtime
>> +
>> +if not (recipes_to_rebuild or documentation_updated or tests_to_run):
>> + print None
>> diff --git a/scripts/deps.txt b/scripts/deps.txt
>> new file mode 100644
>> index 0000000..421897d
>> --- /dev/null
>> +++ b/scripts/deps.txt
>> @@ -0,0 +1,628 @@
>> +(('bitbake/contrib/dump_cache.py'), ('bitbake/lib/bb/cache.py'))
>> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/event.py'))
>> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/msg.py'))
>> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/process.py'))
>> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/cache.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/cache_extra.py'), ('bitbake/lib/bb/cache.py'))
>> +(('bitbake/lib/bb/checksum.py'), ('bitbake/lib/bb/cache.py'))
>> +(('bitbake/lib/bb/checksum.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/cache.py'))
>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/pyshyacc.py'))
>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/codegen.py'))
>> +(('bitbake/lib/bb/command.py'), ('bitbake/lib/bb/cooker.py'))
>> +(('bitbake/lib/bb/command.py'), ('bitbake/lib/bb/event.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/build.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/cache.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/command.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/event.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/exceptions.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/providers.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/runqueue.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/shell.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/taskdata.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/prserv/serv.py'))
>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/pyinotify.py'))
>> +(('bitbake/lib/bb/cookerdata.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/data.py'), ('bitbake/lib/bb/codeparser.py'))
>> +(('bitbake/lib/bb/data.py'), ('bitbake/lib/bb/data_smart.py'))
>> +(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/COW.py'))
>> +(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/codeparser.py'))
>> +(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/compat.py'))
>> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/exceptions.py'))
>> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/msg.py'))
>> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/exceptions.py'), ('bitbake/lib/bb/namedtuple_with_abc.py'))
>> +(('bitbake/lib/bb/fetch2/bzr.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/clearcase.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/git.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/gitannex.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/gitannex.py'), ('bitbake/lib/bb/fetch2/git.py'))
>> +(('bitbake/lib/bb/fetch2/gitsm.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/gitsm.py'), ('bitbake/lib/bb/fetch2/git.py'))
>> +(('bitbake/lib/bb/fetch2/hg.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/local.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/local.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/fetch2/osc.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/perforce.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/repo.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/sftp.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/ssh.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/svn.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/fetch2/wget.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/cooker.py'))
>> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/cookerdata.py'))
>> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/event.py'))
>> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/msg.py'))
>> +(('bitbake/lib/bb/methodpool.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/msg.py'), ('bitbake/lib/bb/event.py'))
>> +(('bitbake/lib/bb/parse/ast.py'), ('bitbake/lib/bb/methodpool.py'))
>> +(('bitbake/lib/bb/parse/parse_py'),
>> ('bitbake/lib/bb/parse/parse_py/BBHandler.py'))
>> +(('bitbake/lib/bb/parse/parse_py'),
>> ('bitbake/lib/bb/parse/parse_py/ConfHandler.py'))
>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/build.py'))
>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'),
>> ('bitbake/lib/bb/parse/ast.py'))
>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'),
>> ('bitbake/lib/bb/parse/parse_py/ConfHandler.py'))
>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/parse/parse_py/ConfHandler.py'),
>> ('bitbake/lib/bb/parse/ast.py'))
>> +(('bitbake/lib/bb/parse/parse_py/ConfHandler.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/persist_data.py'), ('bitbake/lib/bb/compat.py'))
>> +(('bitbake/lib/bb/persist_data.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/providers.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/providers.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/pysh/builtin.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
>> +(('bitbake/lib/bb/pysh/builtin.py'), ('bitbake/lib/bb/pysh/subprocess_fix.py'))
>> +(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/builtin.py'))
>> +(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
>> +(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/pyshyacc.py'))
>> +(('bitbake/lib/bb/pysh/interp.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
>> +(('bitbake/lib/bb/pysh/pysh.py'), ('bitbake/lib/bb/pysh/interp.py'))
>> +(('bitbake/lib/bb/pysh/pysh.py'), ('bitbake/lib/bb/pysh/lsprof.py'))
>> +(('bitbake/lib/bb/pysh/pyshlex.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
>> +(('bitbake/lib/bb/pysh/pyshlex.py'), ('bitbake/lib/ply/lex.py'))
>> +(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
>> +(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/bb/pysh/sherrors.py'))
>> +(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/ply/yacc.py'))
>> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/event.py'))
>> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/monitordisk.py'))
>> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/msg.py'))
>> +(('bitbake/lib/bb/server/process.py'), ('bitbake/lib/bb/event.py'))
>> +(('bitbake/lib/bb/server/xmlrpc.py'), ('bitbake/lib/bb/daemonize.py'))
>> +(('bitbake/lib/bb/server/xmlrpc.py'), ('bitbake/lib/bb/ui/uievent.py'))
>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/build.py'))
>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/cache.py'))
>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/providers.py'))
>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/runqueue.py'))
>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/taskdata.py'))
>> +(('bitbake/lib/bb/siggen.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/tests/codeparser.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/tests/cow.py'), ('bitbake/lib/bb/COW.py'))
>> +(('bitbake/lib/bb/tests/data.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/tests/parse.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/tests/parse.py'), ('bitbake/lib/bb/siggen.py'))
>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cache.py'))
>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cooker.py'))
>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cookerdata.py'))
>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/providers.py'))
>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/bb/ui/buildinfohelper.py'), ('bitbake/lib/bb/msg.py'))
>> +(('bitbake/lib/bb/ui/buildinfohelper.py'),
>> ('bitbake/lib/toaster/orm/models.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>> ('bitbake/lib/bb/process.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/builddetailspage.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/persistenttooltip.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>> ('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'))
>> +(('bitbake/lib/bb/ui/crumbs/builder.py'), ('bitbake/lib/bb/ui/crumbs/utils.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>> ('bitbake/lib/bb/process.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/utils.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hobeventhandler.py'),
>> ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hobpages.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hobpages.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hobwidget.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hobwidget.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>> +(('bitbake/lib/bb/ui/crumbs/hobwidget.py'),
>> ('bitbake/lib/bb/ui/crumbs/persistenttooltip.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/retrieveimagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
>> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/progressbar.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
>> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/runningbuild.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>> +(('bitbake/lib/bb/ui/crumbs/runningbuild.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>> +(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>> +(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'),
>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>> +(('bitbake/lib/bb/ui/depexp.py'), ('bitbake/lib/bb/event.py'))
>> +(('bitbake/lib/bb/ui/depexp.py'), ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>> +(('bitbake/lib/bb/ui/goggle.py'), ('bitbake/lib/bb/ui/crumbs/progress.py'))
>> +(('bitbake/lib/bb/ui/goggle.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
>> +(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/crumbs/builder.py'))
>> +(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/crumbs/hobeventhandler.py'))
>> +(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
>> +(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/uihelper.py'))
>> +(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/bb/msg.py'))
>> +(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/bb/ui/uihelper.py'))
>> +(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/progressbar.py'))
>> +(('bitbake/lib/bb/ui/ncurses.py'), ('bitbake/lib/bb/ui/uihelper.py'))
>> +(('bitbake/lib/bb/ui/puccho.py'), ('bitbake/lib/bb/ui/crumbs/buildmanager.py'))
>> +(('bitbake/lib/bb/ui/puccho.py'), ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
>> +(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/msg.py'))
>> +(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/ui/buildinfohelper.py'))
>> +(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/ui/uihelper.py'))
>> +(('bitbake/lib/bb/ui/uihelper.py'), ('bitbake/lib/bb/build.py'))
>> +(('bitbake/lib/bb/ui/uihelper.py'), ('bitbake/lib/bb/server/xmlrpc.py'))
>> +(('bitbake/lib/bb/utils.py'), ('bitbake/lib/bb/data.py'))
>> +(('bitbake/lib/bb/utils.py'), ('bitbake/lib/bb/msg.py'))
>> +(('bitbake/lib/bs4/builder/_html5lib.py'), ('bitbake/lib/bs4/element.py'))
>> +(('bitbake/lib/bs4/builder/_htmlparser.py'), ('bitbake/lib/bs4/dammit.py'))
>> +(('bitbake/lib/bs4/builder/_htmlparser.py'), ('bitbake/lib/bs4/element.py'))
>> +(('bitbake/lib/bs4/builder/_lxml.py'), ('bitbake/lib/bs4/dammit.py'))
>> +(('bitbake/lib/bs4/builder/_lxml.py'), ('bitbake/lib/bs4/element.py'))
>> +(('bitbake/lib/bs4/element.py'), ('bitbake/lib/bs4/dammit.py'))
>> +(('bitbake/lib/bs4/testing.py'), ('bitbake/lib/bs4/element.py'))
>> +(('bitbake/lib/bs4/tests/test_html5lib.py'), ('bitbake/lib/bs4/element.py'))
>> +(('bitbake/lib/bs4/tests/test_html5lib.py'), ('bitbake/lib/bs4/testing.py'))
>> +(('bitbake/lib/bs4/tests/test_htmlparser.py'), ('bitbake/lib/bs4/testing.py'))
>> +(('bitbake/lib/bs4/tests/test_lxml.py'), ('bitbake/lib/bs4/element.py'))
>> +(('bitbake/lib/bs4/tests/test_lxml.py'), ('bitbake/lib/bs4/testing.py'))
>> +(('bitbake/lib/bs4/tests/test_lxml.py'),
>> ('bitbake/lib/bs4/tests/test_htmlparser.py'))
>> +(('bitbake/lib/bs4/tests/test_soup.py'), ('bitbake/lib/bs4/dammit.py'))
>> +(('bitbake/lib/bs4/tests/test_soup.py'), ('bitbake/lib/bs4/element.py'))
>> +(('bitbake/lib/bs4/tests/test_soup.py'), ('bitbake/lib/bs4/testing.py'))
>> +(('bitbake/lib/bs4/tests/test_tree.py'), ('bitbake/lib/bs4/element.py'))
>> +(('bitbake/lib/bs4/tests/test_tree.py'), ('bitbake/lib/bs4/testing.py'))
>> +(('bitbake/lib/ply/yacc.py'), ('bitbake/lib/ply/lex.py'))
>> +(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/bb/server/xmlrpc.py'))
>> +(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/bb/utils.py'))
>> +(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/prserv/db.py'))
>> +(('bitbake/lib/toaster/bldcontrol/admin.py'),
>> ('bitbake/lib/toaster/bldcontrol/models.py'))
>> +(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'),
>> ('bitbake/lib/bb/server/xmlrpc.py'))
>> +(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'),
>> ('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'))
>> +(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'),
>> ('bitbake/lib/toaster/bldcontrol/sshbecontroller.py'))
>> +(('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'),
>> ('bitbake/lib/toaster/bldcontrol/bbcontroller.py'))
>> +(('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'),
>> ('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'))
>> +(('bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py'),
>> ('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'))
>> +(('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'),
>> ('bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py'))
>> +(('bitbake/lib/toaster/bldcontrol/sshbecontroller.py'),
>> ('bitbake/lib/toaster/bldcontrol/bbcontroller.py'))
>> +(('bitbake/lib/toaster/contrib/tts/launcher.py'),
>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>> +(('bitbake/lib/toaster/contrib/tts/launcher.py'),
>> ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
>> +(('bitbake/lib/toaster/contrib/tts/recv.py'),
>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>> +(('bitbake/lib/toaster/contrib/tts/recv.py'),
>> ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
>> +(('bitbake/lib/toaster/contrib/tts/runner.py'),
>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>> +(('bitbake/lib/toaster/contrib/tts/runner.py'),
>> ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
>> +(('bitbake/lib/toaster/contrib/tts/shellutils.py'),
>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>> +(('bitbake/lib/toaster/contrib/tts/tests.py'),
>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>> +(('bitbake/lib/toaster/contrib/tts/tests.py'),
>> ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
>> +(('bitbake/lib/toaster/contrib/tts/tests.py'),
>> ('bitbake/lib/toaster/contrib/tts/urlcheck.py'))
>> +(('bitbake/lib/toaster/contrib/tts/tests.py'),
>> ('bitbake/lib/toaster/contrib/tts/urllist.py'))
>> +(('bitbake/lib/toaster/contrib/tts/urlcheck.py'),
>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>> +(('bitbake/lib/toaster/contrib/tts/urlcheck.py'),
>> ('bitbake/lib/toaster/contrib/tts/urllist.py'))
>> +(('meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py'),
>> ('meta/lib/oeqa/controllers/masterimage.py'))
>> +(('meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py'),
>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>> +(('meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py'),
>> ('meta/lib/oeqa/controllers/masterimage.py'))
>> +(('meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py'),
>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>> +(('meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py'),
>> ('meta/lib/oeqa/controllers/masterimage.py'))
>> +(('meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py'),
>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>> +(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'),
>> ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'),
>> ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oe/buildhistory_analysis.py'), ('bitbake/lib/bb/utils.py'))
>> +(('meta/lib/oe/data.py'), ('meta/lib/oe/maketype.py'))
>> +(('meta/lib/oe/image.py'), ('meta/lib/oe/utils.py'))
>> +(('meta/lib/oe/maketype.py'), ('meta/lib/oe/types.py'))
>> +(('meta/lib/oe/package_manager.py'), ('meta/lib/oe/utils.py'))
>> +(('meta/lib/oe/packagegroup.py'), ('meta/lib/oe/packagedata.py'))
>> +(('meta/lib/oe/patch.py'), ('meta/lib/oe/path.py'))
>> +(('meta/lib/oe/prservice.py'), ('bitbake/lib/bb/utils.py'))
>> +(('meta/lib/oe/prservice.py'), ('bitbake/lib/prserv/serv.py'))
>> +(('meta/lib/oe/qa.py'), ('bitbake/lib/bb/process.py'))
>> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/cache.py'))
>> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/cookerdata.py'))
>> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/providers.py'))
>> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/taskdata.py'))
>> +(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/patch.py'))
>> +(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/path.py'))
>> +(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/utils.py'))
>> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/manifest.py'))
>> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/package_manager.py'))
>> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/path.py'))
>> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/utils.py'))
>> +(('meta/lib/oe/sdk.py'), ('meta/lib/oe/manifest.py'))
>> +(('meta/lib/oe/sdk.py'), ('meta/lib/oe/package_manager.py'))
>> +(('meta/lib/oe/sdk.py'), ('meta/lib/oe/utils.py'))
>> +(('meta/lib/oe/sstatesig.py'), ('bitbake/lib/bb/siggen.py'))
>> +(('meta/lib/oe/terminal.py'), ('bitbake/lib/bb/process.py'))
>> +(('meta/lib/oe/terminal.py'), ('meta/lib/oe/classutils.py'))
>> +(('meta/lib/oe/tests/test_license.py'), ('meta/lib/oe/license.py'))
>> +(('meta/lib/oe/tests/test_path.py'), ('meta/lib/oe/path.py'))
>> +(('meta/lib/oe/tests/test_types.py'), ('meta/lib/oe/maketype.py'))
>> +(('meta/lib/oe/tests/test_utils.py'), ('meta/lib/oe/utils.py'))
>> +(('meta/lib/oeqa/controllers/masterimage.py'),
>> ('meta/lib/oeqa/targetcontrol.py'))
>> +(('meta/lib/oeqa/controllers/masterimage.py'),
>> ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/controllers/masterimage.py'),
>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>> +(('meta/lib/oeqa/controllers/testtargetloader.py'),
>> ('meta/lib/oeqa/targetcontrol.py'))
>> +(('meta/lib/oeqa/oetest.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/utils/dump.py'))
>> +(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
>> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oe/package_manager.py'))
>> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/utils/httpserver.py'))
>> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/utils/logparser.py'))
>> +(('meta/lib/oeqa/runtime/_qemutiny.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/_qemutiny.py'),
>> ('meta/lib/oeqa/utils/qemutinyrunner.py'))
>> +(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
>> +(('meta/lib/oeqa/runtime/buildiptables.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/buildiptables.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/buildiptables.py'),
>> ('meta/lib/oeqa/utils/targetbuild.py'))
>> +(('meta/lib/oeqa/runtime/buildsudoku.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/buildsudoku.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/buildsudoku.py'),
>> ('meta/lib/oeqa/utils/targetbuild.py'))
>> +(('meta/lib/oeqa/runtime/connman.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/connman.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/date.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/date.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/df.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/df.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/dmesg.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/dmesg.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/gcc.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/gcc.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/kernelmodule.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/kernelmodule.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/ldd.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/ldd.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/logrotate.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/logrotate.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/multilib.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/multilib.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/pam.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/pam.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/parselogs.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/parselogs.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/perl.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/perl.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/ping.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/ping.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/python.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/python.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/rpm.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/rpm.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/scanelf.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/scanelf.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/scp.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/scp.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/skeletoninit.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/skeletoninit.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/utils/httpserver.py'))
>> +(('meta/lib/oeqa/runtime/ssh.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/ssh.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/syslog.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/syslog.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/systemd.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/systemd.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/vnc.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/vnc.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/x32lib.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/x32lib.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/runtime/xorg.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/runtime/xorg.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
>> +(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
>> +(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/utils/targetbuild.py'))
>> +(('meta/lib/oeqa/sdk/gcc.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/sdk/gcc.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/sdk/perl.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/sdk/perl.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/sdk/python.py'), ('meta/lib/oeqa/oetest.py'))
>> +(('meta/lib/oeqa/sdk/python.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'),
>> ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'),
>> ('meta/lib/oeqa/selftest/sstate.py'))
>> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'),
>> ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'),
>> ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/_toaster.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/archiver.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/archiver.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/archiver.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/base.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/base.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/base.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/bblayers.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/bbtests.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/buildhistory.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/buildhistory.py'),
>> ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/buildhistory.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/buildoptions.py'),
>> ('meta/lib/oeqa/selftest/buildhistory.py'))
>> +(('meta/lib/oeqa/selftest/buildoptions.py'),
>> ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/buildoptions.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/buildoptions.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/devtool.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/imagefeatures.py'),
>> ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/imagefeatures.py'),
>> ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/imagefeatures.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/imagefeatures.py'),
>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>> +(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/layerappend.py'),
>> ('meta/lib/oeqa/selftest/buildhistory.py'))
>> +(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/layerappend.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/layerappend.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/lic-checksum.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/lic-checksum.py'),
>> ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/lic-checksum.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/manifest.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/manifest.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/manifest.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/oescripts.py'),
>> ('meta/lib/oeqa/selftest/buildhistory.py'))
>> +(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/oescripts.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/pkgdata.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/prservice.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/recipetool.py'),
>> ('meta/lib/oeqa/selftest/devtool.py'))
>> +(('meta/lib/oeqa/selftest/recipetool.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/recipetool.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/sstate.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/sstate.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/sstate.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/sstatetests.py'),
>> ('meta/lib/oeqa/selftest/sstate.py'))
>> +(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/sstatetests.py'),
>> ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/selftest/sstatetests.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/selftest/wic.py'), ('meta/lib/oeqa/selftest/base.py'))
>> +(('meta/lib/oeqa/selftest/wic.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/selftest/wic.py'), ('meta/lib/oeqa/utils/decorators.py'))
>> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oe/path.py'))
>> +(('meta/lib/oeqa/targetcontrol.py'),
>> ('meta/lib/oeqa/controllers/testtargetloader.py'))
>> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/dump.py'))
>> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/qemurunner.py'))
>> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/qemutinyrunner.py'))
>> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/sshcontrol.py'))
>> +(('meta/lib/oeqa/utils/commands.py'), ('bitbake/lib/bb/build.py'))
>> +(('meta/lib/oeqa/utils/commands.py'), ('bitbake/lib/bb/tinfoil.py'))
>> +(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oe/recipeutils.py'))
>> +(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oeqa/targetcontrol.py'))
>> +(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/utils/dump.py'), ('meta/lib/oeqa/utils/commands.py'))
>> +(('meta/lib/oeqa/utils/logparser.py'), ('meta/lib/oeqa/utils/ftools.py'))
>> +(('meta/lib/oeqa/utils/qemurunner.py'), ('meta/lib/oeqa/utils/dump.py'))
>> +(('meta/lib/oeqa/utils/qemutinyrunner.py'),
>> ('meta/lib/oeqa/utils/qemurunner.py'))
>> +(('meta/lib/oeqa/utils/targetbuild.py'), ('bitbake/lib/bb/utils.py'))
>> +(('scripts/contrib/devtool-stress.py'), ('bitbake/lib/bb/process.py'))
>> +(('scripts/contrib/devtool-stress.py'), ('bitbake/lib/bb/tinfoil.py'))
>> +(('scripts/contrib/devtool-stress.py'), ('scripts/lib/scriptpath.py'))
>> +(('scripts/contrib/devtool-stress.py'), ('scripts/lib/scriptutils.py'))
>> +(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/cache.py'))
>> +(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/cooker.py'))
>> +(('scripts/contrib/list-packageconfig-flags.py'),
>> ('bitbake/lib/bb/providers.py'))
>> +(('scripts/contrib/list-packageconfig-flags.py'), ('bitbake/lib/bb/tinfoil.py'))
>> +(('scripts/contrib/list-packageconfig-flags.py'), ('scripts/lib/scriptpath.py'))
>> +(('scripts/contrib/verify-homepage.py'), ('bitbake/lib/bb/tinfoil.py'))
>> +(('scripts/lib/bsp/engine.py'), ('scripts/lib/bsp/tags.py'))
>> +(('scripts/lib/bsp/kernel.py'), ('scripts/lib/bsp/engine.py'))
>> +(('scripts/lib/bsp/kernel.py'), ('scripts/lib/bsp/tags.py'))
>> +(('scripts/lib/devtool/build-image.py'), ('bitbake/lib/bb/process.py'))
>> +(('scripts/lib/devtool/deploy.py'), ('meta/lib/oe/recipeutils.py'))
>> +(('scripts/lib/devtool/package.py'), ('bitbake/lib/bb/process.py'))
>> +(('scripts/lib/devtool/standard.py'), ('bitbake/lib/bb/event.py'))
>> +(('scripts/lib/devtool/standard.py'), ('bitbake/lib/bb/utils.py'))
>> +(('scripts/lib/devtool/standard.py'), ('meta/lib/oe/patch.py'))
>> +(('scripts/lib/devtool/standard.py'), ('meta/lib/oe/recipeutils.py'))
>> +(('scripts/lib/devtool/standard.py'), ('scripts/lib/scriptutils.py'))
>> +(('scripts/lib/devtool/upgrade.py'), ('meta/lib/oe/recipeutils.py'))
>> +(('scripts/lib/devtool/upgrade.py'), ('scripts/lib/scriptutils.py'))
>> +(('scripts/lib/recipetool/append.py'), ('meta/lib/oe/recipeutils.py'))
>> +(('scripts/lib/recipetool/append.py'), ('scripts/lib/scriptutils.py'))
>> +(('scripts/lib/recipetool/create.py'), ('bitbake/lib/bb/process.py'))
>> +(('scripts/lib/recipetool/create.py'), ('bitbake/lib/bb/utils.py'))
>> +(('scripts/lib/recipetool/create.py'), ('scripts/lib/scriptutils.py'))
>> +(('scripts/lib/recipetool/create_buildsys.py'), ('meta/lib/oe/package.py'))
>> +(('scripts/lib/recipetool/create_buildsys.py'),
>> ('scripts/lib/recipetool/create.py'))
>> +(('scripts/lib/recipetool/create_buildsys_python.py'),
>> ('scripts/lib/recipetool/create.py'))
>> +(('scripts/lib/recipetool/newappend.py'), ('bitbake/lib/bb/providers.py'))
>> +(('scripts/lib/recipetool/newappend.py'), ('meta/lib/oe/recipeutils.py'))
>> +(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/data.py'))
>> +(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/msg.py'))
>> +(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/process.py'))
>> +(('scripts/lib/wic/conf.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/conf.py'), ('scripts/lib/wic/utils/misc.py'))
>> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/conf.py'))
>> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/plugin.py'))
>> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/utils/errors.py'))
>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/creator.py'))
>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/plugin.py'))
>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/utils/misc.py'))
>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/help.py'), ('scripts/lib/wic/plugin.py'))
>> +(('scripts/lib/wic/imager/baseimager.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/imager/baseimager.py'), ('scripts/lib/wic/utils/errors.py'))
>> +(('scripts/lib/wic/imager/baseimager.py'), ('scripts/lib/wic/utils/runner.py'))
>> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/imager/baseimager.py'))
>> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/plugin.py'))
>> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/errors.py'))
>> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/fs_related.py'))
>> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/imager/direct.py'),
>> ('scripts/lib/wic/utils/partitionedfs.py'))
>> +(('scripts/lib/wic/kickstart/custom_commands/partition.py'),
>> ('scripts/lib/wic/plugin.py'))
>> +(('scripts/lib/wic/kickstart/custom_commands/partition.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/utils/errors.py'))
>> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/pluginbase.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/utils/fs_related.py'), ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/scriptpath.py'))
>> +(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/wic/utils/runner.py'))
>> +(('scripts/lib/wic/utils/partitionedfs.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/utils/partitionedfs.py'),
>> ('scripts/lib/wic/utils/errors.py'))
>> +(('scripts/lib/wic/utils/partitionedfs.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/utils/runner.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/utils/syslinux.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/options.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/options.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/errors.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/options.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/errors.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/ko.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/sections.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/sections.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/sections.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/options.py'))
>> +(('scripts/lib/wic/3rdparty/pykickstart/sections.py'),
>> ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
>> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'),
>> ('scripts/lib/wic/conf.py'))
>> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'),
>> ('scripts/lib/wic/imager/direct.py'))
>> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'),
>> ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'),
>> ('scripts/lib/wic/utils/errors.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-efi.py'),
>> ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-efi.py'),
>> ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-efi.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-partition.py'),
>> ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-partition.py'),
>> ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-partition.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>> ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>> ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>> ('scripts/lib/wic/utils/errors.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>> ('scripts/lib/wic/utils/runner.py'))
>> +(('scripts/lib/wic/plugins/source/fsimage.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/plugins/source/fsimage.py'),
>> ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugins/source/fsimage.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'),
>> ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'),
>> ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/plugins/source/rawcopy.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/plugins/source/rawcopy.py'),
>> ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugins/source/rawcopy.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/plugins/source/rootfs.py'), ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/plugins/source/rootfs.py'),
>> ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugins/source/rootfs.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>> ('scripts/lib/wic/msger.py'))
>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>> ('scripts/lib/wic/pluginbase.py'))
>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>> ('scripts/lib/wic/utils/errors.py'))
>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>> ('scripts/lib/wic/utils/oe/misc.py'))
>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>> ('scripts/lib/wic/utils/runner.py'))
>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>> ('scripts/lib/wic/utils/syslinux.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/batch.py'),
>> ('scripts/pybootchartgui/pybootchartgui/draw.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/gui.py'),
>> ('scripts/pybootchartgui/pybootchartgui/draw.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/main.py'),
>> ('scripts/pybootchartgui/pybootchartgui/batch.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/main.py'),
>> ('scripts/pybootchartgui/pybootchartgui/gui.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/main.py'),
>> ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/parsing.py'),
>> ('scripts/pybootchartgui/pybootchartgui/process_tree.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/parsing.py'),
>> ('scripts/pybootchartgui/pybootchartgui/samples.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/tests/parser_test.py'),
>> ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/tests/process_tree_test.py'),
>> ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
>> +(('scripts/pybootchartgui/pybootchartgui/tests/process_tree_test.py'),
>> ('scripts/pybootchartgui/pybootchartgui/process_tree.py'))
>> \ No newline at end of file
>
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] scripts: analyze_patch: Analyze patch and suggest tests.
2015-11-23 17:53 ` Randy Witt
@ 2015-11-23 18:26 ` Leonardo Sandoval
0 siblings, 0 replies; 4+ messages in thread
From: Leonardo Sandoval @ 2015-11-23 18:26 UTC (permalink / raw)
To: Randy Witt, Daniel Istrate, openembedded-core
On 11/23/2015 11:53 AM, Randy Witt wrote:
> On 11/23/2015 07:55 AM, Leonardo Sandoval wrote:
>> Hi Daniel,
>>
>> Some comments inline. BTW, is the script's output intended to be used
>> as input
>> of another one? Currently, the output is human-friendly (which is
>> good) but at
>> the end the purpose is to use the output and run this set of
>> scripts/tests
>> automatically, trying to detect possible issues. Also, I briefly
>> tried the sfood
>> library, and took quite a lot of time compared to deps.txts. I wonder
>> if we can
>> fasten somehow this sfood process.
>>
> What is a "long time"? I don't like deps.txt at all because it will
> most likely become stale rather quickly.
I completely agree in the deps.txt. it wont be easy to maintain this file.
Here are the timing numbers sfood versus deps.txt
with snakefood:
$ time for commit in `cat top100.commits`; do analyze_patch -r $commit;
done > result.sfood
real 17m51.163s
user 15m0.172s
sys 2m48.580s
with deps.txt:
$ time for commit in `cat top100.commits`; do analyze_patch -r $commit;
done > result.deps
real 0m5.629s
user 0m4.272s
sys 0m0.800s
>
>>
>> On 11/20/2015 08:22 AM, Daniel Istrate wrote:
>>> [YOCTO #8647] - Script to analyse what areas a patch changes
>>> and what tests need running
>>>
>>> This script will analyze files modified by a commit and
>>> attempt to suggest what tests to run.
>>> It is somewhat dependent of the 'snakefood' tool to determine
>>> the import relationship between files. If this pkg is missing
>>> a backup file will be used instead: deps.txt
>>>
>>> Usage: analyze_patch --revision <rev>
>>> Example: analyze_patch --revision 351c69a
>>>
>>> Revision: 351c69a
>>>
>>> Modified files:
>>> meta/recipes-support/sqlite/files/0001-using-the-dynamic-library.patch
>>> meta/recipes-support/sqlite/sqlite3_3.8.10.2.bb
>>> meta/recipes-support/sqlite/sqlite3_3.9.0.bb
>>>
>>> Suggested tests:
>>> Rebuild: sqlite3
>>>
>>> Signed-off-by: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
>>> ---
>>> scripts/analyze_patch | 300 ++++++++++++++++++++++++
>>> scripts/deps.txt | 628
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++
>>> 2 files changed, 928 insertions(+)
>>> create mode 100755 scripts/analyze_patch
>>> create mode 100644 scripts/deps.txt
>>>
>>> diff --git a/scripts/analyze_patch b/scripts/analyze_patch
>>> new file mode 100755
>>> index 0000000..1b6609b
>>> --- /dev/null
>>> +++ b/scripts/analyze_patch
>>> @@ -0,0 +1,300 @@
>>> +#!/usr/bin/env python
>>> +
>> THE GPL license should be included on this part.
>>> +# Description: This will analyze the files modified by a commit and
>>> attempt
>>> to suggest what tests to run.
>>> +# It uses an adjacent file 'deps.txt' that was
>>> generated by
>>> 'snakefood' tool:
>>> +# sfood <poky_dir> | grep -v /usr/lib/python | grep -v
>>> /usr/share/pyshared/ |
>>> +# grep -v None | grep ".py')," | grep ".py\'))" >
>>> deps.txt
>>> +# This file has to be edited further: remove the
>>> <poky_dir> and
>>> replace "', '" with '/'.
>>> +# In the end you should have something like this: a
>>> matrix with
>>> 2 columns, which represent
>>> +# elements from the left import elements from the right.
>>> +# (('bitbake/lib/bb/build.py'),
>>> ('bitbake/lib/bb/event.py'))
>>> +# (('bitbake/lib/bb/build.py'),
>>> ('bitbake/lib/bb/msg.py'))
>>> +#
>>> +# How to use it: analyze_patch --revision <rev>
>>> +# analyze_patch -r 2d1071e
>>> +# Notes: if revision is not provided, will default to HEAD
>>> +# Author: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
>>> +
>>> +import argparse
>>> +import os
>>> +import glob
>>> +import ast
>>> +import re
>>> +from subprocess import PIPE, Popen, STDOUT
>>> +
>>> +parser = argparse.ArgumentParser()
>>> +parser.add_argument('-r', '--revision', help='<revision> changes to
>>> analyze.')
>> Another option would be to define which method to use (sfood or
>> deps.tx) in case
>> we have more than one method
>>> +args = parser.parse_args()
>>> +
>>> +revision = args.revision or 'HEAD'
>> This default can be include on the same line were the argument was
>> added.
>>> +
>>> +this_file_path = os.path.dirname(os.path.abspath(__file__))
>>> +poky_dir = os.path.abspath(os.path.join(this_file_path, os.pardir))
>>> +# Move into the the poky dir
>>> +os.chdir(poky_dir)
>>> +
>>> +# Where are the available tests located
>>> +bb_test_dir = 'bitbake/lib/bb/tests/'
>>> +selftest_dir = 'meta/lib/oeqa/selftest/'
>>> +runtime_dir = 'meta/lib/oeqa/runtime/'
>>> +
>>> +RETOK = 0
>>> +
>>> +
>>> +def run_cmd(cmd, ignore_err=False):
>>> + """
>>> + Run cmd in bash shell
>>> + :param cmd: command to be ran.
>>> + :param ignore_err: redirect stderr to /dev/null, otherwise
>>> redirect
>>> stderr to stdout
>>> + :return: tuple containing exit code & output of the cmd
>>> + """
>>> + DEVNULL = open(os.devnull, 'w')
>>> +
>>> + if ignore_err:
>>> + proc = Popen(args=cmd, stdout=PIPE, stderr=DEVNULL,
>>> shell=True,
>>> executable='/bin/bash')
>>> + else:
>>> + proc = Popen(args=cmd, stdout=PIPE, stderr=STDOUT, shell=True,
>>> executable='/bin/bash')
>>> + retval = proc.communicate()[0]
>>> + retcode = proc.returncode
>>> +
>>> + return retcode, retval
>>> +
>>> +
>>> +def get_modified_files(rev=revision):
>>> + """
>>> + Determine modified files by a commit
>>> + :param rev: the revision number to determine modified files for.
>>> + :return: a list of modified files
>>> + """
>>> + cmd = 'git diff-tree --no-commit-id --name-only -r ' + rev
>>> + retcode, retval = run_cmd(cmd)
>>> +
>>> + if retcode != RETOK:
>>> + return retcode, retval
>>> +
>>> + retlist = retval.split('\n')
>>> + retlist.remove('')
>>> +
>>> + return retlist
>>> +
>>> +
>>> +def get_list_of_testuites(test_dir):
>>> + """
>>> + Looks for .py files in test_dir
>>> + :param test_dir: directory containing (hopefully) test suites
>>> + :return: list of test suites
>>> + """
>>> + test_suites = []
>>> + test_list = glob.glob(test_dir + '*.py')
>>> +
>>> + # trim the .py extension and the path to each testsuite
>>> + for ts in test_list:
>>> + test_suites.append(ts.replace(test_dir, '').replace('.py',
>>> ''))
>>> +
>>> + # remove __init__ from test_suites
>>> + try:
>>> + test_suites.remove('__init__')
>>> + except:
>>> + pass
>>> +
>>> + return test_suites
>>> +
>>> +
>>> +def get_modules_dependencies(mfile):
>>> + """
>>> + Get modules dependencies from poky.
>>> + It uses 'snakefood' pkg (please make sure it is installed)
>>> + In case 'snakefood' is not installed a backup file will be used
>>> instead.
>>> + :return: a list of all modules deps
>>> + """
>>> +
>>> + cmd = 'sfood %s | grep -v /usr/lib/python | grep -v
>>> /usr/share/pyshared/
>>> | ' \
>>> + 'grep -v None | grep ".py\')," | grep ".py\'))"' % poky_dir
>>> +
>> I have not looked into the sfood code/documentation, but it would be
>> nicer/faster if we use the sfood API instead of the command. This
>> way, we wont
>> need to spawn a new command and create this long pipeline.
>>> + retcode, retval = run_cmd(cmd)
>>> +
>>> + if retcode != 0:
>>> + # cmd failed, most likely 'snakefood' is not installed
>>> + # will look for deps.txt
>>> + # print "WARNING: 'snakefood' not installed. Will proceed with
>>> 'deps.txt'."
>>> + deps = open('scripts/deps.txt', 'r').read()
>>> + else:
>>> + deps = retval.replace(poky_dir + '/', '').replace("', '", '/')
>>> +
>>> + deps_m = []
>>> + for i in deps.split('\n'):
>>> + try:
>>> + deps_m.append(ast.literal_eval(i))
>>> + except:
>>> + # There might be a '\n' at the end of the file --> will
>>> ignore
>>> + pass
>>> +
>>> + def find_deps(mfile, visited):
>>> +
>>> + if isinstance(mfile, list):
>>> + for i in mfile:
>>> + find_deps(i, visited)
>>> + else:
>>> + for i in deps_m:
>>> + if i[1] == mfile and i[0] not in visited:
>>> + visited.append(i[0])
>>> + find_deps(i[0], visited)
>>> +
>>> + return visited
>>> +
>>> + return find_deps(mfile, [])
>>> +
>>> +
>>> +def is_documentation(mfile):
>>> + """All files under documentation"""
>>> + doc_patt = r'documentation/'
>>> + if doc_patt in mfile:
>>> + return True
>>> + return False
>> a minor comment: 'return doc_patt in mfile' does the same as the three
>> statements before
>>> +
>>> +
>>> +def is_recipe(mfile):
>>> + recipe_patt = r'\.(bbappend|bb)$'
>>> + if re.search(recipe_patt, mfile):
>>> + return True
>>> + return False
>>> +
>>> +
>>> +def is_part_of_recipe(mfile):
>>> + """Everything that is inside meta/recipes-* or meta-*/recipes-*
>>> """
>>> + part_recipe_patt = r'^meta(-\S+)?/recipes-'
>>> + if re.search(part_recipe_patt, mfile):
>>> + return True
>>> + return False
>>> +
>>> +
>>> +def is_test(mfile):
>>> + """Check that the file is a test file"""
>>> + global selftest_dir
>>> + global runtime_dir
>>> + global bb_test_dir
>>> +
>> Can we omit the global statements?
>>
>>> + if runtime_dir in mfile or selftest_dir in mfile or bb_test_dir
>>> in mfile:
>>> + return True
>>> + return False
>>> +
>>
>>
>>> +
>>> +def get_test_name(mfile):
>>> + ret_list = []
>>> + test_name = os.path.basename(mfile).split('.')[0]
>>> + if is_test(mfile) and test_name != '__init__':
>>> + ret_list.append(test_name)
>>> + return ret_list
>>> +
>>> +
>>> +def get_test_for(mfile):
>>> + """ Attempt to guess a test for the given file """
>>> + # Not very happy with this, it needs to be clever
>>> + global all_tests
>>> + ret_list = []
>>> +
>>> + for i in all_tests:
>>> + if i in mfile:
>>> + ret_list.append(i)
>>> +
>>> + return ret_list
>>> +
>>> +
>>> +def get_recipe_name(mfile):
>>> + """ Trim the file extension and pn from filename"""
>>> + # Most files follow this format recipename_pn.bb |
>>> recipe-name_pn.bb |
>>> recipe-name.bb
>>> + ret_list = []
>>> + temp_list = []
>>> + if is_recipe(mfile):
>>> + ret_list.append(os.path.basename(mfile).split('_')[0].replace('.bb',
>>> ''))
>>> + return ret_list
>>> + # If it's a file that has something to do with a recipe attempt
>>> to guess
>>> the recipe
>>> + # Look for .bb|.bbappend files in the current dir up to 2 lvl
>>> above till
>>> bb files are found
>>> + # There might be cases when it will find more bb files, some
>>> perhaps not
>>> directly related to
>>> + # the file, but at least we are covered.
>>> + if is_part_of_recipe(mfile):
>>> + levels_list = ['/*.bb*', '/../*.bb*', '/../../*.bb*']
>>> + for lvl in levels_list:
>>> + recipes = glob.glob(os.path.dirname(mfile) + lvl)
>>> + if recipes:
>>> + temp_list += recipes
>>> + break
>>> + # Trim the file extension and pn from filename
>>> + for i in temp_list:
>>> + ret_list.append(os.path.basename(i).split('_')[0].replace('.bb',
>>> ''))
>>> + return ret_list
>>> +
>>> + return ret_list
>>> +
>>> +
>>> +def suggest_tests(mfile):
>>> + """ Suggest tests """
>>> + global documentation_updated
>>> + global recipes_to_rebuild
>>> + global tests_to_run
>>> +
>>> + if is_documentation(mfile):
>>> + documentation_updated = True
>>> + elif is_recipe(mfile) or is_part_of_recipe(mfile):
>>> + recipes_to_rebuild.update(get_recipe_name(mfile))
>>> + elif is_test(mfile):
>>> + tests_to_run.update(get_test_name(mfile))
>>> + #else
>>> + tests_to_run.update(get_test_for(mfile))
>>> +
>>> +
>>> +selftest_tests = get_list_of_testuites(selftest_dir)
>>> +runtime_tests = get_list_of_testuites(runtime_dir)
>>> +bb_tests = get_list_of_testuites(bb_test_dir)
>>> +all_tests = bb_tests + runtime_tests + selftest_tests
>>> +
>>> +mfiles = get_modified_files()
>>> +ind_mfiles = get_modules_dependencies(mfiles)
>>> +# mfiles might be included in ind_files if there are circular imports
>>> +all_mfiles = set(mfiles + ind_mfiles)
>>> +
>>> +recipes_to_rebuild = set()
>>> +tests_to_run = set()
>>> +documentation_updated = False
>>> +
>>> +
>>> +# Print results
>>> +print '\nRevision: %s' % revision
>>> +print '\nModified files:'
>>> +for i in mfiles:
>>> + print i
>>> +if ind_mfiles:
>>> + print '\nIndirect modified files:'
>>> + for i in ind_mfiles:
>>> + print i
>>> +print '\nSuggested tests:'
>>> +for i in all_mfiles:
>>> + suggest_tests(i)
>>> +
>>> +if documentation_updated:
>>> + print 'Documentation updated, nothing to do.'
>>> +
>>> +if recipes_to_rebuild:
>>> + ret_recipe = ''
>>> + for i in recipes_to_rebuild:
>>> + ret_recipe += i + ' '
>>> + print 'Rebuild: %s' % ret_recipe
>>> +
>>> +if tests_to_run:
>>> + ret_bb, ret_selftest, ret_runtime = ('',)*3
>>> + for i in tests_to_run:
>>> + if i in bb_tests:
>>> + ret_bb += i + ' '
>>> + elif i in runtime_tests:
>>> + ret_runtime += i + ' '
>>> + elif i in selftest_tests:
>>> + ret_selftest += i + ' '
>>> + if ret_bb:
>>> + print 'bitbake-selftest: %s ' % ret_bb
>>> + if ret_selftest:
>>> + print 'oe-selftest: %s ' % ret_selftest
>>> + if ret_runtime:
>>> + print 'runtime: %s ' % ret_runtime
>>> +
>>> +if not (recipes_to_rebuild or documentation_updated or tests_to_run):
>>> + print None
>>> diff --git a/scripts/deps.txt b/scripts/deps.txt
>>> new file mode 100644
>>> index 0000000..421897d
>>> --- /dev/null
>>> +++ b/scripts/deps.txt
>>> @@ -0,0 +1,628 @@
>>> +(('bitbake/contrib/dump_cache.py'), ('bitbake/lib/bb/cache.py'))
>>> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/event.py'))
>>> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/msg.py'))
>>> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/process.py'))
>>> +(('bitbake/lib/bb/build.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/cache.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/cache_extra.py'), ('bitbake/lib/bb/cache.py'))
>>> +(('bitbake/lib/bb/checksum.py'), ('bitbake/lib/bb/cache.py'))
>>> +(('bitbake/lib/bb/checksum.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/cache.py'))
>>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/pysh/pyshlex.py'))
>>> +(('bitbake/lib/bb/codeparser.py'),
>>> ('bitbake/lib/bb/pysh/pyshyacc.py'))
>>> +(('bitbake/lib/bb/codeparser.py'),
>>> ('bitbake/lib/bb/pysh/sherrors.py'))
>>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/codeparser.py'), ('bitbake/lib/codegen.py'))
>>> +(('bitbake/lib/bb/command.py'), ('bitbake/lib/bb/cooker.py'))
>>> +(('bitbake/lib/bb/command.py'), ('bitbake/lib/bb/event.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/build.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/cache.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/command.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/event.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/exceptions.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/providers.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/runqueue.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/shell.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/taskdata.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/prserv/serv.py'))
>>> +(('bitbake/lib/bb/cooker.py'), ('bitbake/lib/pyinotify.py'))
>>> +(('bitbake/lib/bb/cookerdata.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/data.py'), ('bitbake/lib/bb/codeparser.py'))
>>> +(('bitbake/lib/bb/data.py'), ('bitbake/lib/bb/data_smart.py'))
>>> +(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/COW.py'))
>>> +(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/codeparser.py'))
>>> +(('bitbake/lib/bb/data_smart.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/compat.py'))
>>> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/exceptions.py'))
>>> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/msg.py'))
>>> +(('bitbake/lib/bb/event.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/exceptions.py'),
>>> ('bitbake/lib/bb/namedtuple_with_abc.py'))
>>> +(('bitbake/lib/bb/fetch2/bzr.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/clearcase.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/git.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/gitannex.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/gitannex.py'),
>>> ('bitbake/lib/bb/fetch2/git.py'))
>>> +(('bitbake/lib/bb/fetch2/gitsm.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/gitsm.py'), ('bitbake/lib/bb/fetch2/git.py'))
>>> +(('bitbake/lib/bb/fetch2/hg.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/local.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/local.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/fetch2/osc.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/perforce.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/repo.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/sftp.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/ssh.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/svn.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/fetch2/wget.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/cooker.py'))
>>> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/cookerdata.py'))
>>> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/event.py'))
>>> +(('bitbake/lib/bb/main.py'), ('bitbake/lib/bb/msg.py'))
>>> +(('bitbake/lib/bb/methodpool.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/msg.py'), ('bitbake/lib/bb/event.py'))
>>> +(('bitbake/lib/bb/parse/ast.py'), ('bitbake/lib/bb/methodpool.py'))
>>> +(('bitbake/lib/bb/parse/parse_py'),
>>> ('bitbake/lib/bb/parse/parse_py/BBHandler.py'))
>>> +(('bitbake/lib/bb/parse/parse_py'),
>>> ('bitbake/lib/bb/parse/parse_py/ConfHandler.py'))
>>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'),
>>> ('bitbake/lib/bb/build.py'))
>>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'),
>>> ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'),
>>> ('bitbake/lib/bb/parse/ast.py'))
>>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'),
>>> ('bitbake/lib/bb/parse/parse_py/ConfHandler.py'))
>>> +(('bitbake/lib/bb/parse/parse_py/BBHandler.py'),
>>> ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/parse/parse_py/ConfHandler.py'),
>>> ('bitbake/lib/bb/parse/ast.py'))
>>> +(('bitbake/lib/bb/parse/parse_py/ConfHandler.py'),
>>> ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/persist_data.py'), ('bitbake/lib/bb/compat.py'))
>>> +(('bitbake/lib/bb/persist_data.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/providers.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/providers.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/pysh/builtin.py'),
>>> ('bitbake/lib/bb/pysh/sherrors.py'))
>>> +(('bitbake/lib/bb/pysh/builtin.py'),
>>> ('bitbake/lib/bb/pysh/subprocess_fix.py'))
>>> +(('bitbake/lib/bb/pysh/interp.py'),
>>> ('bitbake/lib/bb/pysh/builtin.py'))
>>> +(('bitbake/lib/bb/pysh/interp.py'),
>>> ('bitbake/lib/bb/pysh/pyshlex.py'))
>>> +(('bitbake/lib/bb/pysh/interp.py'),
>>> ('bitbake/lib/bb/pysh/pyshyacc.py'))
>>> +(('bitbake/lib/bb/pysh/interp.py'),
>>> ('bitbake/lib/bb/pysh/sherrors.py'))
>>> +(('bitbake/lib/bb/pysh/pysh.py'), ('bitbake/lib/bb/pysh/interp.py'))
>>> +(('bitbake/lib/bb/pysh/pysh.py'), ('bitbake/lib/bb/pysh/lsprof.py'))
>>> +(('bitbake/lib/bb/pysh/pyshlex.py'),
>>> ('bitbake/lib/bb/pysh/sherrors.py'))
>>> +(('bitbake/lib/bb/pysh/pyshlex.py'), ('bitbake/lib/ply/lex.py'))
>>> +(('bitbake/lib/bb/pysh/pyshyacc.py'),
>>> ('bitbake/lib/bb/pysh/pyshlex.py'))
>>> +(('bitbake/lib/bb/pysh/pyshyacc.py'),
>>> ('bitbake/lib/bb/pysh/sherrors.py'))
>>> +(('bitbake/lib/bb/pysh/pyshyacc.py'), ('bitbake/lib/ply/yacc.py'))
>>> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/event.py'))
>>> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/monitordisk.py'))
>>> +(('bitbake/lib/bb/runqueue.py'), ('bitbake/lib/bb/msg.py'))
>>> +(('bitbake/lib/bb/server/process.py'), ('bitbake/lib/bb/event.py'))
>>> +(('bitbake/lib/bb/server/xmlrpc.py'), ('bitbake/lib/bb/daemonize.py'))
>>> +(('bitbake/lib/bb/server/xmlrpc.py'),
>>> ('bitbake/lib/bb/ui/uievent.py'))
>>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/build.py'))
>>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/cache.py'))
>>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/providers.py'))
>>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/runqueue.py'))
>>> +(('bitbake/lib/bb/shell.py'), ('bitbake/lib/bb/taskdata.py'))
>>> +(('bitbake/lib/bb/siggen.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/tests/codeparser.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/tests/cow.py'), ('bitbake/lib/bb/COW.py'))
>>> +(('bitbake/lib/bb/tests/data.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/tests/parse.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/tests/parse.py'), ('bitbake/lib/bb/siggen.py'))
>>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cache.py'))
>>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cooker.py'))
>>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/cookerdata.py'))
>>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/providers.py'))
>>> +(('bitbake/lib/bb/tinfoil.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/bb/ui/buildinfohelper.py'), ('bitbake/lib/bb/msg.py'))
>>> +(('bitbake/lib/bb/ui/buildinfohelper.py'),
>>> ('bitbake/lib/toaster/orm/models.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>>> ('bitbake/lib/bb/process.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builddetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/builddetailspage.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/persistenttooltip.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/builder.py'),
>>> ('bitbake/lib/bb/ui/crumbs/utils.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/advancedsettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>>> ('bitbake/lib/bb/process.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/utils.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/parsingwarningsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/proxydetailsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hig/simplesettingsdialog.py'),
>>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hobeventhandler.py'),
>>> ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hobpages.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hobpages.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hobwidget.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/propertydialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hobwidget.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/hobwidget.py'),
>>> ('bitbake/lib/bb/ui/crumbs/persistenttooltip.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/retrieveimagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/imagedetailspage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/packageselectionpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/progressbar.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/recipeselectionpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/runningbuild.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobcolor.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/runningbuild.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobpages.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobwidget.py'))
>>> +(('bitbake/lib/bb/ui/crumbs/sanitycheckpage.py'),
>>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>>> +(('bitbake/lib/bb/ui/depexp.py'), ('bitbake/lib/bb/event.py'))
>>> +(('bitbake/lib/bb/ui/depexp.py'),
>>> ('bitbake/lib/bb/ui/crumbs/progressbar.py'))
>>> +(('bitbake/lib/bb/ui/goggle.py'),
>>> ('bitbake/lib/bb/ui/crumbs/progress.py'))
>>> +(('bitbake/lib/bb/ui/goggle.py'),
>>> ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
>>> +(('bitbake/lib/bb/ui/hob.py'),
>>> ('bitbake/lib/bb/ui/crumbs/builder.py'))
>>> +(('bitbake/lib/bb/ui/hob.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hobeventhandler.py'))
>>> +(('bitbake/lib/bb/ui/hob.py'),
>>> ('bitbake/lib/bb/ui/crumbs/hoblistmodel.py'))
>>> +(('bitbake/lib/bb/ui/hob.py'), ('bitbake/lib/bb/ui/uihelper.py'))
>>> +(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/bb/msg.py'))
>>> +(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/bb/ui/uihelper.py'))
>>> +(('bitbake/lib/bb/ui/knotty.py'), ('bitbake/lib/progressbar.py'))
>>> +(('bitbake/lib/bb/ui/ncurses.py'), ('bitbake/lib/bb/ui/uihelper.py'))
>>> +(('bitbake/lib/bb/ui/puccho.py'),
>>> ('bitbake/lib/bb/ui/crumbs/buildmanager.py'))
>>> +(('bitbake/lib/bb/ui/puccho.py'),
>>> ('bitbake/lib/bb/ui/crumbs/runningbuild.py'))
>>> +(('bitbake/lib/bb/ui/toasterui.py'), ('bitbake/lib/bb/msg.py'))
>>> +(('bitbake/lib/bb/ui/toasterui.py'),
>>> ('bitbake/lib/bb/ui/buildinfohelper.py'))
>>> +(('bitbake/lib/bb/ui/toasterui.py'),
>>> ('bitbake/lib/bb/ui/uihelper.py'))
>>> +(('bitbake/lib/bb/ui/uihelper.py'), ('bitbake/lib/bb/build.py'))
>>> +(('bitbake/lib/bb/ui/uihelper.py'),
>>> ('bitbake/lib/bb/server/xmlrpc.py'))
>>> +(('bitbake/lib/bb/utils.py'), ('bitbake/lib/bb/data.py'))
>>> +(('bitbake/lib/bb/utils.py'), ('bitbake/lib/bb/msg.py'))
>>> +(('bitbake/lib/bs4/builder/_html5lib.py'),
>>> ('bitbake/lib/bs4/element.py'))
>>> +(('bitbake/lib/bs4/builder/_htmlparser.py'),
>>> ('bitbake/lib/bs4/dammit.py'))
>>> +(('bitbake/lib/bs4/builder/_htmlparser.py'),
>>> ('bitbake/lib/bs4/element.py'))
>>> +(('bitbake/lib/bs4/builder/_lxml.py'), ('bitbake/lib/bs4/dammit.py'))
>>> +(('bitbake/lib/bs4/builder/_lxml.py'), ('bitbake/lib/bs4/element.py'))
>>> +(('bitbake/lib/bs4/element.py'), ('bitbake/lib/bs4/dammit.py'))
>>> +(('bitbake/lib/bs4/testing.py'), ('bitbake/lib/bs4/element.py'))
>>> +(('bitbake/lib/bs4/tests/test_html5lib.py'),
>>> ('bitbake/lib/bs4/element.py'))
>>> +(('bitbake/lib/bs4/tests/test_html5lib.py'),
>>> ('bitbake/lib/bs4/testing.py'))
>>> +(('bitbake/lib/bs4/tests/test_htmlparser.py'),
>>> ('bitbake/lib/bs4/testing.py'))
>>> +(('bitbake/lib/bs4/tests/test_lxml.py'),
>>> ('bitbake/lib/bs4/element.py'))
>>> +(('bitbake/lib/bs4/tests/test_lxml.py'),
>>> ('bitbake/lib/bs4/testing.py'))
>>> +(('bitbake/lib/bs4/tests/test_lxml.py'),
>>> ('bitbake/lib/bs4/tests/test_htmlparser.py'))
>>> +(('bitbake/lib/bs4/tests/test_soup.py'),
>>> ('bitbake/lib/bs4/dammit.py'))
>>> +(('bitbake/lib/bs4/tests/test_soup.py'),
>>> ('bitbake/lib/bs4/element.py'))
>>> +(('bitbake/lib/bs4/tests/test_soup.py'),
>>> ('bitbake/lib/bs4/testing.py'))
>>> +(('bitbake/lib/bs4/tests/test_tree.py'),
>>> ('bitbake/lib/bs4/element.py'))
>>> +(('bitbake/lib/bs4/tests/test_tree.py'),
>>> ('bitbake/lib/bs4/testing.py'))
>>> +(('bitbake/lib/ply/yacc.py'), ('bitbake/lib/ply/lex.py'))
>>> +(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/bb/server/xmlrpc.py'))
>>> +(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('bitbake/lib/prserv/serv.py'), ('bitbake/lib/prserv/db.py'))
>>> +(('bitbake/lib/toaster/bldcontrol/admin.py'),
>>> ('bitbake/lib/toaster/bldcontrol/models.py'))
>>> +(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'),
>>> ('bitbake/lib/bb/server/xmlrpc.py'))
>>> +(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'),
>>> ('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'))
>>> +(('bitbake/lib/toaster/bldcontrol/bbcontroller.py'),
>>> ('bitbake/lib/toaster/bldcontrol/sshbecontroller.py'))
>>> +(('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'),
>>> ('bitbake/lib/toaster/bldcontrol/bbcontroller.py'))
>>> +(('bitbake/lib/toaster/bldcontrol/localhostbecontroller.py'),
>>> ('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'))
>>> +(('bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py'),
>>>
>>> ('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'))
>>> +(('bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py'),
>>> ('bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py'))
>>>
>>> +(('bitbake/lib/toaster/bldcontrol/sshbecontroller.py'),
>>> ('bitbake/lib/toaster/bldcontrol/bbcontroller.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/launcher.py'),
>>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/launcher.py'),
>>> ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/recv.py'),
>>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/recv.py'),
>>> ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/runner.py'),
>>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/runner.py'),
>>> ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/shellutils.py'),
>>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/tests.py'),
>>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/tests.py'),
>>> ('bitbake/lib/toaster/contrib/tts/shellutils.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/tests.py'),
>>> ('bitbake/lib/toaster/contrib/tts/urlcheck.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/tests.py'),
>>> ('bitbake/lib/toaster/contrib/tts/urllist.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/urlcheck.py'),
>>> ('bitbake/lib/toaster/contrib/tts/config.py'))
>>> +(('bitbake/lib/toaster/contrib/tts/urlcheck.py'),
>>> ('bitbake/lib/toaster/contrib/tts/urllist.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py'),
>>> ('meta/lib/oeqa/controllers/masterimage.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py'),
>>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py'),
>>> ('meta/lib/oeqa/controllers/masterimage.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py'),
>>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py'),
>>> ('meta/lib/oeqa/controllers/masterimage.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py'),
>>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta-yocto-bsp/lib/oeqa/yoctobsp.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oe/buildhistory_analysis.py'),
>>> ('bitbake/lib/bb/utils.py'))
>>> +(('meta/lib/oe/data.py'), ('meta/lib/oe/maketype.py'))
>>> +(('meta/lib/oe/image.py'), ('meta/lib/oe/utils.py'))
>>> +(('meta/lib/oe/maketype.py'), ('meta/lib/oe/types.py'))
>>> +(('meta/lib/oe/package_manager.py'), ('meta/lib/oe/utils.py'))
>>> +(('meta/lib/oe/packagegroup.py'), ('meta/lib/oe/packagedata.py'))
>>> +(('meta/lib/oe/patch.py'), ('meta/lib/oe/path.py'))
>>> +(('meta/lib/oe/prservice.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('meta/lib/oe/prservice.py'), ('bitbake/lib/prserv/serv.py'))
>>> +(('meta/lib/oe/qa.py'), ('bitbake/lib/bb/process.py'))
>>> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/cache.py'))
>>> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/cookerdata.py'))
>>> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/providers.py'))
>>> +(('meta/lib/oe/recipeutils.py'), ('bitbake/lib/bb/taskdata.py'))
>>> +(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/patch.py'))
>>> +(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/path.py'))
>>> +(('meta/lib/oe/recipeutils.py'), ('meta/lib/oe/utils.py'))
>>> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/manifest.py'))
>>> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/package_manager.py'))
>>> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/path.py'))
>>> +(('meta/lib/oe/rootfs.py'), ('meta/lib/oe/utils.py'))
>>> +(('meta/lib/oe/sdk.py'), ('meta/lib/oe/manifest.py'))
>>> +(('meta/lib/oe/sdk.py'), ('meta/lib/oe/package_manager.py'))
>>> +(('meta/lib/oe/sdk.py'), ('meta/lib/oe/utils.py'))
>>> +(('meta/lib/oe/sstatesig.py'), ('bitbake/lib/bb/siggen.py'))
>>> +(('meta/lib/oe/terminal.py'), ('bitbake/lib/bb/process.py'))
>>> +(('meta/lib/oe/terminal.py'), ('meta/lib/oe/classutils.py'))
>>> +(('meta/lib/oe/tests/test_license.py'), ('meta/lib/oe/license.py'))
>>> +(('meta/lib/oe/tests/test_path.py'), ('meta/lib/oe/path.py'))
>>> +(('meta/lib/oe/tests/test_types.py'), ('meta/lib/oe/maketype.py'))
>>> +(('meta/lib/oe/tests/test_utils.py'), ('meta/lib/oe/utils.py'))
>>> +(('meta/lib/oeqa/controllers/masterimage.py'),
>>> ('meta/lib/oeqa/targetcontrol.py'))
>>> +(('meta/lib/oeqa/controllers/masterimage.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/controllers/masterimage.py'),
>>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>>> +(('meta/lib/oeqa/controllers/testtargetloader.py'),
>>> ('meta/lib/oeqa/targetcontrol.py'))
>>> +(('meta/lib/oeqa/oetest.py'), ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runexported.py'), ('meta/lib/oeqa/utils/dump.py'))
>>> +(('meta/lib/oeqa/runexported.py'),
>>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>>> +(('meta/lib/oeqa/runtime/_ptest.py'),
>>> ('meta/lib/oe/package_manager.py'))
>>> +(('meta/lib/oeqa/runtime/_ptest.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/_ptest.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/_ptest.py'),
>>> ('meta/lib/oeqa/utils/httpserver.py'))
>>> +(('meta/lib/oeqa/runtime/_ptest.py'),
>>> ('meta/lib/oeqa/utils/logparser.py'))
>>> +(('meta/lib/oeqa/runtime/_qemutiny.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/_qemutiny.py'),
>>> ('meta/lib/oeqa/utils/qemutinyrunner.py'))
>>> +(('meta/lib/oeqa/runtime/buildcvs.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/buildcvs.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/buildcvs.py'),
>>> ('meta/lib/oeqa/utils/targetbuild.py'))
>>> +(('meta/lib/oeqa/runtime/buildiptables.py'),
>>> ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/buildiptables.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/buildiptables.py'),
>>> ('meta/lib/oeqa/utils/targetbuild.py'))
>>> +(('meta/lib/oeqa/runtime/buildsudoku.py'),
>>> ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/buildsudoku.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/buildsudoku.py'),
>>> ('meta/lib/oeqa/utils/targetbuild.py'))
>>> +(('meta/lib/oeqa/runtime/connman.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/connman.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/date.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/date.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/df.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/df.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/dmesg.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/dmesg.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/gcc.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/gcc.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/kernelmodule.py'),
>>> ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/kernelmodule.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/ldd.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/ldd.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/logrotate.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/logrotate.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/multilib.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/multilib.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/pam.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/pam.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/parselogs.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/parselogs.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/perl.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/perl.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/ping.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/ping.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/python.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/python.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/rpm.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/rpm.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/scanelf.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/scanelf.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/scp.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/scp.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/skeletoninit.py'),
>>> ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/skeletoninit.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/smart.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/smart.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/smart.py'),
>>> ('meta/lib/oeqa/utils/httpserver.py'))
>>> +(('meta/lib/oeqa/runtime/ssh.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/ssh.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/syslog.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/syslog.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/systemd.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/systemd.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/vnc.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/vnc.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/x32lib.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/x32lib.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/runtime/xorg.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/runtime/xorg.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/sdk/buildcvs.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/sdk/buildcvs.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/sdk/buildcvs.py'),
>>> ('meta/lib/oeqa/utils/targetbuild.py'))
>>> +(('meta/lib/oeqa/sdk/buildiptables.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/sdk/buildiptables.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/sdk/buildiptables.py'),
>>> ('meta/lib/oeqa/utils/targetbuild.py'))
>>> +(('meta/lib/oeqa/sdk/buildsudoku.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/sdk/buildsudoku.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/sdk/buildsudoku.py'),
>>> ('meta/lib/oeqa/utils/targetbuild.py'))
>>> +(('meta/lib/oeqa/sdk/gcc.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/sdk/gcc.py'), ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/sdk/perl.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/sdk/perl.py'), ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/sdk/python.py'), ('meta/lib/oeqa/oetest.py'))
>>> +(('meta/lib/oeqa/sdk/python.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'),
>>> ('meta/lib/oeqa/selftest/sstate.py'))
>>> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/_sstatetests_noauto.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/_toaster.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/_toaster.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/_toaster.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/_toaster.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/archiver.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/archiver.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/archiver.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/base.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/base.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/base.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/bblayers.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/bblayers.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/bblayers.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/bblayers.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/bbtests.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/bbtests.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/bbtests.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/bbtests.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/buildhistory.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/buildhistory.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/buildhistory.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/buildoptions.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/buildoptions.py'),
>>> ('meta/lib/oeqa/selftest/buildhistory.py'))
>>> +(('meta/lib/oeqa/selftest/buildoptions.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/buildoptions.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/buildoptions.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/devtool.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/devtool.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/devtool.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/devtool.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/imagefeatures.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/imagefeatures.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/imagefeatures.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/imagefeatures.py'),
>>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>>> +(('meta/lib/oeqa/selftest/layerappend.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/layerappend.py'),
>>> ('meta/lib/oeqa/selftest/buildhistory.py'))
>>> +(('meta/lib/oeqa/selftest/layerappend.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/layerappend.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/layerappend.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/lic-checksum.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/lic-checksum.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/lic-checksum.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/manifest.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/manifest.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/manifest.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/oescripts.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/oescripts.py'),
>>> ('meta/lib/oeqa/selftest/buildhistory.py'))
>>> +(('meta/lib/oeqa/selftest/oescripts.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/oescripts.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/oescripts.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/pkgdata.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/pkgdata.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/pkgdata.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/pkgdata.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/prservice.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/prservice.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/prservice.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/prservice.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/recipetool.py'),
>>> ('meta/lib/oeqa/selftest/devtool.py'))
>>> +(('meta/lib/oeqa/selftest/recipetool.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/recipetool.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/sstate.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/sstate.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/sstate.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/sstatetests.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/sstatetests.py'),
>>> ('meta/lib/oeqa/selftest/sstate.py'))
>>> +(('meta/lib/oeqa/selftest/sstatetests.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/sstatetests.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/selftest/sstatetests.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/selftest/wic.py'),
>>> ('meta/lib/oeqa/selftest/base.py'))
>>> +(('meta/lib/oeqa/selftest/wic.py'),
>>> ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/selftest/wic.py'),
>>> ('meta/lib/oeqa/utils/decorators.py'))
>>> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oe/path.py'))
>>> +(('meta/lib/oeqa/targetcontrol.py'),
>>> ('meta/lib/oeqa/controllers/testtargetloader.py'))
>>> +(('meta/lib/oeqa/targetcontrol.py'), ('meta/lib/oeqa/utils/dump.py'))
>>> +(('meta/lib/oeqa/targetcontrol.py'),
>>> ('meta/lib/oeqa/utils/qemurunner.py'))
>>> +(('meta/lib/oeqa/targetcontrol.py'),
>>> ('meta/lib/oeqa/utils/qemutinyrunner.py'))
>>> +(('meta/lib/oeqa/targetcontrol.py'),
>>> ('meta/lib/oeqa/utils/sshcontrol.py'))
>>> +(('meta/lib/oeqa/utils/commands.py'), ('bitbake/lib/bb/build.py'))
>>> +(('meta/lib/oeqa/utils/commands.py'), ('bitbake/lib/bb/tinfoil.py'))
>>> +(('meta/lib/oeqa/utils/commands.py'), ('meta/lib/oe/recipeutils.py'))
>>> +(('meta/lib/oeqa/utils/commands.py'),
>>> ('meta/lib/oeqa/targetcontrol.py'))
>>> +(('meta/lib/oeqa/utils/commands.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/utils/dump.py'), ('meta/lib/oeqa/utils/commands.py'))
>>> +(('meta/lib/oeqa/utils/logparser.py'),
>>> ('meta/lib/oeqa/utils/ftools.py'))
>>> +(('meta/lib/oeqa/utils/qemurunner.py'),
>>> ('meta/lib/oeqa/utils/dump.py'))
>>> +(('meta/lib/oeqa/utils/qemutinyrunner.py'),
>>> ('meta/lib/oeqa/utils/qemurunner.py'))
>>> +(('meta/lib/oeqa/utils/targetbuild.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('scripts/contrib/devtool-stress.py'), ('bitbake/lib/bb/process.py'))
>>> +(('scripts/contrib/devtool-stress.py'), ('bitbake/lib/bb/tinfoil.py'))
>>> +(('scripts/contrib/devtool-stress.py'), ('scripts/lib/scriptpath.py'))
>>> +(('scripts/contrib/devtool-stress.py'),
>>> ('scripts/lib/scriptutils.py'))
>>> +(('scripts/contrib/list-packageconfig-flags.py'),
>>> ('bitbake/lib/bb/cache.py'))
>>> +(('scripts/contrib/list-packageconfig-flags.py'),
>>> ('bitbake/lib/bb/cooker.py'))
>>> +(('scripts/contrib/list-packageconfig-flags.py'),
>>> ('bitbake/lib/bb/providers.py'))
>>> +(('scripts/contrib/list-packageconfig-flags.py'),
>>> ('bitbake/lib/bb/tinfoil.py'))
>>> +(('scripts/contrib/list-packageconfig-flags.py'),
>>> ('scripts/lib/scriptpath.py'))
>>> +(('scripts/contrib/verify-homepage.py'),
>>> ('bitbake/lib/bb/tinfoil.py'))
>>> +(('scripts/lib/bsp/engine.py'), ('scripts/lib/bsp/tags.py'))
>>> +(('scripts/lib/bsp/kernel.py'), ('scripts/lib/bsp/engine.py'))
>>> +(('scripts/lib/bsp/kernel.py'), ('scripts/lib/bsp/tags.py'))
>>> +(('scripts/lib/devtool/build-image.py'),
>>> ('bitbake/lib/bb/process.py'))
>>> +(('scripts/lib/devtool/deploy.py'), ('meta/lib/oe/recipeutils.py'))
>>> +(('scripts/lib/devtool/package.py'), ('bitbake/lib/bb/process.py'))
>>> +(('scripts/lib/devtool/standard.py'), ('bitbake/lib/bb/event.py'))
>>> +(('scripts/lib/devtool/standard.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('scripts/lib/devtool/standard.py'), ('meta/lib/oe/patch.py'))
>>> +(('scripts/lib/devtool/standard.py'), ('meta/lib/oe/recipeutils.py'))
>>> +(('scripts/lib/devtool/standard.py'), ('scripts/lib/scriptutils.py'))
>>> +(('scripts/lib/devtool/upgrade.py'), ('meta/lib/oe/recipeutils.py'))
>>> +(('scripts/lib/devtool/upgrade.py'), ('scripts/lib/scriptutils.py'))
>>> +(('scripts/lib/recipetool/append.py'), ('meta/lib/oe/recipeutils.py'))
>>> +(('scripts/lib/recipetool/append.py'), ('scripts/lib/scriptutils.py'))
>>> +(('scripts/lib/recipetool/create.py'), ('bitbake/lib/bb/process.py'))
>>> +(('scripts/lib/recipetool/create.py'), ('bitbake/lib/bb/utils.py'))
>>> +(('scripts/lib/recipetool/create.py'), ('scripts/lib/scriptutils.py'))
>>> +(('scripts/lib/recipetool/create_buildsys.py'),
>>> ('meta/lib/oe/package.py'))
>>> +(('scripts/lib/recipetool/create_buildsys.py'),
>>> ('scripts/lib/recipetool/create.py'))
>>> +(('scripts/lib/recipetool/create_buildsys_python.py'),
>>> ('scripts/lib/recipetool/create.py'))
>>> +(('scripts/lib/recipetool/newappend.py'),
>>> ('bitbake/lib/bb/providers.py'))
>>> +(('scripts/lib/recipetool/newappend.py'),
>>> ('meta/lib/oe/recipeutils.py'))
>>> +(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/data.py'))
>>> +(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/msg.py'))
>>> +(('scripts/lib/scriptutils.py'), ('bitbake/lib/bb/process.py'))
>>> +(('scripts/lib/wic/conf.py'), ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/conf.py'), ('scripts/lib/wic/utils/misc.py'))
>>> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/conf.py'))
>>> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/plugin.py'))
>>> +(('scripts/lib/wic/creator.py'), ('scripts/lib/wic/utils/errors.py'))
>>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/creator.py'))
>>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/plugin.py'))
>>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/utils/misc.py'))
>>> +(('scripts/lib/wic/engine.py'), ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/help.py'), ('scripts/lib/wic/plugin.py'))
>>> +(('scripts/lib/wic/imager/baseimager.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/imager/baseimager.py'),
>>> ('scripts/lib/wic/utils/errors.py'))
>>> +(('scripts/lib/wic/imager/baseimager.py'),
>>> ('scripts/lib/wic/utils/runner.py'))
>>> +(('scripts/lib/wic/imager/direct.py'),
>>> ('scripts/lib/wic/imager/baseimager.py'))
>>> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/imager/direct.py'), ('scripts/lib/wic/plugin.py'))
>>> +(('scripts/lib/wic/imager/direct.py'),
>>> ('scripts/lib/wic/utils/errors.py'))
>>> +(('scripts/lib/wic/imager/direct.py'),
>>> ('scripts/lib/wic/utils/fs_related.py'))
>>> +(('scripts/lib/wic/imager/direct.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/imager/direct.py'),
>>> ('scripts/lib/wic/utils/partitionedfs.py'))
>>> +(('scripts/lib/wic/kickstart/custom_commands/partition.py'),
>>> ('scripts/lib/wic/plugin.py'))
>>> +(('scripts/lib/wic/kickstart/custom_commands/partition.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/utils/errors.py'))
>>> +(('scripts/lib/wic/plugin.py'), ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/pluginbase.py'), ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/utils/fs_related.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/scriptpath.py'))
>>> +(('scripts/lib/wic/utils/oe/misc.py'), ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/utils/oe/misc.py'),
>>> ('scripts/lib/wic/utils/runner.py'))
>>> +(('scripts/lib/wic/utils/partitionedfs.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/utils/partitionedfs.py'),
>>> ('scripts/lib/wic/utils/errors.py'))
>>> +(('scripts/lib/wic/utils/partitionedfs.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/utils/runner.py'), ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/utils/syslinux.py'), ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/options.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/options.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/errors.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/options.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/errors.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/ko.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/sections.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/parser.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/sections.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/constants.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/sections.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/options.py'))
>>> +(('scripts/lib/wic/3rdparty/pykickstart/sections.py'),
>>> ('scripts/lib/wic/3rdparty/pykickstart/version.py'))
>>> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'),
>>> ('scripts/lib/wic/conf.py'))
>>> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'),
>>> ('scripts/lib/wic/imager/direct.py'))
>>> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'),
>>> ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugins/imager/direct_plugin.py'),
>>> ('scripts/lib/wic/utils/errors.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-efi.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-efi.py'),
>>> ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-efi.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-partition.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-partition.py'),
>>> ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-partition.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>>> ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>>> ('scripts/lib/wic/utils/errors.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/plugins/source/bootimg-pcbios.py'),
>>> ('scripts/lib/wic/utils/runner.py'))
>>> +(('scripts/lib/wic/plugins/source/fsimage.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/plugins/source/fsimage.py'),
>>> ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugins/source/fsimage.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'),
>>> ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugins/source/isoimage-isohybrid.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/plugins/source/rawcopy.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/plugins/source/rawcopy.py'),
>>> ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugins/source/rawcopy.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/plugins/source/rootfs.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/plugins/source/rootfs.py'),
>>> ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugins/source/rootfs.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>>> ('scripts/lib/wic/msger.py'))
>>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>>> ('scripts/lib/wic/pluginbase.py'))
>>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>>> ('scripts/lib/wic/utils/errors.py'))
>>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>>> ('scripts/lib/wic/utils/oe/misc.py'))
>>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>>> ('scripts/lib/wic/utils/runner.py'))
>>> +(('scripts/lib/wic/plugins/source/rootfs_pcbios_ext.py'),
>>> ('scripts/lib/wic/utils/syslinux.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/batch.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/draw.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/gui.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/draw.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/main.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/batch.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/main.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/gui.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/main.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/parsing.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/process_tree.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/parsing.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/samples.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/tests/parser_test.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/tests/process_tree_test.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/parsing.py'))
>>> +(('scripts/pybootchartgui/pybootchartgui/tests/process_tree_test.py'),
>>> ('scripts/pybootchartgui/pybootchartgui/process_tree.py'))
>>> \ No newline at end of file
>>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-11-23 18:23 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-20 14:22 [PATCH] scripts: analyze_patch: Analyze patch and suggest tests Daniel Istrate
2015-11-23 15:55 ` Leonardo Sandoval
2015-11-23 17:53 ` Randy Witt
2015-11-23 18:26 ` Leonardo Sandoval
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox