Merge lp:~hyask/meta-release/ubuntu into lp:~ubuntu-core-dev/meta-release/ubuntu
- ubuntu
- Merge into ubuntu
Proposed by
Skia
Status: | Merged |
---|---|
Merged at revision: | 337 |
Proposed branch: | lp:~hyask/meta-release/ubuntu |
Merge into: | lp:~ubuntu-core-dev/meta-release/ubuntu |
Diff against target: |
2459 lines (+2/-2397) 12 files modified
EOLReleaseAnnouncement (+0/-50) README (+2/-17) meta-release (+0/-426) meta-release-development (+0/-23) meta-release-lts (+0/-103) meta-release-lts-development (+0/-23) meta-release-lts-proposed (+0/-103) meta-release-proposed (+0/-426) meta-release-unit-testing (+0/-78) raspi/os_list_imagingutility_ubuntu.json (+0/-172) refresh_os_list (+0/-965) url-checker.sh (+0/-11) |
To merge this branch: | bzr merge lp:~hyask/meta-release/ubuntu |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu Core Development Team | Pending | ||
Review via email: mp+455311@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === removed file 'EOLReleaseAnnouncement' |
2 | --- EOLReleaseAnnouncement 2021-07-23 16:33:32 +0000 |
3 | +++ EOLReleaseAnnouncement 1970-01-01 00:00:00 +0000 |
4 | @@ -1,50 +0,0 @@ |
5 | -= This release of Ubuntu is no longer supported = |
6 | - |
7 | -You are about to upgrade to a version of Ubuntu that is no longer |
8 | -supported. |
9 | - |
10 | -This release of Ubuntu is '''no longer supported''' by Canonical. The |
11 | -support timeframe is between 9 months and 5 years after the initial |
12 | -release. You will not receive security updates or critical |
13 | -bug fixes. See http://www.ubuntu.com/releaseendoflife for details. |
14 | - |
15 | -It is still possible to upgrade to this version and eventually you |
16 | -will upgrade to a supported release of Ubuntu. |
17 | - |
18 | -Alternatively you may want to consider to reinstall the machine to the |
19 | -latest version, for more information on this, visit: |
20 | -http://www.ubuntu.com/desktop/get-ubuntu. |
21 | - |
22 | -For pre-installed system you may want to contact the manufacturer |
23 | -for instructions. |
24 | - |
25 | -== Feedback and Helping == |
26 | - |
27 | -If you would like to help shape Ubuntu, take a look at the list of |
28 | -ways you can participate at: |
29 | - |
30 | - http://www.ubuntu.com/community/participate/ |
31 | - |
32 | -If you have a question, or if you think you may have found a bug but |
33 | -aren't sure, first try asking on the #ubuntu or #ubuntu-bugs IRC |
34 | -channels on Libera.Chat, on the Ubuntu Users mailing list, or on the |
35 | -Ubuntu forums: |
36 | - |
37 | - http://help.ubuntu.com/community/InternetRelayChat |
38 | - http://lists.ubuntu.com/mailman/listinfo/ubuntu-users |
39 | - http://www.ubuntuforums.org/ |
40 | - http://askubuntu.com |
41 | - |
42 | -== More Information == |
43 | - |
44 | -You can find out more about Ubuntu on our website, IRC channel and wiki. |
45 | -If you're new to Ubuntu, please visit: |
46 | - |
47 | - http://www.ubuntu.com/ |
48 | - |
49 | - |
50 | -To sign up for future Ubuntu announcements, please subscribe to Ubuntu's |
51 | -very low volume announcement list at: |
52 | - |
53 | - http://lists.ubuntu.com/mailman/listinfo/ubuntu-announce |
54 | - |
55 | |
56 | === modified file 'README' |
57 | --- README 2011-11-29 22:09:51 +0000 |
58 | +++ README 2023-11-08 09:20:59 +0000 |
59 | @@ -1,17 +1,2 @@ |
60 | -This is the repository for the meta-release-* files located at: |
61 | -http://changelogs.ubuntu.com/ |
62 | - |
63 | -"meta-release" is the file that everybody with a stable release of |
64 | -update-manager gets. It needs to be updated every 6 month for a new |
65 | -release |
66 | - |
67 | -"meta-release-development" is the file that people get when running |
68 | -update-manager --devel-release (-d). This is used so that people |
69 | -can upgrade to the development release. |
70 | - |
71 | -"meta-release-proposed" is the file that people get when running |
72 | -update-manager --proposed (-p). Its used to make it possible to |
73 | -test a new upgrader before it is widespread used. |
74 | - |
75 | -For long-term-support (LTS) releases we have a special suffix: |
76 | --lts to ensure that LTS users see only new LTS releases by default. |
77 | +This repository has been migrated from `bzr` to `git`. |
78 | +You can find the new repo here: https://code.launchpad.net/meta-release/+git |
79 | |
80 | === removed file 'meta-release' |
81 | --- meta-release 2023-11-02 09:34:46 +0000 |
82 | +++ meta-release 1970-01-01 00:00:00 +0000 |
83 | @@ -1,426 +0,0 @@ |
84 | -Dist: warty |
85 | -Name: Warty Warthog |
86 | -Version: 04.10 |
87 | -Date: Wed, 20 Oct 2004 07:28:17 UTC |
88 | -Supported: 0 |
89 | -Description: This is the warty warthog release |
90 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/warty/Release |
91 | - |
92 | -Dist: hoary |
93 | -Name: Hoary Hedgehog |
94 | -Version: 05.04 |
95 | -Date: Fri, 08 Apr 2005 08:18:19 UTC |
96 | -Supported: 0 |
97 | -Description: This is the Hoary Hedgehog release |
98 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/hoary/Release |
99 | - |
100 | -Dist: breezy |
101 | -Name: Breezy Badger |
102 | -Version: 05.10 |
103 | -Date: Thu, 13 Oct 2005 19:34:42 UTC |
104 | -Supported: 0 |
105 | -Description: This is the Breezy Badger release |
106 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/breezy/Release |
107 | - |
108 | -Dist: dapper |
109 | -Name: Dapper Drake |
110 | -Version: 6.06 LTS |
111 | -Date: Thu, 01 Jun 2006 9:00:00 UTC |
112 | -Supported: 0 |
113 | -Description: This is the Dapper Drake release |
114 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/dapper/Release |
115 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
116 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz |
117 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz.gpg |
118 | - |
119 | -Dist: edgy |
120 | -Name: Edgy Eft |
121 | -Version: 6.10 |
122 | -Date: Thu, 26 Oct 2006 12:00:00 UTC |
123 | -Supported: 0 |
124 | -Description: This is the Edgy Eft release |
125 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/edgy/Release |
126 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
127 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/edgy-updates/main/dist-upgrader-all/current/edgy.tar.gz |
128 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/edgy-updates/main/dist-upgrader-all/current/edgy.tar.gz.gpg |
129 | - |
130 | -Dist: feisty |
131 | -Name: Feisty Fawn |
132 | -Version: 7.04 |
133 | -Date: Thu, 19 Apr 2007 13:00:00 +0200 |
134 | -Supported: 0 |
135 | -Description: This is the 7.04 release |
136 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/feisty/Release |
137 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
138 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/feisty-proposed/main/dist-upgrader-all/current/feisty.tar.gz |
139 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/feisty-proposed/main/dist-upgrader-all/current/feisty.tar.gz.gpg |
140 | - |
141 | -Dist: gutsy |
142 | -Name: Gutsy Gibbon |
143 | -Version: 7.10 |
144 | -Date: Thu, 18 Oct 2007 12:00:00 UTC |
145 | -Supported: 0 |
146 | -Description: This is the 7.10 release |
147 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/gutsy/Release |
148 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
149 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/gutsy/main/dist-upgrader-all/current/gutsy.tar.gz |
150 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/gutsy/main/dist-upgrader-all/current/gutsy.tar.gz.gpg |
151 | - |
152 | -Dist: hardy |
153 | -Name: Hardy Heron |
154 | -Version: 8.04 LTS |
155 | -Date: Thu, 24 Apr 2008 12:00:00 UTC |
156 | -Supported: 0 |
157 | -Description: This is the 8.04 LTS release |
158 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/hardy/Release |
159 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
160 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/main/dist-upgrader-all/0.87.30/hardy.tar.gz |
161 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/main/dist-upgrader-all/0.87.30/hardy.tar.gz.gpg |
162 | - |
163 | -Dist: intrepid |
164 | -Name: Intrepid Ibex |
165 | -Version: 8.10 |
166 | -Date: Thu, 30 Oct 2008 12:00:00 UTC |
167 | -Supported: 0 |
168 | -Description: This is the 8.10 release |
169 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/intrepid/Release |
170 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
171 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/intrepid-proposed/main/dist-upgrader-all/0.93.34/intrepid.tar.gz |
172 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/intrepid-proposed/main/dist-upgrader-all/0.93.34/intrepid.tar.gz.gpg |
173 | - |
174 | -Dist: jaunty |
175 | -Name: Jaunty Jackalope |
176 | -Version: 9.04 |
177 | -Date: Thu, 23 Apr 2009 12:00:00 UTC |
178 | -Supported: 0 |
179 | -Description: This is the 9.04 release |
180 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/jaunty/Release |
181 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
182 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/jaunty-proposed/main/dist-upgrader-all/0.111.8/jaunty.tar.gz |
183 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/jaunty-proposed/main/dist-upgrader-all/0.111.8/jaunty.tar.gz.gpg |
184 | - |
185 | -Dist: karmic |
186 | -Name: Karmic Koala |
187 | -Version: 9.10 |
188 | -Date: Thu, 29 Oct 2009 12:00:00 UTC |
189 | -Supported: 0 |
190 | -Description: This is the 9.10 release |
191 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/karmic/Release |
192 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
193 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/karmic-proposed/main/dist-upgrader-all/0.126.9/karmic.tar.gz |
194 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/karmic-proposed/main/dist-upgrader-all/0.126.9/karmic.tar.gz.gpg |
195 | - |
196 | -Dist: lucid |
197 | -Name: Lucid Lynx |
198 | -Version: 10.04.4 LTS |
199 | -Date: Thu, 29 Apr 2010 12:00:00 UTC |
200 | -Supported: 0 |
201 | -Description: This is the 10.04.4 LTS release |
202 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/lucid/Release |
203 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
204 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/lucid-updates/main/dist-upgrader-all/current/lucid.tar.gz |
205 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/lucid-updates/main/dist-upgrader-all/current/lucid.tar.gz.gpg |
206 | - |
207 | -Dist: maverick |
208 | -Name: Maverick Meerkat |
209 | -Version: 10.10 |
210 | -Date: Sun, 10 Oct 2010 10:10:10 UTC |
211 | -Supported: 0 |
212 | -Description: This is the 10.10 release |
213 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/maverick/Release |
214 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
215 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/maverick-updates/main/dist-upgrader-all/current/maverick.tar.gz |
216 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/maverick-updates/main/dist-upgrader-all/current/maverick.tar.gz.gpg |
217 | - |
218 | -Dist: natty |
219 | -Name: Natty Narwhal |
220 | -Version: 11.04 |
221 | -Date: Thu, 28 Apr 2011 12:00:00 UTC |
222 | -Supported: 0 |
223 | -Description: This is the 11.04 release |
224 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/natty/Release |
225 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
226 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/natty-updates/main/dist-upgrader-all/current/natty.tar.gz |
227 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/natty-updates/main/dist-upgrader-all/current/natty.tar.gz.gpg |
228 | - |
229 | -Dist: oneiric |
230 | -Name: Oneiric Ocelot |
231 | -Version: 11.10 |
232 | -Date: Thu, 13 Oct 2011 12:00:00 UTC |
233 | -Supported: 0 |
234 | -Description: This is the 11.10 release |
235 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/oneiric/Release |
236 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
237 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/oneiric-updates/main/dist-upgrader-all/current/oneiric.tar.gz |
238 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/oneiric-updates/main/dist-upgrader-all/current/oneiric.tar.gz.gpg |
239 | - |
240 | -Dist: precise |
241 | -Name: Precise Pangolin |
242 | -Version: 12.04.5 LTS |
243 | -Date: Thu, 26 Apr 2012 12:04:00 UTC |
244 | -Supported: 0 |
245 | -Description: This is the 12.04.5 LTS release |
246 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/precise/Release |
247 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
248 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/precise-updates/main/dist-upgrader-all/current/precise.tar.gz |
249 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/precise-updates/main/dist-upgrader-all/current/precise.tar.gz.gpg |
250 | - |
251 | -Dist: quantal |
252 | -Name: Quantal Quetzal |
253 | -Version: 12.10 |
254 | -Date: Thu, 18 Oct 2012 12:04:00 UTC |
255 | -Supported: 0 |
256 | -Description: This is the 12.10 release |
257 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/quantal/Release |
258 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
259 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/quantal-updates/main/dist-upgrader-all/current/quantal.tar.gz |
260 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/quantal-updates/main/dist-upgrader-all/current/quantal.tar.gz.gpg |
261 | - |
262 | -Dist: raring |
263 | -Name: Raring Ringtail |
264 | -Version: 13.04 |
265 | -Date: Thu, 25 Apr 2013 13:04:00 UTC |
266 | -Supported: 0 |
267 | -Description: This is the 13.04 release |
268 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/raring/Release |
269 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
270 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/raring-updates/main/dist-upgrader-all/current/raring.tar.gz |
271 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/raring-updates/main/dist-upgrader-all/current/raring.tar.gz.gpg |
272 | - |
273 | -Dist: saucy |
274 | -Name: Saucy Salamander |
275 | -Version: 13.10 |
276 | -Date: Thu, 17 Oct 2013 13:10:00 UTC |
277 | -Supported: 0 |
278 | -Description: This is the 13.10 release |
279 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/saucy/Release |
280 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
281 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/saucy-updates/main/dist-upgrader-all/current/saucy.tar.gz |
282 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/saucy-updates/main/dist-upgrader-all/current/saucy.tar.gz.gpg |
283 | - |
284 | -Dist: trusty |
285 | -Name: Trusty Tahr |
286 | -Version: 14.04.6 LTS |
287 | -Date: Thu, 17 Apr 2014 14:04:00 UTC |
288 | -Supported: 1 |
289 | -Description: This is the 14.04.6 LTS release |
290 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/trusty/Release |
291 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
292 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
293 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/dist-upgrader-all/current/trusty.tar.gz |
294 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/dist-upgrader-all/current/trusty.tar.gz.gpg |
295 | - |
296 | -Dist: utopic |
297 | -Name: Utopic Unicorn |
298 | -Version: 14.10 |
299 | -Date: Thu, 23 Oct 2014 14:10:00 UTC |
300 | -Supported: 0 |
301 | -Description: This is the 14.10 release |
302 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/utopic/Release |
303 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
304 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/utopic/main/dist-upgrader-all/current/utopic.tar.gz |
305 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/utopic/main/dist-upgrader-all/current/utopic.tar.gz.gpg |
306 | - |
307 | -Dist: vivid |
308 | -Name: Vivid Vervet |
309 | -Version: 15.04 |
310 | -Date: Thu, 23 April 2015 15:04:00 UTC |
311 | -Supported: 0 |
312 | -Description: This is the 15.04 release |
313 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/vivid/Release |
314 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
315 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/vivid-updates/main/dist-upgrader-all/current/vivid.tar.gz |
316 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/vivid-updates/main/dist-upgrader-all/current/vivid.tar.gz.gpg |
317 | - |
318 | -Dist: wily |
319 | -Name: Wily Werewolf |
320 | -Version: 15.10 |
321 | -Date: Thu, 22 October 2015 15:10:00 UTC |
322 | -Supported: 0 |
323 | -Description: This is the 15.10 release |
324 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/wily/Release |
325 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
326 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/wily-updates/main/dist-upgrader-all/current/wily.tar.gz |
327 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/wily-updates/main/dist-upgrader-all/current/wily.tar.gz.gpg |
328 | - |
329 | -Dist: xenial |
330 | -Name: Xenial Xerus |
331 | -Version: 16.04.7 LTS |
332 | -Date: Thu, 21 April 2016 16:04:00 UTC |
333 | -Supported: 1 |
334 | -Description: This is the 16.04.7 LTS release |
335 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/xenial/Release |
336 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
337 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
338 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/dist-upgrader-all/current/xenial.tar.gz |
339 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/dist-upgrader-all/current/xenial.tar.gz.gpg |
340 | - |
341 | -Dist: yakkety |
342 | -Name: Yakkety Yak |
343 | -Version: 16.10 |
344 | -Date: Thu, 13 October 2016 16:10:00 UTC |
345 | -Supported: 0 |
346 | -Description: This is the 16.10 release |
347 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/yakkety/Release |
348 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
349 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/yakkety-updates/main/dist-upgrader-all/current/yakkety.tar.gz |
350 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/yakkety-updates/main/dist-upgrader-all/current/yakkety.tar.gz.gpg |
351 | - |
352 | -Dist: zesty |
353 | -Name: Zesty Zapus |
354 | -Version: 17.04 |
355 | -Date: Thu, 13 April 2017 17:04:00 UTC |
356 | -Supported: 0 |
357 | -Description: This is the 17.04 release |
358 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/zesty/Release |
359 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
360 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/zesty-updates/main/dist-upgrader-all/current/zesty.tar.gz |
361 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/zesty-updates/main/dist-upgrader-all/current/zesty.tar.gz.gpg |
362 | - |
363 | -Dist: artful |
364 | -Name: Artful Aardvark |
365 | -Version: 17.10 |
366 | -Date: Thu, 19 October 2017 17:10:00 UTC |
367 | -Supported: 0 |
368 | -Description: This is the 17.10 release |
369 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/artful-updates/Release |
370 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
371 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/artful-updates/main/dist-upgrader-all/current/artful.tar.gz |
372 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/artful-updates/main/dist-upgrader-all/current/artful.tar.gz.gpg |
373 | - |
374 | -Dist: bionic |
375 | -Name: Bionic Beaver |
376 | -Version: 18.04.6 LTS |
377 | -Date: Thu, 26 April 2018 18:04:00 UTC |
378 | -Supported: 1 |
379 | -Description: This is the 18.04.6 LTS release |
380 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/bionic/Release |
381 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
382 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
383 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/bionic.tar.gz |
384 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/bionic.tar.gz.gpg |
385 | - |
386 | -Dist: cosmic |
387 | -Name: Cosmic Cuttlefish |
388 | -Version: 18.10 |
389 | -Date: Thu, 18 October 2018 18:10:00 UTC |
390 | -Supported: 0 |
391 | -Description: This is the 18.10 release |
392 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/cosmic/Release |
393 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
394 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/cosmic-updates/main/dist-upgrader-all/current/cosmic.tar.gz |
395 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/cosmic-updates/main/dist-upgrader-all/current/cosmic.tar.gz.gpg |
396 | - |
397 | -Dist: disco |
398 | -Name: Disco Dingo |
399 | -Version: 19.04 |
400 | -Date: Thu, 18 April 2019 19:04:00 UTC |
401 | -Supported: 0 |
402 | -Description: This is the 19.04 release |
403 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/disco/Release |
404 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
405 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/disco-updates/main/dist-upgrader-all/current/disco.tar.gz |
406 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/disco-updates/main/dist-upgrader-all/current/disco.tar.gz.gpg |
407 | - |
408 | -Dist: eoan |
409 | -Name: Eoan Ermine |
410 | -Version: 19.10 |
411 | -Date: Thu, 17 October 2019 19:10:00 UTC |
412 | -Supported: 0 |
413 | -Description: This is the 19.10 release |
414 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/eoan-updates/Release |
415 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
416 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/eoan-updates/main/dist-upgrader-all/current/eoan.tar.gz |
417 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/eoan-updates/main/dist-upgrader-all/current/eoan.tar.gz.gpg |
418 | - |
419 | -Dist: focal |
420 | -Name: Focal Fossa |
421 | -Version: 20.04.5 LTS |
422 | -Date: Thu, 23 April 2020 20:04:00 UTC |
423 | -Supported: 1 |
424 | -Description: This is the 20.04.5 LTS release |
425 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/focal-updates/Release |
426 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
427 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
428 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/focal.tar.gz |
429 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/focal.tar.gz.gpg |
430 | - |
431 | -Dist: groovy |
432 | -Name: Groovy Gorilla |
433 | -Version: 20.10 |
434 | -Date: Thu, 22 October 2020 20:22:00 UTC |
435 | -Supported: 0 |
436 | -Description: This is the 20.10 release |
437 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/groovy-updates/Release |
438 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
439 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/groovy-updates/main/dist-upgrader-all/current/groovy.tar.gz |
440 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/groovy-updates/main/dist-upgrader-all/current/groovy.tar.gz.gpg |
441 | - |
442 | -Dist: hirsute |
443 | -Name: Hirsute Hippo |
444 | -Version: 21.04 |
445 | -Date: Thu, 22 April 2021 21:04:00 UTC |
446 | -Supported: 0 |
447 | -Description: This is the 21.04 release |
448 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/hirsute-updates/Release |
449 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
450 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/hirsute-updates/main/dist-upgrader-all/current/hirsute.tar.gz |
451 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/hirsute-updates/main/dist-upgrader-all/current/hirsute.tar.gz.gpg |
452 | - |
453 | -Dist: impish |
454 | -Name: Impish Indri |
455 | -Version: 21.10 |
456 | -Date: Thu, 14 October 2021 21:10:00 UTC |
457 | -Supported: 0 |
458 | -Description: This is the 21.10 release |
459 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/impish-updates/Release |
460 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
461 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/impish-updates/main/dist-upgrader-all/current/impish.tar.gz |
462 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/impish-updates/main/dist-upgrader-all/current/impish.tar.gz.gpg |
463 | - |
464 | -Dist: jammy |
465 | -Name: Jammy Jellyfish |
466 | -Version: 22.04.3 LTS |
467 | -Date: Thu, 21 April 2022 22:04:00 UTC |
468 | -Supported: 1 |
469 | -Description: This is the 22.04.3 LTS release |
470 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/Release |
471 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
472 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
473 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/jammy.tar.gz |
474 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/jammy.tar.gz.gpg |
475 | - |
476 | -Dist: kinetic |
477 | -Name: Kinetic Kudu |
478 | -Version: 22.10 |
479 | -Date: Thu, 20 October 2022 22:10:00 UTC |
480 | -Supported: 0 |
481 | -Description: This is the 22.10 release |
482 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/kinetic/Release |
483 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
484 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/kinetic/main/dist-upgrader-all/current/kinetic.tar.gz |
485 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/kinetic/main/dist-upgrader-all/current/kinetic.tar.gz.gpg |
486 | - |
487 | -Dist: lunar |
488 | -Name: Lunar Lobster |
489 | -Version: 23.04 |
490 | -Date: Thu, 20 April 2023 23:04:00 UTC |
491 | -Supported: 1 |
492 | -Description: This is the 23.04 release |
493 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/lunar-updates/Release |
494 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/lunar-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
495 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/lunar-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
496 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/lunar-updates/main/dist-upgrader-all/current/lunar.tar.gz |
497 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/lunar-updates/main/dist-upgrader-all/current/lunar.tar.gz.gpg |
498 | - |
499 | -Dist: mantic |
500 | -Name: Mantic Minotaur |
501 | -Version: 23.10 |
502 | -Date: Thu, 12 October 2023 23:10:00 UTC |
503 | -Supported: 1 |
504 | -Description: This is the 23.10 release |
505 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/Release |
506 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
507 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
508 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/main/dist-upgrader-all/current/mantic.tar.gz |
509 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/main/dist-upgrader-all/current/mantic.tar.gz.gpg |
510 | |
511 | === removed file 'meta-release-development' |
512 | --- meta-release-development 2023-11-02 09:30:07 +0000 |
513 | +++ meta-release-development 1970-01-01 00:00:00 +0000 |
514 | @@ -1,23 +0,0 @@ |
515 | -Dist: mantic |
516 | -Name: Mantic Minotaur |
517 | -Version: 23.10 |
518 | -Date: Thu, 12 October 2023 23:10:00 UTC |
519 | -Supported: 1 |
520 | -Description: This is the 23.10 release |
521 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/Release |
522 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
523 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
524 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/main/dist-upgrader-all/current/mantic.tar.gz |
525 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/mantic-updates/main/dist-upgrader-all/current/mantic.tar.gz.gpg |
526 | - |
527 | -Dist: noble |
528 | -Name: Noble Numbat |
529 | -Version: 24.04 LTS |
530 | -Date: Thu, 25 April 2024 24:04:00 UTC |
531 | -Supported: 0 |
532 | -Description: This is the 24.04 LTS release |
533 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/noble/Release |
534 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/noble/main/dist-upgrader-all/current/ReleaseAnnouncement |
535 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/noble/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
536 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/noble/main/dist-upgrader-all/current/noble.tar.gz |
537 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/noble/main/dist-upgrader-all/current/noble.tar.gz.gpg |
538 | |
539 | === removed file 'meta-release-lts' |
540 | --- meta-release-lts 2023-08-10 19:20:53 +0000 |
541 | +++ meta-release-lts 1970-01-01 00:00:00 +0000 |
542 | @@ -1,103 +0,0 @@ |
543 | -Dist: dapper |
544 | -Name: Dapper Drake |
545 | -Version: 6.06 LTS |
546 | -Date: Thu, 01 Jun 2006 9:00:00 UTC |
547 | -Supported: 0 |
548 | -Description: This is the Dapper Drake release |
549 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/dapper/Release |
550 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
551 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz |
552 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz.gpg |
553 | - |
554 | -Dist: hardy |
555 | -Name: Hardy Heron |
556 | -Version: 8.04.1 LTS |
557 | -Date: Thu, 24 Apr 2008 12:00:00 UTC |
558 | -Supported: 0 |
559 | -Description: This is the 8.04.1 LTS release |
560 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/hardy/Release |
561 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
562 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/main/dist-upgrader-all/0.87.31/hardy.tar.gz |
563 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/main/dist-upgrader-all/0.87.31/hardy.tar.gz.gpg |
564 | - |
565 | -Dist: lucid |
566 | -Name: Lucid Lynx |
567 | -Version: 10.04.4 LTS |
568 | -Date: Thu, 29 Apr 2010 12:00:00 UTC |
569 | -Supported: 0 |
570 | -Description: This is the 10.04.4 LTS release |
571 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/lucid/Release |
572 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
573 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/lucid-proposed/main/dist-upgrader-all/current/lucid.tar.gz |
574 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/lucid-proposed/main/dist-upgrader-all/current/lucid.tar.gz.gpg |
575 | - |
576 | -Dist: precise |
577 | -Name: Precise Pangolin |
578 | -Version: 12.04.5 LTS |
579 | -Date: Thu, 26 Apr 2012 12:04:00 UTC |
580 | -Supported: 0 |
581 | -Description: This is the 12.04.5 LTS release |
582 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/precise/Release |
583 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
584 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/precise-updates/main/dist-upgrader-all/current/precise.tar.gz |
585 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/precise-updates/main/dist-upgrader-all/current/precise.tar.gz.gpg |
586 | - |
587 | -Dist: trusty |
588 | -Name: Trusty Tahr |
589 | -Version: 14.04.6 LTS |
590 | -Date: Thu, 17 Apr 2014 14:04:00 UTC |
591 | -Supported: 1 |
592 | -Description: This is the 14.04.6 LTS release |
593 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/trusty/Release |
594 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
595 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
596 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/dist-upgrader-all/current/trusty.tar.gz |
597 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/dist-upgrader-all/current/trusty.tar.gz.gpg |
598 | - |
599 | -Dist: xenial |
600 | -Name: Xenial Xerus |
601 | -Version: 16.04.7 LTS |
602 | -Date: Thu, 21 April 2016 16:04:00 UTC |
603 | -Supported: 1 |
604 | -Description: This is the 16.04.7 LTS release |
605 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/xenial/Release |
606 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
607 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
608 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/dist-upgrader-all/current/xenial.tar.gz |
609 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/dist-upgrader-all/current/xenial.tar.gz.gpg |
610 | - |
611 | -Dist: bionic |
612 | -Name: Bionic Beaver |
613 | -Version: 18.04.6 LTS |
614 | -Date: Thu, 26 April 2018 18:04:00 UTC |
615 | -Supported: 1 |
616 | -Description: This is the 18.04.6 LTS release |
617 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/bionic/Release |
618 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
619 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
620 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/bionic.tar.gz |
621 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/bionic.tar.gz.gpg |
622 | - |
623 | -Dist: focal |
624 | -Name: Focal Fossa |
625 | -Version: 20.04.6 LTS |
626 | -Date: Thu, 23 April 2020 20:04:00 UTC |
627 | -Supported: 1 |
628 | -Description: This is the 20.04.6 LTS release |
629 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/focal-updates/Release |
630 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
631 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
632 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/focal.tar.gz |
633 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/focal.tar.gz.gpg |
634 | - |
635 | -Dist: jammy |
636 | -Name: Jammy Jellyfish |
637 | -Version: 22.04.3 LTS |
638 | -Date: Thu, 21 April 2022 22:04:00 UTC |
639 | -Supported: 1 |
640 | -Description: This is the 22.04.3 LTS release |
641 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/Release |
642 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/ReleaseAnnouncement |
643 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
644 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/jammy.tar.gz |
645 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/jammy.tar.gz.gpg |
646 | |
647 | === removed file 'meta-release-lts-development' |
648 | --- meta-release-lts-development 2023-11-02 09:30:07 +0000 |
649 | +++ meta-release-lts-development 1970-01-01 00:00:00 +0000 |
650 | @@ -1,23 +0,0 @@ |
651 | -Dist: jammy |
652 | -Name: Jammy Jellyfish |
653 | -Version: 22.04.3 LTS |
654 | -Date: Thu, 21 April 2022 22:04:00 UTC |
655 | -Supported: 1 |
656 | -Description: This is the 22.04.3 LTS release |
657 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/Release |
658 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/DevelReleaseAnnouncement |
659 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/DevelReleaseAnnouncement.html |
660 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/jammy.tar.gz |
661 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/jammy-updates/main/dist-upgrader-all/current/jammy.tar.gz.gpg |
662 | - |
663 | -Dist: noble |
664 | -Name: Noble Numbat |
665 | -Version: 24.04 LTS |
666 | -Date: Thu, 25 April 2024 24:04:00 UTC |
667 | -Supported: 0 |
668 | -Description: This is the 24.04 LTS release |
669 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/noble/Release |
670 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/noble/main/dist-upgrader-all/current/ReleaseAnnouncement |
671 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/noble/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
672 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/noble/main/dist-upgrader-all/current/noble.tar.gz |
673 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/noble/main/dist-upgrader-all/current/noble.tar.gz.gpg |
674 | |
675 | === removed file 'meta-release-lts-proposed' |
676 | --- meta-release-lts-proposed 2023-08-10 19:20:53 +0000 |
677 | +++ meta-release-lts-proposed 1970-01-01 00:00:00 +0000 |
678 | @@ -1,103 +0,0 @@ |
679 | -Dist: dapper |
680 | -Name: Dapper Drake |
681 | -Version: 6.06 LTS |
682 | -Date: Thu, 01 Jun 2006 9:00:00 UTC |
683 | -Supported: 0 |
684 | -Description: This is the Dapper Drake release |
685 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/dapper/Release |
686 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
687 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz |
688 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz.gpg |
689 | - |
690 | -Dist: hardy |
691 | -Name: Hardy Heron |
692 | -Version: 8.04 LTS |
693 | -Date: Thu, 24 Apr 2008 12:00:00 UTC |
694 | -Supported: 0 |
695 | -Description: This is the 8.04 LTS release |
696 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/Release |
697 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
698 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/main/dist-upgrader-all/current/hardy.tar.gz |
699 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/main/dist-upgrader-all/current/hardy.tar.gz.gpg |
700 | - |
701 | -Dist: lucid |
702 | -Name: Lucid Lynx |
703 | -Version: 10.04.4 LTS |
704 | -Date: Thu, 29 Apr 2010 12:00:00 UTC |
705 | -Supported: 0 |
706 | -Description: This is the 10.04.4 LTS release |
707 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/lucid/Release |
708 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
709 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/lucid-proposed/main/dist-upgrader-all/current/lucid.tar.gz |
710 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/lucid-proposed/main/dist-upgrader-all/current/lucid.tar.gz.gpg |
711 | - |
712 | -Dist: precise |
713 | -Name: Precise Pangolin |
714 | -Version: 12.04.5 LTS |
715 | -Date: Thu, 26 Apr 2012 12:04:00 UTC |
716 | -Supported: 0 |
717 | -Description: This is the 12.04.5 LTS release |
718 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/precise/Release |
719 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
720 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/precise-proposed/main/dist-upgrader-all/current/precise.tar.gz |
721 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/precise-proposed/main/dist-upgrader-all/current/precise.tar.gz.gpg |
722 | - |
723 | -Dist: trusty |
724 | -Name: Trusty Tahr |
725 | -Version: 14.04.6 LTS |
726 | -Date: Thu, 17 Apr 2014 14:04:00 UTC |
727 | -Supported: 1 |
728 | -Description: This is the 14.04.6 LTS release |
729 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/trusty/Release |
730 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
731 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
732 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/main/dist-upgrader-all/current/trusty.tar.gz |
733 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/main/dist-upgrader-all/current/trusty.tar.gz.gpg |
734 | - |
735 | -Dist: xenial |
736 | -Name: Xenial Xerus |
737 | -Version: 16.04.7 LTS |
738 | -Date: Thu, 21 April 2016 16:04:00 UTC |
739 | -Supported: 1 |
740 | -Description: This is the 16.04.7 LTS release |
741 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/xenial/Release |
742 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
743 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
744 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/dist-upgrader-all/current/xenial.tar.gz |
745 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/dist-upgrader-all/current/xenial.tar.gz.gpg |
746 | - |
747 | -Dist: bionic |
748 | -Name: Bionic Beaver |
749 | -Version: 18.04.6 LTS |
750 | -Date: Thu, 26 April 2018 18:04:00 UTC |
751 | -Supported: 1 |
752 | -Description: This is the 18.04.6 LTS release |
753 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/bionic/Release |
754 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/bionic-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
755 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/bionic-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
756 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/bionic-proposed/main/dist-upgrader-all/current/bionic.tar.gz |
757 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/bionic-proposed/main/dist-upgrader-all/current/bionic.tar.gz.gpg |
758 | - |
759 | -Dist: focal |
760 | -Name: Focal Fossa |
761 | -Version: 20.04.6 LTS |
762 | -Date: Thu, 23 April 2020 20:04:00 UTC |
763 | -Supported: 1 |
764 | -Description: This is the 20.04.6 LTS release |
765 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/Release |
766 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
767 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
768 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/main/dist-upgrader-all/current/focal.tar.gz |
769 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/main/dist-upgrader-all/current/focal.tar.gz.gpg |
770 | - |
771 | -Dist: jammy |
772 | -Name: Jammy Jellyfish |
773 | -Version: 22.04.3 LTS |
774 | -Date: Thu, 21 April 2022 22:04:00 UTC |
775 | -Supported: 1 |
776 | -Description: This is the 22.04.3 LTS release |
777 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/Release |
778 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
779 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
780 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/main/dist-upgrader-all/current/jammy.tar.gz |
781 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/main/dist-upgrader-all/current/jammy.tar.gz.gpg |
782 | |
783 | === removed file 'meta-release-proposed' |
784 | --- meta-release-proposed 2023-11-02 09:34:46 +0000 |
785 | +++ meta-release-proposed 1970-01-01 00:00:00 +0000 |
786 | @@ -1,426 +0,0 @@ |
787 | -Dist: warty |
788 | -Name: Warty Warthog |
789 | -Version: 04.10 |
790 | -Date: Wed, 20 Oct 2004 07:28:17 UTC |
791 | -Supported: 0 |
792 | -Description: This is the warty warthog release |
793 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/warty/Release |
794 | - |
795 | -Dist: hoary |
796 | -Name: Hoary Hedgehog |
797 | -Version: 05.04 |
798 | -Date: Fri, 08 Apr 2005 08:18:19 UTC |
799 | -Supported: 0 |
800 | -Description: This is the Hoary Hedgehog release |
801 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/hoary/Release |
802 | - |
803 | -Dist: breezy |
804 | -Name: Breezy Badger |
805 | -Version: 05.10 |
806 | -Date: Thu, 13 Oct 2005 19:34:42 UTC |
807 | -Supported: 0 |
808 | -Description: This is the Breezy Badger release |
809 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/breezy/Release |
810 | - |
811 | -Dist: dapper |
812 | -Name: Dapper Drake |
813 | -Version: 6.06 LTS |
814 | -Date: Thu, 01 Jun 2006 9:00:00 UTC |
815 | -Supported: 0 |
816 | -Description: This is the Dapper Drake release |
817 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/dapper/Release |
818 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
819 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz |
820 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz.gpg |
821 | - |
822 | -Dist: edgy |
823 | -Name: Edgy Eft |
824 | -Version: 6.10 |
825 | -Date: Thu, 26 Oct 2006 12:00:00 UTC |
826 | -Supported: 0 |
827 | -Description: This is the Edgy Eft release |
828 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/edgy/Release |
829 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
830 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/edgy-updates/main/dist-upgrader-all/current/edgy.tar.gz |
831 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/edgy-updates/main/dist-upgrader-all/current/edgy.tar.gz.gpg |
832 | - |
833 | -Dist: feisty |
834 | -Name: Feisty Fawn |
835 | -Version: 7.04 |
836 | -Date: Thu, 19 Apr 2007 13:00:00 +0200 |
837 | -Supported: 0 |
838 | -Description: This is the 7.04 release |
839 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/feisty/Release |
840 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
841 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/feisty-proposed/main/dist-upgrader-all/current/feisty.tar.gz |
842 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/feisty-proposed/main/dist-upgrader-all/current/feisty.tar.gz.gpg |
843 | - |
844 | -Dist: gutsy |
845 | -Name: Gutsy Gibbon |
846 | -Version: 7.10 |
847 | -Date: Thu, 18 Oct 2007 12:00:00 UTC |
848 | -Supported: 0 |
849 | -Description: This is the 7.10 release |
850 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/gutsy/Release |
851 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
852 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/gutsy-proposed/main/dist-upgrader-all/current/gutsy.tar.gz |
853 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/gutsy-proposed/main/dist-upgrader-all/current/gutsy.tar.gz.gpg |
854 | - |
855 | -Dist: hardy |
856 | -Name: Hardy Heron |
857 | -Version: 8.04 LTS |
858 | -Date: Thu, 24 Apr 2008 12:00:00 UTC |
859 | -Supported: 0 |
860 | -Description: This is the 8.04 LTS release |
861 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/Release |
862 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
863 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/main/dist-upgrader-all/current/hardy.tar.gz |
864 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/hardy-proposed/main/dist-upgrader-all/current/hardy.tar.gz.gpg |
865 | - |
866 | -Dist: intrepid |
867 | -Name: Intrepid Ibex |
868 | -Version: 8.10 |
869 | -Date: Thu, 30 Oct 2008 12:00:00 UTC |
870 | -Supported: 0 |
871 | -Description: This is the 8.10 release |
872 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/intrepid/Release |
873 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
874 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/intrepid-proposed/main/dist-upgrader-all/current/intrepid.tar.gz |
875 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/intrepid-proposed/main/dist-upgrader-all/current/intrepid.tar.gz.gpg |
876 | - |
877 | -Dist: jaunty |
878 | -Name: Jaunty Jackalope |
879 | -Version: 9.04 |
880 | -Date: Thu, 23 Apr 2009 12:00:00 UTC |
881 | -Supported: 0 |
882 | -Description: This is the 9.04 release |
883 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/jaunty/Release |
884 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
885 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/jaunty-proposed/main/dist-upgrader-all/current/jaunty.tar.gz |
886 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/jaunty-proposed/main/dist-upgrader-all/current/jaunty.tar.gz.gpg |
887 | - |
888 | -Dist: karmic |
889 | -Name: Karmic Koala |
890 | -Version: 9.10 |
891 | -Date: Thu, 29 Oct 2009 12:00:00 UTC |
892 | -Supported: 0 |
893 | -Description: This is the 9.10 release |
894 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/karmic/Release |
895 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
896 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/karmic-proposed/main/dist-upgrader-all/current/karmic.tar.gz |
897 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/karmic-proposed/main/dist-upgrader-all/current/karmic.tar.gz.gpg |
898 | - |
899 | -Dist: lucid |
900 | -Name: Lucid Lynx |
901 | -Version: 10.04.4 LTS |
902 | -Date: Thu, 29 Apr 2010 12:00:00 UTC |
903 | -Supported: 0 |
904 | -Description: This is the 10.04.4 LTS release |
905 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/lucid/Release |
906 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
907 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/lucid-proposed/main/dist-upgrader-all/current/lucid.tar.gz |
908 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/lucid-proposed/main/dist-upgrader-all/current/lucid.tar.gz.gpg |
909 | - |
910 | -Dist: maverick |
911 | -Name: Maverick Meerkat |
912 | -Version: 10.10 |
913 | -Date: Sun, 10 Oct 2010 10:10:10 UTC |
914 | -Supported: 0 |
915 | -Description: This is the 10.10 release |
916 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/maverick/Release |
917 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
918 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/maverick-proposed/main/dist-upgrader-all/current/maverick.tar.gz |
919 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/maverick-proposed/main/dist-upgrader-all/current/maverick.tar.gz.gpg |
920 | - |
921 | -Dist: natty |
922 | -Name: Natty Narwhal |
923 | -Version: 11.04 |
924 | -Date: Thu, 28 Apr 2011 12:00:00 UTC |
925 | -Supported: 0 |
926 | -Description: This is the 11.04 release |
927 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/natty/Release |
928 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
929 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/natty-proposed/main/dist-upgrader-all/current/natty.tar.gz |
930 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/natty-proposed/main/dist-upgrader-all/current/natty.tar.gz.gpg |
931 | - |
932 | -Dist: oneiric |
933 | -Name: Oneiric Ocelot |
934 | -Version: 11.10 |
935 | -Date: Thu, 13 Oct 2011 12:00:00 UTC |
936 | -Supported: 0 |
937 | -Description: This is the 11.10 release |
938 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/oneiric/Release |
939 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
940 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/oneiric-proposed/main/dist-upgrader-all/current/oneiric.tar.gz |
941 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/oneiric-proposed/main/dist-upgrader-all/current/oneiric.tar.gz.gpg |
942 | - |
943 | -Dist: precise |
944 | -Name: Precise Pangolin |
945 | -Version: 12.04.5 LTS |
946 | -Date: Thu, 26 Apr 2012 12:04:00 UTC |
947 | -Supported: 0 |
948 | -Description: This is the 12.04.5 LTS release |
949 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/precise/Release |
950 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
951 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/precise-proposed/main/dist-upgrader-all/current/precise.tar.gz |
952 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/precise-proposed/main/dist-upgrader-all/current/precise.tar.gz.gpg |
953 | - |
954 | -Dist: quantal |
955 | -Name: Quantal Quetzal |
956 | -Version: 12.10 |
957 | -Date: Thu, 18 Oct 2012 12:04:00 UTC |
958 | -Supported: 0 |
959 | -Description: This is the 12.10 release |
960 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/quantal/Release |
961 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
962 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/quantal-proposed/main/dist-upgrader-all/current/quantal.tar.gz |
963 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/quantal-proposed/main/dist-upgrader-all/current/quantal.tar.gz.gpg |
964 | - |
965 | -Dist: raring |
966 | -Name: Raring Ringtail |
967 | -Version: 13.04 |
968 | -Date: Thu, 25 Apr 2013 13:04:00 UTC |
969 | -Supported: 0 |
970 | -Description: This is the 13.04 release |
971 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/raring/Release |
972 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
973 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/raring-proposed/main/dist-upgrader-all/current/raring.tar.gz |
974 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/raring-proposed/main/dist-upgrader-all/current/raring.tar.gz.gpg |
975 | - |
976 | -Dist: saucy |
977 | -Name: Saucy Salamander |
978 | -Version: 13.10 |
979 | -Date: Thu, 17 Oct 2013 13:10:00 UTC |
980 | -Supported: 0 |
981 | -Description: This is the 13.10 release |
982 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/saucy/Release |
983 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
984 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/saucy-proposed/main/dist-upgrader-all/current/saucy.tar.gz |
985 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/saucy-proposed/main/dist-upgrader-all/current/saucy.tar.gz.gpg |
986 | - |
987 | -Dist: trusty |
988 | -Name: Trusty Tahr |
989 | -Version: 14.04.6 LTS |
990 | -Date: Thu, 17 Apr 2014 14:04:00 UTC |
991 | -Supported: 1 |
992 | -Description: This is the 14.04.6 LTS release |
993 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/trusty/Release |
994 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
995 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
996 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/main/dist-upgrader-all/current/trusty.tar.gz |
997 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/main/dist-upgrader-all/current/trusty.tar.gz.gpg |
998 | - |
999 | -Dist: utopic |
1000 | -Name: Utopic Unicorn |
1001 | -Version: 14.10 |
1002 | -Date: Thu, 23 Oct 2014 14:10:00 UTC |
1003 | -Supported: 0 |
1004 | -Description: This is the 14.10 release |
1005 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/utopic/Release |
1006 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1007 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/utopic-proposed/main/dist-upgrader-all/current/utopic.tar.gz |
1008 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/utopic-proposed/main/dist-upgrader-all/current/utopic.tar.gz.gpg |
1009 | - |
1010 | -Dist: vivid |
1011 | -Name: Vivid Vervet |
1012 | -Version: 15.04 |
1013 | -Date: Thu, 23 April 2015 15:04:00 UTC |
1014 | -Supported: 0 |
1015 | -Description: This is the 15.04 release |
1016 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/vivid/Release |
1017 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1018 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/vivid-proposed/main/dist-upgrader-all/current/vivid.tar.gz |
1019 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/vivid-proposed/main/dist-upgrader-all/current/vivid.tar.gz.gpg |
1020 | - |
1021 | -Dist: wily |
1022 | -Name: Wily Werewolf |
1023 | -Version: 15.10 |
1024 | -Date: Thu, 22 October 2015 15:10:00 UTC |
1025 | -Supported: 0 |
1026 | -Description: This is the 15.10 release |
1027 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/wily/Release |
1028 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1029 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/wily-proposed/main/dist-upgrader-all/current/wily.tar.gz |
1030 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/wily-proposed/main/dist-upgrader-all/current/wily.tar.gz.gpg |
1031 | - |
1032 | -Dist: xenial |
1033 | -Name: Xenial Xerus |
1034 | -Version: 16.04.7 LTS |
1035 | -Date: Thu, 21 April 2016 16:04:00 UTC |
1036 | -Supported: 1 |
1037 | -Description: This is the 16.04.7 LTS release |
1038 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/xenial/Release |
1039 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
1040 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
1041 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/dist-upgrader-all/current/xenial.tar.gz |
1042 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/dist-upgrader-all/current/xenial.tar.gz.gpg |
1043 | - |
1044 | -Dist: yakkety |
1045 | -Name: Yakkety Yak |
1046 | -Version: 16.10 |
1047 | -Date: Thu, 13 October 2016 16:10:00 UTC |
1048 | -Supported: 0 |
1049 | -Description: This is the 16.10 release |
1050 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/yakkety/Release |
1051 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1052 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/yakkety-proposed/main/dist-upgrader-all/current/yakkety.tar.gz |
1053 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/yakkety-proposed/main/dist-upgrader-all/current/yakkety.tar.gz.gpg |
1054 | - |
1055 | -Dist: zesty |
1056 | -Name: Zesty Zapus |
1057 | -Version: 17.04 |
1058 | -Date: Thu, 13 April 2017 17:04:00 UTC |
1059 | -Supported: 0 |
1060 | -Description: This is the 17.04 release |
1061 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/zesty/Release |
1062 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1063 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/zesty-proposed/main/dist-upgrader-all/current/zesty.tar.gz |
1064 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/zesty-proposed/main/dist-upgrader-all/current/zesty.tar.gz.gpg |
1065 | - |
1066 | -Dist: artful |
1067 | -Name: Artful Aardvark |
1068 | -Version: 17.10 |
1069 | -Date: Thu, 19 October 2017 17:10:00 UTC |
1070 | -Supported: 0 |
1071 | -Description: This is the 17.10 release |
1072 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/artful/Release |
1073 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1074 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/artful-proposed/main/dist-upgrader-all/current/artful.tar.gz |
1075 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/artful-proposed/main/dist-upgrader-all/current/artful.tar.gz.gpg |
1076 | - |
1077 | -Dist: bionic |
1078 | -Name: Bionic Beaver |
1079 | -Version: 18.04.6 LTS |
1080 | -Date: Thu, 26 April 2018 18:04:00 UTC |
1081 | -Supported: 1 |
1082 | -Description: This is the 18.04.6 LTS release |
1083 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/bionic/Release |
1084 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/bionic-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
1085 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/bionic-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
1086 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/bionic-proposed/main/dist-upgrader-all/current/bionic.tar.gz |
1087 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/bionic-proposed/main/dist-upgrader-all/current/bionic.tar.gz.gpg |
1088 | - |
1089 | -Dist: cosmic |
1090 | -Name: Cosmic Cuttlefish |
1091 | -Version: 18.10 |
1092 | -Date: Thu, 18 October 2018 18:10:00 UTC |
1093 | -Supported: 0 |
1094 | -Description: This is the 18.10 release |
1095 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/cosmic/Release |
1096 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1097 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/cosmic-proposed/main/dist-upgrader-all/current/cosmic.tar.gz |
1098 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/cosmic-proposed/main/dist-upgrader-all/current/cosmic.tar.gz.gpg |
1099 | - |
1100 | -Dist: disco |
1101 | -Name: Disco Dingo |
1102 | -Version: 19.04 |
1103 | -Date: Thu, 18 April 2019 19:04:00 UTC |
1104 | -Supported: 0 |
1105 | -Description: This is the 19.04 release |
1106 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/disco/Release |
1107 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1108 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/disco-proposed/main/dist-upgrader-all/current/disco.tar.gz |
1109 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/disco-proposed/main/dist-upgrader-all/current/disco.tar.gz.gpg |
1110 | - |
1111 | -Dist: eoan |
1112 | -Name: Eoan Ermine |
1113 | -Version: 19.10 |
1114 | -Date: Thu, 17 October 2019 19:10:00 UTC |
1115 | -Supported: 0 |
1116 | -Description: This is the 19.10 release |
1117 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/eoan-proposed/Release |
1118 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1119 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/eoan-proposed/main/dist-upgrader-all/current/eoan.tar.gz |
1120 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/eoan-proposed/main/dist-upgrader-all/current/eoan.tar.gz.gpg |
1121 | - |
1122 | -Dist: focal |
1123 | -Name: Focal Fossa |
1124 | -Version: 20.04 LTS |
1125 | -Date: Thu, 23 April 2020 20:04:00 UTC |
1126 | -Supported: 1 |
1127 | -Description: This is the 20.04 LTS release |
1128 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/Release |
1129 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
1130 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
1131 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/main/dist-upgrader-all/current/focal.tar.gz |
1132 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/focal-proposed/main/dist-upgrader-all/current/focal.tar.gz.gpg |
1133 | - |
1134 | -Dist: groovy |
1135 | -Name: Groovy Gorilla |
1136 | -Version: 20.10 |
1137 | -Date: Thu, 22 October 2020 20:22:00 UTC |
1138 | -Supported: 0 |
1139 | -Description: This is the 20.10 release |
1140 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/groovy-proposed/Release |
1141 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1142 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/groovy-proposed/main/dist-upgrader-all/current/groovy.tar.gz |
1143 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/groovy-proposed/main/dist-upgrader-all/current/groovy.tar.gz.gpg |
1144 | - |
1145 | -Dist: hirsute |
1146 | -Name: Hirsute Hippo |
1147 | -Version: 21.04 |
1148 | -Date: Thu, 22 April 2021 21:04:00 UTC |
1149 | -Supported: 0 |
1150 | -Description: This is the 21.04 release |
1151 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/hirsute-proposed/Release |
1152 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1153 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/hirsute-proposed/main/dist-upgrader-all/current/hirsute.tar.gz |
1154 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/hirsute-proposed/main/dist-upgrader-all/current/hirsute.tar.gz.gpg |
1155 | - |
1156 | -Dist: impish |
1157 | -Name: Impish Indri |
1158 | -Version: 21.10 |
1159 | -Date: Thu, 14 October 2021 21:10:00 UTC |
1160 | -Supported: 0 |
1161 | -Description: This is the 21.10 release |
1162 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/impish-proposed/Release |
1163 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1164 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/impish-proposed/main/dist-upgrader-all/current/impish.tar.gz |
1165 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/impish-proposed/main/dist-upgrader-all/current/impish.tar.gz.gpg |
1166 | - |
1167 | -Dist: jammy |
1168 | -Name: Jammy Jellyfish |
1169 | -Version: 22.04.3 LTS |
1170 | -Date: Thu, 21 April 2022 22:04:00 UTC |
1171 | -Supported: 1 |
1172 | -Description: This is the 22.04.3 LTS release |
1173 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/Release |
1174 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
1175 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
1176 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/main/dist-upgrader-all/current/jammy.tar.gz |
1177 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/jammy-proposed/main/dist-upgrader-all/current/jammy.tar.gz.gpg |
1178 | - |
1179 | -Dist: kinetic |
1180 | -Name: Kinetic Kudu |
1181 | -Version: 22.10 |
1182 | -Date: Thu, 20 October 2022 22:10:00 UTC |
1183 | -Supported: 0 |
1184 | -Description: This is the 22.10 release |
1185 | -Release-File: http://old-releases.ubuntu.com/ubuntu/dists/kinetic/Release |
1186 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1187 | -UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/kinetic/main/dist-upgrader-all/current/kinetic.tar.gz |
1188 | -UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/kinetic/main/dist-upgrader-all/current/kinetic.tar.gz.gpg |
1189 | - |
1190 | -Dist: lunar |
1191 | -Name: Lunar Lobster |
1192 | -Version: 23.04 |
1193 | -Date: Thu, 20 April 2023 23:04:00 UTC |
1194 | -Supported: 1 |
1195 | -Description: This is the 23.04 release |
1196 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/lunar-proposed/Release |
1197 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/lunar-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
1198 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/lunar-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
1199 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/lunar-proposed/main/dist-upgrader-all/current/lunar.tar.gz |
1200 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/lunar-proposed/main/dist-upgrader-all/current/lunar.tar.gz.gpg |
1201 | - |
1202 | -Dist: mantic |
1203 | -Name: Mantic Minotaur |
1204 | -Version: 23.10 |
1205 | -Date: Thu, 12 October 2023 23:10:00 UTC |
1206 | -Supported: 1 |
1207 | -Description: This is the 23.10 release |
1208 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/mantic-proposed/Release |
1209 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/mantic-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
1210 | -ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/mantic-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement.html |
1211 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/mantic-proposed/main/dist-upgrader-all/current/mantic.tar.gz |
1212 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/mantic-proposed/main/dist-upgrader-all/current/mantic.tar.gz.gpg |
1213 | |
1214 | === removed file 'meta-release-unit-testing' |
1215 | --- meta-release-unit-testing 2021-07-23 16:27:05 +0000 |
1216 | +++ meta-release-unit-testing 1970-01-01 00:00:00 +0000 |
1217 | @@ -1,78 +0,0 @@ |
1218 | -Dist: warty |
1219 | -Name: Warty Warthog |
1220 | -Version: 04.10 |
1221 | -Date: Wed, 20 Oct 2004 07:28:17 UTC |
1222 | -Supported: 0 |
1223 | -Description: This is the warty warthog release |
1224 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/warty/Release |
1225 | - |
1226 | -Dist: hoary |
1227 | -Name: Hoary Hedgehog |
1228 | -Version: 05.04 |
1229 | -Date: Fri, 08 Apr 2005 08:18:19 UTC |
1230 | -Supported: 0 |
1231 | -Description: This is the Hoary Hedgehog release |
1232 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/hoary/Release |
1233 | - |
1234 | -Dist: breezy |
1235 | -Name: Breezy Badger |
1236 | -Version: 05.10 |
1237 | -Date: Thu, 13 Oct 2005 19:34:42 UTC |
1238 | -Supported: 0 |
1239 | -Description: This is the Breezy Badger release |
1240 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/breezy/Release |
1241 | - |
1242 | -Dist: dapper |
1243 | -Name: Dapper Drake |
1244 | -Version: 6.06 LTS |
1245 | -Date: Thu, 01 Jun 2006 9:00:00 UTC |
1246 | -Supported: 0 |
1247 | -Description: This is the Dapper Drake release |
1248 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/dapper/Release |
1249 | -ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement |
1250 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz |
1251 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz.gpg |
1252 | - |
1253 | -Dist: edgy |
1254 | -Name: Edgy Eft |
1255 | -Version: 6.10 |
1256 | -Date: Thu, 26 Oct 2006 12:00:00 UTC |
1257 | -Supported: 0 |
1258 | -Description: This is the Edgy Eft release |
1259 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/edgy/Release |
1260 | -ReleaseNotes: http://changelogs.ubuntu.com/EdgyReleaseAnnouncement |
1261 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/edgy-updates/main/dist-upgrader-all/current/edgy.tar.gz |
1262 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/edgy-updates/main/dist-upgrader-all/current/edgy.tar.gz.gpg |
1263 | - |
1264 | -Dist: feisty |
1265 | -Name: Feisty Fawn |
1266 | -Version: 7.04 |
1267 | -Date: Thu, 19 Apr 2007 13:00:00 +0200 |
1268 | -Supported: 0 |
1269 | -Description: This is the 7.04 release |
1270 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/feisty/Release |
1271 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/feisty-proposed/main/dist-upgrader-all/current/ReleaseAnnouncement |
1272 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/feisty-proposed/main/dist-upgrader-all/current/feisty.tar.gz |
1273 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/feisty-proposed/main/dist-upgrader-all/current/feisty.tar.gz.gpg |
1274 | - |
1275 | -Dist: gutsy |
1276 | -Name: Gutsy Gibbon |
1277 | -Version: 7.10 |
1278 | -Date: Thu, 18 Oct 2007 12:00:00 UTC |
1279 | -Supported: 0 |
1280 | -Description: This is the 7.10 release |
1281 | -Release-File: http://archive.ubuntu.com/ubuntu/dists/gutsy/Release |
1282 | -ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/gutsy/main/dist-upgrader-all/current/ReleaseAnnouncement |
1283 | -UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/gutsy/main/dist-upgrader-all/current/gutsy.tar.gz |
1284 | -UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/gutsy/main/dist-upgrader-all/current/gutsy.tar.gz.gpg |
1285 | - |
1286 | -Dist: herring |
1287 | -Name: Holly Holbach |
1288 | -Version: 9.99 |
1289 | -Date: Thu, 18 Oct 2099 12:00:00 UTC |
1290 | -Supported: 0 |
1291 | -Description: This is a *not* a distro - just needed for unittesting the fetcher |
1292 | -Release-File: http://${countrymirror}archive.ubuntu.com/ubuntu/dists/gutsy/Release |
1293 | -ReleaseNotes: http://${countrymirror}archive.ubuntu.com/ubuntu/dists/gutsy/main/dist-upgrader-all/current/ReleaseAnnouncement |
1294 | -UpgradeTool: http://${countrymirror}archive.ubuntu.com/ubuntu/dists/gutsy/main/dist-upgrader-all/current/gutsy.tar.gz |
1295 | -UpgradeToolSignature: http://${countrymirror}archive.ubuntu.com/ubuntu/dists/gutsy/main/dist-upgrader-all/current/gutsy.tar.gz.gpg |
1296 | |
1297 | === removed directory 'raspi' |
1298 | === removed file 'raspi/os_list_imagingutility_ubuntu.json' |
1299 | --- raspi/os_list_imagingutility_ubuntu.json 2023-10-19 21:12:33 +0000 |
1300 | +++ raspi/os_list_imagingutility_ubuntu.json 1970-01-01 00:00:00 +0000 |
1301 | @@ -1,172 +0,0 @@ |
1302 | -{ |
1303 | - "os_list": [ |
1304 | - { |
1305 | - "name": "Ubuntu Desktop 23.10 (64-bit)", |
1306 | - "description": "Desktop OS for RPi 4/400/5 models with 4Gb+", |
1307 | - "url": "http://cdimage.ubuntu.com/releases/mantic/release/ubuntu-23.10-preinstalled-desktop-arm64+raspi.img.xz", |
1308 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1309 | - "init_format": "none", |
1310 | - "website": "https://ubuntu.com/raspberry-pi/desktop", |
1311 | - "release_date": "2023-10-12", |
1312 | - "extract_size": 8835301376, |
1313 | - "extract_sha256": "217244c298fd9af1223786d1d6f75d4c4a939d212d15a64e6020abd12a2bfce3", |
1314 | - "image_download_size": 2543823688, |
1315 | - "image_download_sha256": "92cbd905c36114effcec6943d3438845dfac07e3bb238cde4c510b41a71f694b", |
1316 | - "devices": ["pi5-64bit", "pi4-64bit"] |
1317 | - }, |
1318 | - { |
1319 | - "name": "Ubuntu Server 23.10 (32-bit)", |
1320 | - "description": "Server OS for RPi Zero 2W/2/3/4/400", |
1321 | - "url": "http://cdimage.ubuntu.com/releases/mantic/release/ubuntu-23.10-preinstalled-server-armhf+raspi.img.xz", |
1322 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1323 | - "init_format": "cloudinit", |
1324 | - "website": "https://ubuntu.com/raspberry-pi/server", |
1325 | - "release_date": "2023-10-12", |
1326 | - "extract_size": 3381657600, |
1327 | - "extract_sha256": "0992869903e8579ef51a1c0f8a436ddeaca6290cd03e27d3a9ebe21e94c61be5", |
1328 | - "image_download_size": 1129762092, |
1329 | - "image_download_sha256": "bab926a3f86837888940db1bbae64b6f7e03b03d044c1669167b6a42fd20cac2", |
1330 | - "devices": ["pi4-32bit", "pi3-32bit", "pi2-32bit"] |
1331 | - }, |
1332 | - { |
1333 | - "name": "Ubuntu Server 23.10 (64-bit)", |
1334 | - "description": "Server OS for RPi Zero 2W/3/4/400/5", |
1335 | - "url": "http://cdimage.ubuntu.com/releases/mantic/release/ubuntu-23.10-preinstalled-server-arm64+raspi.img.xz", |
1336 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1337 | - "init_format": "cloudinit", |
1338 | - "website": "https://ubuntu.com/raspberry-pi/server", |
1339 | - "release_date": "2023-10-12", |
1340 | - "extract_size": 3727687680, |
1341 | - "extract_sha256": "55d7e18024ff57c208de2f4e370d05265b680d167046441c4f53cc68e6991542", |
1342 | - "image_download_size": 1189280360, |
1343 | - "image_download_sha256": "81886cefc6b7abe5baf26dbc353bc69924dfc76416c15c3c3d03cf5ba30c90e8", |
1344 | - "devices": ["pi5-64bit", "pi4-64bit", "pi3-64bit"] |
1345 | - }, |
1346 | - { |
1347 | - "name": "Ubuntu Desktop 22.04.3 LTS (64-bit)", |
1348 | - "description": "Desktop OS with long-term support for RPi 4/400 models with 2Gb+", |
1349 | - "url": "http://cdimage.ubuntu.com/releases/jammy/release/ubuntu-22.04.3-preinstalled-desktop-arm64+raspi.img.xz", |
1350 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1351 | - "release_date": "2023-08-10", |
1352 | - "website": "https://ubuntu.com/raspberry-pi/desktop", |
1353 | - "init_format": "none", |
1354 | - "extract_size": 9343860736, |
1355 | - "extract_sha256": "bf6097bc08c036e4dfce976c19672ae56fd1ecd358aef53b0512f2f811367ed1", |
1356 | - "image_download_size": 2595696752, |
1357 | - "image_download_sha256": "d187127752ebf16201102d32c1e7fa7a17532c6b5ccf7b3b08507d0ab0e3416c", |
1358 | - "devices": ["pi4-64bit"] |
1359 | - }, |
1360 | - { |
1361 | - "name": "Ubuntu Server 22.04.3 LTS (32-bit)", |
1362 | - "description": "Server OS with long-term support for RPi Zero 2W/2/3/4/400", |
1363 | - "url": "http://cdimage.ubuntu.com/releases/jammy/release/ubuntu-22.04.3-preinstalled-server-armhf+raspi.img.xz", |
1364 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1365 | - "release_date": "2023-08-10", |
1366 | - "website": "https://ubuntu.com/raspberry-pi/server", |
1367 | - "init_format": "cloudinit", |
1368 | - "extract_size": 3954180096, |
1369 | - "extract_sha256": "7accb8bfc47fc2a937b9458322ef40305efd4f4d93aa8b31b14699dab15282b6", |
1370 | - "image_download_size": 986176100, |
1371 | - "image_download_sha256": "dbab406bfa473ebf95aa2e34e87ebf64467067ffa0478daa85c48e213b925ed6", |
1372 | - "devices": ["pi4-32bit", "pi3-32bit", "pi2-32bit"] |
1373 | - }, |
1374 | - { |
1375 | - "name": "Ubuntu Server 22.04.3 LTS (64-bit)", |
1376 | - "description": "Server OS with long-term support for RPi Zero 2W/3/4/400", |
1377 | - "url": "http://cdimage.ubuntu.com/releases/jammy/release/ubuntu-22.04.3-preinstalled-server-arm64+raspi.img.xz", |
1378 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1379 | - "release_date": "2023-08-10", |
1380 | - "website": "https://ubuntu.com/raspberry-pi/server", |
1381 | - "init_format": "cloudinit", |
1382 | - "extract_size": 4277141504, |
1383 | - "extract_sha256": "a5f35fd128fff112dde5a6a8d6acab9e24323c5ddc7d0980654533587c781a60", |
1384 | - "image_download_size": 1053089860, |
1385 | - "image_download_sha256": "f3842efb3be1be4243c24203bd16e335f155fdbe104b1ed8c5efc548ea478ab0", |
1386 | - "devices": ["pi4-64bit", "pi3-64bit"] |
1387 | - }, |
1388 | - { |
1389 | - "name": "Ubuntu Server 20.04.5 LTS (32-bit)", |
1390 | - "description": "Server OS with long-term support for RPi 2/3/4/400", |
1391 | - "url": "http://cdimage.ubuntu.com/releases/focal/release/ubuntu-20.04.5-preinstalled-server-armhf+raspi.img.xz", |
1392 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1393 | - "extract_size": 3247451136, |
1394 | - "extract_sha256": "f2bff918ba6b9fe5f35bea65810aebde1ee9b0842a11585ff84c116061754bf5", |
1395 | - "image_download_size": 750345368, |
1396 | - "release_date": "2022-09-01", |
1397 | - "image_download_sha256": "065c41846ddf7a1c636a1aac5a7d49ebcee819b141f9d57fd586c5f84b9b7942", |
1398 | - "website": "https://ubuntu.com/raspberry-pi/server", |
1399 | - "init_format": "cloudinit", |
1400 | - "devices": ["pi4-32bit", "pi3-32bit", "pi2-32bit"] |
1401 | - }, |
1402 | - { |
1403 | - "name": "Ubuntu Server 20.04.5 LTS (64-bit)", |
1404 | - "description": "Server OS with long-term support for RPi 3/4/400", |
1405 | - "url": "http://cdimage.ubuntu.com/releases/focal/release/ubuntu-20.04.5-preinstalled-server-arm64+raspi.img.xz", |
1406 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1407 | - "extract_size": 3580830720, |
1408 | - "extract_sha256": "1468505ff99c94ff066ffa2117e4db07a966fffc88f8021aca09b9fb99a8f0b1", |
1409 | - "image_download_size": 791775304, |
1410 | - "release_date": "2022-09-01", |
1411 | - "image_download_sha256": "44b98acd3fd4379c6b194696520b6aecb2f596b601e43e9b6934c83f0aa61026", |
1412 | - "website": "https://ubuntu.com/raspberry-pi/server", |
1413 | - "init_format": "cloudinit", |
1414 | - "devices": ["pi4-64bit", "pi3-64bit"] |
1415 | - }, |
1416 | - { |
1417 | - "name": "Ubuntu Core 20 (32-bit)", |
1418 | - "url": "http://cdimage.ubuntu.com/ubuntu-core/20/stable/current/ubuntu-core-20-armhf+raspi.img.xz", |
1419 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1420 | - "description": "IoT OS for RPi 2/3/4", |
1421 | - "website": "https://ubuntu.com/download/raspberry-pi-core", |
1422 | - "extract_size": 3635430400, |
1423 | - "extract_sha256": "92fa17b082472a604503772dab2ec372dff160b3e82408563df1cc36d7d3033a", |
1424 | - "image_download_size": 238129880, |
1425 | - "release_date": "2023-01-19", |
1426 | - "image_download_sha256": "4610ee681d01170efee011afeacfbb5d1ac29b7a857162fdde6be02029752e3d", |
1427 | - "init_format": "none", |
1428 | - "devices": ["pi4-32bit", "pi3-32bit", "pi2-32bit"] |
1429 | - }, |
1430 | - { |
1431 | - "name": "Ubuntu Core 20 (64-bit)", |
1432 | - "url": "http://cdimage.ubuntu.com/ubuntu-core/20/stable/current/ubuntu-core-20-arm64+raspi.img.xz", |
1433 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1434 | - "description": "IoT OS for RPi 3/4", |
1435 | - "website": "https://ubuntu.com/download/raspberry-pi-core", |
1436 | - "extract_size": 3635430400, |
1437 | - "extract_sha256": "ebf9a1eb410b3d18cf2906dda90c6321aa285b5a0204dab460f0ff3ea7fbe768", |
1438 | - "image_download_size": 255627808, |
1439 | - "release_date": "2023-01-19", |
1440 | - "image_download_sha256": "1f2e97a415f955a34590c20936228a2e25817b8280edfcb6c32afcc98693c44c", |
1441 | - "init_format": "none", |
1442 | - "devices": ["pi4-64bit", "pi3-64bit"] |
1443 | - }, |
1444 | - { |
1445 | - "name": "Ubuntu Core 22 (32-bit)", |
1446 | - "description": "IoT OS for RPi Zero 2W/2/3/4", |
1447 | - "url": "http://cdimage.ubuntu.com/ubuntu-core/22/stable/current/ubuntu-core-22-armhf+raspi.img.xz", |
1448 | - "init_format": "none", |
1449 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1450 | - "website": "https://ubuntu.com/download/raspberry-pi-core", |
1451 | - "extract_size": 3670016000, |
1452 | - "extract_sha256": "0e740c1096f02feddaa09abeb7bcbe5d120eb4f2f747ad3cdf3ead1f0bd00e4d", |
1453 | - "image_download_size": 252839260, |
1454 | - "image_download_sha256": "0860442c370d0d9d9d64ac9dd85782b7b42a42bff4b23f76f382bb44d8cfb604", |
1455 | - "release_date": "2023-01-19", |
1456 | - "devices": ["pi4-32bit", "pi3-32bit", "pi2-32bit"] |
1457 | - }, |
1458 | - { |
1459 | - "name": "Ubuntu Core 22 (64-bit)", |
1460 | - "description": "IoT OS for RPi Zero 2W/3/4", |
1461 | - "url": "http://cdimage.ubuntu.com/ubuntu-core/22/stable/current/ubuntu-core-22-arm64+raspi.img.xz", |
1462 | - "init_format": "none", |
1463 | - "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", |
1464 | - "website": "https://ubuntu.com/download/raspberry-pi-core", |
1465 | - "extract_size": 3670016000, |
1466 | - "extract_sha256": "e3199afafe1fa5ae4b2b9e8bde754008797328204f77a0bf844e00b182360ea9", |
1467 | - "image_download_size": 271091220, |
1468 | - "image_download_sha256": "4ee6c389c09ccea7728c34c525c57e14d2f15e15a8d44d0f2894efa1abb13ea0", |
1469 | - "release_date": "2023-01-19", |
1470 | - "devices": ["pi4-64bit", "pi3-64bit"] |
1471 | - } |
1472 | - ] |
1473 | -} |
1474 | |
1475 | === removed file 'refresh_os_list' |
1476 | --- refresh_os_list 2022-01-20 15:34:30 +0000 |
1477 | +++ refresh_os_list 1970-01-01 00:00:00 +0000 |
1478 | @@ -1,965 +0,0 @@ |
1479 | -#!/usr/bin/python3 |
1480 | - |
1481 | -""" |
1482 | -A script for generating the JSON list required by the Raspberry Pi imaging |
1483 | -utility. Takes an existing JSON list as input and updates it by calculating new |
1484 | -image sizes and check-sums from the source files on the server. Typical usage |
1485 | -is to tweak the existing JSON (e.g. moving a URL from one point release to the |
1486 | -next), feed the script the edited JSON, directing output to a new JSON file, |
1487 | -then diff the results for sanity before renaming the new file over the old: |
1488 | - |
1489 | -$ vim raspi/os*.json |
1490 | -$ ./refresh_os_list raspi/os*.json > new.json |
1491 | -$ diff raspi/os*.json new.json |
1492 | -$ mv new.json raspi/os*.json |
1493 | - |
1494 | -The only mandatory field in each entry is "url"; the script will fill out all |
1495 | -other missing fields (albeit with place-holders in the case of "name" and |
1496 | -"description" which it can't derive). If you need to add new images to the |
1497 | -JSON, you can simply add a new entry with just the "url" field and have the |
1498 | -script fill out everything else (remembering to replace the "name" and |
1499 | -"description" placeholders afterwards!). |
1500 | - |
1501 | -If you need to override the "url" field (e.g. when dealing with the list prior |
1502 | -to release), add an "override_url" field which will removed from the output but |
1503 | -will be used as the actual source of the image to calculate hashes and sizes. |
1504 | -""" |
1505 | - |
1506 | -import os |
1507 | -import io |
1508 | -import sys |
1509 | -import json |
1510 | -import gzip |
1511 | -import bz2 |
1512 | -import lzma |
1513 | -import hashlib |
1514 | -import argparse |
1515 | -import textwrap |
1516 | -import warnings |
1517 | -import functools |
1518 | -import contextlib |
1519 | -import datetime as dt |
1520 | -from html.parser import HTMLParser |
1521 | -from urllib.parse import urlsplit, urlunsplit |
1522 | -from urllib.request import urlopen, Request |
1523 | -from urllib.error import HTTPError |
1524 | -from collections import namedtuple, OrderedDict |
1525 | - |
1526 | - |
1527 | -def main(args=None): |
1528 | - if sys.version_info < (3, 7): |
1529 | - raise SystemExit('This script requires Python 3.7 or later') |
1530 | - |
1531 | - if int(os.environ.get('TEST', '0')): |
1532 | - # To run the test suite (via the built-in doctest module): |
1533 | - # |
1534 | - # $ TEST=1 ./refresh_os_list |
1535 | - # |
1536 | - # Optionally, if you have python3-coverage installed, and you want to |
1537 | - # track the coverage of the test suite you can further do: |
1538 | - # |
1539 | - # $ TEST=1 python3-coverage run --source=./ ./refresh_os_list |
1540 | - # $ python3-coverage report --show-missing |
1541 | - return _test_main() |
1542 | - |
1543 | - parser = argparse.ArgumentParser( |
1544 | - description=textwrap.dedent(__doc__), |
1545 | - formatter_class=argparse.RawDescriptionHelpFormatter) |
1546 | - parser.add_argument( |
1547 | - 'input_file', type=argparse.FileType('r', encoding='utf-8'), |
1548 | - help="The (potentially partial) JSON template to fill out") |
1549 | - parser.add_argument( |
1550 | - 'output_file', nargs='?', type=argparse.FileType('w', encoding='utf-8'), |
1551 | - default=sys.stdout, |
1552 | - help="The output file to create; defaults to stdout") |
1553 | - parser.add_argument( |
1554 | - '-f', '--force', action='store_true', |
1555 | - help="Force the utility to refresh all images even if the release " |
1556 | - "date and download size have not changed in the index") |
1557 | - args = parser.parse_args(args) |
1558 | - |
1559 | - try: |
1560 | - update_template(args.input_file, args.output_file, args.force) |
1561 | - except Exception as e: |
1562 | - # If you want full stack traces just run me like this: |
1563 | - # |
1564 | - # $ DEBUG=1 ./refresh_os_list blah |
1565 | - if int(os.environ.get('DEBUG', '0')): |
1566 | - raise |
1567 | - else: |
1568 | - print(str(e), file=sys.stderr) |
1569 | - sys.exit(1) |
1570 | - |
1571 | - |
1572 | -def update_template( |
1573 | - input_file, output_file, force=False, |
1574 | - icon_url='https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg'): |
1575 | - """ |
1576 | - Reads JSON data from *input_file* (a file-like object), updates any entries |
1577 | - found to have incorrect size and/or check-sums, fills out mandatory missing |
1578 | - fields with placeholders (name, description, website), and updates the |
1579 | - release-date (if it's out of date). The output is written (again in JSON |
1580 | - format) to *output_file* (another file-like object). For example:: |
1581 | - |
1582 | - >>> images = { |
1583 | - ... 'impish-armhf+raspi.img.gz': gzip.compress(b'foo' * 123456), |
1584 | - ... 'impish-arm64+raspi.img.gz': gzip.compress(b'bar' * 234567), |
1585 | - ... } |
1586 | - >>> ts = dt.datetime(2021, 10, 25) |
1587 | - >>> with contextlib.redirect_stderr(io.StringIO()): |
1588 | - ... with _test_server(_make_index(_make_sums(images), ts)) as url: |
1589 | - ... input_file = io.StringIO(json.dumps({'os_list': [ |
1590 | - ... {'url': f'{url}impish-armhf+raspi.img.gz'}, |
1591 | - ... {'url': f'{url}impish-arm64+raspi.img.gz'}, |
1592 | - ... ]})) |
1593 | - ... output_file = io.StringIO() |
1594 | - ... update_template(input_file, output_file) |
1595 | - >>> output = json.loads(output_file.getvalue()) |
1596 | - >>> len(output['os_list']) |
1597 | - 2 |
1598 | - >>> sorted(output['os_list'][0].keys()) # doctest: +NORMALIZE_WHITESPACE |
1599 | - ['description', 'extract_sha256', 'extract_size', 'icon', |
1600 | - 'image_download_sha256', 'image_download_size', 'name', |
1601 | - 'release_date', 'url', 'website'] |
1602 | - >>> output['os_list'][0].keys() == output['os_list'][1].keys() |
1603 | - True |
1604 | - |
1605 | - If the *force* parameter is ``True`` then all entries are updated |
1606 | - regardless of whether they are up to date or not. The *icon_url* parameter |
1607 | - optionally specifies the URL of the icon to include in entries that lack |
1608 | - one. |
1609 | - |
1610 | - Progress information is printed to stderr while the routine is running. |
1611 | - """ |
1612 | - # OrderedDict is used to ensure we don't mess around with the ordering of |
1613 | - # fields within the entries in older Python versions. This doesn't matter |
1614 | - # from the point of view of the file (the ordering is irrelevant) but makes |
1615 | - # diff'ing the output substantially easier |
1616 | - template = json.load(input_file, object_pairs_hook=OrderedDict) |
1617 | - if not isinstance(template, dict): |
1618 | - raise ValueError(f'expected a JSON object in {input_file.name}') |
1619 | - if template.keys() != {'os_list'}: |
1620 | - raise ValueError('expected a single "os_list" entry') |
1621 | - if not all('url' in entry for entry in template['os_list']): |
1622 | - raise ValueError('all "os_list" entries must contain a "url" entry') |
1623 | - |
1624 | - for entry in template['os_list']: |
1625 | - url = entry.get('override_url', entry['url']) |
1626 | - source = get_entry(url) |
1627 | - if 'icon' not in entry: |
1628 | - entry['icon'] = icon_url |
1629 | - if 'name' not in entry: |
1630 | - warnings.warn(Warning('Inserted placeholder entries; check output')) |
1631 | - entry['name'] = 'PLACEHOLDER' |
1632 | - if 'init_format' not in entry: |
1633 | - warnings.warn(Warning('Inserted guessed init_format; check output')) |
1634 | - entry['init_format'] = ( |
1635 | - 'cloudinit' if entry['name'].startswith('Ubuntu Server') else |
1636 | - 'none') |
1637 | - if 'description' not in entry: |
1638 | - warnings.warn(Warning('Inserted placeholder entries; check output')) |
1639 | - entry['description'] = 'PLACEHOLDER' |
1640 | - if 'website' not in entry: |
1641 | - warnings.warn(Warning('Inserted default website; check output')) |
1642 | - entry['website'] = 'https://ubuntu.com/raspberry-pi/' |
1643 | - update = ( |
1644 | - force or |
1645 | - # image_download_sha256 is optional and may be missing, hence the |
1646 | - # unusual default here |
1647 | - entry.get('image_download_sha256', source.sha256) != source.sha256 or |
1648 | - entry.get('image_download_size', 0) != source.size or |
1649 | - dt.datetime.strptime( |
1650 | - entry.get('release_date', '1970-01-01'), '%Y-%m-%d' |
1651 | - ).date() < source.date |
1652 | - ) |
1653 | - if update: |
1654 | - print(f'Updating {source.name}', file=sys.stderr) |
1655 | - entry.update(update_entry(entry, source)) |
1656 | - else: |
1657 | - print(f'Entry for {source.name} is up to date', file=sys.stderr) |
1658 | - # Always update image_download_sha256 to fill it out when missing |
1659 | - entry['image_download_sha256'] = source.sha256 |
1660 | - entry.pop('override_url', None) |
1661 | - # Validate website entry (note that we do this whether the entry is |
1662 | - # updated or not to guard against links going dead after release) |
1663 | - try: |
1664 | - urlopen(entry['website']) |
1665 | - except HTTPError as exc: |
1666 | - warnings.warn( |
1667 | - Warning(f'Failed to access {entry[website]}: {exc!r}')) |
1668 | - json.dump(template, output_file, indent=4) |
1669 | - |
1670 | - |
1671 | -class HashStream: |
1672 | - """ |
1673 | - When constructed with *stream*, a file-like object, this class proxies all |
1674 | - calls to the usual :meth:`~io.BufferedIOBase.read` calls (which must be |
1675 | - sequential as the class provides no "seek" method), and tots up the number |
1676 | - of bytes read in the :attr:`size` attribute, and the SHA256 checksum of |
1677 | - all data read in the :attr:`cksum` attribute. |
1678 | - |
1679 | - For example:: |
1680 | - |
1681 | - >>> import io |
1682 | - >>> stream = io.BytesIO(b'foo bar baz') |
1683 | - >>> h = HashStream(stream) |
1684 | - >>> h.size |
1685 | - 0 |
1686 | - >>> h.cksum |
1687 | - 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' |
1688 | - >>> h.read(3) |
1689 | - b'foo' |
1690 | - >>> h.size |
1691 | - 3 |
1692 | - >>> h.cksum |
1693 | - '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae' |
1694 | - >>> h.read() |
1695 | - b' bar baz' |
1696 | - >>> h.size == len(stream.getvalue()) |
1697 | - True |
1698 | - >>> h.cksum |
1699 | - 'dbd318c1c462aee872f41109a4dfd3048871a03dedd0fe0e757ced57dad6f2d7' |
1700 | - |
1701 | - The class may also be used as a context manager, in which case exiting the |
1702 | - context manager closes the underlying stream:: |
1703 | - |
1704 | - >>> stream = io.BytesIO(b'foo bar baz') |
1705 | - >>> stream.closed |
1706 | - False |
1707 | - >>> with HashStream(stream) as h: |
1708 | - ... print(h.read().decode('ascii')) |
1709 | - foo bar baz |
1710 | - >>> stream.closed |
1711 | - True |
1712 | - """ |
1713 | - def __init__(self, stream): |
1714 | - self.stream = stream |
1715 | - self._cksum = hashlib.sha256() |
1716 | - self._size = 0 |
1717 | - |
1718 | - def read(self, n=-1): |
1719 | - result = self.stream.read(n) |
1720 | - self._size += len(result) |
1721 | - self._cksum.update(result) |
1722 | - return result |
1723 | - |
1724 | - def __enter__(self): |
1725 | - return self |
1726 | - |
1727 | - def __exit__(self, *exc): |
1728 | - self.stream.close() |
1729 | - |
1730 | - @property |
1731 | - def cksum(self): |
1732 | - """ |
1733 | - The SHA256 checksum of all data read so far, returned as a lowercased |
1734 | - hex-string. |
1735 | - """ |
1736 | - return self._cksum.hexdigest().lower() |
1737 | - |
1738 | - @property |
1739 | - def size(self): |
1740 | - """ |
1741 | - The number of bytes of data read so far. |
1742 | - """ |
1743 | - return self._size |
1744 | - |
1745 | - |
1746 | -class TableParser(HTMLParser): |
1747 | - """ |
1748 | - A sub-class of :class:`html.parser.HTMLParser` that finds all ``<table>`` |
1749 | - tags (indirectly) under the ``<html>`` tag. |
1750 | - |
1751 | - It stores the content of all ``<th>`` and ``<td>`` tags under each ``<tr>`` |
1752 | - tag in the :attr:`table` attribute as a list of lists (the outer list of |
1753 | - rows, the inner lists of cells within those rows). All data is represented |
1754 | - as strings, or as ``None`` for entirely empty entries. For example:: |
1755 | - |
1756 | - >>> html = ''' |
1757 | - ... <html><body><table> |
1758 | - ... <p>A table: |
1759 | - ... <tr><th>#</th><th>Name</th></tr> |
1760 | - ... <tr><td>1</td><td>foo</td></tr> |
1761 | - ... <tr><td>2</td><td>bar</td></tr> |
1762 | - ... <tr><td></td><td>quux</td></tr> |
1763 | - ... </table></body></html> |
1764 | - ... ''' |
1765 | - >>> parser = TableParser() |
1766 | - >>> parser.feed(html) |
1767 | - >>> parser.table |
1768 | - [['#', 'Name'], ['1', 'foo'], ['2', 'bar'], [None, 'quux']] |
1769 | - |
1770 | - .. note:: |
1771 | - |
1772 | - As this is a subclass of an HTML parser (as opposed to an XML parser) |
1773 | - there is no requirement that the input is strictly valid XML, hence the |
1774 | - lack of a closing ``<p>`` tag above is acceptable. |
1775 | - """ |
1776 | - def __init__(self): |
1777 | - super().__init__(convert_charrefs=True) |
1778 | - self.state = 'html' |
1779 | - self.table = [] |
1780 | - |
1781 | - def handle_starttag(self, tag, attrs): |
1782 | - if self.state == 'html' and tag == 'table': |
1783 | - self.state = 'table' |
1784 | - elif self.state == 'table' and tag == 'tr': |
1785 | - self.state = 'tr' |
1786 | - self.table.append([]) |
1787 | - elif self.state == 'tr' and tag in ('th', 'td'): |
1788 | - self.state = 'td' |
1789 | - self.table[-1].append(None) |
1790 | - |
1791 | - def handle_data(self, data): |
1792 | - if self.state == 'td': |
1793 | - self.table[-1][-1] = data |
1794 | - |
1795 | - def handle_endtag(self, tag): |
1796 | - if self.state == 'table' and tag == 'table': |
1797 | - self.state = 'html' |
1798 | - elif self.state == 'tr' and tag == 'tr': |
1799 | - self.state = 'table' |
1800 | - elif self.state == 'td' and tag in ('th', 'td'): |
1801 | - self.state = 'tr' |
1802 | - |
1803 | - |
1804 | -IndexEntry = namedtuple('IndexEntry', ('url', 'name', 'date', 'sha256', 'size')) |
1805 | - |
1806 | - |
1807 | -def get_entry(url): |
1808 | - """ |
1809 | - Given the *url* of an image, returns an :class:`IndexEntry` named tuple |
1810 | - containing the url, name, generated date, SHA-256 check-sum, and file size. |
1811 | - For example:: |
1812 | - |
1813 | - >>> images = { |
1814 | - ... 'impish-armhf+raspi.img.xz': b'foo' * 123456, |
1815 | - ... 'impish-arm64+raspi.img.xz': b'bar' * 234567, |
1816 | - ... } |
1817 | - >>> ts = dt.datetime(2021, 10, 25) |
1818 | - >>> with _test_server(_make_index(_make_sums(images), ts)) as url: |
1819 | - ... entry = get_entry(f'{url}impish-armhf+raspi.img.xz') |
1820 | - >>> entry # doctest: +NORMALIZE_WHITESPACE +ELLIPSIS |
1821 | - IndexEntry(url='http://127.0.0.1:4444/impish-armhf+raspi.img.xz', |
1822 | - name='impish-armhf+raspi.img.xz', date=datetime.date(2021, 10, 25), |
1823 | - sha256='f4c1a97c6eef546ce6814a31abd371f3072bd9056377fcfee...', |
1824 | - size=370368) |
1825 | - """ |
1826 | - split = urlsplit(url) |
1827 | - path, name = split.path.rsplit('/', 1) |
1828 | - index = urlunsplit(split._replace(path=path + '/')) |
1829 | - try: |
1830 | - entry = get_index(index)[name] |
1831 | - except KeyError: |
1832 | - raise ValueError( |
1833 | - f'unable to find {url}; are you sure the filename is correct?') |
1834 | - if entry.size is None or entry.sha256 is None: |
1835 | - raise ValueError(f'unable to retrieve file-size or checksum for {url}') |
1836 | - return entry |
1837 | - |
1838 | - |
1839 | -@functools.lru_cache |
1840 | -def get_index(url): |
1841 | - """ |
1842 | - Given the *url* of a cdimage directory containing images, returns a dict |
1843 | - mapping filenames to :class:`IndexEntry` named tuples. |
1844 | - For example:: |
1845 | - |
1846 | - >>> images = { |
1847 | - ... 'impish-armhf+raspi.img.xz': b'foo' * 123456, |
1848 | - ... 'impish-arm64+raspi.img.xz': b'bar' * 234567, |
1849 | - ... } |
1850 | - >>> ts = dt.datetime(2021, 10, 25) |
1851 | - >>> with _test_server(_make_index(_make_sums(images), ts)) as url: |
1852 | - ... index = get_index(url) |
1853 | - >>> sorted(index.keys()) |
1854 | - ['impish-arm64+raspi.img.xz', 'impish-armhf+raspi.img.xz'] |
1855 | - >>> entry = index['impish-arm64+raspi.img.xz'] |
1856 | - >>> entry # doctest: +NORMALIZE_WHITESPACE +ELLIPSIS |
1857 | - IndexEntry(url='http://127.0.0.1:4444/impish-arm64+raspi.img.xz', |
1858 | - name='impish-arm64+raspi.img.xz', date=datetime.date(2021, 10, 25), |
1859 | - sha256='e9cd9718e97ac951c0ead5de8069d0ff5de188620b12b02...', |
1860 | - size=703701) |
1861 | - """ |
1862 | - # NOTE: This code relies on the current layout of pages on |
1863 | - # cdimage.ubuntu.com; if extra tables or columns are introduced or |
1864 | - # re-ordered this will need revisiting... |
1865 | - parser = TableParser() |
1866 | - try: |
1867 | - with urlopen(url) as page: |
1868 | - parser.feed(page.read().decode('utf-8')) |
1869 | - except HTTPError: |
1870 | - raise ValueError( |
1871 | - f'unable to get {url}; are you sure the path is correct?') |
1872 | - entries = {} |
1873 | - for row in parser.table: |
1874 | - try: |
1875 | - icon, name, date, size, description = row |
1876 | - except ValueError: |
1877 | - # Evidently not a file row |
1878 | - continue |
1879 | - name = name.strip() |
1880 | - try: |
1881 | - date = dt.datetime.strptime(date.strip(), '%Y-%m-%d %H:%M').date() |
1882 | - except ValueError: |
1883 | - # Evidently not a file row |
1884 | - continue |
1885 | - sha256 = None |
1886 | - request = Request(url + name, method='HEAD') |
1887 | - with urlopen(request) as head: |
1888 | - size = int(head.getheader('Content-Length', '0')) |
1889 | - entries[name] = IndexEntry(url + name, name, date, sha256, size) |
1890 | - if 'SHA256SUMS' in entries: |
1891 | - with urlopen(url + 'SHA256SUMS') as hashes: |
1892 | - for line in hashes: |
1893 | - cksum, name = line.decode('utf-8').strip().split(None, 1) |
1894 | - cksum = cksum.strip().lower() |
1895 | - if name.startswith('*'): |
1896 | - name = name[1:] |
1897 | - try: |
1898 | - entries[name] = entries[name]._replace(sha256=cksum) |
1899 | - except KeyError: |
1900 | - pass |
1901 | - del entries['SHA256SUMS'] |
1902 | - return entries |
1903 | - |
1904 | - |
1905 | -def update_entry(entry, source): |
1906 | - """ |
1907 | - Given an *entry* (a dict, read from the source JSON) representing a single |
1908 | - image, and a *source* (an :class:`IndexEntry` namedtuple) representing the |
1909 | - current state of that source on the cdimage server, download the specified |
1910 | - image and update the "extract_size", "extract_sha256", |
1911 | - "image_download_size", "image_download_sha256", and "release_date" fields |
1912 | - (as necessary), returning the new entry. For example:: |
1913 | - |
1914 | - >>> images = { |
1915 | - ... 'impish-armhf+raspi.img.gz': gzip.compress(b'foo' * 123456), |
1916 | - ... 'impish-arm64+raspi.img.gz': gzip.compress(b'bar' * 234567), |
1917 | - ... } |
1918 | - >>> ts = dt.datetime(2021, 10, 25) |
1919 | - >>> with _test_server(_make_index(_make_sums(images), ts)) as url: |
1920 | - ... entry = {'url': f'{url}impish-armhf+raspi.img.gz'} |
1921 | - ... new_entry = update_entry(entry, get_entry(entry['url'])) |
1922 | - >>> sorted(new_entry.keys()) # doctest: +NORMALIZE_WHITESPACE |
1923 | - ['extract_sha256', 'extract_size', 'image_download_sha256', |
1924 | - 'image_download_size', 'release_date', 'url'] |
1925 | - >>> new_entry['release_date'] |
1926 | - '2021-10-25' |
1927 | - >>> new_entry['extract_size'] |
1928 | - 370368 |
1929 | - |
1930 | - Note: the routine does *not* modify the entry dict passed in. |
1931 | - """ |
1932 | - entry = entry.copy() |
1933 | - with HashStream(urlopen(source.url)) as compressed_image: |
1934 | - decompresser = { |
1935 | - 'gz': gzip.open, |
1936 | - 'bz2': bz2.open, |
1937 | - 'xz': lambda fd: lzma.open(fd, format=lzma.FORMAT_XZ), |
1938 | - }[source.url.rsplit('.', 1)[1]] |
1939 | - with HashStream(decompresser(compressed_image)) as decompressed_image: |
1940 | - while True: |
1941 | - print('\rDownloading & verifying image:' |
1942 | - f'{compressed_image.size * 100 / source.size:5.1f}%', |
1943 | - end='', file=sys.stderr) |
1944 | - buf = decompressed_image.read(65536) |
1945 | - if not buf: |
1946 | - # Erase and move to start of line |
1947 | - print('[1K\r', end='', file=sys.stderr) |
1948 | - break |
1949 | - entry['extract_size'] = decompressed_image.size |
1950 | - entry['extract_sha256'] = decompressed_image.cksum |
1951 | - if compressed_image.size != source.size: |
1952 | - raise ValueError('Corrupted download; size check failed') |
1953 | - if compressed_image.cksum != source.sha256: |
1954 | - raise ValueError('Corrupted download; SHA256 check failed') |
1955 | - entry['image_download_size'] = source.size |
1956 | - entry['image_download_sha256'] = source.sha256 |
1957 | - # Never move release_date backwards, in case the user has specified |
1958 | - # an "official" release date which happens to be after that listed |
1959 | - # on the images page; and yes, this compares dates in string format |
1960 | - # but that's safe in ISO-8601 format :) |
1961 | - entry['release_date'] = max(( |
1962 | - source.date.strftime('%Y-%m-%d'), |
1963 | - entry.get('release_date', '1970-01-01'))) |
1964 | - return entry |
1965 | - |
1966 | - |
1967 | -def _test_main(): |
1968 | - """ |
1969 | - Run the test suite via doctest. |
1970 | - """ |
1971 | - # All functions from here on are purely for the benefit of the test suite |
1972 | - import doctest |
1973 | - |
1974 | - # Undecorate get_index to prevent the cache from breaking many tests (could |
1975 | - # use get_index.cache_clear but this hack is marginally cleaner at least |
1976 | - # from the perspective of the tests themselves) |
1977 | - global get_index |
1978 | - get_index = get_index.__wrapped__ |
1979 | - failures, total = doctest.testmod() |
1980 | - return bool(failures) |
1981 | - |
1982 | - |
1983 | -@contextlib.contextmanager |
1984 | -def _test_server(files, *, host='127.0.0.1', port=4444): |
1985 | - """ |
1986 | - This function provides a test HTTP server for the doctest suite. |
1987 | - |
1988 | - It expects to be called with *content*, a :class:`dict` mapping filenames |
1989 | - to byte-strings representing file contents. All contents will be written to |
1990 | - a temporary directory, and a trivial HTTP server will be started to serve |
1991 | - its content on the specified *host* and *port* (defaults to port 4444 on |
1992 | - localhost). |
1993 | - |
1994 | - The function acts as a context manager, cleaning up the http daemon and |
1995 | - temporary directory upon exit. The URL of the root of the server is yielded |
1996 | - by the context manager. |
1997 | - """ |
1998 | - import tempfile |
1999 | - import http.server |
2000 | - from pathlib import Path |
2001 | - from threading import Thread |
2002 | - |
2003 | - class SilentHandler(http.server.SimpleHTTPRequestHandler): |
2004 | - def log_message(self, fmt, *args): |
2005 | - # Don't spam the console |
2006 | - pass |
2007 | - |
2008 | - with tempfile.TemporaryDirectory() as temp: |
2009 | - for filename, data in files.items(): |
2010 | - filepath = Path(temp) / filename |
2011 | - filepath.write_bytes(data) |
2012 | - |
2013 | - handler = functools.partial(SilentHandler, directory=temp) |
2014 | - with http.server.ThreadingHTTPServer( |
2015 | - ('127.0.0.1', 4444), handler) as httpd: |
2016 | - httpd_thread = Thread(target=httpd.serve_forever) |
2017 | - httpd_thread.start() |
2018 | - try: |
2019 | - yield f'http://{host}:{port}/' |
2020 | - finally: |
2021 | - httpd.shutdown() |
2022 | - httpd_thread.join(timeout=5) |
2023 | - assert not httpd_thread.is_alive() |
2024 | - |
2025 | - |
2026 | -def _make_sums(files): |
2027 | - """ |
2028 | - This function exists to generate SHA256SUMS files for the doctest suite. |
2029 | - |
2030 | - Given *files*, a :class:`dict` mapping filenames to byte-strings of |
2031 | - file contents, this function returns a new :class:`dict` which is a copy of |
2032 | - *files* with one additional entry titled "SHA256SUMS" which contains the |
2033 | - output of the "sha256sum" command for the given content. |
2034 | - """ |
2035 | - files = files.copy() |
2036 | - files['SHA256SUMS'] = '\n'.join( |
2037 | - f'{hashlib.sha256(data).hexdigest()} {filename}' |
2038 | - for filename, data in files.items() |
2039 | - ).encode('ascii') |
2040 | - return files |
2041 | - |
2042 | - |
2043 | -def _make_index(files, timestamp=None): |
2044 | - """ |
2045 | - This function generates index.html files for the doctest suite. |
2046 | - |
2047 | - Given *files*, a :class:`dict` mapping image filenames to byte-strings |
2048 | - of file contents, this function generates an appropriate "index.html" file, |
2049 | - returning a copy of the original :class:`dict` with this new entry. |
2050 | - |
2051 | - Additionally *timestamp*, a :class:`~datetime.datetime` representing the |
2052 | - last modification date, can be specified. It defaults to the current time |
2053 | - if not given. |
2054 | - """ |
2055 | - if timestamp is None: |
2056 | - timestamp = dt.datetime.now() |
2057 | - files = files.copy() |
2058 | - rows = '\n'.join( |
2059 | - f'<tr><td>Icon</td><td>{filename}</td>' |
2060 | - f'<td>{timestamp.strftime("%Y-%m-%d %H:%M")}</td>' |
2061 | - f'<td>{len(data) // 1024}K</td><td>Descriptive text</td></tr>' |
2062 | - for filename, data in files.items() |
2063 | - ) |
2064 | - files['index.html'] = f""" |
2065 | - <html><body> |
2066 | - <p>The following files are available:</p> |
2067 | - <table> |
2068 | - <tr><th></th><th>Name</th><th>LastMod</th><th>Size</th><th>Desc</th></tr> |
2069 | - {rows} |
2070 | - </table> |
2071 | - </body></html> |
2072 | - """.encode('utf-8') |
2073 | - return files |
2074 | - |
2075 | - |
2076 | -# Extra tests to bump test suite coverage |
2077 | - |
2078 | -__test__ = { |
2079 | - 'bad-json': """ |
2080 | - The input file must be valid JSON:: |
2081 | - |
2082 | - >>> import io |
2083 | - >>> update_template(io.StringIO('foo'), io.StringIO()) |
2084 | - Traceback (most recent call last): |
2085 | - File "<stdin>", line 2, in <module> |
2086 | - update_template(io.StringIO('foo'), io.StringIO()) |
2087 | - File "./refresh_os_list", line 117, in update_template |
2088 | - template = json.load(input_file, object_pairs_hook=OrderedDict) |
2089 | - File "/usr/lib/python3.8/json/decoder.py", line 355, in raw_decode |
2090 | - raise JSONDecodeError("Expecting value", s, err.value) from None |
2091 | - json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) |
2092 | - |
2093 | - The input file has to contain a JSON object at the top level:: |
2094 | - |
2095 | - >>> data = io.StringIO('[]') |
2096 | - >>> data.name = 'foo' |
2097 | - >>> update_template(data, io.StringIO()) |
2098 | - Traceback (most recent call last): |
2099 | - File "<stdin>", line 5, in <module> |
2100 | - update_template(data, io.StringIO()) |
2101 | - File "./refresh_os_list", line 119, in update_template |
2102 | - raise ValueError(f'expected a JSON object in {input_file.name}') |
2103 | - ValueError: expected a JSON object in foo |
2104 | - |
2105 | - The top-level JSON object must contain a single "os_list" entry:: |
2106 | - |
2107 | - >>> data = io.StringIO('{"foo": 1}') |
2108 | - >>> data.name = 'foo' |
2109 | - >>> update_template(data, io.StringIO()) |
2110 | - Traceback (most recent call last): |
2111 | - File "<stdin>", line 8, in <module> |
2112 | - update_template(data, io.StringIO()) |
2113 | - File "./refresh_os_list", line 121, in update_template |
2114 | - raise ValueError('expected a single "os_list" entry') |
2115 | - ValueError: expected a single "os_list" entry |
2116 | - |
2117 | - Every JSON object below os_list must have a "url" field:: |
2118 | - |
2119 | - >>> data = io.StringIO( |
2120 | - ... '{"os_list": {"name": "impish-server-arm64+raspi.img.xz"}}') |
2121 | - >>> data.name = 'foo' |
2122 | - >>> update_template(data, io.StringIO()) |
2123 | - Traceback (most recent call last): |
2124 | - File "<stdin>", line 11, in <module> |
2125 | - update_template(data, io.StringIO()) |
2126 | - File "./refresh_os_list", line 123, in update_template |
2127 | - raise ValueError('all "os_list" entries must contain a "url" entry') |
2128 | - ValueError: all "os_list" entries must contain a "url" entry |
2129 | - """, |
2130 | - |
2131 | - 'bad-url': """ |
2132 | - The URL provided to get_entry must be valid:: |
2133 | - |
2134 | - >>> images = { |
2135 | - ... 'impish-armhf+raspi.img.xz': b'foo', |
2136 | - ... 'impish-arm64+raspi.img.xz': b'bar', |
2137 | - ... } |
2138 | - >>> with _test_server(_make_index(_make_sums(images))) as url: |
2139 | - ... wrong_url = f'{url}wrong/impish-armhf+raspi.img.xz' |
2140 | - ... get_entry(wrong_url) # doctest: +ELLIPSIS |
2141 | - Traceback (most recent call last): |
2142 | - File "<stdin>", line 3, in <module> |
2143 | - get_entry(wrong_url) # doctest: +ELLIPSIS |
2144 | - File "./refresh_os_list", line 327, in get_entry |
2145 | - entry = get_index(index)[name] |
2146 | - File "./refresh_os_list", line 368, in get_index |
2147 | - raise ValueError(...) |
2148 | - ValueError: unable to get http://...; are you sure the path is correct? |
2149 | - >>> with _test_server(_make_index(_make_sums(images))) as url: |
2150 | - ... image_url = f'{url}focal-arm64+raspi.img.xz' |
2151 | - ... get_entry(image_url) # doctest: +ELLIPSIS |
2152 | - Traceback (most recent call last): |
2153 | - File "<stdin>", line 4, in <module> |
2154 | - entry = get_entry(f'{url}focal-arm64+raspi.img.xz') |
2155 | - File "./refresh_os_list", line 328, in get_entry |
2156 | - raise ValueError(...) |
2157 | - ValueError: unable to find http://...; are you sure the filename is correct? |
2158 | - """, |
2159 | - |
2160 | - 'no-checksums': """ |
2161 | - The SHA256SUMS file must exist on the server:: |
2162 | - |
2163 | - >>> images = { |
2164 | - ... 'hirsute-armhf+raspi.img.xz': b'foo', |
2165 | - ... 'hirsute-arm64+raspi.img.xz': b'bar', |
2166 | - ... } |
2167 | - >>> with _test_server(_make_index(images)) as url: |
2168 | - ... image_url = f'{url}hirsute-arm64+raspi.img.xz' |
2169 | - ... get_entry(image_url) # doctest: +ELLIPSIS |
2170 | - Traceback (most recent call last): |
2171 | - File "<stdin>", line 3, in <module> |
2172 | - get_entry(image_url) |
2173 | - File "./refresh_os_list", line 332, in get_entry |
2174 | - raise ValueError(f'unable to retrieve file-size or checksum for {url}') |
2175 | - ValueError: unable to retrieve file-size or checksum for http://... |
2176 | - """, |
2177 | - |
2178 | - 'ignore-star-prefixes': """ |
2179 | - Filenames in checksum files can have star prefixes (indicating binary |
2180 | - input) which should be ignored:: |
2181 | - |
2182 | - >>> images = _make_sums({ |
2183 | - ... 'impish-armhf+raspi.img.xz': b'foo' * 123456, |
2184 | - ... 'impish-arm64+raspi.img.xz': b'bar' * 234567, |
2185 | - ... }) |
2186 | - >>> cksums = images['SHA256SUMS'].decode('utf-8').splitlines(True) |
2187 | - >>> cksums = [f'{cksum} *{filename}' for line in cksums |
2188 | - ... for cksum, filename in (line.split(None, 1),)] |
2189 | - >>> images['SHA256SUMS'] = ''.join(cksums).encode('utf-8') |
2190 | - >>> ts = dt.datetime(2021, 10, 25) |
2191 | - >>> with _test_server(_make_index(images, ts)) as url: |
2192 | - ... entry = get_entry(f'{url}impish-armhf+raspi.img.xz') |
2193 | - >>> entry # doctest: +NORMALIZE_WHITESPACE +ELLIPSIS |
2194 | - IndexEntry(url='http://127.0.0.1:4444/impish-armhf+raspi.img.xz', |
2195 | - name='impish-armhf+raspi.img.xz', date=datetime.date(2021, 10, 25), |
2196 | - sha256='f4c1a97c6eef546ce6814a31abd371f3072bd9056377fcfee...', |
2197 | - size=370368) |
2198 | - """, |
2199 | - |
2200 | - 'ignore-extra-cksums': """ |
2201 | - Files may be present in the checksum file which we didn't find (or more |
2202 | - likely ignored) in the index.html. This should not cause an error:: |
2203 | - |
2204 | - >>> images = _make_sums({ |
2205 | - ... 'impish-armhf+raspi.img.xz': b'foo' * 123456, |
2206 | - ... 'impish-arm64+raspi.img.xz': b'bar' * 234567, |
2207 | - ... }) |
2208 | - >>> cksums = images['SHA256SUMS'].decode('utf-8') |
2209 | - >>> cksums += '\\n' + '0123abcd' * 8 + ' weird-hash.img.xz' |
2210 | - >>> images['SHA256SUMS'] = cksums.encode('utf-8') |
2211 | - >>> ts = dt.datetime(2021, 10, 25) |
2212 | - >>> with _test_server(_make_index(images, ts)) as url: |
2213 | - ... entry = get_entry(f'{url}impish-armhf+raspi.img.xz') |
2214 | - >>> entry # doctest: +NORMALIZE_WHITESPACE +ELLIPSIS |
2215 | - IndexEntry(url='http://127.0.0.1:4444/impish-armhf+raspi.img.xz', |
2216 | - name='impish-armhf+raspi.img.xz', date=datetime.date(2021, 10, 25), |
2217 | - sha256='f4c1a97c6eef546ce6814a31abd371f3072bd9056377fcfee...', |
2218 | - size=370368) |
2219 | - """, |
2220 | - |
2221 | - 'ignore-bad-rows': """ |
2222 | - If the table contains rows with the wrong number of columns, or rows with |
2223 | - timestamps that cannot be converted, ignore those rows:: |
2224 | - |
2225 | - >>> content = _make_sums({ |
2226 | - ... 'hirsute-armhf+raspi.img.xz': b'foo', |
2227 | - ... 'hirsute-arm64+raspi.img.xz': b'bar', |
2228 | - ... }) |
2229 | - >>> content['index.html'] = ''' |
2230 | - ... <html><body><table> |
2231 | - ... <tr> |
2232 | - ... <th></th><th>Name</th> |
2233 | - ... <th>LastMod</th><th>Size</th><th>Desc</th> |
2234 | - ... </tr> |
2235 | - ... <tr><td>Silly row with one column</td></tr> |
2236 | - ... <tr> |
2237 | - ... <td>Icon</td> |
2238 | - ... <td>SHA256SUMS</td> |
2239 | - ... <td>2021-10-25 00:00</td><td>{len(content['SHA256SUMS'])}</td> |
2240 | - ... <td>sha256 checksums</td> |
2241 | - ... </tr> |
2242 | - ... <tr> |
2243 | - ... <td>Icon</td> |
2244 | - ... <td>hirsute-armhf+raspi.img.xz</td> |
2245 | - ... <td>2021-10-25 00:00</td><td>3</td><td>Hirsute release for Pi</td> |
2246 | - ... </tr> |
2247 | - ... <tr> |
2248 | - ... <td>Icon</td> |
2249 | - ... <td>hirsute-arm64+raspi.img.xz</td> |
2250 | - ... <td>2021-10-25 00:00</td><td>3</td><td>Hirsute release for Pi</td> |
2251 | - ... </tr> |
2252 | - ... <tr> |
2253 | - ... <td>Icon</td> |
2254 | - ... <td>hirsute-amd64.img.xz</td> |
2255 | - ... <td>Bad timestamp</td><td>3</td><td>Focal release for Pi</td> |
2256 | - ... </tr> |
2257 | - ... </table></body></html> |
2258 | - ... '''.encode('utf-8') |
2259 | - >>> with _test_server(content) as url: |
2260 | - ... image_url = f'{url}hirsute-armhf+raspi.img.xz' |
2261 | - ... entry = get_entry(image_url) |
2262 | - >>> entry # doctest: +NORMALIZE_WHITESPACE +ELLIPSIS |
2263 | - IndexEntry(url='http://127.0.0.1:4444/hirsute-armhf+raspi.img.xz', |
2264 | - name='hirsute-armhf+raspi.img.xz', date=datetime.date(2021, 10, 25), |
2265 | - sha256='2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f...', |
2266 | - size=3) |
2267 | - """, |
2268 | - |
2269 | - 'corrupted-size': """ |
2270 | - We should notice if the downloaded size doesn't match what's reported by |
2271 | - the server. Here, we grab the new source entry for an image, then switch |
2272 | - out the content of the image before calling update_entry so it appears the |
2273 | - image has been corrupted on the server:: |
2274 | - |
2275 | - >>> images = _make_sums({ |
2276 | - ... 'impish-armhf+raspi.img.gz': gzip.compress(b'foo'), |
2277 | - ... 'impish-arm64+raspi.img.gz': gzip.compress(b'bar'), |
2278 | - ... }) |
2279 | - >>> ts = dt.datetime(2021, 10, 25) |
2280 | - >>> with _test_server(_make_index(images, ts)) as url: |
2281 | - ... entry = {'url': f'{url}impish-armhf+raspi.img.gz'} |
2282 | - ... source = get_entry(entry['url']) |
2283 | - >>> images['impish-armhf+raspi.img.gz'] = gzip.compress(b'corrupted!') |
2284 | - >>> with _test_server(_make_index(images, ts)) as url: |
2285 | - ... update_entry(entry, source) |
2286 | - Traceback (most recent call last): |
2287 | - File "<stdin>", line 6, in <module> |
2288 | - update_entry(entry, source) |
2289 | - File "./refresh_os_list", line 451, in update_entry |
2290 | - raise ValueError('Corrupted download; size check failed') |
2291 | - ValueError: Corrupted download; size check failed |
2292 | - """, |
2293 | - |
2294 | - 'corrupted-checksum': """ |
2295 | - If the size of a download matches, but the SHA256 checksum doesn't, we |
2296 | - should again notice. In this case we use gzip compresslevel=0 (no |
2297 | - compression) with data which is different but the same size as the |
2298 | - original, and pull the same trick of grabbing a new source entry then |
2299 | - switching out the file on the server before calling update_entry:: |
2300 | - |
2301 | - >>> images = _make_sums({ |
2302 | - ... 'impish-armhf+raspi.img.gz': gzip.compress(b'foo', compresslevel=0), |
2303 | - ... 'impish-arm64+raspi.img.gz': gzip.compress(b'bar', compresslevel=0), |
2304 | - ... }) |
2305 | - >>> ts = dt.datetime(2021, 10, 25) |
2306 | - >>> with _test_server(_make_index(images, ts)) as url: |
2307 | - ... entry = {'url': f'{url}impish-armhf+raspi.img.gz'} |
2308 | - ... source = get_entry(entry['url']) |
2309 | - >>> images['impish-armhf+raspi.img.gz'] = gzip.compress(b'baz', compresslevel=0) |
2310 | - >>> with _test_server(_make_index(images, ts)) as url: |
2311 | - ... update_entry(entry, source) |
2312 | - Traceback (most recent call last): |
2313 | - File "<stdin>", line 6, in <module> |
2314 | - update_entry(entry, source) |
2315 | - File "./refresh_os_list", line 453, in update_entry |
2316 | - raise ValueError('Corrupted download; SHA256 check failed') |
2317 | - ValueError: Corrupted download; SHA256 check failed |
2318 | - """, |
2319 | - |
2320 | - 'use-existing-fields': """ |
2321 | - If entries being their own name, description, and/or website entries we |
2322 | - should simply keep them as is:: |
2323 | - |
2324 | - >>> images = { |
2325 | - ... 'impish-armhf+raspi.img.gz': gzip.compress(b'foo'), |
2326 | - ... 'impish-arm64+raspi.img.gz': gzip.compress(b'bar'), |
2327 | - ... } |
2328 | - >>> ts = dt.datetime(2021, 10, 25) |
2329 | - >>> with contextlib.redirect_stderr(io.StringIO()): |
2330 | - ... with _test_server(_make_index(_make_sums(images), ts)) as url: |
2331 | - ... input_file = io.StringIO(json.dumps({'os_list': [ |
2332 | - ... {'name': name, |
2333 | - ... 'website': 'https://ubuntu.com/', |
2334 | - ... 'url': f'{url}{name}', |
2335 | - ... 'description': 'The {name} image'} |
2336 | - ... for name in images |
2337 | - ... ]})) |
2338 | - ... output_file = io.StringIO() |
2339 | - ... update_template(input_file, output_file) |
2340 | - >>> output = json.loads(output_file.getvalue()) |
2341 | - >>> len(output['os_list']) |
2342 | - 2 |
2343 | - >>> sorted(output['os_list'][0].keys()) # doctest: +NORMALIZE_WHITESPACE |
2344 | - ['description', 'extract_sha256', 'extract_size', 'icon', |
2345 | - 'image_download_sha256', 'image_download_size', 'name', |
2346 | - 'release_date', 'url', 'website'] |
2347 | - >>> output['os_list'][0]['website'] |
2348 | - 'https://ubuntu.com/' |
2349 | - """, |
2350 | - |
2351 | - 'keep-up-to-date': """ |
2352 | - If an entry is already up to date (same size, same release date) don't |
2353 | - bother to update it. In fact, as long as the existing entry date is greater |
2354 | - than or equal to the date on the server we accept it (to deal with official |
2355 | - release dates later than the image generation date):: |
2356 | - |
2357 | - >>> images = { |
2358 | - ... 'impish-armhf+raspi.img.gz': gzip.compress(b'foo'), |
2359 | - ... 'impish-arm64+raspi.img.gz': gzip.compress(b'bar'), |
2360 | - ... } |
2361 | - >>> ts = dt.datetime(2021, 10, 25) |
2362 | - >>> with contextlib.redirect_stderr(io.StringIO()): |
2363 | - ... with _test_server(_make_index(_make_sums(images), ts)) as url: |
2364 | - ... input_file = io.StringIO(json.dumps({'os_list': [ |
2365 | - ... {'name': name, |
2366 | - ... 'image_download_sha256': |
2367 | - ... hashlib.sha256(images[name]).hexdigest(), |
2368 | - ... 'image_download_size': len(images[name]), |
2369 | - ... 'icon': 'https://ubuntu.com/ubuntu.svg', |
2370 | - ... 'extract_sha256': '0123abcd' * 8, |
2371 | - ... 'extract_size': 3, |
2372 | - ... 'website': 'https://ubuntu.com/', |
2373 | - ... 'url': f'{url}{name}', |
2374 | - ... 'release_date': '2021-10-27', |
2375 | - ... 'description': 'The {name} image'} |
2376 | - ... for name in images |
2377 | - ... ]})) |
2378 | - ... output_file = io.StringIO() |
2379 | - ... update_template(input_file, output_file) |
2380 | - >>> output = json.loads(output_file.getvalue()) |
2381 | - >>> output['os_list'][0]['extract_sha256'] = '0123abcd' * 8 |
2382 | - |
2383 | - Note that in this case the extracted SHA256 is *not* checked because we |
2384 | - don't even bother to download the image. We can tell no actual download |
2385 | - occurred above because the extract_sha256 definitely won't match! |
2386 | - """, |
2387 | - |
2388 | - 'main --help': """ |
2389 | - Running the main function with --help results in help output:: |
2390 | - |
2391 | - >>> import os |
2392 | - >>> os.environ['TEST'] = '0' # don't run the test-suite recursively! |
2393 | - >>> try: |
2394 | - ... main(['--help']) # doctest: +ELLIPSIS |
2395 | - ... except SystemExit: |
2396 | - ... pass |
2397 | - usage: refresh_os_list [-h] ... input_file [output_file] |
2398 | - ... |
2399 | - """, |
2400 | - |
2401 | - 'main works': """ |
2402 | - Running the main function actually does what it says on the tin:: |
2403 | - |
2404 | - >>> import tempfile |
2405 | - >>> from pathlib import Path |
2406 | - >>> tmp = tempfile.TemporaryDirectory() |
2407 | - >>> os.environ['TEST'] = '0' # don't run the test-suite recursively! |
2408 | - >>> images = { |
2409 | - ... 'impish-armhf+raspi.img.gz': gzip.compress(b'foo'), |
2410 | - ... 'impish-arm64+raspi.img.gz': gzip.compress(b'bar'), |
2411 | - ... } |
2412 | - >>> ts = dt.datetime(2021, 10, 25) |
2413 | - >>> with _test_server(_make_index(_make_sums(images), ts)) as url: |
2414 | - ... old_data = {'os_list': [ |
2415 | - ... {'url': f'{url}{name}'} |
2416 | - ... for name in images |
2417 | - ... ]} |
2418 | - ... old_filename = Path(tmp.name) / 'old.json' |
2419 | - ... old_size = old_filename.write_text(json.dumps(old_data)) |
2420 | - ... new_filename = Path(tmp.name) / 'new.json' |
2421 | - ... with contextlib.redirect_stderr(io.StringIO()): |
2422 | - ... main([str(old_filename), str(new_filename)]) |
2423 | - ... new_data = json.loads(new_filename.read_text()) |
2424 | - >>> list(new_data.keys()) |
2425 | - ['os_list'] |
2426 | - >>> len(new_data['os_list']) |
2427 | - 2 |
2428 | - >>> entry = new_data['os_list'][0] |
2429 | - >>> sorted(entry.keys()) # doctest: +NORMALIZE_WHITESPACE |
2430 | - ['description', 'extract_sha256', 'extract_size', 'icon', |
2431 | - 'image_download_sha256', 'image_download_size', 'name', |
2432 | - 'release_date', 'url', 'website'] |
2433 | - >>> entry['extract_size'] |
2434 | - 3 |
2435 | - >>> entry['extract_sha256'] |
2436 | - '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae' |
2437 | - >>> tmp.cleanup() |
2438 | - """, |
2439 | -} |
2440 | - |
2441 | - |
2442 | -if __name__ == '__main__': |
2443 | - main() |
2444 | |
2445 | === removed file 'url-checker.sh' |
2446 | --- url-checker.sh 2022-12-14 16:58:08 +0000 |
2447 | +++ url-checker.sh 1970-01-01 00:00:00 +0000 |
2448 | @@ -1,11 +0,0 @@ |
2449 | -#!/bin/bash |
2450 | - |
2451 | -FILE=$1 |
2452 | - |
2453 | -for url in $(grep -o "http://.*" $FILE) |
2454 | -do |
2455 | - RESULT=$(curl -o /dev/null --silent --head --write-out '%{http_code}\n' $url) |
2456 | - if [ $RESULT != '200' ]; then |
2457 | - echo $url $RESULT |
2458 | - fi |
2459 | -done |