From 65f0b71adee6b736b49272f0c76fb8385088433b Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Thu, 6 Oct 2016 12:59:00 -0400 Subject: [PATCH] layerindex: Add collection and version to layerbranch Collection and version will be pulled from the layer.conf if it exists and dependencies will be resolved by first checking for layers with the dependency name and then checking for collections. Signed-off-by: Liam R. Howlett Added associated migration. Signed-off-by: Mark Hatle --- .../migrations/0003_auto_20161011_0304.py | 24 +++++++++++++++++++ layerindex/models.py | 2 ++ layerindex/update_layer.py | 1 + layerindex/utils.py | 20 ++++++++++++++-- 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 layerindex/migrations/0003_auto_20161011_0304.py diff --git a/layerindex/migrations/0003_auto_20161011_0304.py b/layerindex/migrations/0003_auto_20161011_0304.py new file mode 100644 index 0000000..e0ccdff --- /dev/null +++ b/layerindex/migrations/0003_auto_20161011_0304.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('layerindex', '0002_distro'), + ] + + operations = [ + migrations.AddField( + model_name='layerbranch', + name='collection', + field=models.CharField(max_length=40, help_text='Name of the layer that could be used in the list of dependencies - can only contain letters, numbers and dashes', verbose_name='Layer Collection', null=True), + ), + migrations.AddField( + model_name='layerbranch', + name='version', + field=models.CharField(max_length=10, blank=True, help_text='The layer version for this particular branch.', verbose_name='Layer Version', null=True), + ), + ] diff --git a/layerindex/models.py b/layerindex/models.py index 2343ba7..cbfb244 100644 --- a/layerindex/models.py +++ b/layerindex/models.py @@ -130,6 +130,8 @@ class LayerItem(models.Model): class LayerBranch(models.Model): layer = models.ForeignKey(LayerItem) branch = models.ForeignKey(Branch) + collection = models.CharField('Layer Collection', max_length=40, null=True, help_text='Name of the layer that could be used in the list of dependencies - can only contain letters, numbers and dashes') + version = models.CharField('Layer Version', max_length=10, null=True, blank=True, help_text='The layer version for this particular branch.') vcs_subdir = models.CharField('Repository subdirectory', max_length=40, blank=True, help_text='Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)') vcs_last_fetch = models.DateTimeField('Last successful fetch', blank=True, null=True) vcs_last_rev = models.CharField('Last revision fetched', max_length=80, blank=True) diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py index b485fc1..74412c1 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.set_layerbranch_collection_version(layerbranch, layer_config_data, logger=logger) layerbranch.save() layerrecipes = Recipe.objects.filter(layerbranch=layerbranch) diff --git a/layerindex/utils.py b/layerindex/utils.py index 018478e..170d202 100644 --- a/layerindex/utils.py +++ b/layerindex/utils.py @@ -30,8 +30,10 @@ def get_layer(layername): def get_dependency_layer(depname, version_str=None, logger=None): from layerindex.models import LayerItem, LayerBranch - # Get any LayerBranch with a layer that has a name that matches the depname - res = list(LayerBranch.objects.filter(layer__name=depname)) + # Get any LayerBranch with a layer that has a name that matches depmod, or + # a LayerBranch that has the collection name depmod. + res = list(LayerBranch.objects.filter(layer__name=depname)) + \ + list(LayerBranch.objects.filter(collection=depname)) # Nothing found, return. if not res: @@ -68,6 +70,10 @@ def _add_dependency(var, name, layerbranch, config_data, logger=None): layer_name = layerbranch.layer.name var_name = layer_name + if layerbranch.collection: + var_name = layerbranch.collection + + dep_list = config_data.getVar("%s_%s" % (var, var_name), True) if not dep_list: @@ -104,11 +110,21 @@ def _add_dependency(var, name, layerbranch, config_data, logger=None): if logger: logger.debug('Adding %s %s to %s' % (name, dep_layer.name, layer_name)) + layerdep = LayerDependency() layerdep.layerbranch = layerbranch layerdep.dependency = dep_layer layerdep.save() +def set_layerbranch_collection_version(layerbranch, config_data, logger=None): + + layerbranch.collection = config_data.getVar('BBFILE_COLLECTIONS', True) + ver_str = "LAYERVERSION_" + if layerbranch.collection: + layerbranch.collection = layerbranch.collection.strip() + ver_str += layerbranch.collection + layerbranch.version = config_data.getVar(ver_str, True) + def setup_tinfoil(bitbakepath, enable_tracking): sys.path.insert(0, bitbakepath + '/lib') import bb.tinfoil