Merge lp:~hyask/meta-release/ubuntu into lp:~ubuntu-core-dev/meta-release/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
Reviewer Review Type Date Requested Status
Ubuntu Core Development Team Pending
Review via email: mp+455311@code.launchpad.net
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('\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

Subscribers

People subscribed via source and target branches