aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiam R. Howlett <Liam.Howlett@WindRiver.com>2016-10-06 12:59:00 -0400
committerPaul Eggleton <paul.eggleton@linux.intel.com>2016-10-18 16:42:16 +1300
commit65f0b71adee6b736b49272f0c76fb8385088433b (patch)
tree6c7bfdbb1d58b11f2f74be865bc14d5296cc20d9
parent540336eddec99449192a083b78ab662aeafc8a62 (diff)
downloadopenembedded-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.py24
-rw-r--r--layerindex/models.py2
-rw-r--r--layerindex/update_layer.py1
-rw-r--r--layerindex/utils.py20
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