Skip to contentSkip to conversation

toaster: add master branch back into new project options

PATCH In review brian avery 2 participants 6 messages Nov 10, 2016 – Nov 23, 2016

lore
Share & tools
lore
#0 lore raw

cover toaster: add master branch back into new project options

This patch adds master to the oe and poky fixtures so that a new project can be based on morty or the master branch.

It also has an fix for lsupdates to support the layers in fixtures definition.

-Brian
an intel employee

The following changes since commit 065310e77ab4c8c914c53ff43d5e601ebf9468b5:

toaster: settings set ALLOWED_HOSTS to * in debug mode (2016-11-09 16:28:17 -0800)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib bavery/submit/toaster/mw-masterproj-11-2016
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=bavery/submit/toaster/mw-masterproj-11-2016

Michael Wood (3):
toaster: settings fixture Set default release to master
toaster: orm/fixtures Add the master release and correct morty release
toaster: layerindex updater Take into account layers being predefined

 lib/toaster/orm/fixtures/oe-core.xml             | 23 ++++++-
 lib/toaster/orm/fixtures/poky.xml                | 82 ++++++++++++++++++++++--
 lib/toaster/orm/fixtures/settings.xml            |  2 +-
 lib/toaster/orm/management/commands/lsupdates.py | 60 ++++++-----------
 4 files changed, 116 insertions(+), 51 deletions(-)

--
1.9.1

#1 lore raw

PATCH 1/3 toaster: settings fixture Set default release to master

From: Michael Wood <[email protected]>

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

---
 lib/toaster/orm/fixtures/settings.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
lib/toaster/orm/fixtures/settings.xml +1 -1
index ee6a202..78c0fdc 100644
@@ -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>
Signature · 1 line
1.9.1
#2 lore raw

PATCH 2/3 toaster: orm/fixtures Add the master release and correct morty release

From: Michael Wood <[email protected]>

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]

---
 lib/toaster/orm/fixtures/oe-core.xml | 23 +++++++++-
 lib/toaster/orm/fixtures/poky.xml    | 82 +++++++++++++++++++++++++++++++++---
 2 files changed, 96 insertions(+), 9 deletions(-)
lib/toaster/orm/fixtures/oe-core.xml +21 -2
index a6c834f..4d3d185 100644
@@ -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>
lib/toaster/orm/fixtures/poky.xml +75 -7

135 lines not on this page · raw message

Signature · 1 line
1.9.1
#3 lore raw

PATCH 3/3 toaster: layerindex updater Take into account layers being predefined

In reply to brian avery

From: Michael Wood <[email protected]>

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.

---
 lib/toaster/orm/management/commands/lsupdates.py | 60 ++++++++----------------
 1 file changed, 19 insertions(+), 41 deletions(-)
lib/toaster/orm/management/commands/lsupdates.py +19 -41
index 8ff120e..688918e 100644
@@ -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),"
Signature · 1 line
1.9.1
#4 lore raw
In reply to brian avery

ohana. Did this get left behind or forgotten? It would be nice for toaster to be able to build from master again :),
-brian
an intel employee

Quoted 38 lines · brian avery

This patch adds master to the oe and poky fixtures so that a new project can be
based on morty or the master branch.

It also has an fix for lsupdates to support the layers in fixtures definition.

-Brian
an intel employee

The following changes since commit 065310e77ab4c8c914c53ff43d5e60 1ebf9468b5:

toaster: settings set ALLOWED_HOSTS to * in debug mode (2016-11-09
16:28:17 -0800)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib bavery/submit/toaster/mw-
masterproj-11-2016
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=
bavery/submit/toaster/mw-masterproj-11-2016

Michael Wood (3):
toaster: settings fixture Set default release to master
toaster: orm/fixtures Add the master release and correct morty release
toaster: layerindex updater Take into account layers being predefined

 lib/toaster/orm/fixtures/oe-core.xml             | 23 ++++++-
 lib/toaster/orm/fixtures/poky.xml                | 82
++++++++++++++++++++++--
 lib/toaster/orm/fixtures/settings.xml            |  2 +-
 lib/toaster/orm/management/commands/lsupdates.py | 60 ++++++-----------
 4 files changed, 116 insertions(+), 51 deletions(-)

--
1.9.1

#5 lore raw
Quoted 2 lines · Brian Avery

ohana.  Did this get left behind or forgotten?  It would be nice for toaster to be able to build from master again :),

Perhaps glance at master-next next time. It has been in there a while, along with the datastore changes which I've been testing a bit more widely before merging.

Its all in master now.

Cheers,

Richard