From e1a5d8150032b884bd85fcb20de14cd14cfd2b92 Mon Sep 17 00:00:00 2001 From: Dave Lerner Date: Wed, 11 Mar 2015 15:05:08 -0500 Subject: bitbake: toaster: layer-relative paths for config files Change bitbake variables table to show the path to the file in which the variable was defined using a layer-relative path instead of the full path to the file. The layer-relative path is found by matching on the full defining file path with entries in a list of layer names, sorted in descending order, and with 'meta' appended as a built-in layer to the end of the list. Additional filters are used to reduce false matches, although even if there is a false match, the actual path to the defining file will be obvious and not misleading. [YOCTO #7414] (Bitbake rev: ef6e854a50ea6894b0e320025280431a6fc8a9a5) Signed-off-by: Dave Lerner Signed-off-by: Richard Purdie --- bitbake/lib/toaster/toastergui/templates/configvars.html | 4 ++-- .../lib/toaster/toastergui/templatetags/projecttags.py | 15 +++++++++++++++ bitbake/lib/toaster/toastergui/views.py | 6 ++++++ 3 files changed, 23 insertions(+), 2 deletions(-) (limited to 'bitbake') diff --git a/bitbake/lib/toaster/toastergui/templates/configvars.html b/bitbake/lib/toaster/toastergui/templates/configvars.html index 1bd29aa..3e4c7e8 100644 --- a/bitbake/lib/toaster/toastergui/templates/configvars.html +++ b/bitbake/lib/toaster/toastergui/templates/configvars.html @@ -55,7 +55,7 @@ {{variable.variable_value|truncatechars:153}} {% if variable.vhistory.all %} {% autoescape off %} - {{variable.vhistory.all | filter_setin_files:file_filter }} + {{variable.vhistory.all | filter_setin_files:file_filter | cut_layer_path_prefix:layer_names}} {% endautoescape %} {% endif %} @@ -115,7 +115,7 @@ {% for vh in variable.vhistory.all %} - {{forloop.counter}}{{vh.file_name}}{{vh.operation}}{{vh.line_number}} + {{forloop.counter}}{{vh.file_name|cut_layer_path_prefix:layer_names}}{{vh.operation}}{{vh.line_number}} {%endfor%} diff --git a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py index e66910c..0ccf73a 100644 --- a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py +++ b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py @@ -307,3 +307,18 @@ def is_shaid(text): return False except ValueError: return False + +@register.filter +def cut_layer_path_prefix(fullpath,layer_names): + ### if some part of the full local path to a layer matches + ### an entry in layer_names (sorted desc), return the layer + ### name relative path. + for lname in layer_names: + # import rpdb; rpdb.set_trace() + # only try layer names that are non-trivial to avoid false matches + if len(lname) >= 4: + # match layer name with as a subdir / or for remote layers /_ + if re.search('/' + lname, fullpath) or re.search('/_' + lname, fullpath): + parts = re.split(lname, fullpath, 1) + return lname + parts[1] + return fullpath diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index ea47d96..9f35062 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py @@ -1261,6 +1261,11 @@ def configvars(request, build_id): variables = _build_page_range(Paginator(queryset, pagesize), request.GET.get('page', 1)) + layers = Layer.objects.filter(layer_version_layer__projectlayer__project__build=build_id).order_by("-name") + layer_names = map(lambda layer : layer.name, layers) + # special case for meta built-in layer + layer_names.append('meta') + # show all matching files (not just the last one) file_filter= search_term + ":" if filter_string.find('/conf/') > 0: @@ -1283,6 +1288,7 @@ def configvars(request, build_id): 'total_count':queryset_with_search.count(), 'default_orderby' : 'variable_name:+', 'search_term':search_term, + 'layer_names' : layer_names, # Specifies the display of columns for the table, appearance in "Edit columns" box, toggling default show/hide, and specifying filters for columns 'tablecols' : [ {'name': 'Variable', -- cgit v1.1