On Thu, May 21, 2015 at 10:49:51AM +0100, Damian, Alexandru wrote: > Taken for submission, > > Can you please post new patches as branches on poky-contrib ? > I started doing it as soon as I've got push rights to poky-contrib.
BTW, this patch is in ed/toaster/relative-path and I submitted this branch for review 3 days ago: https://lists.yoctoproject.org/pipermail/toaster/2015-May/002159.html Regards, Ed > Thank you, > Alex > > On Mon, May 18, 2015 at 1:41 PM, Barros Pena, Belen < > [email protected]> wrote: > > > On 18/05/2015 10:03, "Ed Bartosh" <[email protected]> wrote: > > > > >Reworked filtering of config paths. > > > > > >Stripped clone paths, topdir and its parent directory from the paths > > >to config files in configvars view. > > > > This works for me. Thanks! > > > > Belén > > > > > > > >[YOCTO #7463] > > > > > >Signed-off-by: Ed Bartosh <[email protected]> > > >--- > > > .../toaster/toastergui/templates/configvars.html | 10 +-- > > > .../toaster/toastergui/templatetags/projecttags.py | 76 > > >+++++++--------------- > > > bitbake/lib/toaster/toastergui/views.py | 19 ++++-- > > > 3 files changed, 42 insertions(+), 63 deletions(-) > > > > > >diff --git a/bitbake/lib/toaster/toastergui/templates/configvars.html > > >b/bitbake/lib/toaster/toastergui/templates/configvars.html > > >index 3e4c7e8..42c42a5 100644 > > >--- a/bitbake/lib/toaster/toastergui/templates/configvars.html > > >+++ b/bitbake/lib/toaster/toastergui/templates/configvars.html > > >@@ -54,9 +54,11 @@ > > > <td class="variable_name"><a data-toggle="modal" > > >href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td> > > > <td class="variable_value"><a data-toggle="modal" > > >href="#variable-{{variable.pk > > }}">{{variable.variable_value|truncatechars:1 > > >53}}</a></td> > > > <td class="file"><a data-toggle="modal" > > >href="#variable-{{variable.pk}}"> > > >- {% if variable.vhistory.all %} {% autoescape off %} > > >- {{variable.vhistory.all | filter_setin_files:file_filter > > >| cut_layer_path_prefix:layer_names}} > > >- {% endautoescape %} {% endif %} > > >+ {% if variable.vhistory.all %} > > >+ {% for path in > > >variable.vhistory.all|filter_setin_files:file_filter %} > > >+ {{path|cut_path_prefix:dirstostrip}}<p> > > >+ {% endfor %} > > >+ {% endif %} > > > </a></td> > > > <td class="description"> > > > {% if variable.description %} > > >@@ -115,7 +117,7 @@ > > > <tbody> > > > {% for vh in variable.vhistory.all %} > > > <tr> > > >- > > ><td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer > > >_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> > > >+ > > ><td>{{forloop.counter}}</td><td>{{vh.file_name|cut_path_prefix:dirstostrip > > >}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> > > > </tr> > > > {%endfor%} > > > </tbody> > > >diff --git a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py > > >b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py > > >index 54700e3..1bc3bc2 100644 > > >--- a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py > > >+++ b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py > > >@@ -20,6 +20,7 @@ > > > # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > > > > > > from datetime import datetime, timedelta > > >+from os.path import relpath > > > import re > > > from django import template > > > from django.utils import timezone > > >@@ -182,47 +183,23 @@ def variable_parent_name(value): > > > return re.sub('_[a-z].*', '', value) > > > > > > @register.filter > > >-def filter_setin_files(file_list,matchstr): > > >- """ filter/search the 'set in' file lists. Note > > >- that this output is not autoescaped to allow > > >- the <p> marks, but this is safe as the data > > >- is file paths > > >- """ > > >- > > >- # no filters, show last file (if any) > > >- if matchstr == ":": > > >- if file_list: > > >- return file_list[len(file_list)-1].file_name > > >- else: > > >- return '' > > >- > > >- search, filter = matchstr.partition(':')[::2] > > >- htmlstr="" > > >- # match only filters > > >- if search == '': > > >- for i in range(len(file_list)): > > >- if re.search(filter, file_list[i].file_name): > > >- if htmlstr.find(file_list[i].file_name + "<p>") < 0: > > >- htmlstr += file_list[i].file_name + "<p>" > > >- return htmlstr > > >- > > >- # match only search string, plus always last file > > >- if filter == "": > > >- for i in range(len(file_list)-1): > > >- if re.search(search,file_list[i].file_name): > > >- if htmlstr.find(file_list[i].file_name + "<p>") < 0: > > >- htmlstr += file_list[i].file_name + "<p>" > > >- if htmlstr.find(file_list[len(file_list)-1].file_name) < 0: > > >- htmlstr += file_list[len(file_list)-1].file_name > > >- return htmlstr > > >- > > >- # match filter or search string > > >- for i in range(len(file_list)): > > >- if re.search(filter, file_list[i].file_name) or > > >re.search(search,file_list[i].file_name): > > >- if htmlstr.find(file_list[i].file_name + "<p>") < 0: > > >- htmlstr += file_list[i].file_name + "<p>" > > >- return htmlstr > > >- > > >+def filter_setin_files(file_list, matchstr): > > >+ """Filter/search the 'set in' file lists.""" > > >+ result = [] > > >+ search, filter = matchstr.split(':') > > >+ for pattern in (search, filter): > > >+ if pattern: > > >+ for fobj in file_list: > > >+ fname = fobj.file_name > > >+ if fname not in result and re.search(pattern, fname): > > >+ result.append(fname) > > >+ > > >+ # no filter, show last file (if any) > > >+ last = list(file_list)[-1].file_name > > >+ if not filter and last not in result: > > >+ result.append(last) > > >+ > > >+ return result > > > > > > @register.filter > > > def string_slice(strvar,slicevar): > > >@@ -313,16 +290,9 @@ def is_shaid(text): > > > 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] > > >+def cut_path_prefix(fullpath, prefixes): > > >+ """Cut path prefix from fullpath.""" > > >+ for prefix in prefixes: > > >+ if fullpath.startswith(prefix): > > >+ return relpath(fullpath, prefix) > > > return fullpath > > >diff --git a/bitbake/lib/toaster/toastergui/views.py > > >b/bitbake/lib/toaster/toastergui/views.py > > >index 9217d8a..7f3621d 100755 > > >--- a/bitbake/lib/toaster/toastergui/views.py > > >+++ b/bitbake/lib/toaster/toastergui/views.py > > >@@ -28,6 +28,8 @@ from django.shortcuts import render, redirect > > > from orm.models import Build, Target, Task, Layer, Layer_Version, > > >Recipe, LogMessage, Variable > > > from orm.models import Task_Dependency, Recipe_Dependency, Package, > > >Package_File, Package_Dependency > > > from orm.models import Target_Installed_Package, Target_File, > > >Target_Image_File, BuildArtifact > > >+from bldcontrol.models import BuildEnvironment, BuildRequest > > >+from bldcontrol import bbcontroller > > > from django.views.decorators.cache import cache_control > > > from django.core.urlresolvers import reverse > > > from django.core.exceptions import MultipleObjectsReturned > > >@@ -39,6 +41,7 @@ from datetime import timedelta, datetime, date > > > from django.utils import formats > > > from toastergui.templatetags.projecttags import json as jsonfilter > > > import json > > >+from os.path import dirname > > > > > > # all new sessions should come through the landing page; > > > # determine in which mode we are running in, and redirect appropriately > > >@@ -1298,11 +1301,6 @@ 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=bui > > >ld_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: > > >@@ -1315,6 +1313,15 @@ def configvars(request, build_id): > > > file_filter += '/bitbake.conf' > > > > > >build_dir=re.sub("/tmp/log/.*","",Build.objects.get(pk=build_id).cooker_lo > > >g_path) > > > > > >+ clones = [] > > >+ for breq in BuildRequest.objects.filter(build_id=build_id): > > >+ bc = bbcontroller.getBuildEnvironmentController(pk = > > >breq.environment.id) > > >+ for brl in breq.brlayer_set.all(): > > >+ localdirname = bc.getGitCloneDirectory(brl.giturl, > > >brl.commit) > > >+ if not localdirname.startswith("/"): > > >+ localdirname = os.path.join(bc.be.sourcedir, > > >localdirname) > > >+ clones.append(localdirname) > > >+ > > > context = { > > > 'objectname': 'configvars', > > > 'object_search_display':'BitBake variables', > > >@@ -1325,7 +1332,7 @@ def configvars(request, build_id): > > > 'total_count':queryset_with_search.count(), > > > 'default_orderby' : 'variable_name:+', > > > 'search_term':search_term, > > >- 'layer_names' : layer_names, > > >+ 'dirstostrip': clones + [dirname(build_dir), > > >dirname(dirname(build_dir))], > > > # 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', > > >-- > > >2.1.4 > > > > > >-- > > >_______________________________________________ > > >toaster mailing list > > >[email protected] > > >https://lists.yoctoproject.org/listinfo/toaster > > > > -- > > _______________________________________________ > > toaster mailing list > > [email protected] > > https://lists.yoctoproject.org/listinfo/toaster > > > > > > -- > Alex Damian > Yocto Project > SSG / OTC -- -- Regards, Ed -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
