aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiam R. Howlett <Liam.Howlett@WindRiver.com>2016-10-06 13:30:53 -0400
committerPaul Eggleton <paul.eggleton@linux.intel.com>2016-10-18 16:42:16 +1300
commit61845b7465f1d26d58ae9be9fae7d234b4ad2ba9 (patch)
tree2fe7322db4dcf31688a96e42249e3bea7aad10a6
parent65f0b71adee6b736b49272f0c76fb8385088433b (diff)
downloadopenembedded-core-contrib-61845b7465f1d26d58ae9be9fae7d234b4ad2ba9.tar.gz
layerindexer: Add layer recommends support
Parse layer.conf and add dependencies that are not required from LAYERRECOMMENDS_<name>. Update the layerindex/template to support recommends. Uses bitbake parsing code & checks versions. Signed-off-by: Liam R. Howlett <Liam.Howlett@WindRiver.com> Added associated migration. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-rw-r--r--layerindex/migrations/0004_layerdependency_required.py19
-rw-r--r--layerindex/models.py7
-rwxr-xr-xlayerindex/tools/import_layer.py2
-rwxr-xr-xlayerindex/update.py1
-rw-r--r--layerindex/update_layer.py1
-rw-r--r--layerindex/utils.py9
-rw-r--r--templates/layerindex/detail.html32
7 files changed, 57 insertions, 14 deletions
diff --git a/layerindex/migrations/0004_layerdependency_required.py b/layerindex/migrations/0004_layerdependency_required.py
new file mode 100644
index 0000000000..0700fce960
--- /dev/null
+++ b/layerindex/migrations/0004_layerdependency_required.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('layerindex', '0003_auto_20161011_0304'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='layerdependency',
+ name='required',
+ field=models.BooleanField(default=True),
+ ),
+ ]
diff --git a/layerindex/models.py b/layerindex/models.py
index cbfb244ec9..869d4a3e10 100644
--- a/layerindex/models.py
+++ b/layerindex/models.py
@@ -211,6 +211,12 @@ class LayerBranch(models.Model):
return "%s: %s" % (self.layer.name, self.branch.name)
+ def get_required(self):
+ return self.dependencies_set.filter(required=True)
+
+ def get_recommends(self):
+ return self.dependencies_set.filter(required=False)
+
class LayerMaintainer(models.Model):
MAINTAINER_STATUS_CHOICES = (
('A', 'Active'),
@@ -232,6 +238,7 @@ class LayerMaintainer(models.Model):
class LayerDependency(models.Model):
layerbranch = models.ForeignKey(LayerBranch, related_name='dependencies_set')
dependency = models.ForeignKey(LayerItem, related_name='dependents_set')
+ required = models.BooleanField(default=True)
class Meta:
verbose_name_plural = "Layer dependencies"
diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/import_layer.py
index 1daaeb2b61..377a0f099d 100755
--- a/layerindex/tools/import_layer.py
+++ b/layerindex/tools/import_layer.py
@@ -382,7 +382,7 @@ def main():
layerconfparser.shutdown()
if config_data:
utils.add_dependencies(layerbranch, config_data, logger=logger)
-
+ utils.add_recommends(layerbranch, config_data, logger=logger)
# Get some extra meta-information
readme_files = glob.glob(os.path.join(layerdir, 'README*'))
diff --git a/layerindex/update.py b/layerindex/update.py
index 8684d3607d..6f930997c4 100755
--- a/layerindex/update.py
+++ b/layerindex/update.py
@@ -235,6 +235,7 @@ def main():
continue
utils.add_dependencies(layerbranch, config_data, logger=logger)
+ utils.add_recommends(layerbranch, config_data, logger=logger)
finally:
layerconfparser.shutdown()
diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py
index 74412c1c22..4f6e16012b 100644
--- a/layerindex/update_layer.py
+++ b/layerindex/update_layer.py
@@ -283,6 +283,7 @@ def main():
layerconfparser.shutdown()
sys.exit(1)
utils.add_dependencies(layerbranch, layer_config_data, logger=logger)
+ utils.add_recommends(layerbranch, layer_config_data, logger=logger)
utils.set_layerbranch_collection_version(layerbranch, layer_config_data, logger=logger)
layerbranch.save()
diff --git a/layerindex/utils.py b/layerindex/utils.py
index 170d202b27..484d3fe441 100644
--- a/layerindex/utils.py
+++ b/layerindex/utils.py
@@ -62,9 +62,12 @@ def get_dependency_layer(depname, version_str=None, logger=None):
return None
def add_dependencies(layerbranch, config_data, logger=None):
- _add_dependency("LAYERDEPENDS", 'dependency', layerbranch, config_data, logger)
+ _add_dependency("LAYERDEPENDS", 'dependency', layerbranch, config_data, logger=logger)
-def _add_dependency(var, name, layerbranch, config_data, logger=None):
+def add_recommends(layerbranch, config_data, logger=None):
+ _add_dependency("LAYERRECOMMENDS", 'recommends', layerbranch, config_data, logger=logger, required=False)
+
+def _add_dependency(var, name, layerbranch, config_data, logger=None, required=True):
from layerindex.models import LayerBranch, LayerDependency
layer_name = layerbranch.layer.name
@@ -97,6 +100,7 @@ def _add_dependency(var, name, layerbranch, config_data, logger=None):
logger.error('Error getting %s %s for %s\n%s' %(name, dep. layer_name, str(vse)))
continue
+ # No layer found.
if not dep_layer:
if logger:
logger.error('Cannot resolve %s %s (version %s) for %s' % (name, dep, ver_str, layer_name))
@@ -114,6 +118,7 @@ def _add_dependency(var, name, layerbranch, config_data, logger=None):
layerdep = LayerDependency()
layerdep.layerbranch = layerbranch
layerdep.dependency = dep_layer
+ layerdep.required = required
layerdep.save()
def set_layerbranch_collection_version(layerbranch, config_data, logger=None):
diff --git a/templates/layerindex/detail.html b/templates/layerindex/detail.html
index 4bd7ecf657..9d3ee05fa8 100644
--- a/templates/layerindex/detail.html
+++ b/templates/layerindex/detail.html
@@ -139,17 +139,27 @@
<div class="span4 pull-right description">
{% if layerbranch.dependencies_set.count > 0 %}
- <div class="well dependency-well">
- <h3>Dependencies </h3>
- <p>The {{ layeritem.name }} layer depends upon:</p>
- <ul>
- {% for dep in layerbranch.dependencies_set.all %}
- <li><a href="{% url 'layer_item' url_branch dep.dependency.name %}">{{ dep.dependency.name }}</a></li>
- {% endfor %}
- </ul>
- </div> <!-- end of well -->
- {% endif %}
-
+ <div class="well dependency-well">
+ {% if layerbranch.get_required.count > 0 %}
+ <h3>Dependencies </h3>
+ <p>The {{ layeritem.name }} layer depends upon:</p>
+ <ul>
+ {% for dep in layerbranch.get_required %}
+ <li><a href="{% url 'layer_item' url_branch dep.dependency.name %}">{{ dep.dependency.name }}</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %} <!-- end of layerbranch.get_required.count -->
+ {% if layerbranch.get_recommends.count > 0 %}
+ <h3>Recommends </h3>
+ <p>The {{ layeritem.name }} layer recommends:</p>
+ <ul>
+ {% for rec in layerbranch.get_recommends %}
+ <li><a href="{% url 'layer_item' url_branch rec.dependency.name %}">{{ rec.dependency.name }}</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %} <!-- end of layerbranch.get_recommends.count -->
+ </div> <!-- end of well -->
+ {% endif %} <!-- end of layerbranch.dependencies_set.count -->
</div> <!-- end of span4 -->
</div> <!-- end of row-fluid -->
</div> <!-- end of container-fluid -->