All of lore.kernel.org
 help / color / mirror / Atom feed
* [layerindex-web][PATCH 0/3] Minor layer index fixes
@ 2018-08-24  4:59 Paul Eggleton
  2018-08-24  4:59 ` [layerindex-web][PATCH 1/3] rrs: fix recipe/maintainer count showing at top Paul Eggleton
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Paul Eggleton @ 2018-08-24  4:59 UTC (permalink / raw)
  To: yocto

A couple of minor fixes for the recent RRS and other distro integration,
plus one additional debugging feature for the update script.


The following changes since commit b3e9cb05d22e0961341d87dce3128eeb273544f6:

  Include errors/warnings in main log in error/warning counts for updates (2018-08-14 15:09:36 +0200)

are available in the Git repository at:

  git://git.yoctoproject.org/layerindex-web paule/fixes6
  http://git.yoctoproject.org/cgit.cgi/layerindex-web/log/?h=paule/fixes6

Paul Eggleton (3):
  rrs: fix recipe/maintainer count showing at top
  Hide navbar on comparison select page
  update: add option to stop immediately on parse errors

 layerindex/update.py                          |  8 ++++
 layerindex/update_layer.py                    | 39 ++++++++++++-------
 templates/base_toplevel.html                  |  2 +
 .../layerindex/comparisonrecipeselect.html    |  3 ++
 templates/rrs/maintainers.html                |  6 +--
 templates/rrs/recipes.html                    |  6 +--
 6 files changed, 43 insertions(+), 21 deletions(-)

-- 
2.17.1



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [layerindex-web][PATCH 1/3] rrs: fix recipe/maintainer count showing at top
  2018-08-24  4:59 [layerindex-web][PATCH 0/3] Minor layer index fixes Paul Eggleton
@ 2018-08-24  4:59 ` Paul Eggleton
  2018-08-24  4:59 ` [layerindex-web][PATCH 2/3] Hide navbar on comparison select page Paul Eggleton
  2018-08-24  4:59 ` [layerindex-web][PATCH 3/3] update: add option to stop immediately on parse errors Paul Eggleton
  2 siblings, 0 replies; 4+ messages in thread
From: Paul Eggleton @ 2018-08-24  4:59 UTC (permalink / raw)
  To: yocto

We were using the main badge class as a selector here to show the recipe
or maintainer count, and that meant that it also showed up at the top
next to the login button if there were some layers to review. Use a
proper id to stop that from happening.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 templates/rrs/maintainers.html | 6 +++---
 templates/rrs/recipes.html     | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/templates/rrs/maintainers.html b/templates/rrs/maintainers.html
index c237000f..cee02006 100644
--- a/templates/rrs/maintainers.html
+++ b/templates/rrs/maintainers.html
@@ -23,7 +23,7 @@
     <div class="navbar-inner table-controls">
         <ul class="nav">
             <li class="dropdown">
-            <span class="badge" style="margin-top:11px;"></span>
+            <span class="badge" id="maintainer-count" style="margin-top:11px;"></span>
             </li>
         </ul>    		
         <form id="form-search" class="pull-right input-append">
@@ -188,9 +188,9 @@ $(document).ready(function() {
         }
 
         if (count == 2) {
-            $('.badge').html("1 maintainer");
+            $('#maintainer-count').html("1 maintainer");
         } else {
-            $('.badge').html((count - 1) + " maintainers")
+            $('#maintainer-count').html((count - 1) + " maintainers")
         }
         updateTotals()
     }
diff --git a/templates/rrs/recipes.html b/templates/rrs/recipes.html
index af3c08d6..d917f19d 100644
--- a/templates/rrs/recipes.html
+++ b/templates/rrs/recipes.html
@@ -23,7 +23,7 @@
     <div class="navbar-inner table-controls">
         <ul class="nav">
             <li class="dropdown">
-                <span class="badge"></span>
+                <span class="badge" id="recipe-count"></span>
             </li>
             <li class="dropdown">
                 <a data-toggle="dropdown" href="#" class="dropdown-toggle" id="selected-status">
@@ -203,9 +203,9 @@ $(document).ready(function() {
         }
 
         if (count == 2) {
-            $('.badge').html("1 recipe");
+            $('#recipe-count').html("1 recipe");
         } else {
-            $('.badge').html((count - 1) + " recipes");
+            $('#recipe-count').html((count - 1) + " recipes");
         }
     }
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [layerindex-web][PATCH 2/3] Hide navbar on comparison select page
  2018-08-24  4:59 [layerindex-web][PATCH 0/3] Minor layer index fixes Paul Eggleton
  2018-08-24  4:59 ` [layerindex-web][PATCH 1/3] rrs: fix recipe/maintainer count showing at top Paul Eggleton
@ 2018-08-24  4:59 ` Paul Eggleton
  2018-08-24  4:59 ` [layerindex-web][PATCH 3/3] update: add option to stop immediately on parse errors Paul Eggleton
  2 siblings, 0 replies; 4+ messages in thread
From: Paul Eggleton @ 2018-08-24  4:59 UTC (permalink / raw)
  To: yocto

We don't want to see the navbar on this page because otherwise it lets
you select branches and click on Stats etc. which doesn't make any sense
in this context.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 templates/base_toplevel.html                     | 2 ++
 templates/layerindex/comparisonrecipeselect.html | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/templates/base_toplevel.html b/templates/base_toplevel.html
index 1dcac775..afcc19bf 100644
--- a/templates/base_toplevel.html
+++ b/templates/base_toplevel.html
@@ -15,6 +15,7 @@
     <div class="container-fluid">
         <div class="row-fluid">
 
+            {% block navbar %}
             <div class="navbar">
                 <div class="navbar-inner">
                     <ul class="nav">
@@ -53,6 +54,7 @@
                     {% block navs_extra %}{% endblock %}
                 </div>
             </div>
+            {% endblock %}
 
             {% block content_inner %}{% endblock %}
 
diff --git a/templates/layerindex/comparisonrecipeselect.html b/templates/layerindex/comparisonrecipeselect.html
index 1646ae3d..47b299be 100644
--- a/templates/layerindex/comparisonrecipeselect.html
+++ b/templates/layerindex/comparisonrecipeselect.html
@@ -14,6 +14,9 @@
 {% block title_append %} - comparison - select match for {{ select_for.name }}{% endblock %}
 -->
 
+{% block navbar %}
+{% endblock %}
+
                 {% block page_heading %}
                 <h2>Select match for {{ select_for.pn }} in {% if branch.comparison %}{{ branch }}{% else %}OpenEmbedded{% endif %}</h2>
                 <div class="pull-right">
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [layerindex-web][PATCH 3/3] update: add option to stop immediately on parse errors
  2018-08-24  4:59 [layerindex-web][PATCH 0/3] Minor layer index fixes Paul Eggleton
  2018-08-24  4:59 ` [layerindex-web][PATCH 1/3] rrs: fix recipe/maintainer count showing at top Paul Eggleton
  2018-08-24  4:59 ` [layerindex-web][PATCH 2/3] Hide navbar on comparison select page Paul Eggleton
@ 2018-08-24  4:59 ` Paul Eggleton
  2 siblings, 0 replies; 4+ messages in thread
From: Paul Eggleton @ 2018-08-24  4:59 UTC (permalink / raw)
  To: yocto

During debugging a parsing issue, we don't really want to continue if a
parsing error occurs, and in that situation I usually end up using
Ctrl+C to exit early. Add an option to exit immediately upon error to
avoid having to do that.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 layerindex/update.py       |  8 ++++++++
 layerindex/update_layer.py | 39 +++++++++++++++++++++++---------------
 2 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/layerindex/update.py b/layerindex/update.py
index aea7cd09..1b2bb153 100755
--- a/layerindex/update.py
+++ b/layerindex/update.py
@@ -57,6 +57,8 @@ def prepare_update_layer_command(options, branch, layer, initial=False):
         cmd += ' -q'
     if options.keep_temp:
         cmd += ' --keep-temp'
+    if options.stop_on_error:
+        cmd += ' --stop-on-error'
     return cmd
 
 def update_actual_branch(layerquery, fetchdir, branch, options, update_bitbake, bitbakepath):
@@ -159,6 +161,9 @@ def main():
     parser.add_option("", "--nocheckout",
             help = "Don't check out branches",
             action="store_true", dest="nocheckout")
+    parser.add_option("", "--stop-on-error",
+            help = "Stop on first parsing error",
+            action="store_true", default=False, dest="stop_on_error")
     parser.add_option("-a", "--actual-branch",
             help = "Update actual branch for layer and bitbake",
             action="store", dest="actual_branch", default='')
@@ -528,6 +533,9 @@ def main():
                         # Interrupted by user, break out of loop
                         logger.info('Update interrupted, exiting')
                         sys.exit(254)
+                    if options.stop_on_error and ret != 0:
+                        logger.info('Layer update failed with --stop-on-error, stopping')
+                        sys.exit(1)
             if failed_layers:
                 for branch, err_msg_list in failed_layers.items():
                     if err_msg_list:
diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py
index d9c93360..eb04fc44 100644
--- a/layerindex/update_layer.py
+++ b/layerindex/update_layer.py
@@ -57,7 +57,7 @@ def split_recipe_fn(path):
 
 patch_status_re = re.compile(r"^[\t ]*(Upstream[-_ ]Status:?)[\t ]*(\w+)([\t ]+.*)?", re.IGNORECASE | re.MULTILINE)
 
-def collect_patch(recipe, patchfn, layerdir_start):
+def collect_patch(recipe, patchfn, layerdir_start, stop_on_error):
     from django.db import DatabaseError
     from layerindex.models import Patch
 
@@ -93,10 +93,13 @@ def collect_patch(recipe, patchfn, layerdir_start):
     except DatabaseError:
         raise
     except Exception as e:
-        logger.error("Unable to read patch %s: %s", patchfn, str(e))
-        patchrec.save()
+        if stop_on_error:
+            raise
+        else:
+            logger.error("Unable to read patch %s: %s", patchfn, str(e))
+            patchrec.save()
 
-def collect_patches(recipe, envdata, layerdir_start):
+def collect_patches(recipe, envdata, layerdir_start, stop_on_error):
     from layerindex.models import Patch
 
     try:
@@ -111,9 +114,9 @@ def collect_patches(recipe, envdata, layerdir_start):
         if not patch.startswith(layerdir_start):
             # Likely a remote patch, skip it
             continue
-        collect_patch(recipe, patch, layerdir_start)
+        collect_patch(recipe, patch, layerdir_start, stop_on_error)
 
-def update_recipe_file(tinfoil, data, path, recipe, layerdir_start, repodir, skip_patches=False):
+def update_recipe_file(tinfoil, data, path, recipe, layerdir_start, repodir, stop_on_error, skip_patches=False):
     from django.db import DatabaseError
 
     fn = str(os.path.join(path, recipe.filename))
@@ -197,7 +200,7 @@ def update_recipe_file(tinfoil, data, path, recipe, layerdir_start, repodir, ski
 
         if not skip_patches:
             # Handle patches
-            collect_patches(recipe, envdata, layerdir_start)
+            collect_patches(recipe, envdata, layerdir_start, stop_on_error)
 
         # Get file dependencies within this layer
         deps = envdata.getVar('__depends', True)
@@ -235,9 +238,12 @@ def update_recipe_file(tinfoil, data, path, recipe, layerdir_start, repodir, ski
     except DatabaseError:
         raise
     except BaseException as e:
-        if not recipe.pn:
-            recipe.pn = recipe.filename[:-3].split('_')[0]
-        logger.error("Unable to read %s: %s", fn, str(e))
+        if stop_on_error:
+            raise
+        else:
+            if not recipe.pn:
+                recipe.pn = recipe.filename[:-3].split('_')[0]
+            logger.error("Unable to read %s: %s", fn, str(e))
 
 def update_machine_conf_file(path, machine):
     logger.debug('Updating machine %s' % path)
@@ -304,6 +310,9 @@ def main():
     parser.add_option("", "--nocheckout",
             help = "Don't check out branches",
             action="store_true", dest="nocheckout")
+    parser.add_option("", "--stop-on-error",
+            help = "Stop on first parsing error",
+            action="store_true", default=False, dest="stop_on_error")
     parser.add_option("-i", "--initial",
             help = "Print initial values parsed from layer.conf only",
             action="store_true")
@@ -523,7 +532,7 @@ def main():
                                     recipe.filepath = newfilepath
                                     recipe.filename = newfilename
                                     recipe.save()
-                                    update_recipe_file(tinfoil, config_data_copy, os.path.join(layerdir, newfilepath), recipe, layerdir_start, repodir, skip_patches)
+                                    update_recipe_file(tinfoil, config_data_copy, os.path.join(layerdir, newfilepath), recipe, layerdir_start, repodir, options.stop_on_error, skip_patches)
                                     updatedrecipes.add(os.path.join(oldfilepath, oldfilename))
                                     updatedrecipes.add(os.path.join(newfilepath, newfilename))
                                 else:
@@ -655,7 +664,7 @@ def main():
                                 results = layerrecipes.filter(filepath=filepath).filter(filename=filename)[:1]
                                 if results:
                                     recipe = results[0]
-                                    update_recipe_file(tinfoil, config_data_copy, os.path.join(layerdir, filepath), recipe, layerdir_start, repodir, skip_patches)
+                                    update_recipe_file(tinfoil, config_data_copy, os.path.join(layerdir, filepath), recipe, layerdir_start, repodir, options.stop_on_error, skip_patches)
                                     recipe.save()
                                     updatedrecipes.add(recipe.full_path())
                             elif typename == 'machine':
@@ -677,7 +686,7 @@ def main():
 
                     for recipe in dirtyrecipes:
                         if not recipe.full_path() in updatedrecipes:
-                            update_recipe_file(tinfoil, config_data_copy, os.path.join(layerdir, recipe.filepath), recipe, layerdir_start, repodir, skip_patches)
+                            update_recipe_file(tinfoil, config_data_copy, os.path.join(layerdir, recipe.filepath), recipe, layerdir_start, repodir, options.stop_on_error, skip_patches)
                 else:
                     # Collect recipe data from scratch
 
@@ -708,7 +717,7 @@ def main():
                                 # Recipe still exists, update it
                                 results = layerrecipes.filter(id=v['id'])[:1]
                                 recipe = results[0]
-                                update_recipe_file(tinfoil, config_data_copy, root, recipe, layerdir_start, repodir, skip_patches)
+                                update_recipe_file(tinfoil, config_data_copy, root, recipe, layerdir_start, repodir, options.stop_on_error, skip_patches)
                             else:
                                 # Recipe no longer exists, mark it for later on
                                 layerrecipes_delete.append(v)
@@ -777,7 +786,7 @@ def main():
                     recipe.filename = os.path.basename(added)
                     root = os.path.dirname(added)
                     recipe.filepath = os.path.relpath(root, layerdir)
-                    update_recipe_file(tinfoil, config_data_copy, root, recipe, layerdir_start, repodir, skip_patches)
+                    update_recipe_file(tinfoil, config_data_copy, root, recipe, layerdir_start, repodir, options.stop_on_error, skip_patches)
                     recipe.save()
 
                 for deleted in layerrecipes_delete:
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-08-24  5:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-24  4:59 [layerindex-web][PATCH 0/3] Minor layer index fixes Paul Eggleton
2018-08-24  4:59 ` [layerindex-web][PATCH 1/3] rrs: fix recipe/maintainer count showing at top Paul Eggleton
2018-08-24  4:59 ` [layerindex-web][PATCH 2/3] Hide navbar on comparison select page Paul Eggleton
2018-08-24  4:59 ` [layerindex-web][PATCH 3/3] update: add option to stop immediately on parse errors Paul Eggleton

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.