diff options
author | Liam R. Howlett <Liam.Howlett@WindRiver.com> | 2016-10-06 12:59:00 -0400 |
---|---|---|
committer | Paul Eggleton <paul.eggleton@linux.intel.com> | 2016-10-18 16:42:16 +1300 |
commit | 65f0b71adee6b736b49272f0c76fb8385088433b (patch) | |
tree | 6c7bfdbb1d58b11f2f74be865bc14d5296cc20d9 | |
parent | 540336eddec99449192a083b78ab662aeafc8a62 (diff) | |
download | openembedded-core-contrib-65f0b71adee6b736b49272f0c76fb8385088433b.tar.gz |
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 <Liam.Howlett@WindRiver.com>
Added associated migration.
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-rw-r--r-- | layerindex/migrations/0003_auto_20161011_0304.py | 24 | ||||
-rw-r--r-- | layerindex/models.py | 2 | ||||
-rw-r--r-- | layerindex/update_layer.py | 1 | ||||
-rw-r--r-- | layerindex/utils.py | 20 |
4 files changed, 45 insertions, 2 deletions
diff --git a/layerindex/migrations/0003_auto_20161011_0304.py b/layerindex/migrations/0003_auto_20161011_0304.py new file mode 100644 index 0000000000..e0ccdff2b2 --- /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 2343ba7b04..cbfb244ec9 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 b485fc1af0..74412c1c22 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 018478e540..170d202b27 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 |