Save recipe source URLs

Save each remote SRC_URI so we can use these for the recipe reporting
system. This replaces an earlier implementation in the rrs branch where
we simply stored SRC_URI verbatim.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
Paul Eggleton 2018-01-09 09:46:40 +13:00
parent c183b360ff
commit ebceecb7fd
4 changed files with 47 additions and 1 deletions

View File

@ -112,6 +112,9 @@ class DynamicBuildDepAdmin(admin.ModelAdmin):
search_fields = ['name']
filter_horizontal = ('package_configs',)
class SourceAdmin(admin.ModelAdmin):
pass
class ClassicRecipeAdmin(admin.ModelAdmin):
search_fields = ['filename', 'pn']
list_filter = ['layerbranch__layer__name', 'layerbranch__branch__name']
@ -184,6 +187,7 @@ admin.site.register(LayerUpdate, LayerUpdateAdmin)
admin.site.register(PackageConfig, PackageConfigAdmin)
admin.site.register(StaticBuildDep, StaticBuildDepAdmin)
admin.site.register(DynamicBuildDep, DynamicBuildDepAdmin)
admin.site.register(Source, SourceAdmin)
admin.site.register(Recipe, RecipeAdmin)
admin.site.register(RecipeFileDependency)
admin.site.register(Machine, MachineAdmin)

View File

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('layerindex', '0010_add_dependencies'),
]
operations = [
migrations.CreateModel(
name='Source',
fields=[
('id', models.AutoField(verbose_name='ID', primary_key=True, serialize=False, auto_created=True)),
('url', models.CharField(max_length=255)),
('recipe', models.ForeignKey(to='layerindex.Recipe')),
],
),
]

View File

@ -378,6 +378,13 @@ class Recipe(models.Model):
def __str__(self):
return os.path.join(self.filepath, self.filename)
class Source(models.Model):
recipe = models.ForeignKey(Recipe)
url = models.CharField(max_length=255)
def __str__(self):
return '%s - %s' % (self.recipe.pn, self.url)
class PackageConfig(models.Model):
recipe = models.ForeignKey(Recipe)
feature = models.CharField(max_length=255)

View File

@ -59,7 +59,7 @@ def update_recipe_file(tinfoil, data, path, recipe, layerdir_start, repodir):
from django.db import DatabaseError
fn = str(os.path.join(path, recipe.filename))
from layerindex.models import PackageConfig, StaticBuildDep, DynamicBuildDep
from layerindex.models import PackageConfig, StaticBuildDep, DynamicBuildDep, Source
try:
logger.debug('Updating recipe %s' % fn)
if hasattr(tinfoil, 'parse_recipe_file'):
@ -92,6 +92,19 @@ def update_recipe_file(tinfoil, data, path, recipe, layerdir_start, repodir):
static_build_dependency.save()
static_build_dependency.recipes.add(recipe)
# Handle sources
old_urls = list(recipe.source_set.values_list('url', flat=True))
for url in (envdata.getVar('SRC_URI', True) or '').split():
if not url.startswith('file://'):
url = url.split(';')[0]
if url in old_urls:
old_urls.remove(url)
else:
src = Source(recipe=recipe, url=url)
src.save()
for url in old_urls:
recipe.source_set.filter(url=url).delete()
# Handle the PACKAGECONFIG variables for this recipe
PackageConfig.objects.filter(recipe=recipe).delete()
package_config_VarFlags = envdata.getVarFlags("PACKAGECONFIG")