summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/orm')
-rw-r--r--bitbake/lib/toaster/orm/fixtures/README2
-rwxr-xr-xbitbake/lib/toaster/orm/fixtures/check_fixtures.py38
-rwxr-xr-xbitbake/lib/toaster/orm/fixtures/gen_fixtures.py451
-rw-r--r--bitbake/lib/toaster/orm/fixtures/oe-core.xml80
-rw-r--r--bitbake/lib/toaster/orm/fixtures/poky.xml210
-rw-r--r--bitbake/lib/toaster/orm/fixtures/settings.xml4
-rw-r--r--bitbake/lib/toaster/orm/management/commands/lsupdates.py16
-rw-r--r--bitbake/lib/toaster/orm/migrations/0020_models_bigautofield.py173
-rw-r--r--bitbake/lib/toaster/orm/migrations/0021_eventlogsimports.py22
-rw-r--r--bitbake/lib/toaster/orm/models.py52
10 files changed, 962 insertions, 86 deletions
diff --git a/bitbake/lib/toaster/orm/fixtures/README b/bitbake/lib/toaster/orm/fixtures/README
index 1b1c660aac..7cd745e26b 100644
--- a/bitbake/lib/toaster/orm/fixtures/README
+++ b/bitbake/lib/toaster/orm/fixtures/README
@@ -27,4 +27,4 @@ Data can be provided in XML, JSON and if installed YAML formats.
27 27
28Use the django management command manage.py loaddata <your fixture file> 28Use the django management command manage.py loaddata <your fixture file>
29For further information see the Django command documentation at: 29For further information see the Django command documentation at:
30https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-loaddata 30https://docs.djangoproject.com/en/3.2/ref/django-admin/#django-admin-loaddata
diff --git a/bitbake/lib/toaster/orm/fixtures/check_fixtures.py b/bitbake/lib/toaster/orm/fixtures/check_fixtures.py
new file mode 100755
index 0000000000..ae3722e0f6
--- /dev/null
+++ b/bitbake/lib/toaster/orm/fixtures/check_fixtures.py
@@ -0,0 +1,38 @@
1#!/usr/bin/env python3
2#
3# Copyright (C) 2025 Linux Foundation
4# SPDX-License-Identifier: GPL-2.0-only
5#
6
7import json
8import urllib.request
9
10import gen_fixtures as fixtures
11
12RELEASE_URL = "https://dashboard.yoctoproject.org/releases.json"
13
14with urllib.request.urlopen(RELEASE_URL) as response:
15 if response.getcode() == 200:
16 data = response.read().decode("utf-8")
17 releases = json.loads(data)
18 else:
19 print("Couldn't access %s: %s" % (RELEASE_URL, reponse.getcode()))
20 exit(1)
21
22
23# grab the recent release branches and add master, so we can ignore old branches
24active_releases = [
25 e["release_codename"].lower() for e in releases if e["series"] == "current"
26]
27active_releases.append("master")
28active_releases.append("head")
29
30fixtures_releases = [x[0].lower() for x in fixtures.current_releases]
31
32if set(active_releases) != set(fixtures_releases):
33 print("WARNING: Active releases don't match toaster configured releases, the difference is: %s" % set(active_releases).difference(set(fixtures_releases)))
34 print("Active releases: %s" % sorted(active_releases))
35 print("Toaster configured releases: %s" % sorted(fixtures_releases))
36else:
37 print("Success, configuration matches")
38
diff --git a/bitbake/lib/toaster/orm/fixtures/gen_fixtures.py b/bitbake/lib/toaster/orm/fixtures/gen_fixtures.py
new file mode 100755
index 0000000000..6201f679b9
--- /dev/null
+++ b/bitbake/lib/toaster/orm/fixtures/gen_fixtures.py
@@ -0,0 +1,451 @@
1#!/usr/bin/env python3
2# ex:ts=4:sw=4:sts=4:et
3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
4#
5# Generate Toaster Fixtures for 'poky.xml' and 'oe-core.xml'
6#
7# Copyright (C) 2022 Wind River Systems
8# SPDX-License-Identifier: GPL-2.0-only
9#
10# Edit the 'current_releases' table for each new release cycle
11#
12# Usage: ./get_fixtures --all
13#
14
15import os
16import sys
17import argparse
18
19verbose = False
20
21####################################
22# Releases
23#
24# https://wiki.yoctoproject.org/wiki/Releases
25#
26# NOTE: for the current releases table, it helps to keep continuing releases
27# in the same table positions since this minimizes the patch diff for review.
28# The order of the table does not matter since Toaster presents them sorted.
29#
30# Traditionally, the two most current releases are included in addition to the
31# 'master' branch and the local installation's 'HEAD'.
32# It is also policy to include all active LTS releases.
33#
34
35# [Codename, Yocto Project Version, Release Date, Current Version, Support Level, Poky Version, BitBake branch]
36current_releases = [
37 # Release slot #1
38 ['Scarthgap','5.0','April 2024','5.0.0 (April 2024)','Long Term Support (until April 2028)','','2.8'],
39 # Release slot #2 'local'
40 ['HEAD','HEAD','','Local Yocto Project','HEAD','','HEAD'],
41 # Release slot #3 'master'
42 ['Master','master','','Yocto Project master','master','','master'],
43 # Release slot #4
44 ['Whinlatter','5.3','October 2025','5.3.0 (October 2024)','Support for 7 months (until May 2026)','','2.14'],
45 ['Walnascar','5.2','April 2025','5.2.0 (April 2025)','Support for 7 months (until October 2025)','','2.12'],
46 #['Styhead','5.1','November 2024','5.1.0 (November 2024)','Support for 7 months (until May 2025)','','2.10'],
47 #['Nanbield','4.3','November 2023','4.3.0 (November 2023)','Support for 7 months (until May 2024)','','2.6'],
48 #['Mickledore','4.2','April 2023','4.2.0 (April 2023)','Support for 7 months (until October 2023)','','2.4'],
49 #['Langdale','4.1','October 2022','4.1.2 (January 2023)','Support for 7 months (until May 2023)','','2.2'],
50 ['Kirkstone','4.0','April 2022','4.0.8 (March 2023)','Stable - Long Term Support (until Apr. 2024)','','2.0'],
51 #['Honister','3.4','October 2021','3.4.2 (February 2022)','Support for 7 months (until May 2022)','26.0','1.52'],
52 #['Hardknott','3.3','April 2021','3.3.5 (March 2022)','Stable - Support for 13 months (until Apr. 2022)','25.0','1.50'],
53 #['Gatesgarth','3.2','Oct 2020','3.2.4 (May 2021)','EOL','24.0','1.48'],
54 #['Dunfell','3.1','April 2020','3.1.23 (February 2023)','Stable - Long Term Support (until Apr. 2024)','23.0','1.46'],
55]
56
57default_poky_layers = [
58 'openembedded-core',
59 'meta-poky',
60 'meta-yocto-bsp',
61]
62
63default_oe_core_layers = [
64 'openembedded-core',
65]
66
67####################################
68# Templates
69
70prolog_template = '''\
71<?xml version="1.0" encoding="utf-8"?>
72<django-objects version="1.0">
73 <!-- Set the project default value for DISTRO -->
74 <object model="orm.toastersetting" pk="1">
75 <field type="CharField" name="name">DEFCONF_DISTRO</field>
76 <field type="CharField" name="value">{{distro}}</field>
77 </object>
78'''
79
80#<!-- Bitbake versions which correspond to the metadata release -->')
81bitbakeversion_poky_template = '''\
82 <object model="orm.bitbakeversion" pk="{{bitbake_id}}">
83 <field type="CharField" name="name">{{name}}</field>
84 <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
85 <field type="CharField" name="branch">{{branch}}</field>
86 <field type="CharField" name="dirpath">bitbake</field>
87 </object>
88'''
89bitbakeversion_oecore_template = '''\
90 <object model="orm.bitbakeversion" pk="{{bitbake_id}}">
91 <field type="CharField" name="name">{{name}}</field>
92 <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
93 <field type="CharField" name="branch">{{bitbakeversion}}</field>
94 </object>
95'''
96
97# <!-- Releases available -->
98releases_available_template = '''\
99 <object model="orm.release" pk="{{ra_count}}">
100 <field type="CharField" name="name">{{name}}</field>
101 <field type="CharField" name="description">{{description}}</field>
102 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">{{ra_count}}</field>
103 <field type="CharField" name="branch_name">{{release}}</field>
104 <field type="TextField" name="helptext">Toaster will run your builds {{help_source}}.</field>
105 </object>
106'''
107
108# <!-- Default project layers for each release -->
109default_layers_template = '''\
110 <object model="orm.releasedefaultlayer" pk="{{rdl_count}}">
111 <field rel="ManyToOneRel" to="orm.release" name="release">{{release_id}}</field>
112 <field type="CharField" name="layer_name">{{layer}}</field>
113 </object>
114'''
115
116default_layers_preface = '''\
117 <!-- Default layers provided by poky
118 openembedded-core
119 meta-poky
120 meta-yocto-bsp
121 -->
122'''
123
124layer_poky_template = '''\
125 <object model="orm.layer" pk="{{layer_id}}">
126 <field type="CharField" name="name">{{layer}}</field>
127 <field type="CharField" name="layer_index_url"></field>
128 <field type="CharField" name="vcs_url">{{vcs_url}}</field>
129 <field type="CharField" name="vcs_web_url">{{vcs_web_url}}</field>
130 <field type="CharField" name="vcs_web_tree_base_url">{{vcs_web_tree_base_url}}</field>
131 <field type="CharField" name="vcs_web_file_base_url">{{vcs_web_file_base_url}}</field>
132 </object>
133'''
134
135layer_oe_core_template = '''\
136 <object model="orm.layer" pk="{{layer_id}}">
137 <field type="CharField" name="name">{{layer}}</field>
138 <field type="CharField" name="vcs_url">{{vcs_url}}</field>
139 <field type="CharField" name="vcs_web_url">{{vcs_web_url}}</field>
140 <field type="CharField" name="vcs_web_tree_base_url">{{vcs_web_tree_base_url}}</field>
141 <field type="CharField" name="vcs_web_file_base_url">{{vcs_web_file_base_url}}</field>
142 </object>
143'''
144
145layer_version_template = '''\
146 <object model="orm.layer_version" pk="{{lv_count}}">
147 <field rel="ManyToOneRel" to="orm.layer" name="layer">{{layer_id}}</field>
148 <field type="IntegerField" name="layer_source">0</field>
149 <field rel="ManyToOneRel" to="orm.release" name="release">{{release_id}}</field>
150 <field type="CharField" name="branch">{{branch}}</field>
151 <field type="CharField" name="dirpath">{{dirpath}}</field>
152 </object>
153'''
154
155layer_version_HEAD_template = '''\
156 <object model="orm.layer_version" pk="{{lv_count}}">
157 <field rel="ManyToOneRel" to="orm.layer" name="layer">{{layer_id}}</field>
158 <field type="IntegerField" name="layer_source">0</field>
159 <field rel="ManyToOneRel" to="orm.release" name="release">{{release_id}}</field>
160 <field type="CharField" name="branch">{{branch}}</field>
161 <field type="CharField" name="commit">{{commit}}</field>
162 <field type="CharField" name="dirpath">{{dirpath}}</field>
163 </object>
164'''
165
166layer_version_oe_core_template = '''\
167 <object model="orm.layer_version" pk="1">
168 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
169 <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
170 <field type="CharField" name="local_path">OE-CORE-LAYER-DIR</field>
171 <field type="CharField" name="branch">HEAD</field>
172 <field type="CharField" name="dirpath">meta</field>
173 <field type="IntegerField" name="layer_source">0</field>
174 </object>
175'''
176
177epilog_template = '''\
178</django-objects>
179'''
180
181#################################
182# Helper Routines
183#
184
185def print_str(str,fd):
186 # Avoid extra newline at end
187 if str and (str[-1] == '\n'):
188 str = str[0:-1]
189 print(str,file=fd)
190
191def print_template(template,params,fd):
192 for line in template.split('\n'):
193 p = line.find('{{')
194 while p > 0:
195 q = line.find('}}')
196 key = line[p+2:q]
197 if key in params:
198 line = line[0:p] + params[key] + line[q+2:]
199 else:
200 line = line[0:p] + '?' + key + '?' + line[q+2:]
201 p = line.find('{{')
202 if line:
203 print(line,file=fd)
204
205#################################
206# Generate poky.xml
207#
208
209def generate_poky():
210 fd = open('poky.xml','w')
211
212 params = {}
213 params['distro'] = 'poky'
214 print_template(prolog_template,params,fd)
215 print_str('',fd)
216
217 print_str(' <!-- Bitbake versions which correspond to the metadata release -->',fd)
218 for i,release in enumerate(current_releases):
219 params = {}
220 params['release'] = release[0]
221 params['Release'] = release[0]
222 params['release_version'] = release[1]
223 if not (params['release'] in ('HEAD')): # 'master',
224 params['release'] = params['release'][0].lower() + params['release'][1:]
225 params['name'] = params['release']
226 params['bitbake_id'] = str(i+1)
227 params['branch'] = params['release']
228 print_template(bitbakeversion_poky_template,params,fd)
229 print_str('',fd)
230
231 print_str('',fd)
232 print_str(' <!-- Releases available -->',fd)
233 for i,release in enumerate(current_releases):
234 params = {}
235 params['release'] = release[0]
236 params['Release'] = release[0]
237 params['release_version'] = release[1]
238 if not (params['release'] in ('HEAD')): #'master',
239 params['release'] = params['release'][0].lower() + params['release'][1:]
240 params['h_release'] = '?h={{release}}'
241 params['name'] = params['release']
242 params['ra_count'] = str(i+1)
243 params['branch'] = params['release']
244
245 if 'HEAD' == params['release']:
246 params['help_source'] = 'with the version of the Yocto Project you have cloned or downloaded to your computer'
247 params['description'] = 'Local Yocto Project'
248 params['name'] = 'local'
249 else:
250 params['help_source'] = 'using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/{{h_release}}"&gt;Yocto Project {{Release}} branch&lt;/a&gt;'
251 params['description'] = 'Yocto Project {{release_version}} "{{Release}}"'
252 if 'master' == params['release']:
253 params['h_release'] = ''
254 params['description'] = 'Yocto Project master'
255
256 print_template(releases_available_template,params,fd)
257 print_str('',fd)
258
259 print_str(' <!-- Default project layers for each release -->',fd)
260 rdl_count = 1
261 for i,release in enumerate(current_releases):
262 for j,layer in enumerate(default_poky_layers):
263 params = {}
264 params['layer'] = layer
265 params['release'] = release[0]
266 params['Release'] = release[0]
267 params['release_version'] = release[1]
268 if not (params['release'] in ('master','HEAD')):
269 params['release'] = params['release'][0].lower() + params['release'][1:]
270 params['release_id'] = str(i+1)
271 params['rdl_count'] = str(rdl_count)
272 params['branch'] = params['release']
273 print_template(default_layers_template,params,fd)
274 rdl_count += 1
275 print_str('',fd)
276
277 print_str(default_layers_preface,fd)
278 lv_count = 1
279 for i,layer in enumerate(default_poky_layers):
280 params = {}
281 params['layer'] = layer
282 params['layer_id'] = str(i+1)
283 params['vcs_url'] = 'git://git.yoctoproject.org/poky'
284 params['vcs_web_url'] = 'https://git.yoctoproject.org/cgit/cgit.cgi/poky'
285 params['vcs_web_tree_base_url'] = 'https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%'
286 params['vcs_web_file_base_url'] = 'https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%'
287
288 if i:
289 print_str('',fd)
290 print_template(layer_poky_template,params,fd)
291 for j,release in enumerate(current_releases):
292 params['release'] = release[0]
293 params['Release'] = release[0]
294 params['release_version'] = release[1]
295 if not (params['release'] in ('master','HEAD')):
296 params['release'] = params['release'][0].lower() + params['release'][1:]
297 params['release_id'] = str(j+1)
298 params['lv_count'] = str(lv_count)
299 params['branch'] = params['release']
300 params['commit'] = params['release']
301
302 params['dirpath'] = params['layer']
303 if params['layer'] in ('openembedded-core'): #'openembedded-core',
304 params['dirpath'] = 'meta'
305
306 if 'HEAD' == params['release']:
307 print_template(layer_version_HEAD_template,params,fd)
308 else:
309 print_template(layer_version_template,params,fd)
310 lv_count += 1
311
312 print_str(epilog_template,fd)
313 fd.close()
314
315#################################
316# Generate oe-core.xml
317#
318
319def generate_oe_core():
320 fd = open('oe-core.xml','w')
321
322 params = {}
323 params['distro'] = 'nodistro'
324 print_template(prolog_template,params,fd)
325 print_str('',fd)
326
327 print_str(' <!-- Bitbake versions which correspond to the metadata release -->',fd)
328 for i,release in enumerate(current_releases):
329 params = {}
330 params['release'] = release[0]
331 params['Release'] = release[0]
332 params['bitbakeversion'] = release[6]
333 params['release_version'] = release[1]
334 if not (params['release'] in ('HEAD')): # 'master',
335 params['release'] = params['release'][0].lower() + params['release'][1:]
336 params['name'] = params['release']
337 params['bitbake_id'] = str(i+1)
338 params['branch'] = params['release']
339 print_template(bitbakeversion_oecore_template,params,fd)
340 print_str('',fd)
341
342 print_str(' <!-- Releases available -->',fd)
343 for i,release in enumerate(current_releases):
344 params = {}
345 params['release'] = release[0]
346 params['Release'] = release[0]
347 params['release_version'] = release[1]
348 if not (params['release'] in ('HEAD')): #'master',
349 params['release'] = params['release'][0].lower() + params['release'][1:]
350 params['h_release'] = '?h={{release}}'
351 params['name'] = params['release']
352 params['ra_count'] = str(i+1)
353 params['branch'] = params['release']
354
355 if 'HEAD' == params['release']:
356 params['help_source'] = 'with the version of OpenEmbedded that you have cloned or downloaded to your computer'
357 params['description'] = 'Local Openembedded'
358 params['name'] = 'local'
359 else:
360 params['help_source'] = 'using the tip of the &lt;a href=\\"https://cgit.openembedded.org/openembedded-core/log/{{h_release}}\\"&gt;OpenEmbedded {{Release}}&lt;/a&gt; branch'
361 params['description'] = 'Openembedded {{Release}}'
362 if 'master' == params['release']:
363 params['h_release'] = ''
364 params['description'] = 'OpenEmbedded core master'
365 params['Release'] = params['release']
366
367 print_template(releases_available_template,params,fd)
368 print_str('',fd)
369
370 print_str(' <!-- Default layers for each release -->',fd)
371 rdl_count = 1
372 for i,release in enumerate(current_releases):
373 for j,layer in enumerate(default_oe_core_layers):
374 params = {}
375 params['layer'] = layer
376 params['release'] = release[0]
377 params['Release'] = release[0]
378 params['release_version'] = release[1]
379 if not (params['release'] in ('master','HEAD')):
380 params['release'] = params['release'][0].lower() + params['release'][1:]
381 params['release_id'] = str(i+1)
382 params['rdl_count'] = str(rdl_count)
383 params['branch'] = params['release']
384 print_template(default_layers_template,params,fd)
385 rdl_count += 1
386 print_str('',fd)
387
388 print_str('',fd)
389 print_str(' <!-- Layer for the Local release -->',fd)
390 lv_count = 1
391 for i,layer in enumerate(default_oe_core_layers):
392 params = {}
393 params['layer'] = layer
394 params['layer_id'] = str(i+1)
395 params['vcs_url'] = 'git://git.openembedded.org/openembedded-core'
396 params['vcs_web_url'] = 'https://cgit.openembedded.org/openembedded-core'
397 params['vcs_web_tree_base_url'] = 'https://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%'
398 params['vcs_web_file_base_url'] = 'https://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%'
399 if i:
400 print_str('',fd)
401 print_template(layer_oe_core_template,params,fd)
402
403 print_template(layer_version_oe_core_template,params,fd)
404 print_str('',fd)
405
406 print_str(epilog_template,fd)
407 fd.close()
408
409#################################
410# Help
411#
412
413def list_releases():
414 print("Release ReleaseVer BitbakeVer Support Level")
415 print("========== =========== ========== ==============================================")
416 for release in current_releases:
417 print("%10s %10s %11s %s" % (release[0],release[1],release[6],release[4]))
418
419#################################
420# main
421#
422
423def main(argv):
424 global verbose
425
426 parser = argparse.ArgumentParser(description='gen_fixtures.py: table generate the fixture files')
427 parser.add_argument('--poky', '-p', action='store_const', const='poky', dest='command', help='Generate the poky.xml file')
428 parser.add_argument('--oe-core', '-o', action='store_const', const='oe_core', dest='command', help='Generate the oe-core.xml file')
429 parser.add_argument('--all', '-a', action='store_const', const='all', dest='command', help='Generate all fixture files')
430 parser.add_argument('--list', '-l', action='store_const', const='list', dest='command', help='List the release table')
431 parser.add_argument('--verbose', '-v', action='store_true', dest='verbose', help='Enable verbose debugging output')
432 args = parser.parse_args()
433
434 verbose = args.verbose
435 if 'poky' == args.command:
436 generate_poky()
437 elif 'oe_core' == args.command:
438 generate_oe_core()
439 elif 'all' == args.command:
440 generate_poky()
441 generate_oe_core()
442 elif 'all' == args.command:
443 list_releases()
444 elif 'list' == args.command:
445 list_releases()
446
447 else:
448 print("No command for 'gen_fixtures.py' selected")
449
450if __name__ == '__main__':
451 main(sys.argv[1:])
diff --git a/bitbake/lib/toaster/orm/fixtures/oe-core.xml b/bitbake/lib/toaster/orm/fixtures/oe-core.xml
index 026d94869a..264231d139 100644
--- a/bitbake/lib/toaster/orm/fixtures/oe-core.xml
+++ b/bitbake/lib/toaster/orm/fixtures/oe-core.xml
@@ -8,9 +8,9 @@
8 8
9 <!-- Bitbake versions which correspond to the metadata release --> 9 <!-- Bitbake versions which correspond to the metadata release -->
10 <object model="orm.bitbakeversion" pk="1"> 10 <object model="orm.bitbakeversion" pk="1">
11 <field type="CharField" name="name">dunfell</field> 11 <field type="CharField" name="name">scarthgap</field>
12 <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field> 12 <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
13 <field type="CharField" name="branch">1.46</field> 13 <field type="CharField" name="branch">2.8</field>
14 </object> 14 </object>
15 <object model="orm.bitbakeversion" pk="2"> 15 <object model="orm.bitbakeversion" pk="2">
16 <field type="CharField" name="name">HEAD</field> 16 <field type="CharField" name="name">HEAD</field>
@@ -23,18 +23,33 @@
23 <field type="CharField" name="branch">master</field> 23 <field type="CharField" name="branch">master</field>
24 </object> 24 </object>
25 <object model="orm.bitbakeversion" pk="4"> 25 <object model="orm.bitbakeversion" pk="4">
26 <field type="CharField" name="name">gatesgarth</field> 26 <field type="CharField" name="name">whinlatter</field>
27 <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field> 27 <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
28 <field type="CharField" name="branch">1.48</field> 28 <field type="CharField" name="branch">2.14</field>
29 </object>
30 <object model="orm.bitbakeversion" pk="5">
31 <field type="CharField" name="name">walnascar</field>
32 <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
33 <field type="CharField" name="branch">2.12</field>
34 </object>
35 <object model="orm.bitbakeversion" pk="6">
36 <field type="CharField" name="name">styhead</field>
37 <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
38 <field type="CharField" name="branch">2.10</field>
39 </object>
40 <object model="orm.bitbakeversion" pk="7">
41 <field type="CharField" name="name">kirkstone</field>
42 <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
43 <field type="CharField" name="branch">2.0</field>
29 </object> 44 </object>
30 45
31 <!-- Releases available --> 46 <!-- Releases available -->
32 <object model="orm.release" pk="1"> 47 <object model="orm.release" pk="1">
33 <field type="CharField" name="name">dunfell</field> 48 <field type="CharField" name="name">scarthgap</field>
34 <field type="CharField" name="description">Openembedded Dunfell</field> 49 <field type="CharField" name="description">Openembedded Scarthgap</field>
35 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field> 50 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
36 <field type="CharField" name="branch_name">dunfell</field> 51 <field type="CharField" name="branch_name">scarthgap</field>
37 <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/?h=dunfell\"&gt;OpenEmbedded Dunfell&lt;/a&gt; branch.</field> 52 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=scarthgap\"&gt;OpenEmbedded Scarthgap&lt;/a&gt; branch.</field>
38 </object> 53 </object>
39 <object model="orm.release" pk="2"> 54 <object model="orm.release" pk="2">
40 <field type="CharField" name="name">local</field> 55 <field type="CharField" name="name">local</field>
@@ -48,14 +63,35 @@
48 <field type="CharField" name="description">OpenEmbedded core master</field> 63 <field type="CharField" name="description">OpenEmbedded core master</field>
49 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field> 64 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field>
50 <field type="CharField" name="branch_name">master</field> 65 <field type="CharField" name="branch_name">master</field>
51 <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> 66 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"https://cgit.openembedded.org/openembedded-core/log/\"&gt;OpenEmbedded master&lt;/a&gt; branch.</field>
52 </object> 67 </object>
53 <object model="orm.release" pk="4"> 68 <object model="orm.release" pk="4">
54 <field type="CharField" name="name">gatesgarth</field> 69 <field type="CharField" name="name">whinlatter</field>
55 <field type="CharField" name="description">Openembedded Gatesgarth</field> 70 <field type="CharField" name="description">Openembedded Whinlatter</field>
56 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">4</field> 71 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">4</field>
57 <field type="CharField" name="branch_name">gatesgarth</field> 72 <field type="CharField" name="branch_name">whinlatter</field>
58 <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/?h=gatesgarth\"&gt;OpenEmbedded Gatesgarth&lt;/a&gt; branch.</field> 73 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=whinlatter\"&gt;OpenEmbedded Whinlatter&lt;/a&gt; branch.</field>
74 </object>
75 <object model="orm.release" pk="5">
76 <field type="CharField" name="name">walnascar</field>
77 <field type="CharField" name="description">Openembedded Walnascar</field>
78 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">5</field>
79 <field type="CharField" name="branch_name">walnascar</field>
80 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=walnascar\"&gt;OpenEmbedded Walnascar&lt;/a&gt; branch.</field>
81 </object>
82 <object model="orm.release" pk="6">
83 <field type="CharField" name="name">styhead</field>
84 <field type="CharField" name="description">Openembedded Styhead</field>
85 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">6</field>
86 <field type="CharField" name="branch_name">styhead</field>
87 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=styhead\"&gt;OpenEmbedded Styhead&lt;/a&gt; branch.</field>
88 </object>
89 <object model="orm.release" pk="7">
90 <field type="CharField" name="name">kirkstone</field>
91 <field type="CharField" name="description">Openembedded Kirkstone</field>
92 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">7</field>
93 <field type="CharField" name="branch_name">kirkstone</field>
94 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=kirkstone\"&gt;OpenEmbedded Kirkstone&lt;/a&gt; branch.</field>
59 </object> 95 </object>
60 96
61 <!-- Default layers for each release --> 97 <!-- Default layers for each release -->
@@ -75,15 +111,27 @@
75 <field rel="ManyToOneRel" to="orm.release" name="release">4</field> 111 <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
76 <field type="CharField" name="layer_name">openembedded-core</field> 112 <field type="CharField" name="layer_name">openembedded-core</field>
77 </object> 113 </object>
114 <object model="orm.releasedefaultlayer" pk="5">
115 <field rel="ManyToOneRel" to="orm.release" name="release">5</field>
116 <field type="CharField" name="layer_name">openembedded-core</field>
117 </object>
118 <object model="orm.releasedefaultlayer" pk="6">
119 <field rel="ManyToOneRel" to="orm.release" name="release">6</field>
120 <field type="CharField" name="layer_name">openembedded-core</field>
121 </object>
122 <object model="orm.releasedefaultlayer" pk="7">
123 <field rel="ManyToOneRel" to="orm.release" name="release">7</field>
124 <field type="CharField" name="layer_name">openembedded-core</field>
125 </object>
78 126
79 127
80 <!-- Layer for the Local release --> 128 <!-- Layer for the Local release -->
81 <object model="orm.layer" pk="1"> 129 <object model="orm.layer" pk="1">
82 <field type="CharField" name="name">openembedded-core</field> 130 <field type="CharField" name="name">openembedded-core</field>
83 <field type="CharField" name="vcs_url">git://git.openembedded.org/openembedded-core</field> 131 <field type="CharField" name="vcs_url">git://git.openembedded.org/openembedded-core</field>
84 <field type="CharField" name="vcs_web_url">http://cgit.openembedded.org/openembedded-core</field> 132 <field type="CharField" name="vcs_web_url">https://cgit.openembedded.org/openembedded-core</field>
85 <field type="CharField" name="vcs_web_tree_base_url">http://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%</field> 133 <field type="CharField" name="vcs_web_tree_base_url">https://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%</field>
86 <field type="CharField" name="vcs_web_file_base_url">http://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%</field> 134 <field type="CharField" name="vcs_web_file_base_url">https://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%</field>
87 </object> 135 </object>
88 <object model="orm.layer_version" pk="1"> 136 <object model="orm.layer_version" pk="1">
89 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field> 137 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
diff --git a/bitbake/lib/toaster/orm/fixtures/poky.xml b/bitbake/lib/toaster/orm/fixtures/poky.xml
index a468a54c49..6cf4f0687a 100644
--- a/bitbake/lib/toaster/orm/fixtures/poky.xml
+++ b/bitbake/lib/toaster/orm/fixtures/poky.xml
@@ -8,9 +8,9 @@
8 8
9 <!-- Bitbake versions which correspond to the metadata release --> 9 <!-- Bitbake versions which correspond to the metadata release -->
10 <object model="orm.bitbakeversion" pk="1"> 10 <object model="orm.bitbakeversion" pk="1">
11 <field type="CharField" name="name">dunfell</field> 11 <field type="CharField" name="name">scarthgap</field>
12 <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field> 12 <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
13 <field type="CharField" name="branch">dunfell</field> 13 <field type="CharField" name="branch">scarthgap</field>
14 <field type="CharField" name="dirpath">bitbake</field> 14 <field type="CharField" name="dirpath">bitbake</field>
15 </object> 15 </object>
16 <object model="orm.bitbakeversion" pk="2"> 16 <object model="orm.bitbakeversion" pk="2">
@@ -26,20 +26,38 @@
26 <field type="CharField" name="dirpath">bitbake</field> 26 <field type="CharField" name="dirpath">bitbake</field>
27 </object> 27 </object>
28 <object model="orm.bitbakeversion" pk="4"> 28 <object model="orm.bitbakeversion" pk="4">
29 <field type="CharField" name="name">gatesgarth</field> 29 <field type="CharField" name="name">whinlatter</field>
30 <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field> 30 <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
31 <field type="CharField" name="branch">gatesgarth</field> 31 <field type="CharField" name="branch">whinlatter</field>
32 <field type="CharField" name="dirpath">bitbake</field>
33 </object>
34 <object model="orm.bitbakeversion" pk="5">
35 <field type="CharField" name="name">walnascar</field>
36 <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
37 <field type="CharField" name="branch">walnascar</field>
38 <field type="CharField" name="dirpath">bitbake</field>
39 </object>
40 <object model="orm.bitbakeversion" pk="6">
41 <field type="CharField" name="name">styhead</field>
42 <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
43 <field type="CharField" name="branch">styhead</field>
44 <field type="CharField" name="dirpath">bitbake</field>
45 </object>
46 <object model="orm.bitbakeversion" pk="7">
47 <field type="CharField" name="name">kirkstone</field>
48 <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
49 <field type="CharField" name="branch">kirkstone</field>
32 <field type="CharField" name="dirpath">bitbake</field> 50 <field type="CharField" name="dirpath">bitbake</field>
33 </object> 51 </object>
34 52
35 53
36 <!-- Releases available --> 54 <!-- Releases available -->
37 <object model="orm.release" pk="1"> 55 <object model="orm.release" pk="1">
38 <field type="CharField" name="name">dunfell</field> 56 <field type="CharField" name="name">scarthgap</field>
39 <field type="CharField" name="description">Yocto Project 3.1 "Dunfell"</field> 57 <field type="CharField" name="description">Yocto Project 5.0 "Scarthgap"</field>
40 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field> 58 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
41 <field type="CharField" name="branch_name">dunfell</field> 59 <field type="CharField" name="branch_name">scarthgap</field>
42 <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/?h=dunfell"&gt;Yocto Project Dunfell branch&lt;/a&gt;.</field> 60 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=scarthgap"&gt;Yocto Project Scarthgap branch&lt;/a&gt;.</field>
43 </object> 61 </object>
44 <object model="orm.release" pk="2"> 62 <object model="orm.release" pk="2">
45 <field type="CharField" name="name">local</field> 63 <field type="CharField" name="name">local</field>
@@ -53,14 +71,35 @@
53 <field type="CharField" name="description">Yocto Project master</field> 71 <field type="CharField" name="description">Yocto Project master</field>
54 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field> 72 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field>
55 <field type="CharField" name="branch_name">master</field> 73 <field type="CharField" name="branch_name">master</field>
56 <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> 74 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/"&gt;Yocto Project Master branch&lt;/a&gt;.</field>
57 </object> 75 </object>
58 <object model="orm.release" pk="4"> 76 <object model="orm.release" pk="4">
59 <field type="CharField" name="name">gatesgarth</field> 77 <field type="CharField" name="name">whinlatter</field>
60 <field type="CharField" name="description">Yocto Project 3.2 "Gatesgarth"</field> 78 <field type="CharField" name="description">Yocto Project 5.3 "Whinlatter"</field>
61 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">4</field> 79 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">4</field>
62 <field type="CharField" name="branch_name">gatesgarth</field> 80 <field type="CharField" name="branch_name">whinlatter</field>
63 <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/?h=gatesgarth"&gt;Yocto Project Gatesgarth branch&lt;/a&gt;.</field> 81 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=whinlatter"&gt;Yocto Project Whinlatter branch&lt;/a&gt;.</field>
82 </object>
83 <object model="orm.release" pk="5">
84 <field type="CharField" name="name">walnascar</field>
85 <field type="CharField" name="description">Yocto Project 5.2 "Walnascar"</field>
86 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">5</field>
87 <field type="CharField" name="branch_name">walnascar</field>
88 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=walnascar"&gt;Yocto Project Walnascar branch&lt;/a&gt;.</field>
89 </object>
90 <object model="orm.release" pk="6">
91 <field type="CharField" name="name">styhead</field>
92 <field type="CharField" name="description">Yocto Project 5.1 "Styhead"</field>
93 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">6</field>
94 <field type="CharField" name="branch_name">styhead</field>
95 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=styhead"&gt;Yocto Project Styhead branch&lt;/a&gt;.</field>
96 </object>
97 <object model="orm.release" pk="7">
98 <field type="CharField" name="name">kirkstone</field>
99 <field type="CharField" name="description">Yocto Project 4.0 "Kirkstone"</field>
100 <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">7</field>
101 <field type="CharField" name="branch_name">kirkstone</field>
102 <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=kirkstone"&gt;Yocto Project Kirkstone branch&lt;/a&gt;.</field>
64 </object> 103 </object>
65 104
66 <!-- Default project layers for each release --> 105 <!-- Default project layers for each release -->
@@ -112,6 +151,42 @@
112 <field rel="ManyToOneRel" to="orm.release" name="release">4</field> 151 <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
113 <field type="CharField" name="layer_name">meta-yocto-bsp</field> 152 <field type="CharField" name="layer_name">meta-yocto-bsp</field>
114 </object> 153 </object>
154 <object model="orm.releasedefaultlayer" pk="13">
155 <field rel="ManyToOneRel" to="orm.release" name="release">5</field>
156 <field type="CharField" name="layer_name">openembedded-core</field>
157 </object>
158 <object model="orm.releasedefaultlayer" pk="14">
159 <field rel="ManyToOneRel" to="orm.release" name="release">5</field>
160 <field type="CharField" name="layer_name">meta-poky</field>
161 </object>
162 <object model="orm.releasedefaultlayer" pk="15">
163 <field rel="ManyToOneRel" to="orm.release" name="release">5</field>
164 <field type="CharField" name="layer_name">meta-yocto-bsp</field>
165 </object>
166 <object model="orm.releasedefaultlayer" pk="16">
167 <field rel="ManyToOneRel" to="orm.release" name="release">6</field>
168 <field type="CharField" name="layer_name">openembedded-core</field>
169 </object>
170 <object model="orm.releasedefaultlayer" pk="17">
171 <field rel="ManyToOneRel" to="orm.release" name="release">6</field>
172 <field type="CharField" name="layer_name">meta-poky</field>
173 </object>
174 <object model="orm.releasedefaultlayer" pk="18">
175 <field rel="ManyToOneRel" to="orm.release" name="release">6</field>
176 <field type="CharField" name="layer_name">meta-yocto-bsp</field>
177 </object>
178 <object model="orm.releasedefaultlayer" pk="19">
179 <field rel="ManyToOneRel" to="orm.release" name="release">7</field>
180 <field type="CharField" name="layer_name">openembedded-core</field>
181 </object>
182 <object model="orm.releasedefaultlayer" pk="20">
183 <field rel="ManyToOneRel" to="orm.release" name="release">7</field>
184 <field type="CharField" name="layer_name">meta-poky</field>
185 </object>
186 <object model="orm.releasedefaultlayer" pk="21">
187 <field rel="ManyToOneRel" to="orm.release" name="release">7</field>
188 <field type="CharField" name="layer_name">meta-yocto-bsp</field>
189 </object>
115 190
116 <!-- Default layers provided by poky 191 <!-- Default layers provided by poky
117 openembedded-core 192 openembedded-core
@@ -122,15 +197,15 @@
122 <field type="CharField" name="name">openembedded-core</field> 197 <field type="CharField" name="name">openembedded-core</field>
123 <field type="CharField" name="layer_index_url"></field> 198 <field type="CharField" name="layer_index_url"></field>
124 <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field> 199 <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
125 <field type="CharField" name="vcs_web_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky</field> 200 <field type="CharField" name="vcs_web_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
126 <field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field> 201 <field type="CharField" name="vcs_web_tree_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
127 <field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field> 202 <field type="CharField" name="vcs_web_file_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
128 </object> 203 </object>
129 <object model="orm.layer_version" pk="1"> 204 <object model="orm.layer_version" pk="1">
130 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field> 205 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
131 <field type="IntegerField" name="layer_source">0</field> 206 <field type="IntegerField" name="layer_source">0</field>
132 <field rel="ManyToOneRel" to="orm.release" name="release">1</field> 207 <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
133 <field type="CharField" name="branch">dunfell</field> 208 <field type="CharField" name="branch">scarthgap</field>
134 <field type="CharField" name="dirpath">meta</field> 209 <field type="CharField" name="dirpath">meta</field>
135 </object> 210 </object>
136 <object model="orm.layer_version" pk="2"> 211 <object model="orm.layer_version" pk="2">
@@ -152,7 +227,28 @@
152 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field> 227 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
153 <field type="IntegerField" name="layer_source">0</field> 228 <field type="IntegerField" name="layer_source">0</field>
154 <field rel="ManyToOneRel" to="orm.release" name="release">4</field> 229 <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
155 <field type="CharField" name="branch">gatesgarth</field> 230 <field type="CharField" name="branch">whinlatter</field>
231 <field type="CharField" name="dirpath">meta</field>
232 </object>
233 <object model="orm.layer_version" pk="5">
234 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
235 <field type="IntegerField" name="layer_source">0</field>
236 <field rel="ManyToOneRel" to="orm.release" name="release">5</field>
237 <field type="CharField" name="branch">walnascar</field>
238 <field type="CharField" name="dirpath">meta</field>
239 </object>
240 <object model="orm.layer_version" pk="6">
241 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
242 <field type="IntegerField" name="layer_source">0</field>
243 <field rel="ManyToOneRel" to="orm.release" name="release">6</field>
244 <field type="CharField" name="branch">styhead</field>
245 <field type="CharField" name="dirpath">meta</field>
246 </object>
247 <object model="orm.layer_version" pk="7">
248 <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
249 <field type="IntegerField" name="layer_source">0</field>
250 <field rel="ManyToOneRel" to="orm.release" name="release">7</field>
251 <field type="CharField" name="branch">kirkstone</field>
156 <field type="CharField" name="dirpath">meta</field> 252 <field type="CharField" name="dirpath">meta</field>
157 </object> 253 </object>
158 254
@@ -160,18 +256,18 @@
160 <field type="CharField" name="name">meta-poky</field> 256 <field type="CharField" name="name">meta-poky</field>
161 <field type="CharField" name="layer_index_url"></field> 257 <field type="CharField" name="layer_index_url"></field>
162 <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field> 258 <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
163 <field type="CharField" name="vcs_web_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky</field> 259 <field type="CharField" name="vcs_web_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
164 <field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field> 260 <field type="CharField" name="vcs_web_tree_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
165 <field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field> 261 <field type="CharField" name="vcs_web_file_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
166 </object> 262 </object>
167 <object model="orm.layer_version" pk="5"> 263 <object model="orm.layer_version" pk="8">
168 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field> 264 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
169 <field type="IntegerField" name="layer_source">0</field> 265 <field type="IntegerField" name="layer_source">0</field>
170 <field rel="ManyToOneRel" to="orm.release" name="release">1</field> 266 <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
171 <field type="CharField" name="branch">dunfell</field> 267 <field type="CharField" name="branch">scarthgap</field>
172 <field type="CharField" name="dirpath">meta-poky</field> 268 <field type="CharField" name="dirpath">meta-poky</field>
173 </object> 269 </object>
174 <object model="orm.layer_version" pk="6"> 270 <object model="orm.layer_version" pk="9">
175 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field> 271 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
176 <field type="IntegerField" name="layer_source">0</field> 272 <field type="IntegerField" name="layer_source">0</field>
177 <field rel="ManyToOneRel" to="orm.release" name="release">2</field> 273 <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
@@ -179,18 +275,39 @@
179 <field type="CharField" name="commit">HEAD</field> 275 <field type="CharField" name="commit">HEAD</field>
180 <field type="CharField" name="dirpath">meta-poky</field> 276 <field type="CharField" name="dirpath">meta-poky</field>
181 </object> 277 </object>
182 <object model="orm.layer_version" pk="7"> 278 <object model="orm.layer_version" pk="10">
183 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field> 279 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
184 <field type="IntegerField" name="layer_source">0</field> 280 <field type="IntegerField" name="layer_source">0</field>
185 <field rel="ManyToOneRel" to="orm.release" name="release">3</field> 281 <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
186 <field type="CharField" name="branch">master</field> 282 <field type="CharField" name="branch">master</field>
187 <field type="CharField" name="dirpath">meta-poky</field> 283 <field type="CharField" name="dirpath">meta-poky</field>
188 </object> 284 </object>
189 <object model="orm.layer_version" pk="8"> 285 <object model="orm.layer_version" pk="11">
190 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field> 286 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
191 <field type="IntegerField" name="layer_source">0</field> 287 <field type="IntegerField" name="layer_source">0</field>
192 <field rel="ManyToOneRel" to="orm.release" name="release">4</field> 288 <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
193 <field type="CharField" name="branch">gatesgarth</field> 289 <field type="CharField" name="branch">whinlatter</field>
290 <field type="CharField" name="dirpath">meta-poky</field>
291 </object>
292 <object model="orm.layer_version" pk="12">
293 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
294 <field type="IntegerField" name="layer_source">0</field>
295 <field rel="ManyToOneRel" to="orm.release" name="release">5</field>
296 <field type="CharField" name="branch">walnascar</field>
297 <field type="CharField" name="dirpath">meta-poky</field>
298 </object>
299 <object model="orm.layer_version" pk="13">
300 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
301 <field type="IntegerField" name="layer_source">0</field>
302 <field rel="ManyToOneRel" to="orm.release" name="release">6</field>
303 <field type="CharField" name="branch">styhead</field>
304 <field type="CharField" name="dirpath">meta-poky</field>
305 </object>
306 <object model="orm.layer_version" pk="14">
307 <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
308 <field type="IntegerField" name="layer_source">0</field>
309 <field rel="ManyToOneRel" to="orm.release" name="release">7</field>
310 <field type="CharField" name="branch">kirkstone</field>
194 <field type="CharField" name="dirpath">meta-poky</field> 311 <field type="CharField" name="dirpath">meta-poky</field>
195 </object> 312 </object>
196 313
@@ -198,18 +315,18 @@
198 <field type="CharField" name="name">meta-yocto-bsp</field> 315 <field type="CharField" name="name">meta-yocto-bsp</field>
199 <field type="CharField" name="layer_index_url"></field> 316 <field type="CharField" name="layer_index_url"></field>
200 <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field> 317 <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
201 <field type="CharField" name="vcs_web_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky</field> 318 <field type="CharField" name="vcs_web_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
202 <field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field> 319 <field type="CharField" name="vcs_web_tree_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
203 <field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field> 320 <field type="CharField" name="vcs_web_file_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
204 </object> 321 </object>
205 <object model="orm.layer_version" pk="9"> 322 <object model="orm.layer_version" pk="15">
206 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field> 323 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
207 <field type="IntegerField" name="layer_source">0</field> 324 <field type="IntegerField" name="layer_source">0</field>
208 <field rel="ManyToOneRel" to="orm.release" name="release">1</field> 325 <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
209 <field type="CharField" name="branch">dunfell</field> 326 <field type="CharField" name="branch">scarthgap</field>
210 <field type="CharField" name="dirpath">meta-yocto-bsp</field> 327 <field type="CharField" name="dirpath">meta-yocto-bsp</field>
211 </object> 328 </object>
212 <object model="orm.layer_version" pk="10"> 329 <object model="orm.layer_version" pk="16">
213 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field> 330 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
214 <field type="IntegerField" name="layer_source">0</field> 331 <field type="IntegerField" name="layer_source">0</field>
215 <field rel="ManyToOneRel" to="orm.release" name="release">2</field> 332 <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
@@ -217,18 +334,39 @@
217 <field type="CharField" name="commit">HEAD</field> 334 <field type="CharField" name="commit">HEAD</field>
218 <field type="CharField" name="dirpath">meta-yocto-bsp</field> 335 <field type="CharField" name="dirpath">meta-yocto-bsp</field>
219 </object> 336 </object>
220 <object model="orm.layer_version" pk="11"> 337 <object model="orm.layer_version" pk="17">
221 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field> 338 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
222 <field type="IntegerField" name="layer_source">0</field> 339 <field type="IntegerField" name="layer_source">0</field>
223 <field rel="ManyToOneRel" to="orm.release" name="release">3</field> 340 <field rel="ManyToOneRel" to="orm.release" name="release">3</field>
224 <field type="CharField" name="branch">master</field> 341 <field type="CharField" name="branch">master</field>
225 <field type="CharField" name="dirpath">meta-yocto-bsp</field> 342 <field type="CharField" name="dirpath">meta-yocto-bsp</field>
226 </object> 343 </object>
227 <object model="orm.layer_version" pk="12"> 344 <object model="orm.layer_version" pk="18">
228 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field> 345 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
229 <field type="IntegerField" name="layer_source">0</field> 346 <field type="IntegerField" name="layer_source">0</field>
230 <field rel="ManyToOneRel" to="orm.release" name="release">4</field> 347 <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
231 <field type="CharField" name="branch">gatesgarth</field> 348 <field type="CharField" name="branch">whinlatter</field>
349 <field type="CharField" name="dirpath">meta-yocto-bsp</field>
350 </object>
351 <object model="orm.layer_version" pk="19">
352 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
353 <field type="IntegerField" name="layer_source">0</field>
354 <field rel="ManyToOneRel" to="orm.release" name="release">5</field>
355 <field type="CharField" name="branch">walnascar</field>
356 <field type="CharField" name="dirpath">meta-yocto-bsp</field>
357 </object>
358 <object model="orm.layer_version" pk="20">
359 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
360 <field type="IntegerField" name="layer_source">0</field>
361 <field rel="ManyToOneRel" to="orm.release" name="release">6</field>
362 <field type="CharField" name="branch">styhead</field>
363 <field type="CharField" name="dirpath">meta-yocto-bsp</field>
364 </object>
365 <object model="orm.layer_version" pk="21">
366 <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
367 <field type="IntegerField" name="layer_source">0</field>
368 <field rel="ManyToOneRel" to="orm.release" name="release">7</field>
369 <field type="CharField" name="branch">kirkstone</field>
232 <field type="CharField" name="dirpath">meta-yocto-bsp</field> 370 <field type="CharField" name="dirpath">meta-yocto-bsp</field>
233 </object> 371 </object>
234</django-objects> 372</django-objects>
diff --git a/bitbake/lib/toaster/orm/fixtures/settings.xml b/bitbake/lib/toaster/orm/fixtures/settings.xml
index 78c0fdca7f..02c26a6974 100644
--- a/bitbake/lib/toaster/orm/fixtures/settings.xml
+++ b/bitbake/lib/toaster/orm/fixtures/settings.xml
@@ -12,14 +12,14 @@
12 </object> 12 </object>
13 <object model="orm.toastersetting" pk="4"> 13 <object model="orm.toastersetting" pk="4">
14 <field type="CharField" name="name">DEFCONF_MACHINE</field> 14 <field type="CharField" name="name">DEFCONF_MACHINE</field>
15 <field type="CharField" name="value">qemux86</field> 15 <field type="CharField" name="value">qemux86-64</field>
16 </object> 16 </object>
17 <object model="orm.toastersetting" pk="5"> 17 <object model="orm.toastersetting" pk="5">
18 <field type="CharField" name="name">DEFCONF_SSTATE_DIR</field> 18 <field type="CharField" name="name">DEFCONF_SSTATE_DIR</field>
19 <field type="CharField" name="value">${TOPDIR}/../sstate-cache</field> 19 <field type="CharField" name="value">${TOPDIR}/../sstate-cache</field>
20 </object> 20 </object>
21 <object model="orm.toastersetting" pk="6"> 21 <object model="orm.toastersetting" pk="6">
22 <field type="CharField" name="name">DEFCONF_IMAGE_INSTALL_append</field> 22 <field type="CharField" name="name">DEFCONF_IMAGE_INSTALL:append</field>
23 <field type="CharField" name="value"></field> 23 <field type="CharField" name="value"></field>
24 </object> 24 </object>
25 <object model="orm.toastersetting" pk="7"> 25 <object model="orm.toastersetting" pk="7">
diff --git a/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
index 2fbd7be3d2..6d64830ebd 100644
--- a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
+++ b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
@@ -21,7 +21,7 @@ import threading
21import time 21import time
22logger = logging.getLogger("toaster") 22logger = logging.getLogger("toaster")
23 23
24DEFAULT_LAYERINDEX_SERVER = "http://layers.openembedded.org/layerindex/api/" 24DEFAULT_LAYERINDEX_SERVER = "https://layers.openembedded.org/layerindex/api/"
25 25
26# Add path to bitbake modules for layerindexlib 26# Add path to bitbake modules for layerindexlib
27# lib/toaster/orm/management/commands/lsupdates.py (abspath) 27# lib/toaster/orm/management/commands/lsupdates.py (abspath)
@@ -40,7 +40,7 @@ class Spinner(threading.Thread):
40 """ A simple progress spinner to indicate download/parsing is happening""" 40 """ A simple progress spinner to indicate download/parsing is happening"""
41 def __init__(self, *args, **kwargs): 41 def __init__(self, *args, **kwargs):
42 super(Spinner, self).__init__(*args, **kwargs) 42 super(Spinner, self).__init__(*args, **kwargs)
43 self.setDaemon(True) 43 self.daemon = True
44 self.signal = True 44 self.signal = True
45 45
46 def run(self): 46 def run(self):
@@ -87,13 +87,13 @@ class Command(BaseCommand):
87 87
88 # update branches; only those that we already have names listed in the 88 # update branches; only those that we already have names listed in the
89 # Releases table 89 # Releases table
90 whitelist_branch_names = [rel.branch_name 90 allowed_branch_names = [rel.branch_name
91 for rel in Release.objects.all()] 91 for rel in Release.objects.all()]
92 if len(whitelist_branch_names) == 0: 92 if len(allowed_branch_names) == 0:
93 raise Exception("Failed to make list of branches to fetch") 93 raise Exception("Failed to make list of branches to fetch")
94 94
95 logger.info("Fetching metadata for %s", 95 logger.info("Fetching metadata for %s",
96 " ".join(whitelist_branch_names)) 96 " ".join(allowed_branch_names))
97 97
98 # We require a non-empty bb.data, but we can fake it with a dictionary 98 # We require a non-empty bb.data, but we can fake it with a dictionary
99 layerindex = layerindexlib.LayerIndex({"DUMMY" : "VALUE"}) 99 layerindex = layerindexlib.LayerIndex({"DUMMY" : "VALUE"})
@@ -101,8 +101,8 @@ class Command(BaseCommand):
101 http_progress = Spinner() 101 http_progress = Spinner()
102 http_progress.start() 102 http_progress.start()
103 103
104 if whitelist_branch_names: 104 if allowed_branch_names:
105 url_branches = ";branch=%s" % ','.join(whitelist_branch_names) 105 url_branches = ";branch=%s" % ','.join(allowed_branch_names)
106 else: 106 else:
107 url_branches = "" 107 url_branches = ""
108 layerindex.load_layerindex("%s%s" % (self.apiurl, url_branches)) 108 layerindex.load_layerindex("%s%s" % (self.apiurl, url_branches))
diff --git a/bitbake/lib/toaster/orm/migrations/0020_models_bigautofield.py b/bitbake/lib/toaster/orm/migrations/0020_models_bigautofield.py
new file mode 100644
index 0000000000..f19b5dddbc
--- /dev/null
+++ b/bitbake/lib/toaster/orm/migrations/0020_models_bigautofield.py
@@ -0,0 +1,173 @@
1# Generated by Django 3.2.12 on 2022-03-06 03:28
2
3from django.db import migrations, models
4
5
6class Migration(migrations.Migration):
7
8 dependencies = [
9 ('orm', '0019_django_2_2'),
10 ]
11
12 operations = [
13 migrations.AlterField(
14 model_name='bitbakeversion',
15 name='id',
16 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
17 ),
18 migrations.AlterField(
19 model_name='build',
20 name='id',
21 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
22 ),
23 migrations.AlterField(
24 model_name='distro',
25 name='id',
26 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
27 ),
28 migrations.AlterField(
29 model_name='helptext',
30 name='id',
31 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
32 ),
33 migrations.AlterField(
34 model_name='layer',
35 name='id',
36 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
37 ),
38 migrations.AlterField(
39 model_name='layer_version',
40 name='id',
41 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
42 ),
43 migrations.AlterField(
44 model_name='layerversiondependency',
45 name='id',
46 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
47 ),
48 migrations.AlterField(
49 model_name='logmessage',
50 name='id',
51 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
52 ),
53 migrations.AlterField(
54 model_name='machine',
55 name='id',
56 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
57 ),
58 migrations.AlterField(
59 model_name='package',
60 name='id',
61 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
62 ),
63 migrations.AlterField(
64 model_name='package_dependency',
65 name='id',
66 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
67 ),
68 migrations.AlterField(
69 model_name='package_file',
70 name='id',
71 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
72 ),
73 migrations.AlterField(
74 model_name='project',
75 name='id',
76 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
77 ),
78 migrations.AlterField(
79 model_name='projectlayer',
80 name='id',
81 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
82 ),
83 migrations.AlterField(
84 model_name='projecttarget',
85 name='id',
86 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
87 ),
88 migrations.AlterField(
89 model_name='projectvariable',
90 name='id',
91 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
92 ),
93 migrations.AlterField(
94 model_name='provides',
95 name='id',
96 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
97 ),
98 migrations.AlterField(
99 model_name='recipe',
100 name='id',
101 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
102 ),
103 migrations.AlterField(
104 model_name='recipe_dependency',
105 name='id',
106 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
107 ),
108 migrations.AlterField(
109 model_name='release',
110 name='id',
111 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
112 ),
113 migrations.AlterField(
114 model_name='releasedefaultlayer',
115 name='id',
116 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
117 ),
118 migrations.AlterField(
119 model_name='target',
120 name='id',
121 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
122 ),
123 migrations.AlterField(
124 model_name='target_file',
125 name='id',
126 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
127 ),
128 migrations.AlterField(
129 model_name='target_image_file',
130 name='id',
131 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
132 ),
133 migrations.AlterField(
134 model_name='target_installed_package',
135 name='id',
136 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
137 ),
138 migrations.AlterField(
139 model_name='targetkernelfile',
140 name='id',
141 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
142 ),
143 migrations.AlterField(
144 model_name='targetsdkfile',
145 name='id',
146 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
147 ),
148 migrations.AlterField(
149 model_name='task',
150 name='id',
151 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
152 ),
153 migrations.AlterField(
154 model_name='task_dependency',
155 name='id',
156 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
157 ),
158 migrations.AlterField(
159 model_name='toastersetting',
160 name='id',
161 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
162 ),
163 migrations.AlterField(
164 model_name='variable',
165 name='id',
166 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
167 ),
168 migrations.AlterField(
169 model_name='variablehistory',
170 name='id',
171 field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
172 ),
173 ]
diff --git a/bitbake/lib/toaster/orm/migrations/0021_eventlogsimports.py b/bitbake/lib/toaster/orm/migrations/0021_eventlogsimports.py
new file mode 100644
index 0000000000..328eb5753c
--- /dev/null
+++ b/bitbake/lib/toaster/orm/migrations/0021_eventlogsimports.py
@@ -0,0 +1,22 @@
1# Generated by Django 4.2.5 on 2023-11-23 18:44
2
3from django.db import migrations, models
4
5
6class Migration(migrations.Migration):
7
8 dependencies = [
9 ('orm', '0020_models_bigautofield'),
10 ]
11
12 operations = [
13 migrations.CreateModel(
14 name='EventLogsImports',
15 fields=[
16 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
17 ('name', models.CharField(max_length=255)),
18 ('imported', models.BooleanField(default=False)),
19 ('build_id', models.IntegerField(blank=True, null=True)),
20 ],
21 ),
22 ]
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 7f7e922ade..e2f488ed89 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -58,7 +58,6 @@ if 'sqlite' in settings.DATABASES['default']['ENGINE']:
58 return _base_insert(self, *args, **kwargs) 58 return _base_insert(self, *args, **kwargs)
59 QuerySet._insert = _insert 59 QuerySet._insert = _insert
60 60
61 from django.utils import six
62 def _create_object_from_params(self, lookup, params): 61 def _create_object_from_params(self, lookup, params):
63 """ 62 """
64 Tries to create an object using passed params. 63 Tries to create an object using passed params.
@@ -80,7 +79,6 @@ if 'sqlite' in settings.DATABASES['default']['ENGINE']:
80 # end of HACK 79 # end of HACK
81 80
82class GitURLValidator(validators.URLValidator): 81class GitURLValidator(validators.URLValidator):
83 import re
84 regex = re.compile( 82 regex = re.compile(
85 r'^(?:ssh|git|http|ftp)s?://' # http:// or https:// 83 r'^(?:ssh|git|http|ftp)s?://' # http:// or https://
86 r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain... 84 r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain...
@@ -108,7 +106,7 @@ class ToasterSetting(models.Model):
108 106
109 107
110class ProjectManager(models.Manager): 108class ProjectManager(models.Manager):
111 def create_project(self, name, release, existing_project=None): 109 def create_project(self, name, release, existing_project=None, imported=False):
112 if existing_project and (release is not None): 110 if existing_project and (release is not None):
113 prj = existing_project 111 prj = existing_project
114 prj.bitbake_version = release.bitbake_version 112 prj.bitbake_version = release.bitbake_version
@@ -135,19 +133,19 @@ class ProjectManager(models.Manager):
135 133
136 if release is None: 134 if release is None:
137 return prj 135 return prj
138 136 if not imported:
139 for rdl in release.releasedefaultlayer_set.all(): 137 for rdl in release.releasedefaultlayer_set.all():
140 lv = Layer_Version.objects.filter( 138 lv = Layer_Version.objects.filter(
141 layer__name=rdl.layer_name, 139 layer__name=rdl.layer_name,
142 release=release).first() 140 release=release).first()
143 141
144 if lv: 142 if lv:
145 ProjectLayer.objects.create(project=prj, 143 ProjectLayer.objects.create(project=prj,
146 layercommit=lv, 144 layercommit=lv,
147 optional=False) 145 optional=False)
148 else: 146 else:
149 logger.warning("Default project layer %s not found" % 147 logger.warning("Default project layer %s not found" %
150 rdl.layer_name) 148 rdl.layer_name)
151 149
152 return prj 150 return prj
153 151
@@ -1390,9 +1388,6 @@ class Machine(models.Model):
1390 return "Machine " + self.name + "(" + self.description + ")" 1388 return "Machine " + self.name + "(" + self.description + ")"
1391 1389
1392 1390
1393
1394
1395
1396class BitbakeVersion(models.Model): 1391class BitbakeVersion(models.Model):
1397 1392
1398 name = models.CharField(max_length=32, unique = True) 1393 name = models.CharField(max_length=32, unique = True)
@@ -1504,7 +1499,7 @@ class Layer_Version(models.Model):
1504 # code lifted, with adaptations, from the layerindex-web application 1499 # code lifted, with adaptations, from the layerindex-web application
1505 # https://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/ 1500 # https://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/
1506 def _handle_url_path(self, base_url, path): 1501 def _handle_url_path(self, base_url, path):
1507 import re, posixpath 1502 import posixpath
1508 if base_url: 1503 if base_url:
1509 if self.dirpath: 1504 if self.dirpath:
1510 if path: 1505 if path:
@@ -1717,9 +1712,9 @@ class CustomImageRecipe(Recipe):
1717 1712
1718 def generate_recipe_file_contents(self): 1713 def generate_recipe_file_contents(self):
1719 """Generate the contents for the recipe file.""" 1714 """Generate the contents for the recipe file."""
1720 # If we have no excluded packages we only need to _append 1715 # If we have no excluded packages we only need to :append
1721 if self.excludes_set.count() == 0: 1716 if self.excludes_set.count() == 0:
1722 packages_conf = "IMAGE_INSTALL_append = \" " 1717 packages_conf = "IMAGE_INSTALL:append = \" "
1723 1718
1724 for pkg in self.appends_set.all(): 1719 for pkg in self.appends_set.all():
1725 packages_conf += pkg.name+' ' 1720 packages_conf += pkg.name+' '
@@ -1734,7 +1729,7 @@ class CustomImageRecipe(Recipe):
1734 packages_conf += "\"" 1729 packages_conf += "\""
1735 1730
1736 base_recipe_path = self.get_base_recipe_file() 1731 base_recipe_path = self.get_base_recipe_file()
1737 if base_recipe_path: 1732 if base_recipe_path and os.path.isfile(base_recipe_path):
1738 base_recipe = open(base_recipe_path, 'r').read() 1733 base_recipe = open(base_recipe_path, 'r').read()
1739 else: 1734 else:
1740 # Pass back None to trigger error message to user 1735 # Pass back None to trigger error message to user
@@ -1854,6 +1849,8 @@ def signal_runbuilds():
1854 os.kill(int(pidf.read()), SIGUSR1) 1849 os.kill(int(pidf.read()), SIGUSR1)
1855 except FileNotFoundError: 1850 except FileNotFoundError:
1856 logger.info("Stopping existing runbuilds: no current process found") 1851 logger.info("Stopping existing runbuilds: no current process found")
1852 except ProcessLookupError:
1853 logger.warning("Stopping existing runbuilds: process lookup not found")
1857 1854
1858class Distro(models.Model): 1855class Distro(models.Model):
1859 search_allowed_fields = ["name", "description", "layer_version__layer__name"] 1856 search_allowed_fields = ["name", "description", "layer_version__layer__name"]
@@ -1870,6 +1867,15 @@ class Distro(models.Model):
1870 def __unicode__(self): 1867 def __unicode__(self):
1871 return "Distro " + self.name + "(" + self.description + ")" 1868 return "Distro " + self.name + "(" + self.description + ")"
1872 1869
1870class EventLogsImports(models.Model):
1871 name = models.CharField(max_length=255)
1872 imported = models.BooleanField(default=False)
1873 build_id = models.IntegerField(blank=True, null=True)
1874
1875 def __str__(self):
1876 return self.name
1877
1878
1873django.db.models.signals.post_save.connect(invalidate_cache) 1879django.db.models.signals.post_save.connect(invalidate_cache)
1874django.db.models.signals.post_delete.connect(invalidate_cache) 1880django.db.models.signals.post_delete.connect(invalidate_cache)
1875django.db.models.signals.m2m_changed.connect(invalidate_cache) 1881django.db.models.signals.m2m_changed.connect(invalidate_cache)