mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-19 20:59:01 +02:00
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>
This commit is contained in:
parent
65f0b71ade
commit
61845b7465
19
layerindex/migrations/0004_layerdependency_required.py
Normal file
19
layerindex/migrations/0004_layerdependency_required.py
Normal file
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
|
@ -211,6 +211,12 @@ class LayerBranch(models.Model):
|
||||||
return "%s: %s" % (self.layer.name, self.branch.name)
|
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):
|
class LayerMaintainer(models.Model):
|
||||||
MAINTAINER_STATUS_CHOICES = (
|
MAINTAINER_STATUS_CHOICES = (
|
||||||
('A', 'Active'),
|
('A', 'Active'),
|
||||||
|
@ -232,6 +238,7 @@ class LayerMaintainer(models.Model):
|
||||||
class LayerDependency(models.Model):
|
class LayerDependency(models.Model):
|
||||||
layerbranch = models.ForeignKey(LayerBranch, related_name='dependencies_set')
|
layerbranch = models.ForeignKey(LayerBranch, related_name='dependencies_set')
|
||||||
dependency = models.ForeignKey(LayerItem, related_name='dependents_set')
|
dependency = models.ForeignKey(LayerItem, related_name='dependents_set')
|
||||||
|
required = models.BooleanField(default=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name_plural = "Layer dependencies"
|
verbose_name_plural = "Layer dependencies"
|
||||||
|
|
|
@ -382,7 +382,7 @@ def main():
|
||||||
layerconfparser.shutdown()
|
layerconfparser.shutdown()
|
||||||
if config_data:
|
if config_data:
|
||||||
utils.add_dependencies(layerbranch, config_data, logger=logger)
|
utils.add_dependencies(layerbranch, config_data, logger=logger)
|
||||||
|
utils.add_recommends(layerbranch, config_data, logger=logger)
|
||||||
|
|
||||||
# Get some extra meta-information
|
# Get some extra meta-information
|
||||||
readme_files = glob.glob(os.path.join(layerdir, 'README*'))
|
readme_files = glob.glob(os.path.join(layerdir, 'README*'))
|
||||||
|
|
|
@ -235,6 +235,7 @@ def main():
|
||||||
continue
|
continue
|
||||||
|
|
||||||
utils.add_dependencies(layerbranch, config_data, logger=logger)
|
utils.add_dependencies(layerbranch, config_data, logger=logger)
|
||||||
|
utils.add_recommends(layerbranch, config_data, logger=logger)
|
||||||
finally:
|
finally:
|
||||||
layerconfparser.shutdown()
|
layerconfparser.shutdown()
|
||||||
|
|
||||||
|
|
|
@ -283,6 +283,7 @@ def main():
|
||||||
layerconfparser.shutdown()
|
layerconfparser.shutdown()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
utils.add_dependencies(layerbranch, layer_config_data, logger=logger)
|
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)
|
utils.set_layerbranch_collection_version(layerbranch, layer_config_data, logger=logger)
|
||||||
layerbranch.save()
|
layerbranch.save()
|
||||||
|
|
||||||
|
|
|
@ -62,9 +62,12 @@ def get_dependency_layer(depname, version_str=None, logger=None):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def add_dependencies(layerbranch, config_data, logger=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
|
from layerindex.models import LayerBranch, LayerDependency
|
||||||
|
|
||||||
layer_name = layerbranch.layer.name
|
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)))
|
logger.error('Error getting %s %s for %s\n%s' %(name, dep. layer_name, str(vse)))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# No layer found.
|
||||||
if not dep_layer:
|
if not dep_layer:
|
||||||
if logger:
|
if logger:
|
||||||
logger.error('Cannot resolve %s %s (version %s) for %s' % (name, dep, ver_str, layer_name))
|
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 = LayerDependency()
|
||||||
layerdep.layerbranch = layerbranch
|
layerdep.layerbranch = layerbranch
|
||||||
layerdep.dependency = dep_layer
|
layerdep.dependency = dep_layer
|
||||||
|
layerdep.required = required
|
||||||
layerdep.save()
|
layerdep.save()
|
||||||
|
|
||||||
def set_layerbranch_collection_version(layerbranch, config_data, logger=None):
|
def set_layerbranch_collection_version(layerbranch, config_data, logger=None):
|
||||||
|
|
|
@ -140,16 +140,26 @@
|
||||||
<div class="span4 pull-right description">
|
<div class="span4 pull-right description">
|
||||||
{% if layerbranch.dependencies_set.count > 0 %}
|
{% if layerbranch.dependencies_set.count > 0 %}
|
||||||
<div class="well dependency-well">
|
<div class="well dependency-well">
|
||||||
|
{% if layerbranch.get_required.count > 0 %}
|
||||||
<h3>Dependencies </h3>
|
<h3>Dependencies </h3>
|
||||||
<p>The {{ layeritem.name }} layer depends upon:</p>
|
<p>The {{ layeritem.name }} layer depends upon:</p>
|
||||||
<ul>
|
<ul>
|
||||||
{% for dep in layerbranch.dependencies_set.all %}
|
{% for dep in layerbranch.get_required %}
|
||||||
<li><a href="{% url 'layer_item' url_branch dep.dependency.name %}">{{ dep.dependency.name }}</a></li>
|
<li><a href="{% url 'layer_item' url_branch dep.dependency.name %}">{{ dep.dependency.name }}</a></li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</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 -->
|
</div> <!-- end of well -->
|
||||||
{% endif %}
|
{% endif %} <!-- end of layerbranch.dependencies_set.count -->
|
||||||
|
|
||||||
</div> <!-- end of span4 -->
|
</div> <!-- end of span4 -->
|
||||||
</div> <!-- end of row-fluid -->
|
</div> <!-- end of row-fluid -->
|
||||||
</div> <!-- end of container-fluid -->
|
</div> <!-- end of container-fluid -->
|
||||||
|
|
Loading…
Reference in New Issue
Block a user