toaster.lists.yoctoproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] toaster: layerindex updater Take into account layers being predefined
@ 2016-11-04 16:42 Michael Wood
  2016-11-04 16:42 ` [PATCH 2/2] toaster: orm/fixtures Add the master release and correct morty release Michael Wood
  2016-11-05  3:37 ` [PATCH 1/2] toaster: layerindex updater Take into account layers being predefined Brian Avery
  0 siblings, 2 replies; 7+ messages in thread
From: Michael Wood @ 2016-11-04 16:42 UTC (permalink / raw)
  To: toaster

As we can now provide layer definitions through fixtures we need to be
more clever how we update the metadata in the database to avoid
duplicate metadata being created. To do this we make more effort to
match existing data in the database and update only the fields which
will be better provided by the layer index.

This removes the need for us to special case layers which are provided
as part of poky such as openembedded-core or meta-poky which exist on
the layerindex but with different git urls.

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
---
 .../toaster/orm/management/commands/lsupdates.py   | 60 +++++++---------------
 1 file changed, 19 insertions(+), 41 deletions(-)

diff --git a/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
index 8ff120e..688918e 100644
--- a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
+++ b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
@@ -154,41 +154,17 @@ class Command(NoArgsCommand):
 
         total = len(layers_info)
         for i, li in enumerate(layers_info):
-            # Special case for the openembedded-core layer
-            if li['name'] == oe_core_layer:
-                try:
-                    # If we have an existing openembedded-core for example
-                    # from the toasterconf.json augment the info using the
-                    # layerindex rather than duplicate it
-                    oe_core_l = Layer.objects.get(name=oe_core_layer)
-                    # Take ownership of the layer as now coming from the
-                    # layerindex
-                    oe_core_l.summary = li['summary']
-                    oe_core_l.description = li['description']
-                    oe_core_l.vcs_web_url = li['vcs_web_url']
-                    oe_core_l.vcs_web_tree_base_url = \
-                        li['vcs_web_tree_base_url']
-                    oe_core_l.vcs_web_file_base_url = \
-                        li['vcs_web_file_base_url']
-
-                    oe_core_l.save()
-                    li_layer_id_to_toaster_layer_id[li['id']] = oe_core_l.pk
-                    self.mini_progress("layers", i, total)
-                    continue
-
-                except Layer.DoesNotExist:
-                    pass
-
             try:
-                l, created = Layer.objects.get_or_create(name=li['name'],
-                                                         vcs_url=li['vcs_url'])
+                l, created = Layer.objects.get_or_create(name=li['name'])
                 l.up_date = li['updated']
-                l.vcs_url = li['vcs_url']
-                l.vcs_web_url = li['vcs_web_url']
-                l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
-                l.vcs_web_file_base_url = li['vcs_web_file_base_url']
                 l.summary = li['summary']
                 l.description = li['description']
+
+                if created:
+                    l.vcs_url = li['vcs_url']
+                    l.vcs_web_url = li['vcs_web_url']
+                    l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
+                    l.vcs_web_file_base_url = li['vcs_web_file_base_url']
                 l.save()
             except Layer.MultipleObjectsReturned:
                 logger.info("Skipped %s as we found multiple layers and "
@@ -211,12 +187,14 @@ class Command(NoArgsCommand):
 
         total = len(layerbranches_info)
         for i, lbi in enumerate(layerbranches_info):
+            # release as defined by toaster map to layerindex branch
+            release = li_branch_id_to_toaster_release[lbi['branch']]
 
             try:
                 lv, created = Layer_Version.objects.get_or_create(
-                    layer_source=LayerSource.TYPE_LAYERINDEX,
                     layer=Layer.objects.get(
-                        pk=li_layer_id_to_toaster_layer_id[lbi['layer']])
+                        pk=li_layer_id_to_toaster_layer_id[lbi['layer']]),
+                    release=release
                 )
             except KeyError:
                 logger.warning(
@@ -224,11 +202,12 @@ class Command(NoArgsCommand):
                     lbi['layer'])
                 continue
 
-            lv.release = li_branch_id_to_toaster_release[lbi['branch']]
-            lv.up_date = lbi['updated']
-            lv.commit = lbi['actual_branch']
-            lv.dirpath = lbi['vcs_subdir']
-            lv.save()
+            if created:
+                lv.release = li_branch_id_to_toaster_release[lbi['branch']]
+                lv.up_date = lbi['updated']
+                lv.commit = lbi['actual_branch']
+                lv.dirpath = lbi['vcs_subdir']
+                lv.save()
 
             li_layer_branch_id_to_toaster_lv_id[lbi['id']] =\
                 lv.pk
@@ -255,9 +234,8 @@ class Command(NoArgsCommand):
                 layer_id = li_layer_id_to_toaster_layer_id[ldi['dependency']]
 
                 dependlist[lv].append(
-                    Layer_Version.objects.get(
-                        layer_source=LayerSource.TYPE_LAYERINDEX,
-                        layer__pk=layer_id))
+                    Layer_Version.objects.get(layer__pk=layer_id,
+                                              release=lv.release))
 
             except Layer_Version.DoesNotExist:
                 logger.warning("Cannot find layer version (ls:%s),"
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] toaster: orm/fixtures Add the master release and correct morty release
  2016-11-04 16:42 [PATCH 1/2] toaster: layerindex updater Take into account layers being predefined Michael Wood
@ 2016-11-04 16:42 ` Michael Wood
  2016-11-05  3:37 ` [PATCH 1/2] toaster: layerindex updater Take into account layers being predefined Brian Avery
  1 sibling, 0 replies; 7+ messages in thread
From: Michael Wood @ 2016-11-04 16:42 UTC (permalink / raw)
  To: toaster

Add the master release option to base your project on and correct the
morty release so that for poky based setups we use the poky provided
version of the layer rather than checking out the layer from its own git
repository.

[YOCTO #10497]

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
---
 bitbake/lib/toaster/orm/fixtures/oe-core.xml | 23 +++++++-
 bitbake/lib/toaster/orm/fixtures/poky.xml    | 82 +++++++++++++++++++++++++---
 2 files changed, 96 insertions(+), 9 deletions(-)

diff --git a/bitbake/lib/toaster/orm/fixtures/oe-core.xml b/bitbake/lib/toaster/orm/fixtures/oe-core.xml
index a6c834f..4d3d185 100644
--- a/bitbake/lib/toaster/orm/fixtures/oe-core.xml
+++ b/bitbake/lib/toaster/orm/fixtures/oe-core.xml
@@ -14,6 +14,13 @@
   </object>
   <object model="orm.bitbakeversion" pk="2">
     <field type="CharField" name="name">HEAD</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">HEAD</field>
+  </object>
+  <object model="orm.bitbakeversion" pk="3">
+    <field type="CharField" name="name">master</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">master</field>
   </object>
 
   <!-- Releases available -->
@@ -31,18 +38,30 @@
     <field type="CharField" name="branch_name">HEAD</field>
     <field type="TextField" name="helptext">Toaster will run your builds with the version of OpenEmbedded that you have cloned or downloaded to your computer.</field>
   </object>
+  <object model="orm.release" pk="3">
+    <field type="CharField" name="name">master</field>
+    <field type="CharField" name="description">OpenEmbedded core master</field>
+    <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field>
+    <field type="CharField" name="branch_name">master</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/\"&gt;OpenEmbedded master&lt;/a&gt; branch.</field>
+  </object>
 
   <!-- Default layers for each release -->
   <object model="orm.releasedefaultlayer" pk="1">
     <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
     <field type="CharField" name="layer_name">openembedded-core</field>
   </object>
-  <object model="orm.releasedefaultlayer" pk="4">
+  <object model="orm.releasedefaultlayer" pk="2">
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
     <field type="CharField" name="layer_name">openembedded-core</field>
   </object>
+  <object model="orm.releasedefaultlayer" pk="3">
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="layer_name">openembedded-core</field>
+  </object>
+
 
-  <!-- TYPE_LOCAL = 0 Layers for the Local release -->
+  <!-- Layer for the Local release -->
   <object model="orm.layer" pk="1">
     <field type="CharField" name="name">openembedded-core</field>
     <field type="CharField" name="vcs_url">git://git.openembedded.org/openembedded-core</field>
diff --git a/bitbake/lib/toaster/orm/fixtures/poky.xml b/bitbake/lib/toaster/orm/fixtures/poky.xml
index c192baa..dcc7aaf 100644
--- a/bitbake/lib/toaster/orm/fixtures/poky.xml
+++ b/bitbake/lib/toaster/orm/fixtures/poky.xml
@@ -19,6 +19,13 @@
     <field type="CharField" name="branch">HEAD</field>
     <field type="CharField" name="dirpath">bitbake</field>
   </object>
+  <object model="orm.bitbakeversion" pk="3">
+    <field type="CharField" name="name">master</field>
+    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="dirpath">bitbake</field>
+  </object>
+
 
   <!-- Releases available -->
   <object model="orm.release" pk="1">
@@ -35,8 +42,15 @@
     <field type="CharField" name="branch_name">HEAD</field>
     <field type="TextField" name="helptext">Toaster will run your builds with the version of the Yocto Project you have cloned or downloaded to your computer.</field>
   </object>
+  <object model="orm.release" pk="3">
+    <field type="CharField" name="name">master</field>
+    <field type="CharField" name="description">Yocto Project master</field>
+    <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field>
+    <field type="CharField" name="branch_name">master</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/"&gt;Yocto Project Master branch&lt;/a&gt;.</field>
+  </object>
 
-  <!-- Default layers for each release -->
+  <!-- Default project layers for each release -->
   <object model="orm.releasedefaultlayer" pk="1">
     <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
     <field type="CharField" name="layer_name">openembedded-core</field>
@@ -61,9 +75,23 @@
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
     <field type="CharField" name="layer_name">meta-yocto-bsp</field>
   </object>
+  <object model="orm.releasedefaultlayer" pk="7">
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="layer_name">openembedded-core</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="8">
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="layer_name">meta-poky</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="9">
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="layer_name">meta-yocto-bsp</field>
+  </object>
 
-  <!-- Layers for the Local release
-       layersource TYPE_LOCAL = 0
+  <!-- Default layers provided by poky
+       openembedded-core
+       meta-poky
+       meta-yocto-bsp
   -->
   <object model="orm.layer" pk="1">
     <field type="CharField" name="name">openembedded-core</field>
@@ -73,19 +101,39 @@
   <object model="orm.layer_version" pk="1">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
     <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="branch">morty</field>
+    <field type="CharField" name="dirpath">meta</field>
+  </object>
+  <object model="orm.layer_version" pk="2">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
+    <field type="IntegerField" name="layer_source">0</field>
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
     <field type="CharField" name="branch">HEAD</field>
     <field type="CharField" name="commit">HEAD</field>
     <field type="CharField" name="dirpath">meta</field>
   </object>
-
+  <object model="orm.layer_version" pk="3">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="dirpath">meta</field>
+  </object>
 
   <object model="orm.layer" pk="2">
     <field type="CharField" name="name">meta-poky</field>
     <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
   </object>
-  <object model="orm.layer_version" pk="2">
+  <object model="orm.layer_version" pk="4">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="branch">morty</field>
+    <field type="CharField" name="dirpath">meta-poky</field>
+  </object>
+  <object model="orm.layer_version" pk="5">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
     <field type="IntegerField" name="layer_source">0</field>
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
@@ -93,14 +141,27 @@
     <field type="CharField" name="commit">HEAD</field>
     <field type="CharField" name="dirpath">meta-poky</field>
   </object>
-
+  <object model="orm.layer_version" pk="6">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="dirpath">meta-poky</field>
+  </object>
 
   <object model="orm.layer" pk="3">
     <field type="CharField" name="name">meta-yocto-bsp</field>
     <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
   </object>
-  <object model="orm.layer_version" pk="3">
+  <object model="orm.layer_version" pk="7">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="branch">morty</field>
+    <field type="CharField" name="dirpath">meta-yocto-bsp</field>
+  </object>
+  <object model="orm.layer_version" pk="8">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
     <field type="IntegerField" name="layer_source">0</field>
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
@@ -108,4 +169,11 @@
     <field type="CharField" name="commit">HEAD</field>
     <field type="CharField" name="dirpath">meta-yocto-bsp</field>
   </object>
+  <object model="orm.layer_version" pk="9">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="dirpath">meta-yocto-bsp</field>
+  </object>
 </django-objects>
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] toaster: layerindex updater Take into account layers being predefined
  2016-11-04 16:42 [PATCH 1/2] toaster: layerindex updater Take into account layers being predefined Michael Wood
  2016-11-04 16:42 ` [PATCH 2/2] toaster: orm/fixtures Add the master release and correct morty release Michael Wood
@ 2016-11-05  3:37 ` Brian Avery
  2016-11-08 11:33   ` [PATCH v2 1/3] " Michael Wood
  1 sibling, 1 reply; 7+ messages in thread
From: Brian Avery @ 2016-11-05  3:37 UTC (permalink / raw)
  To: Michael Wood; +Cc: toaster

[-- Attachment #1: Type: text/plain, Size: 6524 bytes --]

Hi,
2 things:
1) Could we change the     <*field* type="CharField" name="name"
>DEFAULT_RELEASE</*field*>
to master in bitbake/lib/toaster/orm/fixtures/settings.xml

right now, we are defaulting to morty for new projects which is a change in
behaviour.

2) The browser tests are failing on :

It's not related to this patch and I filed a separate bug for it

https://bugzilla.yoctoproject.org/show_bug.cgi?id=10609


If we can do 1, I can upstream the patches. Thanks for fixing the layers!

-brian

an intel employee





On Fri, Nov 4, 2016 at 9:42 AM, Michael Wood <michael.g.wood@intel.com>
wrote:

> As we can now provide layer definitions through fixtures we need to be
> more clever how we update the metadata in the database to avoid
> duplicate metadata being created. To do this we make more effort to
> match existing data in the database and update only the fields which
> will be better provided by the layer index.
>
> This removes the need for us to special case layers which are provided
> as part of poky such as openembedded-core or meta-poky which exist on
> the layerindex but with different git urls.
>
> Signed-off-by: Michael Wood <michael.g.wood@intel.com>
> ---
>  .../toaster/orm/management/commands/lsupdates.py   | 60
> +++++++---------------
>  1 file changed, 19 insertions(+), 41 deletions(-)
>
> diff --git a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
> b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
> index 8ff120e..688918e 100644
> --- a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
> +++ b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
> @@ -154,41 +154,17 @@ class Command(NoArgsCommand):
>
>          total = len(layers_info)
>          for i, li in enumerate(layers_info):
> -            # Special case for the openembedded-core layer
> -            if li['name'] == oe_core_layer:
> -                try:
> -                    # If we have an existing openembedded-core for example
> -                    # from the toasterconf.json augment the info using the
> -                    # layerindex rather than duplicate it
> -                    oe_core_l = Layer.objects.get(name=oe_core_layer)
> -                    # Take ownership of the layer as now coming from the
> -                    # layerindex
> -                    oe_core_l.summary = li['summary']
> -                    oe_core_l.description = li['description']
> -                    oe_core_l.vcs_web_url = li['vcs_web_url']
> -                    oe_core_l.vcs_web_tree_base_url = \
> -                        li['vcs_web_tree_base_url']
> -                    oe_core_l.vcs_web_file_base_url = \
> -                        li['vcs_web_file_base_url']
> -
> -                    oe_core_l.save()
> -                    li_layer_id_to_toaster_layer_id[li['id']] =
> oe_core_l.pk
> -                    self.mini_progress("layers", i, total)
> -                    continue
> -
> -                except Layer.DoesNotExist:
> -                    pass
> -
>              try:
> -                l, created = Layer.objects.get_or_create(name=li['name'],
> -
>  vcs_url=li['vcs_url'])
> +                l, created = Layer.objects.get_or_create(name=li['name'])
>                  l.up_date = li['updated']
> -                l.vcs_url = li['vcs_url']
> -                l.vcs_web_url = li['vcs_web_url']
> -                l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
> -                l.vcs_web_file_base_url = li['vcs_web_file_base_url']
>                  l.summary = li['summary']
>                  l.description = li['description']
> +
> +                if created:
> +                    l.vcs_url = li['vcs_url']
> +                    l.vcs_web_url = li['vcs_web_url']
> +                    l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
> +                    l.vcs_web_file_base_url = li['vcs_web_file_base_url']
>                  l.save()
>              except Layer.MultipleObjectsReturned:
>                  logger.info("Skipped %s as we found multiple layers and "
> @@ -211,12 +187,14 @@ class Command(NoArgsCommand):
>
>          total = len(layerbranches_info)
>          for i, lbi in enumerate(layerbranches_info):
> +            # release as defined by toaster map to layerindex branch
> +            release = li_branch_id_to_toaster_release[lbi['branch']]
>
>              try:
>                  lv, created = Layer_Version.objects.get_or_create(
> -                    layer_source=LayerSource.TYPE_LAYERINDEX,
>                      layer=Layer.objects.get(
> -                        pk=li_layer_id_to_toaster_layer_id[lbi['layer']])
> +                        pk=li_layer_id_to_toaster_laye
> r_id[lbi['layer']]),
> +                    release=release
>                  )
>              except KeyError:
>                  logger.warning(
> @@ -224,11 +202,12 @@ class Command(NoArgsCommand):
>                      lbi['layer'])
>                  continue
>
> -            lv.release = li_branch_id_to_toaster_release[lbi['branch']]
> -            lv.up_date = lbi['updated']
> -            lv.commit = lbi['actual_branch']
> -            lv.dirpath = lbi['vcs_subdir']
> -            lv.save()
> +            if created:
> +                lv.release = li_branch_id_to_toaster_releas
> e[lbi['branch']]
> +                lv.up_date = lbi['updated']
> +                lv.commit = lbi['actual_branch']
> +                lv.dirpath = lbi['vcs_subdir']
> +                lv.save()
>
>              li_layer_branch_id_to_toaster_lv_id[lbi['id']] =\
>                  lv.pk
> @@ -255,9 +234,8 @@ class Command(NoArgsCommand):
>                  layer_id = li_layer_id_to_toaster_layer_i
> d[ldi['dependency']]
>
>                  dependlist[lv].append(
> -                    Layer_Version.objects.get(
> -                        layer_source=LayerSource.TYPE_LAYERINDEX,
> -                        layer__pk=layer_id))
> +                    Layer_Version.objects.get(layer__pk=layer_id,
> +                                              release=lv.release))
>
>              except Layer_Version.DoesNotExist:
>                  logger.warning("Cannot find layer version (ls:%s),"
> --
> 2.7.4
>
> --
> _______________________________________________
> toaster mailing list
> toaster@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
>

[-- Attachment #2: Type: text/html, Size: 12280 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/3] toaster: layerindex updater Take into account layers being predefined
  2016-11-05  3:37 ` [PATCH 1/2] toaster: layerindex updater Take into account layers being predefined Brian Avery
@ 2016-11-08 11:33   ` Michael Wood
  2016-11-08 11:33     ` [PATCH v2 2/3] toaster: orm/fixtures Add the master release and correct morty release Michael Wood
                       ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Michael Wood @ 2016-11-08 11:33 UTC (permalink / raw)
  To: toaster

As we can now provide layer definitions through fixtures we need to be
more clever how we update the metadata in the database to avoid
duplicate metadata being created. To do this we make more effort to
match existing data in the database and update only the fields which
will be better provided by the layer index.

This removes the need for us to special case layers which are provided
as part of poky such as openembedded-core or meta-poky which exist on
the layerindex but with different git urls.

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
---
 .../toaster/orm/management/commands/lsupdates.py   | 60 +++++++---------------
 1 file changed, 19 insertions(+), 41 deletions(-)

diff --git a/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
index 8ff120e..688918e 100644
--- a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
+++ b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
@@ -154,41 +154,17 @@ class Command(NoArgsCommand):
 
         total = len(layers_info)
         for i, li in enumerate(layers_info):
-            # Special case for the openembedded-core layer
-            if li['name'] == oe_core_layer:
-                try:
-                    # If we have an existing openembedded-core for example
-                    # from the toasterconf.json augment the info using the
-                    # layerindex rather than duplicate it
-                    oe_core_l = Layer.objects.get(name=oe_core_layer)
-                    # Take ownership of the layer as now coming from the
-                    # layerindex
-                    oe_core_l.summary = li['summary']
-                    oe_core_l.description = li['description']
-                    oe_core_l.vcs_web_url = li['vcs_web_url']
-                    oe_core_l.vcs_web_tree_base_url = \
-                        li['vcs_web_tree_base_url']
-                    oe_core_l.vcs_web_file_base_url = \
-                        li['vcs_web_file_base_url']
-
-                    oe_core_l.save()
-                    li_layer_id_to_toaster_layer_id[li['id']] = oe_core_l.pk
-                    self.mini_progress("layers", i, total)
-                    continue
-
-                except Layer.DoesNotExist:
-                    pass
-
             try:
-                l, created = Layer.objects.get_or_create(name=li['name'],
-                                                         vcs_url=li['vcs_url'])
+                l, created = Layer.objects.get_or_create(name=li['name'])
                 l.up_date = li['updated']
-                l.vcs_url = li['vcs_url']
-                l.vcs_web_url = li['vcs_web_url']
-                l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
-                l.vcs_web_file_base_url = li['vcs_web_file_base_url']
                 l.summary = li['summary']
                 l.description = li['description']
+
+                if created:
+                    l.vcs_url = li['vcs_url']
+                    l.vcs_web_url = li['vcs_web_url']
+                    l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
+                    l.vcs_web_file_base_url = li['vcs_web_file_base_url']
                 l.save()
             except Layer.MultipleObjectsReturned:
                 logger.info("Skipped %s as we found multiple layers and "
@@ -211,12 +187,14 @@ class Command(NoArgsCommand):
 
         total = len(layerbranches_info)
         for i, lbi in enumerate(layerbranches_info):
+            # release as defined by toaster map to layerindex branch
+            release = li_branch_id_to_toaster_release[lbi['branch']]
 
             try:
                 lv, created = Layer_Version.objects.get_or_create(
-                    layer_source=LayerSource.TYPE_LAYERINDEX,
                     layer=Layer.objects.get(
-                        pk=li_layer_id_to_toaster_layer_id[lbi['layer']])
+                        pk=li_layer_id_to_toaster_layer_id[lbi['layer']]),
+                    release=release
                 )
             except KeyError:
                 logger.warning(
@@ -224,11 +202,12 @@ class Command(NoArgsCommand):
                     lbi['layer'])
                 continue
 
-            lv.release = li_branch_id_to_toaster_release[lbi['branch']]
-            lv.up_date = lbi['updated']
-            lv.commit = lbi['actual_branch']
-            lv.dirpath = lbi['vcs_subdir']
-            lv.save()
+            if created:
+                lv.release = li_branch_id_to_toaster_release[lbi['branch']]
+                lv.up_date = lbi['updated']
+                lv.commit = lbi['actual_branch']
+                lv.dirpath = lbi['vcs_subdir']
+                lv.save()
 
             li_layer_branch_id_to_toaster_lv_id[lbi['id']] =\
                 lv.pk
@@ -255,9 +234,8 @@ class Command(NoArgsCommand):
                 layer_id = li_layer_id_to_toaster_layer_id[ldi['dependency']]
 
                 dependlist[lv].append(
-                    Layer_Version.objects.get(
-                        layer_source=LayerSource.TYPE_LAYERINDEX,
-                        layer__pk=layer_id))
+                    Layer_Version.objects.get(layer__pk=layer_id,
+                                              release=lv.release))
 
             except Layer_Version.DoesNotExist:
                 logger.warning("Cannot find layer version (ls:%s),"
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/3] toaster: orm/fixtures Add the master release and correct morty release
  2016-11-08 11:33   ` [PATCH v2 1/3] " Michael Wood
@ 2016-11-08 11:33     ` Michael Wood
  2016-11-08 11:33     ` [PATCH v2 3/3] toaster: settings fixture Set default release to master Michael Wood
  2016-11-10  3:50     ` [PATCH v2 1/3] toaster: layerindex updater Take into account layers being predefined Brian Avery
  2 siblings, 0 replies; 7+ messages in thread
From: Michael Wood @ 2016-11-08 11:33 UTC (permalink / raw)
  To: toaster

Add the master release option to base your project on and correct the
morty release so that for poky based setups we use the poky provided
version of the layer rather than checking out the layer from its own git
repository.

[YOCTO #10497]

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
---
 bitbake/lib/toaster/orm/fixtures/oe-core.xml | 23 +++++++-
 bitbake/lib/toaster/orm/fixtures/poky.xml    | 82 +++++++++++++++++++++++++---
 2 files changed, 96 insertions(+), 9 deletions(-)

diff --git a/bitbake/lib/toaster/orm/fixtures/oe-core.xml b/bitbake/lib/toaster/orm/fixtures/oe-core.xml
index a6c834f..4d3d185 100644
--- a/bitbake/lib/toaster/orm/fixtures/oe-core.xml
+++ b/bitbake/lib/toaster/orm/fixtures/oe-core.xml
@@ -14,6 +14,13 @@
   </object>
   <object model="orm.bitbakeversion" pk="2">
     <field type="CharField" name="name">HEAD</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">HEAD</field>
+  </object>
+  <object model="orm.bitbakeversion" pk="3">
+    <field type="CharField" name="name">master</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">master</field>
   </object>
 
   <!-- Releases available -->
@@ -31,18 +38,30 @@
     <field type="CharField" name="branch_name">HEAD</field>
     <field type="TextField" name="helptext">Toaster will run your builds with the version of OpenEmbedded that you have cloned or downloaded to your computer.</field>
   </object>
+  <object model="orm.release" pk="3">
+    <field type="CharField" name="name">master</field>
+    <field type="CharField" name="description">OpenEmbedded core master</field>
+    <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field>
+    <field type="CharField" name="branch_name">master</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/\"&gt;OpenEmbedded master&lt;/a&gt; branch.</field>
+  </object>
 
   <!-- Default layers for each release -->
   <object model="orm.releasedefaultlayer" pk="1">
     <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
     <field type="CharField" name="layer_name">openembedded-core</field>
   </object>
-  <object model="orm.releasedefaultlayer" pk="4">
+  <object model="orm.releasedefaultlayer" pk="2">
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
     <field type="CharField" name="layer_name">openembedded-core</field>
   </object>
+  <object model="orm.releasedefaultlayer" pk="3">
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="layer_name">openembedded-core</field>
+  </object>
+
 
-  <!-- TYPE_LOCAL = 0 Layers for the Local release -->
+  <!-- Layer for the Local release -->
   <object model="orm.layer" pk="1">
     <field type="CharField" name="name">openembedded-core</field>
     <field type="CharField" name="vcs_url">git://git.openembedded.org/openembedded-core</field>
diff --git a/bitbake/lib/toaster/orm/fixtures/poky.xml b/bitbake/lib/toaster/orm/fixtures/poky.xml
index c192baa..dcc7aaf 100644
--- a/bitbake/lib/toaster/orm/fixtures/poky.xml
+++ b/bitbake/lib/toaster/orm/fixtures/poky.xml
@@ -19,6 +19,13 @@
     <field type="CharField" name="branch">HEAD</field>
     <field type="CharField" name="dirpath">bitbake</field>
   </object>
+  <object model="orm.bitbakeversion" pk="3">
+    <field type="CharField" name="name">master</field>
+    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="dirpath">bitbake</field>
+  </object>
+
 
   <!-- Releases available -->
   <object model="orm.release" pk="1">
@@ -35,8 +42,15 @@
     <field type="CharField" name="branch_name">HEAD</field>
     <field type="TextField" name="helptext">Toaster will run your builds with the version of the Yocto Project you have cloned or downloaded to your computer.</field>
   </object>
+  <object model="orm.release" pk="3">
+    <field type="CharField" name="name">master</field>
+    <field type="CharField" name="description">Yocto Project master</field>
+    <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field>
+    <field type="CharField" name="branch_name">master</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/"&gt;Yocto Project Master branch&lt;/a&gt;.</field>
+  </object>
 
-  <!-- Default layers for each release -->
+  <!-- Default project layers for each release -->
   <object model="orm.releasedefaultlayer" pk="1">
     <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
     <field type="CharField" name="layer_name">openembedded-core</field>
@@ -61,9 +75,23 @@
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
     <field type="CharField" name="layer_name">meta-yocto-bsp</field>
   </object>
+  <object model="orm.releasedefaultlayer" pk="7">
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="layer_name">openembedded-core</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="8">
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="layer_name">meta-poky</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="9">
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="layer_name">meta-yocto-bsp</field>
+  </object>
 
-  <!-- Layers for the Local release
-       layersource TYPE_LOCAL = 0
+  <!-- Default layers provided by poky
+       openembedded-core
+       meta-poky
+       meta-yocto-bsp
   -->
   <object model="orm.layer" pk="1">
     <field type="CharField" name="name">openembedded-core</field>
@@ -73,19 +101,39 @@
   <object model="orm.layer_version" pk="1">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
     <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="branch">morty</field>
+    <field type="CharField" name="dirpath">meta</field>
+  </object>
+  <object model="orm.layer_version" pk="2">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
+    <field type="IntegerField" name="layer_source">0</field>
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
     <field type="CharField" name="branch">HEAD</field>
     <field type="CharField" name="commit">HEAD</field>
     <field type="CharField" name="dirpath">meta</field>
   </object>
-
+  <object model="orm.layer_version" pk="3">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="dirpath">meta</field>
+  </object>
 
   <object model="orm.layer" pk="2">
     <field type="CharField" name="name">meta-poky</field>
     <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
   </object>
-  <object model="orm.layer_version" pk="2">
+  <object model="orm.layer_version" pk="4">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="branch">morty</field>
+    <field type="CharField" name="dirpath">meta-poky</field>
+  </object>
+  <object model="orm.layer_version" pk="5">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
     <field type="IntegerField" name="layer_source">0</field>
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
@@ -93,14 +141,27 @@
     <field type="CharField" name="commit">HEAD</field>
     <field type="CharField" name="dirpath">meta-poky</field>
   </object>
-
+  <object model="orm.layer_version" pk="6">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="dirpath">meta-poky</field>
+  </object>
 
   <object model="orm.layer" pk="3">
     <field type="CharField" name="name">meta-yocto-bsp</field>
     <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
   </object>
-  <object model="orm.layer_version" pk="3">
+  <object model="orm.layer_version" pk="7">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="branch">morty</field>
+    <field type="CharField" name="dirpath">meta-yocto-bsp</field>
+  </object>
+  <object model="orm.layer_version" pk="8">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
     <field type="IntegerField" name="layer_source">0</field>
     <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
@@ -108,4 +169,11 @@
     <field type="CharField" name="commit">HEAD</field>
     <field type="CharField" name="dirpath">meta-yocto-bsp</field>
   </object>
+  <object model="orm.layer_version" pk="9">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="dirpath">meta-yocto-bsp</field>
+  </object>
 </django-objects>
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 3/3] toaster: settings fixture Set default release to master
  2016-11-08 11:33   ` [PATCH v2 1/3] " Michael Wood
  2016-11-08 11:33     ` [PATCH v2 2/3] toaster: orm/fixtures Add the master release and correct morty release Michael Wood
@ 2016-11-08 11:33     ` Michael Wood
  2016-11-10  3:50     ` [PATCH v2 1/3] toaster: layerindex updater Take into account layers being predefined Brian Avery
  2 siblings, 0 replies; 7+ messages in thread
From: Michael Wood @ 2016-11-08 11:33 UTC (permalink / raw)
  To: toaster

Now that morty has been released we now set the DEFAULT_RELEASE back to
master.

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
---
 bitbake/lib/toaster/orm/fixtures/settings.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bitbake/lib/toaster/orm/fixtures/settings.xml b/bitbake/lib/toaster/orm/fixtures/settings.xml
index ee6a202..78c0fdc 100644
--- a/bitbake/lib/toaster/orm/fixtures/settings.xml
+++ b/bitbake/lib/toaster/orm/fixtures/settings.xml
@@ -4,7 +4,7 @@
   <!-- pk=1 is DISTRO -->
   <object model="orm.toastersetting" pk="2">
     <field type="CharField" name="name">DEFAULT_RELEASE</field>
-    <field type="CharField" name="value">morty</field>
+    <field type="CharField" name="value">master</field>
   </object>
   <object model="orm.toastersetting" pk="3">
     <field type="CharField" name="name">DEFCONF_PACKAGE_CLASSES</field>
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/3] toaster: layerindex updater Take into account layers being predefined
  2016-11-08 11:33   ` [PATCH v2 1/3] " Michael Wood
  2016-11-08 11:33     ` [PATCH v2 2/3] toaster: orm/fixtures Add the master release and correct morty release Michael Wood
  2016-11-08 11:33     ` [PATCH v2 3/3] toaster: settings fixture Set default release to master Michael Wood
@ 2016-11-10  3:50     ` Brian Avery
  2 siblings, 0 replies; 7+ messages in thread
From: Brian Avery @ 2016-11-10  3:50 UTC (permalink / raw)
  To: Michael Wood; +Cc: toaster

[-- Attachment #1: Type: text/plain, Size: 6058 bytes --]

V2 pushed to toaster-next and sent to bitbake-devel.
ty,
b
an intel employee

On Tue, Nov 8, 2016 at 3:33 AM, Michael Wood <michael.g.wood@intel.com>
wrote:

> As we can now provide layer definitions through fixtures we need to be
> more clever how we update the metadata in the database to avoid
> duplicate metadata being created. To do this we make more effort to
> match existing data in the database and update only the fields which
> will be better provided by the layer index.
>
> This removes the need for us to special case layers which are provided
> as part of poky such as openembedded-core or meta-poky which exist on
> the layerindex but with different git urls.
>
> Signed-off-by: Michael Wood <michael.g.wood@intel.com>
> ---
>  .../toaster/orm/management/commands/lsupdates.py   | 60
> +++++++---------------
>  1 file changed, 19 insertions(+), 41 deletions(-)
>
> diff --git a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
> b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
> index 8ff120e..688918e 100644
> --- a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
> +++ b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
> @@ -154,41 +154,17 @@ class Command(NoArgsCommand):
>
>          total = len(layers_info)
>          for i, li in enumerate(layers_info):
> -            # Special case for the openembedded-core layer
> -            if li['name'] == oe_core_layer:
> -                try:
> -                    # If we have an existing openembedded-core for example
> -                    # from the toasterconf.json augment the info using the
> -                    # layerindex rather than duplicate it
> -                    oe_core_l = Layer.objects.get(name=oe_core_layer)
> -                    # Take ownership of the layer as now coming from the
> -                    # layerindex
> -                    oe_core_l.summary = li['summary']
> -                    oe_core_l.description = li['description']
> -                    oe_core_l.vcs_web_url = li['vcs_web_url']
> -                    oe_core_l.vcs_web_tree_base_url = \
> -                        li['vcs_web_tree_base_url']
> -                    oe_core_l.vcs_web_file_base_url = \
> -                        li['vcs_web_file_base_url']
> -
> -                    oe_core_l.save()
> -                    li_layer_id_to_toaster_layer_id[li['id']] =
> oe_core_l.pk
> -                    self.mini_progress("layers", i, total)
> -                    continue
> -
> -                except Layer.DoesNotExist:
> -                    pass
> -
>              try:
> -                l, created = Layer.objects.get_or_create(name=li['name'],
> -
>  vcs_url=li['vcs_url'])
> +                l, created = Layer.objects.get_or_create(name=li['name'])
>                  l.up_date = li['updated']
> -                l.vcs_url = li['vcs_url']
> -                l.vcs_web_url = li['vcs_web_url']
> -                l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
> -                l.vcs_web_file_base_url = li['vcs_web_file_base_url']
>                  l.summary = li['summary']
>                  l.description = li['description']
> +
> +                if created:
> +                    l.vcs_url = li['vcs_url']
> +                    l.vcs_web_url = li['vcs_web_url']
> +                    l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
> +                    l.vcs_web_file_base_url = li['vcs_web_file_base_url']
>                  l.save()
>              except Layer.MultipleObjectsReturned:
>                  logger.info("Skipped %s as we found multiple layers and "
> @@ -211,12 +187,14 @@ class Command(NoArgsCommand):
>
>          total = len(layerbranches_info)
>          for i, lbi in enumerate(layerbranches_info):
> +            # release as defined by toaster map to layerindex branch
> +            release = li_branch_id_to_toaster_release[lbi['branch']]
>
>              try:
>                  lv, created = Layer_Version.objects.get_or_create(
> -                    layer_source=LayerSource.TYPE_LAYERINDEX,
>                      layer=Layer.objects.get(
> -                        pk=li_layer_id_to_toaster_layer_id[lbi['layer']])
> +                        pk=li_layer_id_to_toaster_
> layer_id[lbi['layer']]),
> +                    release=release
>                  )
>              except KeyError:
>                  logger.warning(
> @@ -224,11 +202,12 @@ class Command(NoArgsCommand):
>                      lbi['layer'])
>                  continue
>
> -            lv.release = li_branch_id_to_toaster_release[lbi['branch']]
> -            lv.up_date = lbi['updated']
> -            lv.commit = lbi['actual_branch']
> -            lv.dirpath = lbi['vcs_subdir']
> -            lv.save()
> +            if created:
> +                lv.release = li_branch_id_to_toaster_
> release[lbi['branch']]
> +                lv.up_date = lbi['updated']
> +                lv.commit = lbi['actual_branch']
> +                lv.dirpath = lbi['vcs_subdir']
> +                lv.save()
>
>              li_layer_branch_id_to_toaster_lv_id[lbi['id']] =\
>                  lv.pk
> @@ -255,9 +234,8 @@ class Command(NoArgsCommand):
>                  layer_id = li_layer_id_to_toaster_layer_
> id[ldi['dependency']]
>
>                  dependlist[lv].append(
> -                    Layer_Version.objects.get(
> -                        layer_source=LayerSource.TYPE_LAYERINDEX,
> -                        layer__pk=layer_id))
> +                    Layer_Version.objects.get(layer__pk=layer_id,
> +                                              release=lv.release))
>
>              except Layer_Version.DoesNotExist:
>                  logger.warning("Cannot find layer version (ls:%s),"
> --
> 2.7.4
>
> --
> _______________________________________________
> toaster mailing list
> toaster@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
>

[-- Attachment #2: Type: text/html, Size: 8289 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-11-10  3:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-04 16:42 [PATCH 1/2] toaster: layerindex updater Take into account layers being predefined Michael Wood
2016-11-04 16:42 ` [PATCH 2/2] toaster: orm/fixtures Add the master release and correct morty release Michael Wood
2016-11-05  3:37 ` [PATCH 1/2] toaster: layerindex updater Take into account layers being predefined Brian Avery
2016-11-08 11:33   ` [PATCH v2 1/3] " Michael Wood
2016-11-08 11:33     ` [PATCH v2 2/3] toaster: orm/fixtures Add the master release and correct morty release Michael Wood
2016-11-08 11:33     ` [PATCH v2 3/3] toaster: settings fixture Set default release to master Michael Wood
2016-11-10  3:50     ` [PATCH v2 1/3] toaster: layerindex updater Take into account layers being predefined Brian Avery

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).