diff options
Diffstat (limited to 'bitbake/lib/toaster/orm')
-rw-r--r-- | bitbake/lib/toaster/orm/fixtures/README | 2 | ||||
-rwxr-xr-x | bitbake/lib/toaster/orm/fixtures/check_fixtures.py | 38 | ||||
-rwxr-xr-x | bitbake/lib/toaster/orm/fixtures/gen_fixtures.py | 451 | ||||
-rw-r--r-- | bitbake/lib/toaster/orm/fixtures/oe-core.xml | 80 | ||||
-rw-r--r-- | bitbake/lib/toaster/orm/fixtures/poky.xml | 210 | ||||
-rw-r--r-- | bitbake/lib/toaster/orm/fixtures/settings.xml | 4 | ||||
-rw-r--r-- | bitbake/lib/toaster/orm/management/commands/lsupdates.py | 16 | ||||
-rw-r--r-- | bitbake/lib/toaster/orm/migrations/0020_models_bigautofield.py | 173 | ||||
-rw-r--r-- | bitbake/lib/toaster/orm/migrations/0021_eventlogsimports.py | 22 | ||||
-rw-r--r-- | bitbake/lib/toaster/orm/models.py | 52 |
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 | ||
28 | Use the django management command manage.py loaddata <your fixture file> | 28 | Use the django management command manage.py loaddata <your fixture file> |
29 | For further information see the Django command documentation at: | 29 | For further information see the Django command documentation at: |
30 | https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-loaddata | 30 | https://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 | |||
7 | import json | ||
8 | import urllib.request | ||
9 | |||
10 | import gen_fixtures as fixtures | ||
11 | |||
12 | RELEASE_URL = "https://dashboard.yoctoproject.org/releases.json" | ||
13 | |||
14 | with 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 | ||
24 | active_releases = [ | ||
25 | e["release_codename"].lower() for e in releases if e["series"] == "current" | ||
26 | ] | ||
27 | active_releases.append("master") | ||
28 | active_releases.append("head") | ||
29 | |||
30 | fixtures_releases = [x[0].lower() for x in fixtures.current_releases] | ||
31 | |||
32 | if 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)) | ||
36 | else: | ||
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 | |||
15 | import os | ||
16 | import sys | ||
17 | import argparse | ||
18 | |||
19 | verbose = 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] | ||
36 | current_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 | |||
57 | default_poky_layers = [ | ||
58 | 'openembedded-core', | ||
59 | 'meta-poky', | ||
60 | 'meta-yocto-bsp', | ||
61 | ] | ||
62 | |||
63 | default_oe_core_layers = [ | ||
64 | 'openembedded-core', | ||
65 | ] | ||
66 | |||
67 | #################################### | ||
68 | # Templates | ||
69 | |||
70 | prolog_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 -->') | ||
81 | bitbakeversion_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 | ''' | ||
89 | bitbakeversion_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 --> | ||
98 | releases_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 --> | ||
109 | default_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 | |||
116 | default_layers_preface = '''\ | ||
117 | <!-- Default layers provided by poky | ||
118 | openembedded-core | ||
119 | meta-poky | ||
120 | meta-yocto-bsp | ||
121 | --> | ||
122 | ''' | ||
123 | |||
124 | layer_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 | |||
135 | layer_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 | |||
145 | layer_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 | |||
155 | layer_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 | |||
166 | layer_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 | |||
177 | epilog_template = '''\ | ||
178 | </django-objects> | ||
179 | ''' | ||
180 | |||
181 | ################################# | ||
182 | # Helper Routines | ||
183 | # | ||
184 | |||
185 | def 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 | |||
191 | def 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 | |||
209 | def 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 <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/{{h_release}}">Yocto Project {{Release}} branch</a>' | ||
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 | |||
319 | def 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 <a href=\\"https://cgit.openembedded.org/openembedded-core/log/{{h_release}}\\">OpenEmbedded {{Release}}</a> 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 | |||
413 | def 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 | |||
423 | def 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 | |||
450 | if __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 <a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=dunfell\">OpenEmbedded Dunfell</a> branch.</field> | 52 | <field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=scarthgap\">OpenEmbedded Scarthgap</a> 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 <a href=\"http://cgit.openembedded.org/openembedded-core/log/\">OpenEmbedded master</a> branch.</field> | 66 | <field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href=\"https://cgit.openembedded.org/openembedded-core/log/\">OpenEmbedded master</a> 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 <a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=gatesgarth\">OpenEmbedded Gatesgarth</a> branch.</field> | 73 | <field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=whinlatter\">OpenEmbedded Whinlatter</a> 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 <a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=walnascar\">OpenEmbedded Walnascar</a> 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 <a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=styhead\">OpenEmbedded Styhead</a> 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 <a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=kirkstone\">OpenEmbedded Kirkstone</a> 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 <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=dunfell">Yocto Project Dunfell branch</a>.</field> | 60 | <field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=scarthgap">Yocto Project Scarthgap branch</a>.</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 <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/">Yocto Project Master branch</a>.</field> | 74 | <field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/">Yocto Project Master branch</a>.</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 <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=gatesgarth">Yocto Project Gatesgarth branch</a>.</field> | 81 | <field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=whinlatter">Yocto Project Whinlatter branch</a>.</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 <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=walnascar">Yocto Project Walnascar branch</a>.</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 <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=styhead">Yocto Project Styhead branch</a>.</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 <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=kirkstone">Yocto Project Kirkstone branch</a>.</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 | |||
21 | import time | 21 | import time |
22 | logger = logging.getLogger("toaster") | 22 | logger = logging.getLogger("toaster") |
23 | 23 | ||
24 | DEFAULT_LAYERINDEX_SERVER = "http://layers.openembedded.org/layerindex/api/" | 24 | DEFAULT_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 | |||
3 | from django.db import migrations, models | ||
4 | |||
5 | |||
6 | class 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 | |||
3 | from django.db import migrations, models | ||
4 | |||
5 | |||
6 | class 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 | ||
82 | class GitURLValidator(validators.URLValidator): | 81 | class 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 | ||
110 | class ProjectManager(models.Manager): | 108 | class 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 | |||
1396 | class BitbakeVersion(models.Model): | 1391 | class 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 | ||
1858 | class Distro(models.Model): | 1855 | class 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 | ||
1870 | class 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 | |||
1873 | django.db.models.signals.post_save.connect(invalidate_cache) | 1879 | django.db.models.signals.post_save.connect(invalidate_cache) |
1874 | django.db.models.signals.post_delete.connect(invalidate_cache) | 1880 | django.db.models.signals.post_delete.connect(invalidate_cache) |
1875 | django.db.models.signals.m2m_changed.connect(invalidate_cache) | 1881 | django.db.models.signals.m2m_changed.connect(invalidate_cache) |