From e73c4d7685a3bd6b806a8f1a3600a3a86266f0b6 Mon Sep 17 00:00:00 2001 From: David Reyna Date: Mon, 28 Aug 2023 01:45:19 -0700 Subject: toaster: import only used layers If you import a build directory, Toaster still adds openembedded-core, meta-poky and meta-yocto-bsp to the newly created project. Toaster should only be including in the project the layers that it imported. [YOCTO #13764] Signed-off-by: Kieran McNulty Signed-off-by: David Reyna Signed-off-by: Alexandre Belloni --- lib/toaster/orm/models.py | 28 +++++++++++----------- lib/toaster/toastergui/views.py | 2 +- .../toastermain/management/commands/buildimport.py | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/toaster/orm/models.py b/lib/toaster/orm/models.py index 2cb7d7e04..f9fcf9e4f 100644 --- a/lib/toaster/orm/models.py +++ b/lib/toaster/orm/models.py @@ -107,7 +107,7 @@ class ToasterSetting(models.Model): class ProjectManager(models.Manager): - def create_project(self, name, release, existing_project=None): + def create_project(self, name, release, existing_project=None, imported=False): if existing_project and (release is not None): prj = existing_project prj.bitbake_version = release.bitbake_version @@ -134,19 +134,19 @@ class ProjectManager(models.Manager): if release is None: return prj - - for rdl in release.releasedefaultlayer_set.all(): - lv = Layer_Version.objects.filter( - layer__name=rdl.layer_name, - release=release).first() - - if lv: - ProjectLayer.objects.create(project=prj, - layercommit=lv, - optional=False) - else: - logger.warning("Default project layer %s not found" % - rdl.layer_name) + if not imported: + for rdl in release.releasedefaultlayer_set.all(): + lv = Layer_Version.objects.filter( + layer__name=rdl.layer_name, + release=release).first() + + if lv: + ProjectLayer.objects.create(project=prj, + layercommit=lv, + optional=False) + else: + logger.warning("Default project layer %s not found" % + rdl.layer_name) return prj diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py index bf92510cd..552ff1649 100644 --- a/lib/toaster/toastergui/views.py +++ b/lib/toaster/toastergui/views.py @@ -1404,7 +1404,7 @@ if True: if not os.path.isdir('%s/conf' % request.POST['importdir']): raise BadParameterException("Bad path or missing 'conf' directory (%s)" % request.POST['importdir']) from django.core import management - management.call_command('buildimport', '--command=import', '--name=%s' % request.POST['projectname'], '--path=%s' % request.POST['importdir'], interactive=False) + management.call_command('buildimport', '--command=import', '--name=%s' % request.POST['projectname'], '--path=%s' % request.POST['importdir']) prj = Project.objects.get(name = request.POST['projectname']) prj.merged_attr = True prj.save() diff --git a/lib/toaster/toastermain/management/commands/buildimport.py b/lib/toaster/toastermain/management/commands/buildimport.py index e25b55e5a..f7139aa04 100644 --- a/lib/toaster/toastermain/management/commands/buildimport.py +++ b/lib/toaster/toastermain/management/commands/buildimport.py @@ -545,7 +545,7 @@ class Command(BaseCommand): # Find the directory's release, and promote to default_release if local paths release = self.find_import_release(layers_list,lv_dict,default_release) # create project, SANITY: reuse any project of same name - project = Project.objects.create_project(project_name,release,project) + project = Project.objects.create_project(project_name,release,project, imported=True) # Apply any new layers or variables self.apply_conf_variables(project,layers_list,lv_dict,release) # WORKAROUND: since we now derive the release, redirect 'newproject_specific' to 'project_specific' -- cgit 1.2.3-korg