* [PATCHv2] [layerindex-web] recipe blacklisted information
@ 2015-11-30 22:03 Alex Franco
2015-11-30 22:22 ` Paul Eggleton
0 siblings, 1 reply; 16+ messages in thread
From: Alex Franco @ 2015-11-30 22:03 UTC (permalink / raw)
To: yocto; +Cc: paul.eggleton
Display blacklisted information for recipes on Layerindex, in the
recipe details, as well as the recipe search page, and layer page
tables. This information is pulled from the PNBLACKLIST variable.
Includes a hover text containing the reason for blacklist labels.
Changes to Django and Layerindex files:
- models.py, update.py
- migration file
- templates and static content (stylesheet)
[YOCTO #7855]
Signed-off-by: Alex Franco <alejandro.franco@linux.intel.com>
---
.../0010_auto__add_field_recipe_blacklisted.py | 197 +++++++++++++++++++++
layerindex/models.py | 1 +
layerindex/static/css/additional.css | 19 +-
layerindex/update.py | 1 +
templates/layerindex/detail.html | 3 +-
templates/layerindex/recipedetail.html | 13 +-
templates/layerindex/recipes.html | 3 +-
7 files changed, 232 insertions(+), 5 deletions(-)
create mode 100644 layerindex/migrations/0010_auto__add_field_recipe_blacklisted.py
diff --git a/layerindex/migrations/0010_auto__add_field_recipe_blacklisted.py b/layerindex/migrations/0010_auto__add_field_recipe_blacklisted.py
new file mode 100644
index 0000000..e1bb12c
--- /dev/null
+++ b/layerindex/migrations/0010_auto__add_field_recipe_blacklisted.py
@@ -0,0 +1,197 @@
+# -*- coding: utf-8 -*-
+from south.utils import datetime_utils as datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'Recipe.blacklisted'
+ db.add_column('layerindex_recipe', 'blacklisted',
+ self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'Recipe.blacklisted'
+ db.delete_column('layerindex_recipe', 'blacklisted')
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'layerindex.bbappend': {
+ 'Meta': {'object_name': 'BBAppend'},
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'filepath': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"})
+ },
+ 'layerindex.bbclass': {
+ 'Meta': {'object_name': 'BBClass'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'layerindex.branch': {
+ 'Meta': {'object_name': 'Branch'},
+ 'bitbake_branch': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'short_description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
+ 'sort_priority': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'updated': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'})
+ },
+ 'layerindex.classicrecipe': {
+ 'Meta': {'object_name': 'ClassicRecipe', '_ormbases': ['layerindex.Recipe']},
+ 'classic_category': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'cover_comment': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'cover_layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
+ 'cover_pn': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'cover_status': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '1'}),
+ 'cover_verified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'recipe_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['layerindex.Recipe']", 'unique': 'True', 'primary_key': 'True'})
+ },
+ 'layerindex.layerbranch': {
+ 'Meta': {'object_name': 'LayerBranch'},
+ 'actual_branch': ('django.db.models.fields.CharField', [], {'max_length': '80', 'blank': 'True'}),
+ 'branch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.Branch']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'layer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerItem']"}),
+ 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'vcs_last_commit': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'vcs_last_fetch': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'vcs_last_rev': ('django.db.models.fields.CharField', [], {'max_length': '80', 'blank': 'True'}),
+ 'vcs_subdir': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'})
+ },
+ 'layerindex.layerdependency': {
+ 'Meta': {'object_name': 'LayerDependency'},
+ 'dependency': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'dependents_set'", 'to': "orm['layerindex.LayerItem']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'dependencies_set'", 'to': "orm['layerindex.LayerBranch']"})
+ },
+ 'layerindex.layeritem': {
+ 'Meta': {'object_name': 'LayerItem'},
+ 'classic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'index_preference': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'layer_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'mailing_list_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '40'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'N'", 'max_length': '1'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'usage_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'vcs_url': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'vcs_web_file_base_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'vcs_web_tree_base_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'vcs_web_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'layerindex.layermaintainer': {
+ 'Meta': {'object_name': 'LayerMaintainer'},
+ 'email': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'responsibility': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'A'", 'max_length': '1'})
+ },
+ 'layerindex.layernote': {
+ 'Meta': {'object_name': 'LayerNote'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'layer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerItem']"}),
+ 'text': ('django.db.models.fields.TextField', [], {})
+ },
+ 'layerindex.machine': {
+ 'Meta': {'object_name': 'Machine'},
+ 'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
+ },
+ 'layerindex.recipe': {
+ 'Meta': {'object_name': 'Recipe'},
+ 'bbclassextend': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'blacklisted': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'bugtracker': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'filepath': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'homepage': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'inherits': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"}),
+ 'license': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'pn': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'provides': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'pv': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+ 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
+ },
+ 'layerindex.recipechange': {
+ 'Meta': {'object_name': 'RecipeChange'},
+ 'bugtracker': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
+ 'changeset': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.RecipeChangeset']"}),
+ 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'homepage': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'license': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'recipe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['layerindex.Recipe']"}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'})
+ },
+ 'layerindex.recipechangeset': {
+ 'Meta': {'object_name': 'RecipeChangeset'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'layerindex.recipefiledependency': {
+ 'Meta': {'object_name': 'RecipeFileDependency'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['layerindex.LayerBranch']"}),
+ 'path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'recipe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.Recipe']"})
+ }
+ }
+
+ complete_apps = ['layerindex']
\ No newline at end of file
diff --git a/layerindex/models.py b/layerindex/models.py
index c9e9620..cde8fe3 100644
--- a/layerindex/models.py
+++ b/layerindex/models.py
@@ -244,6 +244,7 @@ class Recipe(models.Model):
bbclassextend = models.CharField(max_length=100, blank=True)
inherits = models.CharField(max_length=255, blank=True)
updated = models.DateTimeField(auto_now = True)
+ blacklisted = models.CharField(max_length=255, blank=True)
def vcs_web_url(self):
url = self.layerbranch.file_url(os.path.join(self.filepath, self.filename))
diff --git a/layerindex/static/css/additional.css b/layerindex/static/css/additional.css
index f76582c..e6cf526 100644
--- a/layerindex/static/css/additional.css
+++ b/layerindex/static/css/additional.css
@@ -200,14 +200,29 @@ padding: 8px;
margin-left: 8px;
}
-.icon-hdd {
+.label-inverse, .icon-hdd {
margin-left: 6px;
}
-.icon-hdd:hover {
+.label-inverse:hover, .icon-hdd:hover {
cursor: pointer;
}
+.label-inverse:hover {
+ background-color: #999;
+}
+
ul.unstyled {
margin-bottom: 0;
}
+
+blockquote.span7.warn {
+ border-color: #c09853;
+ margin-bottom: 0;
+ margin-left: 0;
+ min-height: 0;
+}
+
+.valign-middle {
+ vertical-align: middle;
+}
diff --git a/layerindex/update.py b/layerindex/update.py
index 1e96da6..3680498 100755
--- a/layerindex/update.py
+++ b/layerindex/update.py
@@ -69,6 +69,7 @@ def update_recipe_file(data, path, recipe, layerdir_start, repodir):
gr = set(data.getVar("__inherit_cache", True) or [])
lr = set(envdata.getVar("__inherit_cache", True) or [])
recipe.inherits = ' '.join(sorted({split_recipe_fn(r)[0] for r in lr if r not in gr}))
+ recipe.blacklisted = envdata.getVarFlag('PNBLACKLIST', recipe.pn, True) or ""
recipe.save()
# Get file dependencies within this layer
diff --git a/templates/layerindex/detail.html b/templates/layerindex/detail.html
index 8a734ff..feb2c6c 100644
--- a/templates/layerindex/detail.html
+++ b/templates/layerindex/detail.html
@@ -198,7 +198,7 @@
<tbody>
{% for recipe in layerbranch.sorted_recipes %}
<tr>
- <td><a href="{% url recipe recipe.id %}">{{ recipe.name }}</a>{% if 'image' in recipe.inherits.split %}<i class="icon-hdd"></i>{% endif %}</td>
+ <td><a href="{% url recipe recipe.id %}">{{ recipe.name }}</a>{% if 'image' in recipe.inherits.split %}<i class="icon-hdd"></i>{% endif %}{% if recipe.blacklisted %}<span class="label label-inverse" title="{{ recipe.blacklisted }}">blacklisted</span>{% endif %}</td>
<td>{{ recipe.pv }}</td>
<td class="span8">{{ recipe.short_desc }}</td>
</tr>
@@ -323,6 +323,7 @@
})
$('.icon-hdd').tooltip({title:"Inherits image"});
+ $('.label-inverse').tooltip();
});
});
</script>
diff --git a/templates/layerindex/recipedetail.html b/templates/layerindex/recipedetail.html
index 3b8c79b..7dbb362 100644
--- a/templates/layerindex/recipedetail.html
+++ b/templates/layerindex/recipedetail.html
@@ -30,9 +30,20 @@
<div class="row-fluid">
<div class="page-header">
- <h1>{{ recipe.name }} {{ recipe.pv }}</h1>
+ <h1>{{ recipe.name }} {{ recipe.pv }} {% if recipe.blacklisted %} <span class="label label-inverse valign-middle">blacklisted</span> {% endif %}</h1>
</div>
+ {% if recipe.blacklisted %}
+ <div class="alert">
+ <div class="row-fluid">
+ <p>This recipe is <strong>blacklisted</strong> by the <a href="{% url layer_item recipe.layerbranch.branch.name recipe.layerbranch.layer.name %}">{{ recipe.layerbranch.layer.name }}</a> layer. The reason provided is:</p>
+ <blockquote class="span7 warn">
+ <p>{{ recipe.blacklisted }}</p>
+ </blockquote>
+ </div>
+ </div>
+ {% endif %}
+
<table class="table table-striped table-bordered">
<tbody>
<tr>
diff --git a/templates/layerindex/recipes.html b/templates/layerindex/recipes.html
index 322d7c6..c2141a4 100644
--- a/templates/layerindex/recipes.html
+++ b/templates/layerindex/recipes.html
@@ -52,7 +52,7 @@
<tbody>
{% for recipe in recipe_list %}
<tr {% if recipe.preferred_count > 0 %}class="muted"{% endif %}>
- <td><a href="{% url recipe recipe.id %}">{{ recipe.name }}</a>{% if 'image' in recipe.inherits.split %}<i class="icon-hdd"></i>{% endif %}</td>
+ <td><a href="{% url recipe recipe.id %}">{{ recipe.name }}</a>{% if 'image' in recipe.inherits.split %}<i class="icon-hdd"></i>{% endif %}{% if recipe.blacklisted %}<span class="label label-inverse" title="{{ recipe.blacklisted }}">blacklisted</span>{% endif %}</td>
<td>{{ recipe.pv }}</td>
<td>{{ recipe.short_desc }}</td>
<td><a href="{% url layer_item url_branch recipe.layerbranch.layer.name %}">{{ recipe.layerbranch.layer.name }}</a></td>
@@ -84,6 +84,7 @@
firstfield.focus()
$('.icon-hdd').tooltip({title:"Inherits image"});
+ $('.label-inverse').tooltip();
});
</script>
{% endblock %}
--
1.8.4.5
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
2015-11-30 22:03 [PATCHv2] [layerindex-web] recipe blacklisted information Alex Franco
@ 2015-11-30 22:22 ` Paul Eggleton
2015-11-30 22:42 ` strange QA issue - how to ignore automatic so dependency Dvorkin Dmitry
2015-12-01 9:40 ` [PATCHv2] [layerindex-web] recipe blacklisted information Martin Jansa
0 siblings, 2 replies; 16+ messages in thread
From: Paul Eggleton @ 2015-11-30 22:22 UTC (permalink / raw)
To: Alex Franco; +Cc: yocto
Hi Alex,
On Mon, 30 Nov 2015 16:03:05 Alex Franco wrote:
> Display blacklisted information for recipes on Layerindex, in the
> recipe details, as well as the recipe search page, and layer page
> tables. This information is pulled from the PNBLACKLIST variable.
> Includes a hover text containing the reason for blacklist labels.
>
> Changes to Django and Layerindex files:
> - models.py, update.py
> - migration file
> - templates and static content (stylesheet)
>
> [YOCTO #7855]
>
> Signed-off-by: Alex Franco <alejandro.franco@linux.intel.com>
> ---
> .../0010_auto__add_field_recipe_blacklisted.py | 197
> +++++++++++++++++++++ layerindex/models.py |
> 1 +
> layerindex/static/css/additional.css | 19 +-
> layerindex/update.py | 1 +
> templates/layerindex/detail.html | 3 +-
> templates/layerindex/recipedetail.html | 13 +-
> templates/layerindex/recipes.html | 3 +-
> 7 files changed, 232 insertions(+), 5 deletions(-)
> create mode 100644
> layerindex/migrations/0010_auto__add_field_recipe_blacklisted.py
>
> diff --git
> a/layerindex/migrations/0010_auto__add_field_recipe_blacklisted.py
> b/layerindex/migrations/0010_auto__add_field_recipe_blacklisted.py new file
> mode 100644
> index 0000000..e1bb12c
> --- /dev/null
> +++ b/layerindex/migrations/0010_auto__add_field_recipe_blacklisted.py
> @@ -0,0 +1,197 @@
> +# -*- coding: utf-8 -*-
> +from south.utils import datetime_utils as datetime
> +from south.db import db
> +from south.v2 import SchemaMigration
> +from django.db import models
> +
> +
> +class Migration(SchemaMigration):
> +
> + def forwards(self, orm):
> + # Adding field 'Recipe.blacklisted'
> + db.add_column('layerindex_recipe', 'blacklisted',
> +
> self.gf('django.db.models.fields.CharField')(default='', max_length=255,
> blank=True), + keep_default=False)
> +
> +
> + def backwards(self, orm):
> + # Deleting field 'Recipe.blacklisted'
> + db.delete_column('layerindex_recipe', 'blacklisted')
> +
> +
> + models = {
> + 'auth.group': {
> + 'Meta': {'object_name': 'Group'},
> + 'id': ('django.db.models.fields.AutoField', [], {'primary_key':
> 'True'}), + 'name': ('django.db.models.fields.CharField', [],
> {'unique': 'True', 'max_length': '80'}), + 'permissions':
> ('django.db.models.fields.related.ManyToManyField', [], {'to':
> "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) +
> },
> + 'auth.permission': {
> + 'Meta': {'ordering': "('content_type__app_label',
> 'content_type__model', 'codename')", 'unique_together': "(('content_type',
> 'codename'),)", 'object_name': 'Permission'}, + 'codename':
> ('django.db.models.fields.CharField', [], {'max_length': '100'}), +
> 'content_type': ('django.db.models.fields.related.ForeignKey', [],
> {'to': "orm['contenttypes.ContentType']"}), + 'id':
> ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +
> 'name': ('django.db.models.fields.CharField', [], {'max_length':
> '50'}) + },
> + 'auth.user': {
> + 'Meta': {'object_name': 'User'},
> + 'date_joined': ('django.db.models.fields.DateTimeField', [],
> {'default': 'datetime.datetime.now'}), + 'email':
> ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank':
> 'True'}), + 'first_name': ('django.db.models.fields.CharField',
> [], {'max_length': '30', 'blank': 'True'}), + 'groups':
> ('django.db.models.fields.related.ManyToManyField', [], {'to':
> "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), +
> 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
> + 'is_active': ('django.db.models.fields.BooleanField', [],
> {'default': 'True'}), + 'is_staff':
> ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +
> 'is_superuser': ('django.db.models.fields.BooleanField', [],
> {'default': 'False'}), + 'last_login':
> ('django.db.models.fields.DateTimeField', [], {'default':
> 'datetime.datetime.now'}), + 'last_name':
> ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank':
> 'True'}), + 'password': ('django.db.models.fields.CharField',
> [], {'max_length': '128'}), + 'user_permissions':
> ('django.db.models.fields.related.ManyToManyField', [], {'to':
> "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), +
> 'username': ('django.db.models.fields.CharField', [], {'unique':
> 'True', 'max_length': '30'}) + },
> + 'contenttypes.contenttype': {
> + 'Meta': {'ordering': "('name',)", 'unique_together':
> "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table':
> "'django_content_type'"}, + 'app_label':
> ('django.db.models.fields.CharField', [], {'max_length': '100'}), +
> 'id': ('django.db.models.fields.AutoField', [], {'primary_key':
> 'True'}), + 'model': ('django.db.models.fields.CharField', [],
> {'max_length': '100'}), + 'name':
> ('django.db.models.fields.CharField', [], {'max_length': '100'}) +
> },
> + 'layerindex.bbappend': {
> + 'Meta': {'object_name': 'BBAppend'},
> + 'filename': ('django.db.models.fields.CharField', [],
> {'max_length': '255'}), + 'filepath':
> ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank':
> 'True'}), + 'id': ('django.db.models.fields.AutoField', [],
> {'primary_key': 'True'}), + 'layerbranch':
> ('django.db.models.fields.related.ForeignKey', [], {'to':
> "orm['layerindex.LayerBranch']"}) + },
> + 'layerindex.bbclass': {
> + 'Meta': {'object_name': 'BBClass'},
> + 'id': ('django.db.models.fields.AutoField', [], {'primary_key':
> 'True'}), + 'layerbranch':
> ('django.db.models.fields.related.ForeignKey', [], {'to':
> "orm['layerindex.LayerBranch']"}), + 'name':
> ('django.db.models.fields.CharField', [], {'max_length': '100'}) +
> },
> + 'layerindex.branch': {
> + 'Meta': {'object_name': 'Branch'},
> + 'bitbake_branch': ('django.db.models.fields.CharField', [],
> {'max_length': '50'}), + 'id':
> ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +
> 'name': ('django.db.models.fields.CharField', [], {'max_length':
> '50'}), + 'short_description':
> ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank':
> 'True'}), + 'sort_priority':
> ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank':
> 'True'}), + 'updated': ('django.db.models.fields.DateTimeField',
> [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank':
> 'True'}) + },
> + 'layerindex.classicrecipe': {
> + 'Meta': {'object_name': 'ClassicRecipe', '_ormbases':
> ['layerindex.Recipe']}, + 'classic_category':
> ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank':
> 'True'}), + 'cover_comment':
> ('django.db.models.fields.TextField', [], {'blank': 'True'}), +
> 'cover_layerbranch': ('django.db.models.fields.related.ForeignKey', [],
> {'to': "orm['layerindex.LayerBranch']", 'null': 'True', 'on_delete':
> 'models.SET_NULL', 'blank': 'True'}), + 'cover_pn':
> ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank':
> 'True'}), + 'cover_status':
> ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length':
> '1'}), + 'cover_verified':
> ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +
> 'recipe_ptr': ('django.db.models.fields.related.OneToOneField', [],
> {'to': "orm['layerindex.Recipe']", 'unique': 'True', 'primary_key':
> 'True'}) + },
> + 'layerindex.layerbranch': {
> + 'Meta': {'object_name': 'LayerBranch'},
> + 'actual_branch': ('django.db.models.fields.CharField', [],
> {'max_length': '80', 'blank': 'True'}), + 'branch':
> ('django.db.models.fields.related.ForeignKey', [], {'to':
> "orm['layerindex.Branch']"}), + 'id':
> ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +
> 'layer': ('django.db.models.fields.related.ForeignKey', [], {'to':
> "orm['layerindex.LayerItem']"}), + 'updated':
> ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank':
> 'True'}), + 'vcs_last_commit':
> ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank':
> 'True'}), + 'vcs_last_fetch':
> ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank':
> 'True'}), + 'vcs_last_rev':
> ('django.db.models.fields.CharField', [], {'max_length': '80', 'blank':
> 'True'}), + 'vcs_subdir': ('django.db.models.fields.CharField',
> [], {'max_length': '40', 'blank': 'True'}) + },
> + 'layerindex.layerdependency': {
> + 'Meta': {'object_name': 'LayerDependency'},
> + 'dependency': ('django.db.models.fields.related.ForeignKey',
> [], {'related_name': "'dependents_set'", 'to':
> "orm['layerindex.LayerItem']"}), + 'id':
> ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +
> 'layerbranch': ('django.db.models.fields.related.ForeignKey', [],
> {'related_name': "'dependencies_set'", 'to':
> "orm['layerindex.LayerBranch']"}) + },
> + 'layerindex.layeritem': {
> + 'Meta': {'object_name': 'LayerItem'},
> + 'classic': ('django.db.models.fields.BooleanField', [],
> {'default': 'False'}), + 'description':
> ('django.db.models.fields.TextField', [], {}), + 'id':
> ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +
> 'index_preference': ('django.db.models.fields.IntegerField', [],
> {'default': '0'}), + 'layer_type':
> ('django.db.models.fields.CharField', [], {'max_length': '1'}), +
> 'mailing_list_url': ('django.db.models.fields.URLField', [],
> {'max_length': '200', 'blank': 'True'}), + 'name':
> ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length':
> '40'}), + 'status': ('django.db.models.fields.CharField', [],
> {'default': "'N'", 'max_length': '1'}), + 'summary':
> ('django.db.models.fields.CharField', [], {'max_length': '200'}), +
> 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now':
> 'True', 'blank': 'True'}), + 'usage_url':
> ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank':
> 'True'}), + 'vcs_url': ('django.db.models.fields.CharField', [],
> {'max_length': '255'}), + 'vcs_web_file_base_url':
> ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank':
> 'True'}), + 'vcs_web_tree_base_url':
> ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank':
> 'True'}), + 'vcs_web_url': ('django.db.models.fields.URLField',
> [], {'max_length': '200', 'blank': 'True'}) + },
> + 'layerindex.layermaintainer': {
> + 'Meta': {'object_name': 'LayerMaintainer'},
> + 'email': ('django.db.models.fields.CharField', [],
> {'max_length': '255'}), + 'id':
> ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +
> 'layerbranch': ('django.db.models.fields.related.ForeignKey', [],
> {'to': "orm['layerindex.LayerBranch']"}), + 'name':
> ('django.db.models.fields.CharField', [], {'max_length': '255'}), +
> 'responsibility': ('django.db.models.fields.CharField', [],
> {'max_length': '200', 'blank': 'True'}), + 'status':
> ('django.db.models.fields.CharField', [], {'default': "'A'", 'max_length':
> '1'}) + },
> + 'layerindex.layernote': {
> + 'Meta': {'object_name': 'LayerNote'},
> + 'id': ('django.db.models.fields.AutoField', [], {'primary_key':
> 'True'}), + 'layer':
> ('django.db.models.fields.related.ForeignKey', [], {'to':
> "orm['layerindex.LayerItem']"}), + 'text':
> ('django.db.models.fields.TextField', [], {}) + },
> + 'layerindex.machine': {
> + 'Meta': {'object_name': 'Machine'},
> + 'description': ('django.db.models.fields.CharField', [],
> {'max_length': '255'}), + 'id':
> ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +
> 'layerbranch': ('django.db.models.fields.related.ForeignKey', [],
> {'to': "orm['layerindex.LayerBranch']"}), + 'name':
> ('django.db.models.fields.CharField', [], {'max_length': '255'}), +
> 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now':
> 'True', 'blank': 'True'}) + },
> + 'layerindex.recipe': {
> + 'Meta': {'object_name': 'Recipe'},
> + 'bbclassextend': ('django.db.models.fields.CharField', [],
> {'max_length': '100', 'blank': 'True'}), + 'blacklisted':
> ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank':
> 'True'}), + 'bugtracker': ('django.db.models.fields.URLField',
> [], {'max_length': '200', 'blank': 'True'}), + 'description':
> ('django.db.models.fields.TextField', [], {'blank': 'True'}), +
> 'filename': ('django.db.models.fields.CharField', [], {'max_length':
> '255'}), + 'filepath': ('django.db.models.fields.CharField', [],
> {'max_length': '255', 'blank': 'True'}), + 'homepage':
> ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank':
> 'True'}), + 'id': ('django.db.models.fields.AutoField', [],
> {'primary_key': 'True'}), + 'inherits':
> ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank':
> 'True'}), + 'layerbranch':
> ('django.db.models.fields.related.ForeignKey', [], {'to':
> "orm['layerindex.LayerBranch']"}), + 'license':
> ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank':
> 'True'}), + 'pn': ('django.db.models.fields.CharField', [],
> {'max_length': '100', 'blank': 'True'}), + 'provides':
> ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank':
> 'True'}), + 'pv': ('django.db.models.fields.CharField', [],
> {'max_length': '100', 'blank': 'True'}), + 'section':
> ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank':
> 'True'}), + 'summary': ('django.db.models.fields.CharField', [],
> {'max_length': '200', 'blank': 'True'}), + 'updated':
> ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank':
> 'True'}) + },
> + 'layerindex.recipechange': {
> + 'Meta': {'object_name': 'RecipeChange'},
> + 'bugtracker': ('django.db.models.fields.URLField', [],
> {'max_length': '200', 'blank': 'True'}), + 'changeset':
> ('django.db.models.fields.related.ForeignKey', [], {'to':
> "orm['layerindex.RecipeChangeset']"}), + 'description':
> ('django.db.models.fields.TextField', [], {'blank': 'True'}), +
> 'homepage': ('django.db.models.fields.URLField', [], {'max_length': '200',
> 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField',
> [], {'primary_key': 'True'}), + 'license':
> ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank':
> 'True'}), + 'recipe':
> ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'",
> 'to': "orm['layerindex.Recipe']"}), + 'section':
> ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank':
> 'True'}), + 'summary': ('django.db.models.fields.CharField', [],
> {'max_length': '100', 'blank': 'True'}) + },
> + 'layerindex.recipechangeset': {
> + 'Meta': {'object_name': 'RecipeChangeset'},
> + 'id': ('django.db.models.fields.AutoField', [], {'primary_key':
> 'True'}), + 'name': ('django.db.models.fields.CharField', [],
> {'max_length': '255'}), + 'user':
> ('django.db.models.fields.related.ForeignKey', [], {'to':
> "orm['auth.User']"}) + },
> + 'layerindex.recipefiledependency': {
> + 'Meta': {'object_name': 'RecipeFileDependency'},
> + 'id': ('django.db.models.fields.AutoField', [], {'primary_key':
> 'True'}), + 'layerbranch':
> ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'",
> 'to': "orm['layerindex.LayerBranch']"}), + 'path':
> ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index':
> 'True'}), + 'recipe':
> ('django.db.models.fields.related.ForeignKey', [], {'to':
> "orm['layerindex.Recipe']"}) + }
> + }
> +
> + complete_apps = ['layerindex']
> \ No newline at end of file
> diff --git a/layerindex/models.py b/layerindex/models.py
> index c9e9620..cde8fe3 100644
> --- a/layerindex/models.py
> +++ b/layerindex/models.py
> @@ -244,6 +244,7 @@ class Recipe(models.Model):
> bbclassextend = models.CharField(max_length=100, blank=True)
> inherits = models.CharField(max_length=255, blank=True)
> updated = models.DateTimeField(auto_now = True)
> + blacklisted = models.CharField(max_length=255, blank=True)
>
> def vcs_web_url(self):
> url = self.layerbranch.file_url(os.path.join(self.filepath,
> self.filename)) diff --git a/layerindex/static/css/additional.css
> b/layerindex/static/css/additional.css index f76582c..e6cf526 100644
> --- a/layerindex/static/css/additional.css
> +++ b/layerindex/static/css/additional.css
> @@ -200,14 +200,29 @@ padding: 8px;
> margin-left: 8px;
> }
>
> -.icon-hdd {
> +.label-inverse, .icon-hdd {
> margin-left: 6px;
> }
>
> -.icon-hdd:hover {
> +.label-inverse:hover, .icon-hdd:hover {
> cursor: pointer;
> }
>
> +.label-inverse:hover {
> + background-color: #999;
> +}
> +
> ul.unstyled {
> margin-bottom: 0;
> }
> +
> +blockquote.span7.warn {
> + border-color: #c09853;
> + margin-bottom: 0;
> + margin-left: 0;
> + min-height: 0;
> +}
> +
> +.valign-middle {
> + vertical-align: middle;
> +}
> diff --git a/layerindex/update.py b/layerindex/update.py
> index 1e96da6..3680498 100755
> --- a/layerindex/update.py
> +++ b/layerindex/update.py
> @@ -69,6 +69,7 @@ def update_recipe_file(data, path, recipe, layerdir_start,
> repodir): gr = set(data.getVar("__inherit_cache", True) or [])
> lr = set(envdata.getVar("__inherit_cache", True) or [])
> recipe.inherits = ' '.join(sorted({split_recipe_fn(r)[0] for r in
> lr if r not in gr})) + recipe.blacklisted =
> envdata.getVarFlag('PNBLACKLIST', recipe.pn, True) or "" recipe.save()
>
> # Get file dependencies within this layer
> diff --git a/templates/layerindex/detail.html
> b/templates/layerindex/detail.html index 8a734ff..feb2c6c 100644
> --- a/templates/layerindex/detail.html
> +++ b/templates/layerindex/detail.html
> @@ -198,7 +198,7 @@
> <tbody>
> {% for recipe in layerbranch.sorted_recipes %}
> <tr>
> - <td><a href="{% url recipe recipe.id
> %}">{{ recipe.name }}</a>{% if 'image' in recipe.inherits.split %}<i
> class="icon-hdd"></i>{% endif %}</td> +
> <td><a href="{% url recipe recipe.id %}">{{ recipe.name }}</a>{% if 'image'
> in recipe.inherits.split %}<i class="icon-hdd"></i>{% endif %}{% if
> recipe.blacklisted %}<span class="label label-inverse" title="{{
> recipe.blacklisted }}">blacklisted</span>{% endif %}</td> <td>{{ recipe.pv
> }}</td>
> <td class="span8">{{ recipe.short_desc
> }}</td> </tr>
> @@ -323,6 +323,7 @@
> })
>
> $('.icon-hdd').tooltip({title:"Inherits image"});
> + $('.label-inverse').tooltip();
> });
> });
> </script>
> diff --git a/templates/layerindex/recipedetail.html
> b/templates/layerindex/recipedetail.html index 3b8c79b..7dbb362 100644
> --- a/templates/layerindex/recipedetail.html
> +++ b/templates/layerindex/recipedetail.html
> @@ -30,9 +30,20 @@
> <div class="row-fluid">
>
> <div class="page-header">
> - <h1>{{ recipe.name }} {{ recipe.pv }}</h1>
> + <h1>{{ recipe.name }} {{ recipe.pv }} {% if
> recipe.blacklisted %} <span class="label label-inverse
> valign-middle">blacklisted</span> {% endif %}</h1> </div>
>
> + {% if recipe.blacklisted %}
> + <div class="alert">
> + <div class="row-fluid">
> + <p>This recipe is <strong>blacklisted</strong> by
> the <a href="{% url layer_item recipe.layerbranch.branch.name
> recipe.layerbranch.layer.name %}">{{ recipe.layerbranch.layer.name }}</a>
> layer. The reason provided is:</p> + <blockquote
> class="span7 warn">
> + <p>{{ recipe.blacklisted }}</p>
> + </blockquote>
> + </div>
> + </div>
> + {% endif %}
> +
> <table class="table table-striped table-bordered">
> <tbody>
> <tr>
> diff --git a/templates/layerindex/recipes.html
> b/templates/layerindex/recipes.html index 322d7c6..c2141a4 100644
> --- a/templates/layerindex/recipes.html
> +++ b/templates/layerindex/recipes.html
> @@ -52,7 +52,7 @@
> <tbody>
> {% for recipe in recipe_list %}
> <tr {% if recipe.preferred_count > 0
> %}class="muted"{% endif %}> - <td><a
> href="{% url recipe recipe.id %}">{{ recipe.name }}</a>{% if 'image' in
> recipe.inherits.split %}<i class="icon-hdd"></i>{% endif %}</td> +
> <td><a href="{% url recipe recipe.id %}">{{
> recipe.name }}</a>{% if 'image' in recipe.inherits.split %}<i
> class="icon-hdd"></i>{% endif %}{% if recipe.blacklisted %}<span
> class="label label-inverse" title="{{ recipe.blacklisted
> }}">blacklisted</span>{% endif %}</td> <td>{{ recipe.pv }}</td>
> <td>{{ recipe.short_desc }}</td>
> <td><a href="{% url layer_item url_branch
> recipe.layerbranch.layer.name %}">{{ recipe.layerbranch.layer.name
> }}</a></td> @@ -84,6 +84,7 @@
> firstfield.focus()
>
> $('.icon-hdd').tooltip({title:"Inherits image"});
> + $('.label-inverse').tooltip();
> });
> </script>
> {% endblock %}
This looks great, thanks.
Another thing that just occurred to me though - apologies for not raising it
earlier - for the benefit of newer users it may be useful to explain
implications of the blacklisting. What I'd suggest is we put a line after the
reason on the recipe detail page saying "This means that the recipe will not
be buildable until the PNBLACKLIST value is cleared and the issue that caused
it to be added has been fixed or worked around." (Just on the recipe detail
page - not in the popup.)
Does that sound OK?
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 16+ messages in thread
* strange QA issue - how to ignore automatic so dependency
2015-11-30 22:22 ` Paul Eggleton
@ 2015-11-30 22:42 ` Dvorkin Dmitry
2015-11-30 23:06 ` Khem Raj
2015-12-01 9:40 ` [PATCHv2] [layerindex-web] recipe blacklisted information Martin Jansa
1 sibling, 1 reply; 16+ messages in thread
From: Dvorkin Dmitry @ 2015-11-30 22:42 UTC (permalink / raw)
To: yocto
I'm trying to include binary JDK into my linux image.
just unpacking jdk-...tar.gz into recipe image and packing it into RPM
(I'm using RPM as base of my distribution).
after adding
INSANE_SKIP_${PN} = "file-rdeps ldflags dev-so build-deps"
into recipe I've got no errors or warning while building recipe itself,
RPM is created and it contains some dynamic libraries dependencies....
but I've got error building rootfs with this recipe:
....(skipped)...
Updating cache... ######################################## [100%]
Computing transaction...error: Can't install
tps-jdk-7u60+linux+arm+vfp+hflt-r0@cortexa8hf_vfp_neon: no package
provides libXrender.so.1
I can't include libXrender.so.1 into my image, I can't remove libraries
from JDK.
Is there any way to ignore this dependency?
something like RPM_LDD_IGNORE_CHECK="libX*"
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: strange QA issue - how to ignore automatic so dependency
2015-11-30 22:42 ` strange QA issue - how to ignore automatic so dependency Dvorkin Dmitry
@ 2015-11-30 23:06 ` Khem Raj
2015-11-30 23:15 ` Dvorkin Dmitry
0 siblings, 1 reply; 16+ messages in thread
From: Khem Raj @ 2015-11-30 23:06 UTC (permalink / raw)
To: Dvorkin Dmitry; +Cc: yocto
[-- Attachment #1: Type: text/plain, Size: 1320 bytes --]
> On Nov 30, 2015, at 2:42 PM, Dvorkin Dmitry <dvorkin@tibbo.com> wrote:
>
>
> I'm trying to include binary JDK into my linux image.
> just unpacking jdk-...tar.gz into recipe image and packing it into RPM (I'm using RPM as base of my distribution).
>
> after adding
> INSANE_SKIP_${PN} = "file-rdeps ldflags dev-so build-deps"
> into recipe I've got no errors or warning while building recipe itself,
> RPM is created and it contains some dynamic libraries dependencies....
>
> but I've got error building rootfs with this recipe:
>
> ....(skipped)...
> Updating cache... ######################################## [100%]
>
> Computing transaction...error: Can't install tps-jdk-7u60+linux+arm+vfp+hflt-r0@cortexa8hf_vfp_neon: no package provides libXrender.so.1
>
> I can't include libXrender.so.1 into my image, I can't remove libraries from JDK.
>
> Is there any way to ignore this dependency?
No, and if you ignored it then this binary won’t function as expected on the system. So you should find out providers of missing
rdeps and add them to your image via depends
>
> something like RPM_LDD_IGNORE_CHECK="libX*"
>
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 211 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: strange QA issue - how to ignore automatic so dependency
2015-11-30 23:06 ` Khem Raj
@ 2015-11-30 23:15 ` Dvorkin Dmitry
2015-11-30 23:22 ` Khem Raj
0 siblings, 1 reply; 16+ messages in thread
From: Dvorkin Dmitry @ 2015-11-30 23:15 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto
I know. But
it really does not require to have libX* in the system to successfully
run JDK+our software
We're using simple tar xvzf jdk-...tar.gz in all of our embedded
systems, so I know what I'm talking about, sorry.
This feature blocks my efforts to have a well-designed system with
Poky/Yocto... :(
On 01.12.2015 02:06, Khem Raj wrote:
>> On Nov 30, 2015, at 2:42 PM, Dvorkin Dmitry <dvorkin@tibbo.com> wrote:
>>
>>
>> I'm trying to include binary JDK into my linux image.
>> just unpacking jdk-...tar.gz into recipe image and packing it into RPM (I'm using RPM as base of my distribution).
>>
>> after adding
>> INSANE_SKIP_${PN} = "file-rdeps ldflags dev-so build-deps"
>> into recipe I've got no errors or warning while building recipe itself,
>> RPM is created and it contains some dynamic libraries dependencies....
>>
>> but I've got error building rootfs with this recipe:
>>
>> ....(skipped)...
>> Updating cache... ######################################## [100%]
>>
>> Computing transaction...error: Can't install tps-jdk-7u60+linux+arm+vfp+hflt-r0@cortexa8hf_vfp_neon: no package provides libXrender.so.1
>>
>> I can't include libXrender.so.1 into my image, I can't remove libraries from JDK.
>>
>> Is there any way to ignore this dependency?
> No, and if you ignored it then this binary won’t function as expected on the system. So you should find out providers of missing
> rdeps and add them to your image via depends
>
>> something like RPM_LDD_IGNORE_CHECK="libX*"
>>
>> --
>> _______________________________________________
>> yocto mailing list
>> yocto@yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/yocto
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: strange QA issue - how to ignore automatic so dependency
2015-11-30 23:15 ` Dvorkin Dmitry
@ 2015-11-30 23:22 ` Khem Raj
2015-11-30 23:32 ` Dvorkin Dmitry
0 siblings, 1 reply; 16+ messages in thread
From: Khem Raj @ 2015-11-30 23:22 UTC (permalink / raw)
To: Dvorkin Dmitry; +Cc: yocto
[-- Attachment #1: Type: text/plain, Size: 2281 bytes --]
> On Nov 30, 2015, at 3:15 PM, Dvorkin Dmitry <dvorkin@tibbo.com> wrote:
>
> I know. But
> it really does not require to have libX* in the system to successfully run JDK+our software
> We're using simple tar xvzf jdk-...tar.gz in all of our embedded systems, so I know what I'm talking about, sorry.
you are walking muddy water, I will caution you before I hand a chainsaw to you as I suggest something as below.
you can use patchelf or something like that on these binaries and remove the dependencies after unpacking them
run the .so in question via patchelf --remove-needed <deplib-to-remove>
and that will make shlibs code in OE not flag them
> This feature blocks my efforts to have a well-designed system with Poky/Yocto... :(
Well designed would mean to adhere to prerequisites as needed by prebuilt software you are using
>
>
> On 01.12.2015 02:06, Khem Raj wrote:
>>> On Nov 30, 2015, at 2:42 PM, Dvorkin Dmitry <dvorkin@tibbo.com> wrote:
>>>
>>>
>>> I'm trying to include binary JDK into my linux image.
>>> just unpacking jdk-...tar.gz into recipe image and packing it into RPM (I'm using RPM as base of my distribution).
>>>
>>> after adding
>>> INSANE_SKIP_${PN} = "file-rdeps ldflags dev-so build-deps"
>>> into recipe I've got no errors or warning while building recipe itself,
>>> RPM is created and it contains some dynamic libraries dependencies....
>>>
>>> but I've got error building rootfs with this recipe:
>>>
>>> ....(skipped)...
>>> Updating cache... ######################################## [100%]
>>>
>>> Computing transaction...error: Can't install tps-jdk-7u60+linux+arm+vfp+hflt-r0@cortexa8hf_vfp_neon: no package provides libXrender.so.1
>>>
>>> I can't include libXrender.so.1 into my image, I can't remove libraries from JDK.
>>>
>>> Is there any way to ignore this dependency?
>> No, and if you ignored it then this binary won’t function as expected on the system. So you should find out providers of missing
>> rdeps and add them to your image via depends
>>
>>> something like RPM_LDD_IGNORE_CHECK="libX*"
>>>
>>> --
>>> _______________________________________________
>>> yocto mailing list
>>> yocto@yoctoproject.org
>>> https://lists.yoctoproject.org/listinfo/yocto
>
[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 211 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: strange QA issue - how to ignore automatic so dependency
2015-11-30 23:22 ` Khem Raj
@ 2015-11-30 23:32 ` Dvorkin Dmitry
0 siblings, 0 replies; 16+ messages in thread
From: Dvorkin Dmitry @ 2015-11-30 23:32 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto
On 01.12.2015 02:22, Khem Raj wrote:
>> On Nov 30, 2015, at 3:15 PM, Dvorkin Dmitry <dvorkin@tibbo.com> wrote:
>>
>> I know. But
>> it really does not require to have libX* in the system to successfully run JDK+our software
>> We're using simple tar xvzf jdk-...tar.gz in all of our embedded systems, so I know what I'm talking about, sorry.
> you are walking muddy water, I will caution you before I hand a chainsaw to you as I suggest something as below.
I see. Thank you!
> you can use patchelf or something like that on these binaries and remove the dependencies after unpacking them
> run the .so in question via patchelf --remove-needed <deplib-to-remove>
> and that will make shlibs code in OE not flag them
>
>> This feature blocks my efforts to have a well-designed system with Poky/Yocto... :(
> Well designed would mean to adhere to prerequisites as needed by prebuilt software you are using
>
>>
>> On 01.12.2015 02:06, Khem Raj wrote:
>>>> On Nov 30, 2015, at 2:42 PM, Dvorkin Dmitry <dvorkin@tibbo.com> wrote:
>>>>
>>>>
>>>> I'm trying to include binary JDK into my linux image.
>>>> just unpacking jdk-...tar.gz into recipe image and packing it into RPM (I'm using RPM as base of my distribution).
>>>>
>>>> after adding
>>>> INSANE_SKIP_${PN} = "file-rdeps ldflags dev-so build-deps"
>>>> into recipe I've got no errors or warning while building recipe itself,
>>>> RPM is created and it contains some dynamic libraries dependencies....
>>>>
>>>> but I've got error building rootfs with this recipe:
>>>>
>>>> ....(skipped)...
>>>> Updating cache... ######################################## [100%]
>>>>
>>>> Computing transaction...error: Can't install tps-jdk-7u60+linux+arm+vfp+hflt-r0@cortexa8hf_vfp_neon: no package provides libXrender.so.1
>>>>
>>>> I can't include libXrender.so.1 into my image, I can't remove libraries from JDK.
>>>>
>>>> Is there any way to ignore this dependency?
>>> No, and if you ignored it then this binary won’t function as expected on the system. So you should find out providers of missing
>>> rdeps and add them to your image via depends
>>>
>>>> something like RPM_LDD_IGNORE_CHECK="libX*"
>>>>
>>>> --
>>>> _______________________________________________
>>>> yocto mailing list
>>>> yocto@yoctoproject.org
>>>> https://lists.yoctoproject.org/listinfo/yocto
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
2015-11-30 22:22 ` Paul Eggleton
2015-11-30 22:42 ` strange QA issue - how to ignore automatic so dependency Dvorkin Dmitry
@ 2015-12-01 9:40 ` Martin Jansa
2015-12-01 10:42 ` Barros Pena, Belen
1 sibling, 1 reply; 16+ messages in thread
From: Martin Jansa @ 2015-12-01 9:40 UTC (permalink / raw)
To: Paul Eggleton; +Cc: yocto
[-- Attachment #1: Type: text/plain, Size: 2116 bytes --]
On Tue, Dec 01, 2015 at 11:22:01AM +1300, Paul Eggleton wrote:
> Hi Alex,
>
> On Mon, 30 Nov 2015 16:03:05 Alex Franco wrote:
> > Display blacklisted information for recipes on Layerindex, in the
> > recipe details, as well as the recipe search page, and layer page
> > tables. This information is pulled from the PNBLACKLIST variable.
> > Includes a hover text containing the reason for blacklist labels.
> >
> > Changes to Django and Layerindex files:
> > - models.py, update.py
> > - migration file
> > - templates and static content (stylesheet)
> >
> > [YOCTO #7855]
> >
> > Signed-off-by: Alex Franco <alejandro.franco@linux.intel.com>
> > ---
> > .../0010_auto__add_field_recipe_blacklisted.py | 197
> > +++++++++++++++++++++ layerindex/models.py |
> > 1 +
> > layerindex/static/css/additional.css | 19 +-
> > layerindex/update.py | 1 +
> > templates/layerindex/detail.html | 3 +-
> > templates/layerindex/recipedetail.html | 13 +-
> > templates/layerindex/recipes.html | 3 +-
> > 7 files changed, 232 insertions(+), 5 deletions(-)
> > create mode 100644
> > layerindex/migrations/0010_auto__add_field_recipe_blacklisted.py
> >
> This looks great, thanks.
>
> Another thing that just occurred to me though - apologies for not raising it
> earlier - for the benefit of newer users it may be useful to explain
> implications of the blacklisting. What I'd suggest is we put a line after the
> reason on the recipe detail page saying "This means that the recipe will not
> be buildable until the PNBLACKLIST value is cleared and the issue that caused
> it to be added has been fixed or worked around." (Just on the recipe detail
> page - not in the popup.)
>
> Does that sound OK?
Maybe some more information how to clear PNBLACKLIST (people often don't
know that they can just set it to empty value in their bbappend or even
distro/local config).
--
Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 188 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
2015-12-01 9:40 ` [PATCHv2] [layerindex-web] recipe blacklisted information Martin Jansa
@ 2015-12-01 10:42 ` Barros Pena, Belen
2015-12-01 11:14 ` Martin Jansa
0 siblings, 1 reply; 16+ messages in thread
From: Barros Pena, Belen @ 2015-12-01 10:42 UTC (permalink / raw)
To: Martin Jansa, Eggleton, Paul, Franco, Alejandro; +Cc: yocto@yoctoproject.org
[-- Attachment #1: Type: text/plain, Size: 1771 bytes --]
On 01/12/2015 09:40, "yocto-bounces@yoctoproject.org on behalf of Martin
Jansa" <yocto-bounces@yoctoproject.org on behalf of
martin.jansa@gmail.com> wrote:
>>Another thing that just occurred to me though - apologies for not
>>raising it
>>earlier - for the benefit of newer users it may be useful to explain
>>implications of the blacklisting. What I'd suggest is we put a line
>>after the
>>reason on the recipe detail page saying "This means that the recipe will
>>not
>>be buildable until the PNBLACKLIST value is cleared and the issue that
>>caused
>>it to be added has been fixed or worked around." (Just on the recipe
>>detail
>>page - not in the popup.)
>>Does that sound OK?
>
>Maybe some more information how to clear PNBLACKLIST (people often don't
>know that they can just set it to empty value in their bbappend or even
>distro/local config).
I think explaining what blacklisting means, its implications and how to
clear it is an excellent idea, but it seems there is quite a lot to say,
and the layer index itself might not be the best place to show it all. So
what about adding all this to the documentation, then link to it from the
layer index? The recipe details page would then look like the attached
image.
Alex, sorry for nitpicking: using the .label-inverse class means that the
label in the h1 of the recipe details page also hovers. Only labels with a
tooltip should hover, so maybe we should go back to the extra class, or
just qualify the hover styles so that they only apply to .label-inverse
inside tables (td > .label-inverse:hover). Apologies: I should have picked
this up before you submitted the patch.
Cheers
Belén
>
>--
>Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com
[-- Attachment #2: doc-link.png --]
[-- Type: image/png, Size: 59042 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
2015-12-01 10:42 ` Barros Pena, Belen
@ 2015-12-01 11:14 ` Martin Jansa
[not found] ` <565DDB89.1030005@intel.com>
0 siblings, 1 reply; 16+ messages in thread
From: Martin Jansa @ 2015-12-01 11:14 UTC (permalink / raw)
To: Barros Pena, Belen
Cc: yocto@yoctoproject.org, Franco, Alejandro, Eggleton, Paul
[-- Attachment #1: Type: text/plain, Size: 2018 bytes --]
On Tue, Dec 01, 2015 at 10:42:49AM +0000, Barros Pena, Belen wrote:
>
>
> On 01/12/2015 09:40, "yocto-bounces@yoctoproject.org on behalf of Martin
> Jansa" <yocto-bounces@yoctoproject.org on behalf of
> martin.jansa@gmail.com> wrote:
>
> >>Another thing that just occurred to me though - apologies for not
> >>raising it
> >>earlier - for the benefit of newer users it may be useful to explain
> >>implications of the blacklisting. What I'd suggest is we put a line
> >>after the
> >>reason on the recipe detail page saying "This means that the recipe will
> >>not
> >>be buildable until the PNBLACKLIST value is cleared and the issue that
> >>caused
> >>it to be added has been fixed or worked around." (Just on the recipe
> >>detail
> >>page - not in the popup.)
> >>Does that sound OK?
> >
> >Maybe some more information how to clear PNBLACKLIST (people often don't
> >know that they can just set it to empty value in their bbappend or even
> >distro/local config).
>
> I think explaining what blacklisting means, its implications and how to
> clear it is an excellent idea, but it seems there is quite a lot to say,
> and the layer index itself might not be the best place to show it all. So
> what about adding all this to the documentation, then link to it from the
> layer index? The recipe details page would then look like the attached
> image.
Agreed, LGTM.
>
> Alex, sorry for nitpicking: using the .label-inverse class means that the
> label in the h1 of the recipe details page also hovers. Only labels with a
> tooltip should hover, so maybe we should go back to the extra class, or
> just qualify the hover styles so that they only apply to .label-inverse
> inside tables (td > .label-inverse:hover). Apologies: I should have picked
> this up before you submitted the patch.
>
> Cheers
>
> Belén
>
> >
> >--
> >Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com
>
--
Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 188 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
[not found] ` <565DDB89.1030005@intel.com>
@ 2015-12-01 18:26 ` Alex Franco
2015-12-01 19:11 ` Paul Eggleton
0 siblings, 1 reply; 16+ messages in thread
From: Alex Franco @ 2015-12-01 18:26 UTC (permalink / raw)
To: Martin Jansa, Barros Pena, Belen; +Cc: yocto@yoctoproject.org, Eggleton, Paul
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
@Martin, I think this information about blacklisting would indeed be
very useful, thanks for your input as always.
@Belen, yes indeed I noticed the label also hovers even when no tooltip
is present, this bugged me a little too to be honest! No worries though,
I can fix the hover situation and also add in the link to the
documentation.
@All: I suppose the link should go to:
http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-
PNBLACKLIST
- - Alex Franco
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQEcBAEBAgAGBQJWXeZFAAoJEPR9uwMY2lTL65EH/171Bk40iVaF7Jgg/gdYDOSG
1HS8eYw55ldjEDh8YAGKKdboHyPD8pY65P8lAovY9lzFDP9rx29QO8pKv2CoG48S
9MLjLxrAtRmXpqUWhp5LZ+GKjRNfSvUTnyergS/8uzh6uG0fsAnQ9li4XvHqonAi
c/mMG44tWTYclA4YBVFRLaAR5aDCYbIGZOf7qL79XkdNF3WMOLHPzzeGcZQ8Ch89
/Ox4KxFMfS3jLcn7uMSTGddX5ehjsbA+WvF9sBfeKkjYVzUhMIGJ/r7uNWOeHBwJ
aB4tVHBtGrGHVrstgeKIlpjyppv9qfHReOZG841Sf8XVY02kdX6jH4kwM1Wg11k=
=WLLq
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
2015-12-01 18:26 ` Alex Franco
@ 2015-12-01 19:11 ` Paul Eggleton
2015-12-02 0:47 ` Alex Franco
2015-12-02 11:35 ` Barros Pena, Belen
0 siblings, 2 replies; 16+ messages in thread
From: Paul Eggleton @ 2015-12-01 19:11 UTC (permalink / raw)
To: yocto
On Tue, 01 Dec 2015 12:26:18 Alex Franco wrote:
> @Martin, I think this information about blacklisting would indeed be
> very useful, thanks for your input as always.
>
> @Belen, yes indeed I noticed the label also hovers even when no tooltip
> is present, this bugged me a little too to be honest! No worries though,
> I can fix the hover situation and also add in the link to the
> documentation.
> @All: I suppose the link should go to:
>
> http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-> PNBLACKLIST
Yes, that's really the only place we could link to; unfortunately though I
just noticed there is an obvious mistake in there about inheriting the class
globally within the recipe (a contradiction); it also doesn't mention the
class is inherited globally by default.
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
2015-12-01 19:11 ` Paul Eggleton
@ 2015-12-02 0:47 ` Alex Franco
2015-12-02 11:38 ` Barros Pena, Belen
2015-12-02 11:35 ` Barros Pena, Belen
1 sibling, 1 reply; 16+ messages in thread
From: Alex Franco @ 2015-12-02 0:47 UTC (permalink / raw)
To: Paul Eggleton, yocto
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hmm I swear reading that, the message I get is that one should inherit
the blacklist class in local.conf (if not on there already) and also set
the (varflag) value of that variable for your recipe there.
Perhaps the part that reads "the blacklist class, which the recipe must
inherit globally" suffers from a wording issue, saying "must inherit"
rather than "by default inherits".
I guess next step here's creating a documentation bug report/ticket.
Meanwhile, the changes are ready and showcased here [1]
I'll let you review this before I sent v3 of the patch ;)
@Belen, I did something possibly hacky with the css in order to
accomplish this, the warn blockquote is set to take 100% of the
horizontal space available within the alert div. If that runs counter to
some design philosophy (perhaps specifically since we're using
bootstrap) let me know please :b
The hovering now only works within a TD...
Alex Franco
[1] http://yctb03.ostc.intel.com:9999/
On 12/01/2015 01:11 PM, Paul Eggleton wrote:
> On Tue, 01 Dec 2015 12:26:18 Alex Franco wrote:
>> @Martin, I think this information about blacklisting would indeed be
>> very useful, thanks for your input as always.
>>
>> @Belen, yes indeed I noticed the label also hovers even when no tooltip
>> is present, this bugged me a little too to be honest! No worries though,
>> I can fix the hover situation and also add in the link to the
>> documentation.
>> @All: I suppose the link should go to:
>>
>>
http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-> PNBLACKLIST
>
> Yes, that's really the only place we could link to; unfortunately
though I
> just noticed there is an obvious mistake in there about inheriting the
class
> globally within the recipe (a contradiction); it also doesn't mention the
> class is inherited globally by default.
>
> Cheers,
> Paul
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQEcBAEBAgAGBQJWXj+bAAoJEPR9uwMY2lTLYT4H/1CUZHoE9nSCRhB9zRmbe/gq
fYxLRCHt34DZvTjA5N+KNJd80z9NOo1q6jWKu0Rh6XHQgExTuruzi1nkyJ4BIoRD
ziexugIXyYFJIymT6m38sZfwBV+KA+FSoTKplj+ZjLdC3HzSpKoVmFHO/wx/coC+
s90uyagoFYtAb/cmaLJmZW+q9J9v/UtAop4CD7nuLVhJvVxYIe2/Cub2MGrZy5P/
EcciqfI8Cn/cWoGfptoRmBOA2yjAR1SqZtwWCOLze68eiRkV/P/3uMgMOy9i2feM
l13puV0OVnoxsfTFDuZHzXt/5LHmCdI/URzPK3OAL83QlJtwKck1cLU6Ufywlhc=
=LBgn
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
2015-12-01 19:11 ` Paul Eggleton
2015-12-02 0:47 ` Alex Franco
@ 2015-12-02 11:35 ` Barros Pena, Belen
2015-12-02 20:02 ` Paul Eggleton
1 sibling, 1 reply; 16+ messages in thread
From: Barros Pena, Belen @ 2015-12-02 11:35 UTC (permalink / raw)
To: Eggleton, Paul, yocto@yoctoproject.org
On 01/12/2015 19:11, "Eggleton, Paul" <paul.eggleton@intel.com> wrote:
>On Tue, 01 Dec 2015 12:26:18 Alex Franco wrote:
>> @Martin, I think this information about blacklisting would indeed be
>> very useful, thanks for your input as always.
>>
>> @Belen, yes indeed I noticed the label also hovers even when no tooltip
>> is present, this bugged me a little too to be honest! No worries though,
>> I can fix the hover situation and also add in the link to the
>> documentation.
>> @All: I suppose the link should go to:
>>
>>
>>http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var->
>> PNBLACKLIST
>
>Yes, that's really the only place we could link to; unfortunately though
>I
>just noticed there is an obvious mistake in there about inheriting the
>class
>globally within the recipe (a contradiction); it also doesn't mention the
>class is inherited globally by default.
Could we ask Scott to correct the mistake and the omission?
Belén
>
>Cheers,
>Paul
>
>--
>Paul Eggleton
>Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
2015-12-02 0:47 ` Alex Franco
@ 2015-12-02 11:38 ` Barros Pena, Belen
0 siblings, 0 replies; 16+ messages in thread
From: Barros Pena, Belen @ 2015-12-02 11:38 UTC (permalink / raw)
To: Alex Franco, Eggleton, Paul, yocto@yoctoproject.org
On 02/12/2015 00:47, "Alex Franco" <alejandro.franco@linux.intel.com>
wrote:
>
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Hmm I swear reading that, the message I get is that one should inherit
>the blacklist class in local.conf (if not on there already) and also set
>the (varflag) value of that variable for your recipe there.
>
>Perhaps the part that reads "the blacklist class, which the recipe must
>inherit globally" suffers from a wording issue, saying "must inherit"
>rather than "by default inherits".
>
>I guess next step here's creating a documentation bug report/ticket.
>
>Meanwhile, the changes are ready and showcased here [1]
>
>I'll let you review this before I sent v3 of the patch ;)
>
>@Belen, I did something possibly hacky with the css in order to
>accomplish this, the warn blockquote is set to take 100% of the
>horizontal space available within the alert div. If that runs counter to
>some design philosophy (perhaps specifically since we're using
>bootstrap) let me know please :b
>
>The hovering now only works within a TD...
This works for me :)
Thanks!
Belén
>
>Alex Franco
>
>[1] http://yctb03.ostc.intel.com:9999/
>
>On 12/01/2015 01:11 PM, Paul Eggleton wrote:
>> On Tue, 01 Dec 2015 12:26:18 Alex Franco wrote:
>>> @Martin, I think this information about blacklisting would indeed be
>>> very useful, thanks for your input as always.
>>>
>>> @Belen, yes indeed I noticed the label also hovers even when no tooltip
>>> is present, this bugged me a little too to be honest! No worries
>>>though,
>>> I can fix the hover situation and also add in the link to the
>>> documentation.
>>> @All: I suppose the link should go to:
>>>
>>>
>http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var->
>PNBLACKLIST
>>
>> Yes, that's really the only place we could link to; unfortunately
>though I
>> just noticed there is an obvious mistake in there about inheriting the
>class
>> globally within the recipe (a contradiction); it also doesn't mention
>>the
>> class is inherited globally by default.
>>
>> Cheers,
>> Paul
>>
>
>-----BEGIN PGP SIGNATURE-----
>Version: GnuPG v2
>
>iQEcBAEBAgAGBQJWXj+bAAoJEPR9uwMY2lTLYT4H/1CUZHoE9nSCRhB9zRmbe/gq
>fYxLRCHt34DZvTjA5N+KNJd80z9NOo1q6jWKu0Rh6XHQgExTuruzi1nkyJ4BIoRD
>ziexugIXyYFJIymT6m38sZfwBV+KA+FSoTKplj+ZjLdC3HzSpKoVmFHO/wx/coC+
>s90uyagoFYtAb/cmaLJmZW+q9J9v/UtAop4CD7nuLVhJvVxYIe2/Cub2MGrZy5P/
>EcciqfI8Cn/cWoGfptoRmBOA2yjAR1SqZtwWCOLze68eiRkV/P/3uMgMOy9i2feM
>l13puV0OVnoxsfTFDuZHzXt/5LHmCdI/URzPK3OAL83QlJtwKck1cLU6Ufywlhc=
>=LBgn
>-----END PGP SIGNATURE-----
>
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv2] [layerindex-web] recipe blacklisted information
2015-12-02 11:35 ` Barros Pena, Belen
@ 2015-12-02 20:02 ` Paul Eggleton
0 siblings, 0 replies; 16+ messages in thread
From: Paul Eggleton @ 2015-12-02 20:02 UTC (permalink / raw)
To: Barros Pena, Belen; +Cc: yocto@yoctoproject.org
On Thu, 03 Dec 2015 00:35:29 Barros Pena, Belen wrote:
> On 01/12/2015 19:11, "Eggleton, Paul" <paul.eggleton@intel.com> wrote:
> >On Tue, 01 Dec 2015 12:26:18 Alex Franco wrote:
> >> @Martin, I think this information about blacklisting would indeed be
> >> very useful, thanks for your input as always.
> >>
> >> @Belen, yes indeed I noticed the label also hovers even when no tooltip
> >> is present, this bugged me a little too to be honest! No worries though,
> >> I can fix the hover situation and also add in the link to the
> >> documentation.
> >>
> >> @All: I suppose the link should go to:
> >>http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var->
> >>
> >> PNBLACKLIST
> >
> >Yes, that's really the only place we could link to; unfortunately though
> >I
> >just noticed there is an obvious mistake in there about inheriting the
> >class
> >globally within the recipe (a contradiction); it also doesn't mention the
> >class is inherited globally by default.
>
> Could we ask Scott to correct the mistake and the omission?
It's on my documentation todo list; I will probably file a bug.
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2015-12-02 20:02 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-30 22:03 [PATCHv2] [layerindex-web] recipe blacklisted information Alex Franco
2015-11-30 22:22 ` Paul Eggleton
2015-11-30 22:42 ` strange QA issue - how to ignore automatic so dependency Dvorkin Dmitry
2015-11-30 23:06 ` Khem Raj
2015-11-30 23:15 ` Dvorkin Dmitry
2015-11-30 23:22 ` Khem Raj
2015-11-30 23:32 ` Dvorkin Dmitry
2015-12-01 9:40 ` [PATCHv2] [layerindex-web] recipe blacklisted information Martin Jansa
2015-12-01 10:42 ` Barros Pena, Belen
2015-12-01 11:14 ` Martin Jansa
[not found] ` <565DDB89.1030005@intel.com>
2015-12-01 18:26 ` Alex Franco
2015-12-01 19:11 ` Paul Eggleton
2015-12-02 0:47 ` Alex Franco
2015-12-02 11:38 ` Barros Pena, Belen
2015-12-02 11:35 ` Barros Pena, Belen
2015-12-02 20:02 ` 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.