Merge lp:~jibel/ubuntu-cdimage/support_for_multilayer into lp:ubuntu-cdimage

Proposed by Jean-Baptiste Lallement
Status: Superseded
Proposed branch: lp:~jibel/ubuntu-cdimage/support_for_multilayer
Merge into: lp:ubuntu-cdimage
Diff against target: 4981 lines (+655/-1610) (has conflicts)
25 files modified
bin/cron.daily (+1/-1)
bin/cron.dvd (+1/-16)
bin/daily-checks (+0/-14)
bin/find-live-filesystem (+1/-1)
bin/make-metalink (+1/-1)
bin/rebuild-requests (+1/-2)
etc/config (+0/-5)
etc/crontab (+1/-1)
etc/default-arches (+21/-89)
etc/livefs-launchpad (+4/-8)
etc/purge-days (+4/-3)
etc/qa-products (+1/-11)
lib/cdimage/build.py (+27/-93)
lib/cdimage/germinate.py (+59/-204)
lib/cdimage/livefs.py (+77/-194)
lib/cdimage/project.py (+0/-10)
lib/cdimage/tests/test_build.py (+93/-133)
lib/cdimage/tests/test_build_id.py (+2/-2)
lib/cdimage/tests/test_check_installable.py (+8/-8)
lib/cdimage/tests/test_config.py (+0/-6)
lib/cdimage/tests/test_germinate.py (+71/-201)
lib/cdimage/tests/test_livefs.py (+84/-198)
lib/cdimage/tests/test_mirror.py (+0/-4)
lib/cdimage/tests/test_tree.py (+145/-205)
lib/cdimage/tree.py (+53/-200)
Text conflict in etc/purge-days
To merge this branch: bzr merge lp:~jibel/ubuntu-cdimage/support_for_multilayer
Reviewer Review Type Date Requested Status
Steve Langasek Needs Fixing
Review via email: mp+359512@code.launchpad.net

This proposal has been superseded by a proposal from 2019-03-07.

Commit message

Adds support for multilayer images

* Made artefacts download generic: Don't hardcode artefact names and ensure they can be matched via regexp, on launchpad or local directory build.
* Fixed test suite
* Removed obsolete edubuntu server-squashfs test (LP: #1154601)
* Ensure we are still compatible with tests using a local server and with a local build.
* Add new ubuntu:canary subproject in automated builds

Extract from the discussion with cjwatson about these changes:
"""""
didrocks hey cjwatson! jibel and I have a question on ubuntu-cdimage: as with the new layered images we are building, we might not know in advance the squashfs, size, manifest files. We want to avoid to hardcode more filenames that already exists. In livefs.py, there are basically 2 code paths to download assets. One is using LP API (and so, can list all artefacts attached to a specific build) and the other
didrocks one is just for filesystem + http:// download. We thought to match against regexp, which works in the LP case and for filesystem (via os.listdir()). However, tests are failing as they are using http mock server. I wonder if in production, only the LP path is took. If so, can we just detect "http" for tests and either create a manifest that we download or rely on hardcoded filenames?
cjwatson As far as I know it's only ever the LP path in production, indeed
didrocks so, do you think special casing tests, like not using the regexp for them, is fine?
cjwatson Yeah, I think so
didrocks perfect! Thanks a lot cjwatson :)
cjwatson The http:// case may even be legacy - not sure
didrocks yeah, sounds like it, but we preferred asking you directly :)
cjwatson Obviously for good software engineering reasons keeping special cases for tests to a minimum is a good idea, but creating a sort of meta-manifest doesn't seem unreasonable, maybe with a fallback if it doesn't exist
didrocks yeah, the best would be ofc to rewrite the tests to mock LP
didrocks but I think that's out of our current scope :)
"""""

To post a comment you must log in.
Revision history for this message
Jean-Baptiste Lallement (jibel) wrote :

Rebased on trunk, could you please review? Thanks

1772. By Adam Conrad

Update bionic to 18.04.2

1773. By Adam Conrad

Fix line-lengths in bin/daily-checks with more pleasant wrapping.

1774. By Adam Conrad

Drop i386 from default arches for "*" and "dvd", as lubuntu was the last: https://lists.ubuntu.com/archives/ubuntu-release/2018-December/004664.html

1775. By Steve Langasek

Merge lp:~vorlon/ubuntu-cdimage/lp.1731122

1776. By Steve Langasek

Merge lp:~sil2100/ubuntu-cdimage/add_raspi3

1777. By Steve Langasek

Merge lp:~sil2100/ubuntu-cdimage/latest-unique_key

1778. By Łukasz Zemczak

Enable raspi3 builds in default-arches since bionic+

1779. By Łukasz Zemczak

Add the pi3-arm64 variant to core18 images we're building.

1780. By Adam Conrad

Use server-ship-live on bionic as well.

1781. By Steve Langasek

Make make-web-indices work again for source ISO publication

1782. By Adam Conrad

Fix headers on ubuntu-core HTML pages.

1783. By Łukasz Zemczak

Update xenial to 16.04.6

1784. By Łukasz Zemczak

xenial: PROPOSED=0

1785. By Łukasz Zemczak

Switch ubuntu-gnome's seeds from bzr to git.

1786. By Steve Langasek

Merge lp:~xubuntu-dev/ubuntu-cdimage/bionic_image_size

1787. By Steve Langasek

Update test to match

1788. By Steve Langasek

Prune information about obsolete releases.

The code has never dropped support for any historic Ubuntu releases. After
30+ releases, this makes the code quite cumbersome, and we know we will
never be re-releasing images for any releases that have reached end-of-life.
Instead of leaving hard-to-read code everywhere, trim all references to
releases that have reached end of life; if someone needs the old stuff, they
can always consult the VCS history for reference.

As of today, supported releases means:
 - precise (still ESM supported)
 - trusty
 - xenial
 - bionic
 - cosmic
 - disco

older releases, and interim non-LTS releases, are dropped.

1789. By Steve Langasek

More pruning; this drops support for the historical 'winfoss' item, last
used by edubuntu in hardy.

1790. By Steve Langasek

More pruning; this drops the 'tocd3' and 'tocd3.1' projects, which are purely
historical (2005).

1791. By Steve Langasek

More pruning; includes dropping the 'umenu' downloadable, only used in hardy
and intrepid

1792. By Steve Langasek

Further pruning. Includes dropping the lpia arch, and the ubuntu-mid product
which was lpia-only.

1793. By Steve Langasek

Further pruning. Drops ubuntu-headless project, which was possibly never
released but is certainly obsolete since ~10.04.

1794. By Steve Langasek

Further pruning. Drops ubuntu-netbook project, obsolete since 11.04.

1795. By Steve Langasek

Further pruning; now pruned up to oneiric

1796. By Steve Langasek

Further pruning; includes dropping ubuntu-desktop-next, which was only built
from vivid to wily

1797. By Steve Langasek

Purge vivid; includes dropping ubuntu-touch-custom which was vivid-only

1798. By Steve Langasek

Prune wily (no-op), zesty, artful

1799. By Steve Langasek

drop ubuntu-pd, which was only for vivid

1800. By Steve Langasek

drop kubuntu-plasma5, which was utopic/vivid only

1801. By Steve Langasek

Drop jeos support, obsolete since intrepid

1802. By Steve Langasek

Drop moblin-remix, which stopped being built some time before 12.04

Revision history for this message
Steve Langasek (vorlon) :
review: Needs Fixing
1803. By Jean-Baptiste Lallement

Merged support for multi-layer images

Revision history for this message
Didier Roche-Tolomelli (didrocks) wrote :

Thanks for the review!

We just rebased on your cleanup branch to avoid adapating tests and code that are going to be removed soon. All your comments should hopefully now be addressed :)

1804. By Jean-Baptiste Lallement

* Removed dead code
* Fixed PEP8 warning
* Updated tests to match the code removal and use the LP code path
* Added negative test to download from remote URL

1805. By Jean-Baptiste Lallement

Fixed linter errors

1806. By Jean-Baptiste Lallement

Factorized download_live_items_* tests and removed duplicated tests
Added test for filtering several artefacts by suffix
Added test for downloading several artefacts

1807. By Jean-Baptiste Lallement

Removed all the references to server-squashfs

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'bin/cron.daily'
--- bin/cron.daily 2015-10-26 11:06:11 +0000
+++ bin/cron.daily 2019-03-07 16:20:18 +0000
@@ -39,7 +39,7 @@
39 series = config["DIST"]39 series = config["DIST"]
40 if project == "edubuntu":40 if project == "edubuntu":
41 config["CDIMAGE_ADDON"] = "1"41 config["CDIMAGE_ADDON"] = "1"
42 elif (project == "ubuntu-server" and series >= "quantal" and42 elif (project == "ubuntu-server" and series >= "trusty" and
43 not config["CDIMAGE_NO_SQUASHFS_BASE"]):43 not config["CDIMAGE_NO_SQUASHFS_BASE"]):
44 config["CDIMAGE_SQUASHFS_BASE"] = "1"44 config["CDIMAGE_SQUASHFS_BASE"] = "1"
45 if not build_image_set(config, options):45 if not build_image_set(config, options):
4646
=== modified file 'bin/cron.dvd'
--- bin/cron.dvd 2015-10-26 11:06:11 +0000
+++ bin/cron.dvd 2019-03-07 16:20:18 +0000
@@ -35,22 +35,7 @@
35 options, _ = parser.parse_args()35 options, _ = parser.parse_args()
36 config = Config(IMAGE_TYPE="dvd")36 config = Config(IMAGE_TYPE="dvd")
37 project = config.project37 project = config.project
38 series = config["DIST"]38 if project not in ("edubuntu", "ubuntu", "ubuntustudio"):
39 if project == "edubuntu":
40 # Edubuntu lucid and onwards: DVD is live-only
41 if series <= "karmic":
42 config["CDIMAGE_INSTALL"] = "1"
43 elif project == "ubuntu":
44 # Ubuntu oneiric and onwards: DVD is live-only
45 if series <= "natty":
46 config["CDIMAGE_INSTALL"] = "1"
47 elif project == "ubuntustudio":
48 # Ubuntu Studio precise and onwards: DVD is live-only
49 # (Actually, it didn't exist before then anyway, but we check this
50 # just for documentation's sake.)
51 if series <= "oneiric":
52 config["CDIMAGE_INSTALL"] = "1"
53 else:
54 config["CDIMAGE_INSTALL"] = "1"39 config["CDIMAGE_INSTALL"] = "1"
55 config["CDIMAGE_LIVE"] = "1"40 config["CDIMAGE_LIVE"] = "1"
56 config["CDIMAGE_DVD"] = "1"41 config["CDIMAGE_DVD"] = "1"
5742
=== modified file 'bin/daily-checks'
--- bin/daily-checks 2018-12-18 19:27:24 +0000
+++ bin/daily-checks 2019-03-07 16:20:18 +0000
@@ -83,20 +83,10 @@
83def project_title(project):83def project_title(project):
84 if project == 'ubuntu-server':84 if project == 'ubuntu-server':
85 return 'Ubuntu Server'85 return 'Ubuntu Server'
86 elif project == 'jeos':
87 return 'Ubuntu JeOS'
88 elif project == 'ubuntustudio':86 elif project == 'ubuntustudio':
89 return 'Ubuntu Studio'87 return 'Ubuntu Studio'
90 elif project == 'ubuntu-netbook':
91 return 'Ubuntu Netbook'
92 elif project == 'ubuntu-headless':
93 return 'Ubuntu Headless'
94 elif project == 'kubuntu-active':88 elif project == 'kubuntu-active':
95 return 'Kubuntu Active'89 return 'Kubuntu Active'
96 elif project == 'kubuntu-plasma5':
97 return 'Kubuntu Plasma 5'
98 elif project == 'ubuntu-moblin-remix':
99 return 'Ubuntu Moblin Remix'
100 else:90 else:
101 return project.title()91 return project.title()
10292
@@ -237,17 +227,13 @@
237227
238 projects = (228 projects = (
239 'ubuntu',229 'ubuntu',
240 'ubuntu-desktop-next',
241 'ubuntu-server',230 'ubuntu-server',
242 'kubuntu',231 'kubuntu',
243 'edubuntu',232 'edubuntu',
244 'xubuntu',233 'xubuntu',
245 'ubuntustudio',234 'ubuntustudio',
246 'ubuntu-netbook',
247 'kubuntu-netbook',235 'kubuntu-netbook',
248 'ubuntu-moblin-remix',
249 'kubuntu-active',236 'kubuntu-active',
250 'kubuntu-plasma5',
251 'mythbuntu',237 'mythbuntu',
252 'lubuntu',238 'lubuntu',
253 'lubuntu-next',239 'lubuntu-next',
254240
=== modified file 'bin/find-live-filesystem'
--- bin/find-live-filesystem 2018-02-23 13:03:40 +0000
+++ bin/find-live-filesystem 2019-03-07 16:20:18 +0000
@@ -33,7 +33,7 @@
33 parser = OptionParser(33 parser = OptionParser(
34 "%prog ARCH cloop|squashfs|kernel|kernel-efi-signed|initrd|bootimg|"34 "%prog ARCH cloop|squashfs|kernel|kernel-efi-signed|initrd|bootimg|"
35 "manifest|manifest-desktop|manifest-remove|manifest-minimal-remove|"35 "manifest|manifest-desktop|manifest-remove|manifest-minimal-remove|"
36 "disk1.img.xz|img.xz|size|winfoss|wubi|umenu|usb-creator|"36 "disk1.img.xz|img.xz|size|wubi|usb-creator|"
37 "ltsp-squashfs|ext2|ext3|ext4|rootfs.tar.gz|custom.tar.gz|"37 "ltsp-squashfs|ext2|ext3|ext4|rootfs.tar.gz|custom.tar.gz|"
38 "device.tar.gz|tar.xz|iso")38 "device.tar.gz|tar.xz|iso")
39 _, args = parser.parse_args()39 _, args = parser.parse_args()
4040
=== modified file 'bin/make-metalink'
--- bin/make-metalink 2015-10-26 11:06:11 +0000
+++ bin/make-metalink 2019-03-07 16:20:18 +0000
@@ -32,7 +32,7 @@
32 parser = OptionParser(32 parser = OptionParser(
33 "%prog DIRECTORY VERSION STATUS\n"33 "%prog DIRECTORY VERSION STATUS\n"
34 " e.g.: %prog " + config.root +34 " e.g.: %prog " + config.root +
35 "/www/full/daily-live/20130327 raring daily")35 "/www/full/daily-live/20130327 bionic daily")
36 _, args = parser.parse_args()36 _, args = parser.parse_args()
37 if len(args) < 1:37 if len(args) < 1:
38 parser.error("need directory")38 parser.error("need directory")
3939
=== modified file 'bin/rebuild-requests'
--- bin/rebuild-requests 2018-10-30 13:23:58 +0000
+++ bin/rebuild-requests 2019-03-07 16:20:18 +0000
@@ -134,8 +134,7 @@
134 env['SUBPROJECT'] = sub_project134 env['SUBPROJECT'] = sub_project
135135
136 if (project == "ubuntu-touch" and136 if (project == "ubuntu-touch" and
137 args[0] in ("vivid", "wily", "xenial", "yakkety", "zesty",137 args[0] in ("xenial", "bionic", "cosmic", "disco")):
138 "artful", "bionic", "cosmic", "disco")):
139 env['EXTRA_PPAS'] = \138 env['EXTRA_PPAS'] = \
140 "ci-train-ppa-service/stable-phone-overlay:1001"139 "ci-train-ppa-service/stable-phone-overlay:1001"
141 env['PROPOSED'] = "0"140 env['PROPOSED'] = "0"
142141
=== modified file 'etc/config'
--- etc/config 2019-03-01 15:42:09 +0000
+++ etc/config 2019-03-07 16:20:18 +0000
@@ -15,11 +15,6 @@
15PROJECT="${PROJECT:-ubuntu}"15PROJECT="${PROJECT:-ubuntu}"
16CAPPROJECT="${CAPPROJECT:-Ubuntu}"16CAPPROJECT="${CAPPROJECT:-Ubuntu}"
17IMAGE_FORMAT=${IMAGE_FORMAT:-iso}17IMAGE_FORMAT=${IMAGE_FORMAT:-iso}
18case $PROJECT in
19 ubuntu-mid)
20 IMAGE_FORMAT=${IMAGE_FORMAT:-vfat}
21 ;;
22esac
23export IMAGE_FORMAT18export IMAGE_FORMAT
24DIST="${DIST:-disco}"19DIST="${DIST:-disco}"
2520
2621
=== modified file 'etc/crontab'
--- etc/crontab 2018-10-30 13:23:58 +0000
+++ etc/crontab 2019-03-07 16:20:18 +0000
@@ -21,7 +21,7 @@
2120 15 * * * DIST=bionic for-project ubuntu-budgie cron.daily-live --live2120 15 * * * DIST=bionic for-project ubuntu-budgie cron.daily-live --live
2226 2 * * * DIST=bionic for-project ubuntu-mate cron.daily-live --live2226 2 * * * DIST=bionic for-project ubuntu-mate cron.daily-live --live
23# regular disco daily builds23# regular disco daily builds
2431 7 * * * for-project ubuntu cron.daily-live --live2431 7 * * * for-project ubuntu cron.daily-live --live; SUBPROJECT=canary for-project ubuntu cron.daily-live --live
2514 5 * * * for-project kubuntu cron.daily-live --live2514 5 * * * for-project kubuntu cron.daily-live --live
2650 1 * * * for-project xubuntu cron.daily-live --live2650 1 * * * for-project xubuntu cron.daily-live --live
2729 6 * * * for-project ubuntu-server cron.daily --live; for-project ubuntu-server cron.daily-preinstalled --live; SUBPROJECT=live for-project ubuntu-server cron.daily-live --live2729 6 * * * for-project ubuntu-server cron.daily --live; for-project ubuntu-server cron.daily-preinstalled --live; SUBPROJECT=live for-project ubuntu-server cron.daily-live --live
2828
=== modified file 'etc/default-arches'
--- etc/default-arches 2019-02-07 15:42:49 +0000
+++ etc/default-arches 2019-03-07 16:20:18 +0000
@@ -3,69 +3,35 @@
33
4* source * i3864* source * i386
55
6ubuntu-touch daily-preinstalled saucy armhf6ubuntu-touch daily-preinstalled trusty armhf i386
7ubuntu-touch daily-preinstalled trusty-wily armhf i386
8ubuntu-touch daily-preinstalled xenial- armhf i386 arm647ubuntu-touch daily-preinstalled xenial- armhf i386 arm64
9ubuntu-touch daily-preinstalled ubuntu-rtm/* armhf i3868
109edubuntu dvd trusty- amd64 i386
11ubuntu-touch-custom daily-preinstalled trusty- armhf i38610edubuntu-dvd dvd trusty- amd64 i386
1211
13ubuntu daily-preinstalled oneiric armel+ac100 armel+mx5 armel+omap armel+omap4
14ubuntu daily-preinstalled raring armhf+nexus7
15lubuntu daily-preinstalled quantal-saucy armhf+ac100
16
17* daily-preinstalled maverick-oneiric armel+omap armel+omap4
18ubuntu-server daily-preinstalled quantal armhf+omap4
19
20edubuntu dvd quantal- amd64 i386
21edubuntu-dvd dvd quantal- amd64 i386
22
23ubuntu-base daily oneiric amd64 armel i386
24ubuntu-base daily precise amd64 armhf i38612ubuntu-base daily precise amd64 armhf i386
25ubuntu-base daily quantal-raring amd64 armhf i386 powerpc13ubuntu-base daily trusty amd64 arm64 armhf i386 powerpc ppc64el
26ubuntu-base daily saucy amd64 arm64 armhf i386 powerpc14ubuntu-base daily xenial amd64 arm64 armhf i386 powerpc ppc64el s390x
27ubuntu-base daily trusty-wily amd64 arm64 armhf i386 powerpc ppc64el15ubuntu-base daily bionic- amd64 arm64 armhf i386 ppc64el s390x
28ubuntu-base daily xenial-yakkety amd64 arm64 armhf i386 powerpc ppc64el s390x
29ubuntu-base daily zesty- amd64 arm64 armhf i386 ppc64el s390x
30ubuntu-core-system-image daily-preinstalled utopic amd64 armhf i386
31ubuntu-core-system-image daily-preinstalled vivid-wily amd64 arm64 armhf i386
32ubuntu-core-system-image daily-preinstalled xenial- amd64 arm64 armhf i386 ppc64el s390x16ubuntu-core-system-image daily-preinstalled xenial- amd64 arm64 armhf i386 ppc64el s390x
33ubuntu-core daily-live xenial-cosmic amd64 arm64+snapdragon armhf+cm3 armhf+raspi2 armhf+raspi3 i38617ubuntu-core daily-live xenial-cosmic amd64 arm64+snapdragon armhf+cm3 armhf+raspi2 armhf+raspi3 i386
34ubuntu-core daily-live disco- amd64 arm64+snapdragon armhf+cm3 armhf+raspi2 armhf+raspi3 arm64+raspi3 i38618ubuntu-core daily-live disco- amd64 arm64+snapdragon armhf+cm3 armhf+raspi2 armhf+raspi3 arm64+raspi3 i386
3519
36jeos * * i386
37
38kubuntu daily-live feisty-intrepid amd64 i386 ia64 powerpc
39kubuntu daily-live jaunty amd64 armel i386 ia64 powerpc
40kubuntu daily-live karmic amd64 armel+dove armel+imx51 i386 ia64 powerpc
41kubuntu daily-live lucid amd64 i386 ia64 powerpc
42kubuntu daily-live precise amd64 i38620kubuntu daily-live precise amd64 i386
43kubuntu daily-live trusty amd64 amd64+mac i38621kubuntu daily-live trusty amd64 amd64+mac i386
44kubuntu daily-live utopic-bionic amd64 i38622kubuntu daily-live xenial-bionic amd64 i386
45kubuntu daily-live cosmic- amd6423kubuntu daily-live cosmic- amd64
4624
47kubuntu-active * * i38625kubuntu-active * * i386
4826
49kubuntu-plasma5 daily-live utopic- amd64 i386
50
51mythbuntu * warty-edgy amd64 i386 powerpc
52mythbuntu * * amd64 i38627mythbuntu * * amd64 i386
5328
54ubuntu daily karmic amd64 armel+dove armel+imx51 i386 ia64 lpia powerpc powerpc+ps3 sparc
55ubuntu daily precise amd64 amd64+mac i38629ubuntu daily precise amd64 amd64+mac i386
5630
57ubuntu daily-live feisty-intrepid amd64 i386 ia64 powerpc powerpc+ps3
58ubuntu daily-live jaunty amd64 armel i386 ia64 powerpc powerpc+ps3
59ubuntu daily-live karmic amd64 armel+dove armel+imx51 i386 ia64 powerpc powerpc+ps3
60ubuntu daily-live lucid amd64 i386 ia64 powerpc powerpc+ps3
61ubuntu daily-live precise amd64 amd64+mac i38631ubuntu daily-live precise amd64 amd64+mac i386
62ubuntu daily-live quantal amd64 amd64+mac armhf+omap4 i386 powerpc32ubuntu daily-live trusty amd64 amd64+mac i386
63ubuntu daily-live raring-trusty amd64 amd64+mac i38633ubuntu daily-live xenial amd64 i386
64ubuntu daily-live utopic-zesty amd64 i38634ubuntu daily-live bionic- amd64
65ubuntu daily-live artful- amd64
66
67ubuntu-desktop-next * -vivid amd64 i386 armhf
68ubuntu-desktop-next-system-image daily-preinstalled wily- amd64 i386 armhf
6935
70ubuntu-gnome * * amd64 i38636ubuntu-gnome * * amd64 i386
7137
@@ -75,65 +41,31 @@
75ubuntu-mate * -bionic amd64 i38641ubuntu-mate * -bionic amd64 i386
76ubuntu-mate * cosmic- amd6442ubuntu-mate * cosmic- amd64
7743
78ubuntu-mid * * lpia44ubuntu-server daily-preinstalled xenial armhf+raspi2
79
80ubuntu-moblin-remix * * i386
81
82ubuntu-netbook daily-live lucid armel+imx51 armel+dove armel+omap i386
83ubuntu-netbook daily-live maverick armel+dove i386
84
85ubuntu-server daily-preinstalled xenial-artful armhf+raspi2
86ubuntu-server daily-preinstalled bionic- armhf+raspi2 armhf+raspi3 arm64+raspi345ubuntu-server daily-preinstalled bionic- armhf+raspi2 armhf+raspi3 arm64+raspi3
87ubuntu-server * intrepid amd64 hppa i386 ia64 powerpc powerpc+ps3 sparc
88ubuntu-server * jaunty amd64 armel hppa i386 ia64 powerpc powerpc+ps3 sparc
89ubuntu-server * karmic-lucid amd64 armel+dove armel+imx51 armel+omap i386 ia64 powerpc powerpc+ps3 sparc
90ubuntu-server * maverick amd64 amd64+mac armel+dove armel+omap armel+omap4 i386 powerpc powerpc+ps3
91ubuntu-server * natty-oneiric amd64 amd64+mac armel+dove armel+omap armel+omap4 i386 powerpc
92ubuntu-server * precise amd64 i38646ubuntu-server * precise amd64 i386
93ubuntu-server * quantal-saucy amd64 amd64+mac armhf+omap armhf+omap4 i386 powerpc
94ubuntu-server * trusty amd64 amd64+mac i386 powerpc ppc64el47ubuntu-server * trusty amd64 amd64+mac i386 powerpc ppc64el
95ubuntu-server * utopic-wily amd64 i386 powerpc ppc64el48ubuntu-server * xenial amd64 arm64 i386 powerpc ppc64el s390x
96ubuntu-server * xenial-yakkety amd64 arm64 i386 powerpc ppc64el s390x
97ubuntu-server * zesty-artful amd64 arm64 i386 ppc64el s390x
98ubuntu-server * bionic- amd64 arm64 ppc64el s390x49ubuntu-server * bionic- amd64 arm64 ppc64el s390x
9950
100ubuntu-server-live * artful-cosmic amd64 arm64 ppc64el51ubuntu-server-live * bionic-cosmic amd64 arm64 ppc64el
101ubuntu-server-live * disco- amd64 arm64 ppc64el s390x52ubuntu-server-live * disco- amd64 arm64 ppc64el s390x
10253
103ubuntu-wubi * * amd64 i38654ubuntu-wubi * * amd64 i386
10455
105ubuntu-zh_CN * maverick-natty i38656ubuntu-zh_CN * precise- amd64 i386
106ubuntu-zh_CN * oneiric- amd64 i386
107ubuntukylin * -bionic amd64 i38657ubuntukylin * -bionic amd64 i386
108ubuntukylin * cosmic- amd6458ubuntukylin * cosmic- amd64
10959
110ubuntustudio * warty-edgy amd64 i386 powerpc60ubuntustudio * precise-bionic amd64 i386
111ubuntustudio * feisty-bionic amd64 i386
112ubuntustudio * cosmic- amd6461ubuntustudio * cosmic- amd64
11362
114xubuntu daily-live jaunty armel powerpc powerpc+ps363xubuntu * precise-cosmic amd64 i386
115xubuntu daily-live karmic armel+dove armel+imx51 powerpc powerpc+ps3
116
117xubuntu * feisty-maverick amd64 i386 powerpc powerpc+ps3
118xubuntu * natty-cosmic amd64 i386
119xubuntu * disco- amd6464xubuntu * disco- amd64
12065
121* daily-live gutsy-intrepid amd64 i386 ia64 powerpc powerpc+ps3 sparc66* dvd precise-cosmic amd64 i386
122* daily-live jaunty amd64 armel i386 ia64 powerpc powerpc+ps3 sparc
123* daily-live karmic amd64 i386 ia64 powerpc powerpc+ps3 sparc
124
125* dvd warty-edgy amd64 i386 powerpc
126* dvd feisty-cosmic amd64 i386
127* dvd * amd6467* dvd * amd64
12868
129* * warty-dapper amd64 hppa i386 ia64 powerpc sparc69* * precise-trusty amd64 amd64+mac i386 powerpc
130* * edgy amd64 i386 ia64 powerpc sparc70* * xenial-cosmic amd64 i386
131* * feisty amd64 i386 ia64 powerpc powerpc+ps3 sparc
132* * gutsy-hardy amd64 hppa i386 ia64 powerpc powerpc+ps3 sparc
133* * intrepid-jaunty amd64 hppa i386 ia64 lpia powerpc powerpc+ps3 sparc
134* * karmic amd64 i386 ia64 lpia powerpc powerpc+ps3 sparc
135* * lucid amd64 i386 ia64 powerpc powerpc+ps3 sparc
136* * maverick amd64 amd64+mac i386 powerpc powerpc+ps3
137* * natty-trusty amd64 amd64+mac i386 powerpc
138* * utopic-cosmic amd64 i386
139* * * amd6471* * * amd64
14072
=== modified file 'etc/livefs-launchpad'
--- etc/livefs-launchpad 2017-05-16 16:10:49 +0000
+++ etc/livefs-launchpad 2019-03-07 16:20:18 +0000
@@ -3,15 +3,13 @@
3# Like etc/default-arches, "PROJECT" is in fact PROJECT[-SUBPROJECT][-LOCALE].3# Like etc/default-arches, "PROJECT" is in fact PROJECT[-SUBPROJECT][-LOCALE].
44
5ubuntu daily-live * * ubuntu-cdimage/ubuntu5ubuntu daily-live * * ubuntu-cdimage/ubuntu
6ubuntu-desktop-next daily-live -vivid * ubuntu-cdimage/ubuntu-desktop-next6ubuntu-canary daily-live * * ubuntu-cdimage/ubuntu-canary
7ubuntu-desktop-next-system-image daily-preinstalled wily- * ubuntu-cdimage/ubuntu-desktop-next
8kubuntu daily-live * * ubuntu-cdimage/kubuntu7kubuntu daily-live * * ubuntu-cdimage/kubuntu
9kubuntu-plasma5 daily-live * * ubuntu-cdimage/kubuntu-plasma5
10edubuntu dvd * * ubuntu-cdimage/edubuntu8edubuntu dvd * * ubuntu-cdimage/edubuntu
11xubuntu daily-live * * ubuntu-cdimage/xubuntu9xubuntu daily-live * * ubuntu-cdimage/xubuntu
12ubuntu-server daily quantal- * ubuntu-cdimage/ubuntu-server10ubuntu-server daily trusty- * ubuntu-cdimage/ubuntu-server
13ubuntu-server daily-preinstalled xenial- * ubuntu-cdimage/cpc11ubuntu-server daily-preinstalled xenial- * ubuntu-cdimage/cpc
14ubuntu-server-live daily-live zesty- * ubuntu-cdimage/ubuntu-server-live12ubuntu-server-live daily-live bionic- * ubuntu-cdimage/ubuntu-server-live
15ubuntustudio dvd * * ubuntu-cdimage/ubuntustudio13ubuntustudio dvd * * ubuntu-cdimage/ubuntustudio
16mythbuntu daily-live * * ubuntu-cdimage/mythbuntu14mythbuntu daily-live * * ubuntu-cdimage/mythbuntu
17lubuntu-next daily-live * * ubuntu-cdimage/lubuntu-next15lubuntu-next daily-live * * ubuntu-cdimage/lubuntu-next
@@ -27,8 +25,6 @@
27ubuntu-budgie daily-live * * ubuntu-cdimage/ubuntu-budgie25ubuntu-budgie daily-live * * ubuntu-cdimage/ubuntu-budgie
28ubuntu-touch daily-preinstalled ubuntu-rtm/* * ubuntu-cdimage/ubuntu-touch26ubuntu-touch daily-preinstalled ubuntu-rtm/* * ubuntu-cdimage/ubuntu-touch
29ubuntu-touch daily-preinstalled trusty- * ubuntu-cdimage/ubuntu-touch27ubuntu-touch daily-preinstalled trusty- * ubuntu-cdimage/ubuntu-touch
30ubuntu-touch-custom daily-preinstalled vivid- * ubuntu-cdimage/ubuntu-touch-custom
31ubuntu-pd daily-preinstalled * * ubuntu-cdimage/ubuntu-pd
32ubuntu dvd -precise * ubuntu-cdimage/ubuntu-dvd28ubuntu dvd -precise * ubuntu-cdimage/ubuntu-dvd
33ubuntu-wubi wubi * * ubuntu-cdimage/ubuntu-wubi29ubuntu-wubi wubi * * ubuntu-cdimage/ubuntu-wubi
34ubuntu-zh_CN daily-live -raring * ubuntu-cdimage/ubuntu-zh-cn30ubuntu-zh_CN daily-live -precise * ubuntu-cdimage/ubuntu-zh-cn
3531
=== modified file 'etc/purge-days'
--- etc/purge-days 2018-10-26 11:55:31 +0000
+++ etc/purge-days 2019-03-07 16:20:18 +0000
@@ -3,14 +3,15 @@
3daily-preinstalled 13daily-preinstalled 1
4# Purge images older than 2 days => keep the most recent build.4# Purge images older than 2 days => keep the most recent build.
5dvd 25dvd 2
6<<<<<<< TREE
6# Only purge TheOpenCDv3 images manually.7# Only purge TheOpenCDv3 images manually.
7tocd3/daily-live 08tocd3/daily-live 0
8# Ubuntu Core images are not purged per age9# Ubuntu Core images are not purged per age
10=======
11# Only purge ubuntu-core images manually.
12>>>>>>> MERGE-SOURCE
9ubuntu-core 013ubuntu-core 0
10ubuntu-mid 3
11ubuntu-netbook 3
12ubuntu-touch 714ubuntu-touch 7
13ubuntu-touch-custom 7
14source 115source 1
15wubi 116wubi 1
16ubuntu-zh_CN 317ubuntu-zh_CN 3
1718
=== modified file 'etc/qa-products'
--- etc/qa-products 2018-11-28 15:52:36 +0000
+++ etc/qa-products 2019-03-07 16:20:18 +0000
@@ -11,8 +11,6 @@
11Kubuntu Desktop armhf+omap4 kubuntu daily-live desktop armhf+omap4 iso11Kubuntu Desktop armhf+omap4 kubuntu daily-live desktop armhf+omap4 iso
12Kubuntu Desktop i386 kubuntu daily-live desktop i386 iso12Kubuntu Desktop i386 kubuntu daily-live desktop i386 iso
13Kubuntu Desktop powerpc kubuntu daily-live desktop powerpc iso13Kubuntu Desktop powerpc kubuntu daily-live desktop powerpc iso
14Kubuntu Plasma 5 Desktop amd64 kubuntu-plasma5 daily-live desktop amd64 iso
15Kubuntu Plasma 5 Desktop i386 kubuntu-plasma5 daily-live desktop i386 iso
1614
17# Lubuntu15# Lubuntu
18Lubuntu Alternate amd64 lubuntu daily alternate amd64 iso16Lubuntu Alternate amd64 lubuntu daily alternate amd64 iso
@@ -47,17 +45,13 @@
4745
48# Ubuntu Desktop 46# Ubuntu Desktop
49Ubuntu Desktop amd64 ubuntu daily-live desktop amd64 iso47Ubuntu Desktop amd64 ubuntu daily-live desktop amd64 iso
48Ubuntu Desktop (Canary) amd64 ubuntu daily-live/canary desktop amd64 iso
50Ubuntu Desktop amd64+mac ubuntu daily-live desktop amd64+mac iso49Ubuntu Desktop amd64+mac ubuntu daily-live desktop amd64+mac iso
51Ubuntu Desktop armhf+omap4 ubuntu daily-live desktop armhf+omap4 iso50Ubuntu Desktop armhf+omap4 ubuntu daily-live desktop armhf+omap4 iso
52Ubuntu Desktop i386 ubuntu daily-live desktop i386 iso51Ubuntu Desktop i386 ubuntu daily-live desktop i386 iso
53Ubuntu Desktop powerpc ubuntu daily-live desktop powerpc iso52Ubuntu Desktop powerpc ubuntu daily-live desktop powerpc iso
54Ubuntu Desktop Preinstalled armhf+nexus7 ubuntu daily-preinstalled preinstalled-desktop armhf+nexus7 iso53Ubuntu Desktop Preinstalled armhf+nexus7 ubuntu daily-preinstalled preinstalled-desktop armhf+nexus7 iso
5554
56# Ubuntu Desktop Next
57Ubuntu Desktop (Unity 8) armhf ubuntu-desktop-next/system-image daily-preinstalled preinstalled-desktop-next armhf iso
58Ubuntu Desktop (Unity 8) amd64 ubuntu-desktop-next/system-image daily-preinstalled preinstalled-desktop-next amd64 iso
59Ubuntu Desktop (Unity 8) i386 ubuntu-desktop-next/system-image daily-preinstalled preinstalled-desktop-next i386 iso
60
61# Ubuntu GNOME55# Ubuntu GNOME
62Ubuntu GNOME Desktop amd64 ubuntu-gnome daily-live desktop amd64 iso56Ubuntu GNOME Desktop amd64 ubuntu-gnome daily-live desktop amd64 iso
63Ubuntu GNOME Desktop i386 ubuntu-gnome daily-live desktop i386 iso57Ubuntu GNOME Desktop i386 ubuntu-gnome daily-live desktop i386 iso
@@ -97,10 +91,6 @@
97Ubuntu Touch armhf ubuntu-touch daily-preinstalled preinstalled-touch armhf iso91Ubuntu Touch armhf ubuntu-touch daily-preinstalled preinstalled-touch armhf iso
98Ubuntu Touch i386 ubuntu-touch daily-preinstalled preinstalled-touch i386 iso92Ubuntu Touch i386 ubuntu-touch daily-preinstalled preinstalled-touch i386 iso
9993
100# Ubuntu Touch Custom
101Ubuntu Touch Custom armhf ubuntu-touch-custom daily-preinstalled preinstalled-touch armhf iso
102Ubuntu Touch Custom i386 ubuntu-touch-custom daily-preinstalled preinstalled-touch i386 iso
103
104# Ubuntu Kylin94# Ubuntu Kylin
105Ubuntu Kylin Desktop amd64 ubuntukylin daily-live desktop amd64 iso95Ubuntu Kylin Desktop amd64 ubuntukylin daily-live desktop amd64 iso
106Ubuntu Kylin Desktop i386 ubuntukylin daily-live desktop i386 iso96Ubuntu Kylin Desktop i386 ubuntukylin daily-live desktop i386 iso
10797
=== modified file 'lib/cdimage/build.py'
--- lib/cdimage/build.py 2018-01-09 01:47:28 +0000
+++ lib/cdimage/build.py 2019-03-07 16:20:18 +0000
@@ -80,17 +80,14 @@
80 if project == "gobuntu":80 if project == "gobuntu":
81 config["CDIMAGE_ONLYFREE"] = "1"81 config["CDIMAGE_ONLYFREE"] = "1"
82 elif project == "edubuntu":82 elif project == "edubuntu":
83 if series >= "karmic":83 config["CDIMAGE_UNSUPPORTED"] = "1"
84 config["CDIMAGE_UNSUPPORTED"] = "1"
85 elif project == "xubuntu":84 elif project == "xubuntu":
86 if series >= "hardy":85 config["CDIMAGE_UNSUPPORTED"] = "1"
87 config["CDIMAGE_UNSUPPORTED"] = "1"
88 elif project == "kubuntu":86 elif project == "kubuntu":
89 if series >= "quantal":87 if series >= "trusty":
90 config["CDIMAGE_UNSUPPORTED"] = "1"88 config["CDIMAGE_UNSUPPORTED"] = "1"
91 elif project in (89 elif project in (
92 "kubuntu-active",90 "kubuntu-active",
93 "kubuntu-plasma5",
94 "ubuntustudio",91 "ubuntustudio",
95 "mythbuntu",92 "mythbuntu",
96 "lubuntu",93 "lubuntu",
@@ -98,8 +95,6 @@
98 "ubuntu-gnome",95 "ubuntu-gnome",
99 "ubuntu-budgie",96 "ubuntu-budgie",
100 "ubuntu-mate",97 "ubuntu-mate",
101 "ubuntu-moblin-remix",
102 "ubuntu-mid",
103 ):98 ):
104 config["CDIMAGE_UNSUPPORTED"] = "1"99 config["CDIMAGE_UNSUPPORTED"] = "1"
105100
@@ -363,66 +358,23 @@
363 "UBUNTU_DEFAULTS_LOCALE='%s' not currently supported!" % locale)358 "UBUNTU_DEFAULTS_LOCALE='%s' not currently supported!" % locale)
364359
365 series = config["DIST"]360 series = config["DIST"]
366 if series < "oneiric":361 log_marker("Downloading live filesystem images")
367 # Original hack: repack an existing image.362 download_live_filesystems(config)
368 iso = config["ISO"]363 scratch = live_output_directory(config)
369 if not iso:364 for entry in os.listdir(scratch):
370 raise Exception(365 if "." in entry:
371 "Pass ISO=<path to Ubuntu image> in the environment.")366 os.rename(
372367 os.path.join(scratch, entry),
373 scratch = os.path.join(368 os.path.join(scratch, "%s-desktop-%s" % (series, entry)))
374 config.root, "scratch", "ubuntu-chinese-edition", series.name)369 pi_makelist = os.path.join(
375 bsdtar_tree = os.path.join(scratch, "bsdtar-tree")370 config.root, "debian-cd", "tools", "pi-makelist")
376371 for entry in os.listdir(scratch):
377 log_marker("Unpacking")372 if entry.endswith(".iso"):
378 if os.path.isdir(bsdtar_tree):373 entry_path = os.path.join(scratch, entry)
379 subprocess.check_call(["chmod", "-R", "+w", bsdtar_tree])374 list_path = "%s.list" % entry_path.rsplit(".", 1)[0]
380 osextras.mkemptydir(bsdtar_tree)375 with open(list_path, "w") as list_file:
381 subprocess.check_call(["bsdtar", "-xf", iso, "-C", bsdtar_tree])376 subprocess.check_call(
382 subprocess.check_call(["chmod", "-R", "+w", bsdtar_tree])377 [pi_makelist, entry_path], stdout=list_file)
383
384 log_marker("Transforming (robots in disguise)")
385 with open(os.path.join(bsdtar_tree, "isolinux", "lang"), "w") as lang:
386 print(locale, file=lang)
387 subprocess.call([
388 "mkisofs",
389 "-r", "-V", "Ubuntu Chinese %s i386" % series.version,
390 "-o", os.path.join(scratch, os.path.basename(iso)),
391 "-cache-inodes", "-J", "-l",
392 "-b", "isolinux/isolinux.bin", "-c", "isolinux/boot.cat",
393 "-no-emul-boot", "-boot-load-size", "4", "-boot-info-table",
394 bsdtar_tree,
395 ])
396
397 iso_prefix = iso.rsplit(".", 1)[0]
398 scratch_prefix = os.path.join(
399 scratch, os.path.basename(iso).rsplit(".", 1)[0])
400
401 for ext in "list", "manifest":
402 if os.path.exists("%s.%s" % (iso_prefix, ext)):
403 shutil.copy2(
404 "%s.%s" % (iso_prefix, ext),
405 "%s.%s" % (scratch_prefix, ext))
406 else:
407 osextras.unlink_force("%s.%s" % (scratch_prefix, ext))
408 else:
409 log_marker("Downloading live filesystem images")
410 download_live_filesystems(config)
411 scratch = live_output_directory(config)
412 for entry in os.listdir(scratch):
413 if "." in entry:
414 os.rename(
415 os.path.join(scratch, entry),
416 os.path.join(scratch, "%s-desktop-%s" % (series, entry)))
417 pi_makelist = os.path.join(
418 config.root, "debian-cd", "tools", "pi-makelist")
419 for entry in os.listdir(scratch):
420 if entry.endswith(".iso"):
421 entry_path = os.path.join(scratch, entry)
422 list_path = "%s.list" % entry_path.rsplit(".", 1)[0]
423 with open(list_path, "w") as list_file:
424 subprocess.check_call(
425 [pi_makelist, entry_path], stdout=list_file)
426378
427379
428def add_android_support(config, arch, output_dir):380def add_android_support(config, arch, output_dir):
@@ -506,9 +458,8 @@
506 "%s.model-assertion" % live_prefix,458 "%s.model-assertion" % live_prefix,
507 "%s.model-assertion" % output_prefix)459 "%s.model-assertion" % output_prefix)
508460
509 if (config.project in ("ubuntu-base", "ubuntu-touch",461 if (config.project in ("ubuntu-base", "ubuntu-touch") or
510 "ubuntu-touch-custom") or462 (config.project == "ubuntu-core" and
511 (config.project in ("ubuntu-desktop-next", "ubuntu-core") and
512 config.subproject == "system-image")):463 config.subproject == "system-image")):
513 log_marker("Copying images to debian-cd output directory")464 log_marker("Copying images to debian-cd output directory")
514 scratch_dir = os.path.join(465 scratch_dir = os.path.join(
@@ -528,26 +479,16 @@
528 elif config.project == "ubuntu-base":479 elif config.project == "ubuntu-base":
529 output_prefix = os.path.join(480 output_prefix = os.path.join(
530 output_dir, "%s-base-%s" % (config.series, arch))481 output_dir, "%s-base-%s" % (config.series, arch))
531 elif config.project in ("ubuntu-touch", "ubuntu-touch-custom"):482 elif config.project == "ubuntu-touch":
532 output_prefix = os.path.join(483 output_prefix = os.path.join(
533 output_dir,484 output_dir,
534 "%s-preinstalled-touch-%s" % (config.series, arch))485 "%s-preinstalled-touch-%s" % (config.series, arch))
535 elif config.project == "ubuntu-desktop-next":
536 if config.image_type == "daily-preinstalled":
537 output_prefix = os.path.join(
538 output_dir,
539 "%s-preinstalled-desktop-next-%s" %
540 (config.series, arch))
541 else:
542 output_prefix = os.path.join(
543 output_dir, "%s-desktop-next-%s" %
544 (config.series, arch))
545 shutil.copy2(rootfs, "%s.raw" % output_prefix)486 shutil.copy2(rootfs, "%s.raw" % output_prefix)
546 with open("%s.type" % output_prefix, "w") as f:487 with open("%s.type" % output_prefix, "w") as f:
547 print("tar archive", file=f)488 print("tar archive", file=f)
548 shutil.copy2(489 shutil.copy2(
549 "%s.manifest" % live_prefix, "%s.manifest" % output_prefix)490 "%s.manifest" % live_prefix, "%s.manifest" % output_prefix)
550 if config.project in ("ubuntu-touch", "ubuntu-touch-custom"):491 if config.project == "ubuntu-touch":
551 osextras.link_force(492 osextras.link_force(
552 "%s.raw" % output_prefix, "%s.tar.gz" % output_prefix)493 "%s.raw" % output_prefix, "%s.tar.gz" % output_prefix)
553 add_android_support(config, arch, output_dir)494 add_android_support(config, arch, output_dir)
@@ -555,7 +496,7 @@
555 if os.path.exists(custom):496 if os.path.exists(custom):
556 shutil.copy2(497 shutil.copy2(
557 custom, "%s.custom.tar.gz" % output_prefix)498 custom, "%s.custom.tar.gz" % output_prefix)
558 if config.project in ("ubuntu-core", "ubuntu-desktop-next"):499 if config.project == "ubuntu-core":
559 for dev in ("azure.device", "device", "raspi2.device",500 for dev in ("azure.device", "device", "raspi2.device",
560 "plano.device"):501 "plano.device"):
561 device = "%s.%s.tar.gz" % (live_prefix, dev)502 device = "%s.%s.tar.gz" % (live_prefix, dev)
@@ -571,10 +512,7 @@
571512
572513
573def _debootstrap_script(config):514def _debootstrap_script(config):
574 if config["DIST"] <= "gutsy":515 return "usr/share/debootstrap/scripts/%s" % config.series
575 return "usr/lib/debootstrap/scripts/%s" % config.series
576 else:
577 return "usr/share/debootstrap/scripts/%s" % config.series
578516
579517
580def extract_debootstrap(config):518def extract_debootstrap(config):
@@ -710,15 +648,11 @@
710def is_live_fs_only(config):648def is_live_fs_only(config):
711 live_fs_only = False649 live_fs_only = False
712 if config.project in (650 if config.project in (
713 "livecd-base", "ubuntu-base", "ubuntu-core", "ubuntu-touch",651 "livecd-base", "ubuntu-base", "ubuntu-core", "ubuntu-touch"):
714 "ubuntu-touch-custom"):
715 live_fs_only = True652 live_fs_only = True
716 elif (config.project == "ubuntu-server" and653 elif (config.project == "ubuntu-server" and
717 config.image_type == "daily-preinstalled"):654 config.image_type == "daily-preinstalled"):
718 live_fs_only = True655 live_fs_only = True
719 elif (config.project == "ubuntu-desktop-next" and
720 config.subproject == "system-image"):
721 live_fs_only = True
722 elif config.subproject == "wubi":656 elif config.subproject == "wubi":
723 live_fs_only = True657 live_fs_only = True
724 return live_fs_only658 return live_fs_only
725659
=== modified file 'lib/cdimage/germinate.py'
--- lib/cdimage/germinate.py 2019-02-22 10:32:26 +0000
+++ lib/cdimage/germinate.py 2019-03-07 16:20:18 +0000
@@ -72,20 +72,14 @@
72 gitpattern = "https://git.launchpad.net/~%s/ubuntu-seeds/+git/"72 gitpattern = "https://git.launchpad.net/~%s/ubuntu-seeds/+git/"
73 series = self.config["DIST"]73 series = self.config["DIST"]
74 sources = [gitpattern % "ubuntu-core-dev"]74 sources = [gitpattern % "ubuntu-core-dev"]
75 if project in ("kubuntu", "kubuntu-active", "kubuntu-plasma5"):75 if project in ("kubuntu", "kubuntu-active"):
76 if series >= "oneiric":76 sources.insert(0, bzrpattern % "kubuntu-dev")
77 sources.insert(0, bzrpattern % "kubuntu-dev")
78 else:
79 sources.insert(0, bzrpattern % "ubuntu-core-dev")
80 elif project == "ubuntustudio":77 elif project == "ubuntustudio":
81 sources.insert(0, gitpattern % "ubuntustudio-dev")78 sources.insert(0, gitpattern % "ubuntustudio-dev")
82 elif project == "mythbuntu":79 elif project == "mythbuntu":
83 sources.insert(0, bzrpattern % "mythbuntu-dev")80 sources.insert(0, bzrpattern % "mythbuntu-dev")
84 elif project == "xubuntu":81 elif project == "xubuntu":
85 if series >= "intrepid":82 sources.insert(0, gitpattern % "xubuntu-dev")
86 sources.insert(0, gitpattern % "xubuntu-dev")
87 else:
88 sources.insert(0, bzrpattern % "ubuntu-core-dev")
89 elif project in ("lubuntu", "lubuntu-next"):83 elif project in ("lubuntu", "lubuntu-next"):
90 sources.insert(0, gitpattern % "lubuntu-dev")84 sources.insert(0, gitpattern % "lubuntu-dev")
91 elif project == "ubuntu-gnome":85 elif project == "ubuntu-gnome":
@@ -94,10 +88,8 @@
94 sources.insert(0, bzrpattern % "ubuntubudgie-dev")88 sources.insert(0, bzrpattern % "ubuntubudgie-dev")
95 elif project == "ubuntu-mate":89 elif project == "ubuntu-mate":
96 sources.insert(0, bzrpattern % "ubuntu-mate-dev")90 sources.insert(0, bzrpattern % "ubuntu-mate-dev")
97 elif project == "ubuntu-moblin-remix":
98 sources.insert(0, bzrpattern % "moblin")
99 elif project == "ubuntukylin":91 elif project == "ubuntukylin":
100 if series >= "utopic":92 if series >= "xenial":
101 sources.insert(0, gitpattern % "ubuntukylin-members")93 sources.insert(0, gitpattern % "ubuntukylin-members")
102 else:94 else:
103 sources.insert(0, bzrpattern % "ubuntu-core-dev")95 sources.insert(0, bzrpattern % "ubuntu-core-dev")
@@ -138,24 +130,13 @@
138 return [pattern % self.config.series for pattern in dist_patterns]130 return [pattern % self.config.series for pattern in dist_patterns]
139131
140 def seed_dist(self, project):132 def seed_dist(self, project):
141 if (project in ("ubuntu-server", "jeos") and133 if project == "ubuntu-server":
142 self.config.series != "breezy"):
143 return "ubuntu.%s" % self.config.series134 return "ubuntu.%s" % self.config.series
144 elif project == "ubuntukylin":135 elif project == "ubuntukylin":
145 if self.config["DIST"] >= "utopic":136 if self.config["DIST"] >= "xenial":
146 return "ubuntukylin.%s" % self.config.series137 return "ubuntukylin.%s" % self.config.series
147 else:138 else:
148 return "ubuntu.%s" % self.config.series139 return "ubuntu.%s" % self.config.series
149 elif project == "ubuntu-mid":
150 return "mobile.%s" % self.config.series
151 elif project == "ubuntu-netbook":
152 return "netbook.%s" % self.config.series
153 elif project == "ubuntu-headless":
154 return "ubuntu.%s" % self.config.series
155 elif project == "ubuntu-moblin-remix":
156 return "moblin.%s" % self.config.series
157 elif project == "ubuntu-desktop-next":
158 return "ubuntu-touch.%s" % self.config.series
159 elif project == "lubuntu-next":140 elif project == "lubuntu-next":
160 return "lubuntu.%s" % self.config.series141 return "lubuntu.%s" % self.config.series
161 else:142 else:
@@ -218,24 +199,6 @@
218 shutil.copy2(199 shutil.copy2(
219 os.path.join(arch_output_dir, "structure"), output_structure)200 os.path.join(arch_output_dir, "structure"), output_structure)
220201
221 if self.config.series == "breezy":
222 # Unfortunately, we now need a second germinate run to figure
223 # out the dependencies of language packs and the like.
224 extras = []
225 with open(os.path.join(
226 arch_output_dir, "ship.acsets"), "w") as ship_acsets:
227 output = GerminateOutput(self.config, output_structure)
228 for pkg in output.seed_packages(arch, "ship.seed"):
229 extras.append("desktop/%s" % pkg)
230 print(pkg, file=ship_acsets)
231 if extras:
232 logger.info(
233 "Re-germinating for %s/%s language pack dependencies ..." %
234 (self.config.series, arch))
235 command.extend(["--seed-packages", ",".join(extras)])
236 proxy_check_call(
237 self.config, "germinate", command, cwd=arch_output_dir)
238
239 def germinate_project(self, project):202 def germinate_project(self, project):
240 osextras.mkemptydir(self.output_dir(project))203 osextras.mkemptydir(self.output_dir(project))
241204
@@ -314,17 +277,10 @@
314 ship = "ship-addon"277 ship = "ship-addon"
315 in_squashfs = None278 in_squashfs = None
316 if project == "ubuntu-server":279 if project == "ubuntu-server":
317 if series <= "breezy":280 ship = "server-ship"
318 pass
319 elif series <= "dapper":
320 ship = "server"
321 else:
322 ship = "server-ship"
323 in_squashfs = ["minimal"]281 in_squashfs = ["minimal"]
324 elif project == "kubuntu-active":282 elif project == "kubuntu-active":
325 ship = "active-ship"283 ship = "active-ship"
326 elif project == "jeos":
327 ship = "jeos"
328 seeds = self._inheritance(ship)284 seeds = self._inheritance(ship)
329 if (self.config["CDIMAGE_SQUASHFS_BASE"] and285 if (self.config["CDIMAGE_SQUASHFS_BASE"] and
330 in_squashfs is not None):286 in_squashfs is not None):
@@ -333,55 +289,33 @@
333 for seed in seeds:289 for seed in seeds:
334 yield seed290 yield seed
335 if self.config["CDIMAGE_DVD"]:291 if self.config["CDIMAGE_DVD"]:
336 if series >= "edgy":292 # TODO cjwatson 2007-04-18: hideous hack to fix DVD tasks
337 # TODO cjwatson 2007-04-18: hideous hack to fix DVD tasks293 yield "dns-server"
338 yield "dns-server"294 yield "lamp-server"
339 yield "lamp-server"
340 elif mode == "installer":295 elif mode == "installer":
341 if self.config["CDIMAGE_INSTALL_BASE"]:296 if self.config["CDIMAGE_INSTALL_BASE"]:
342 yield "installer"297 yield "installer"
343 if self.config["CDIMAGE_LIVE"]:
344 if series >= "hoary" and series <= "breezy":
345 yield "casper"
346 elif mode == "debootstrap":298 elif mode == "debootstrap":
347 if series <= "hoary":299 yield "required"
348 yield "base"300 yield "minimal"
349 elif series <= "feisty":
350 yield "minimal"
351 else:
352 yield "required"
353 yield "minimal"
354 elif mode == "base":301 elif mode == "base":
355 if series <= "hoary":302 yield "boot"
356 yield "base"303 yield "required"
357 elif series <= "breezy":304 yield "minimal"
358 yield "minimal"305 yield "standard"
359 yield "standard"
360 elif series <= "feisty":
361 yield "boot"
362 yield "minimal"
363 yield "standard"
364 else:
365 yield "boot"
366 yield "required"
367 yield "minimal"
368 yield "standard"
369 elif mode == "ship-live":306 elif mode == "ship-live":
370 if project == "kubuntu-active":307 if project == "kubuntu-active":
371 yield "ship-active-live"308 yield "ship-active-live"
372 elif (project == "lubuntu" and series >= "artful"309 elif project == "lubuntu" and series == "bionic":
373 and series <= "bionic"):
374 yield "ship-live-gtk"310 yield "ship-live-gtk"
375 yield "ship-live-share"311 yield "ship-live-share"
376 elif (project == "lubuntu-next" and series >= "artful"312 elif project == "lubuntu-next" and series == "bionic":
377 and series <= "bionic"):
378 yield "ship-live-qt"313 yield "ship-live-qt"
379 yield "ship-live-share"314 yield "ship-live-share"
380 elif project == "ubuntu-server" and series >= "bionic":315 elif project == "ubuntu-server" and series >= "bionic":
381 yield "server-ship-live"316 yield "server-ship-live"
382 else:317 else:
383 if series >= "dapper":318 yield "ship-live"
384 yield "ship-live"
385 elif mode == "addon":319 elif mode == "addon":
386 ship = self._inheritance("ship")320 ship = self._inheritance("ship")
387 ship_addon = self._inheritance("ship-addon")321 ship_addon = self._inheritance("ship-addon")
@@ -389,29 +323,22 @@
389 if seed not in ship:323 if seed not in ship:
390 yield seed324 yield seed
391 elif mode == "dvd":325 elif mode == "dvd":
392 if series <= "gutsy":326 if project == "edubuntu":
393 for seed in self._inheritance("supported"):327 # no inheritance; most of this goes on the live filesystem
394 yield seed328 yield "dvd"
395 elif series <= "karmic":329 yield "ship-live"
330 elif project == "ubuntu":
331 # no inheritance; most of this goes on the live filesystem
332 yield "usb-langsupport"
333 yield "usb-ship-live"
334 elif project == "ubuntustudio":
335 # no inheritance; most of this goes on the live filesystem
336 yield "dvd"
337 if series >= "bionic":
338 yield "ship-live"
339 else:
396 for seed in self._inheritance("dvd"):340 for seed in self._inheritance("dvd"):
397 yield seed341 yield seed
398 else:
399 if project == "edubuntu":
400 # no inheritance; most of this goes on the live filesystem
401 yield "dvd"
402 yield "ship-live"
403 elif project == "ubuntu" and series >= "oneiric":
404 # no inheritance; most of this goes on the live filesystem
405 yield "usb-langsupport"
406 yield "usb-ship-live"
407 elif project == "ubuntustudio" and series >= "precise":
408 # no inheritance; most of this goes on the live filesystem
409 yield "dvd"
410 if series >= "artful":
411 yield "ship-live"
412 else:
413 for seed in self._inheritance("dvd"):
414 yield seed
415342
416 def seed_path(self, arch, seed):343 def seed_path(self, arch, seed):
417 return os.path.join(self.directory, arch, seed)344 return os.path.join(self.directory, arch, seed)
@@ -492,24 +419,6 @@
492 if package == "bootstrap-base":419 if package == "bootstrap-base":
493 package = "live-installer"420 package = "live-installer"
494421
495 # germinate doesn't yet support subarchitecture specifications
496 # (and it's not entirely clear what they would mean if it did),
497 # so we need to hack the boot and installer seeds a bit for
498 # powerpc+ps3 (only gutsy).
499 if self.config.series == "gutsy" and arch == "powerpc+ps3":
500 if seed in installer_seeds:
501 if "-powerpc-di" in package:
502 continue
503 package = package.replace("-powerpc64-smp-di", "-cell-di")
504 if seed == "boot":
505 if package.startswith("linux-restricted-modules"):
506 continue
507 if package.startswith("linux-ubuntu-modules"):
508 continue
509 if package.endswith("-powerpc"):
510 continue
511 package = package.replace("-powerpc64-smp", "-cell")
512
513 # For precise, some flavours use a different kernel on i386.422 # For precise, some flavours use a different kernel on i386.
514 # germinate doesn't currently support this without duplicating423 # germinate doesn't currently support this without duplicating
515 # the entire boot and installer seeds, so we hack them instead.424 # the entire boot and installer seeds, so we hack them instead.
@@ -523,7 +432,7 @@
523 yield package432 yield package
524433
525 def installer_initrds(self, cpuarch):434 def installer_initrds(self, cpuarch):
526 if cpuarch in ("amd64", "i386", "lpia"):435 if cpuarch in ("amd64", "i386"):
527 return ["cdrom/initrd.gz", "netboot/netboot.tar.gz"]436 return ["cdrom/initrd.gz", "netboot/netboot.tar.gz"]
528 elif cpuarch == "hppa":437 elif cpuarch == "hppa":
529 return ["cdrom/2.6/initrd.gz", "netboot/2.6/boot.img"]438 return ["cdrom/2.6/initrd.gz", "netboot/2.6/boot.img"]
@@ -567,16 +476,15 @@
567476
568 def common_initrd_packages(self, arch):477 def common_initrd_packages(self, arch):
569 initrd_packages_sets = []478 initrd_packages_sets = []
570 if self.config["DIST"] >= "jaunty":479 # Remove installer packages that are in both the cdrom and
571 # Remove installer packages that are in both the cdrom and480 # netboot initrds; there's no point duplicating these.
572 # netboot initrds; there's no point duplicating these.481 cpuarch = arch.split("+")[0]
573 cpuarch = arch.split("+")[0]482 initrds = self.installer_initrds(cpuarch)
574 initrds = self.installer_initrds(cpuarch)483 subarches = self.installer_subarches(cpuarch)
575 subarches = self.installer_subarches(cpuarch)484 for initrd in initrds:
576 for initrd in initrds:485 for subarch in subarches:
577 for subarch in subarches:486 initrd_packages_sets.append(self.initrd_packages(
578 initrd_packages_sets.append(self.initrd_packages(487 "%s/%s" % (subarch, initrd), cpuarch))
579 "%s/%s" % (subarch, initrd), cpuarch))
580 if initrd_packages_sets:488 if initrd_packages_sets:
581 return set.intersection(*initrd_packages_sets)489 return set.intersection(*initrd_packages_sets)
582 else:490 else:
@@ -584,7 +492,7 @@
584492
585 def task_project(self, project):493 def task_project(self, project):
586 # ubuntu-server really wants ubuntu-* tasks.494 # ubuntu-server really wants ubuntu-* tasks.
587 if project in ("ubuntu-server", "jeos"):495 if project == "ubuntu-server":
588 return "ubuntu"496 return "ubuntu"
589 else:497 else:
590 return project498 return project
@@ -607,55 +515,24 @@
607 return headers515 return headers
608516
609 def seed_task_mapping(self, project, arch):517 def seed_task_mapping(self, project, arch):
610 series = self.config["DIST"]
611 task_project = self.task_project(project)518 task_project = self.task_project(project)
612 for seed in self.list_seeds("all"):519 for seed in self.list_seeds("all"):
613 if series <= "dapper":520 # Tasks implemented via tasksel, with Task-Seeds to indicate
614 # Tasks implemented by hand.521 # task/seed mapping.
615 if seed in ("boot", "required", "server-ship"):522 task = seed
616 continue523 headers = self.task_headers(arch, seed)
617 elif seed == "server" and project != "edubuntu":524 if not headers:
618 continue525 continue
619 elif seed == "ship" and series >= "dapper":526 input_seeds = [seed] + headers.get("seeds", "").split()
620 continue527 if "per-derivative" in headers:
621528 # Edubuntu is odd; it's structured as an add-on to
622 if seed in (529 # Ubuntu, so sometimes we need to create ubuntu-* tasks.
623 "base", "minimal", "standard", "desktop", "server", "ship",530 # At the moment I don't see a better approach than
624 ):531 # hardcoding the task names.
625 task = "%s-%s" % (task_project, seed)532 if project == "edubuntu" and task in ("desktop", "live"):
626 else:533 task = "ubuntu-%s" % task
627 task = seed534 else:
628 input_seeds = [seed]
629 elif series <= "gutsy":
630 # Tasks implemented via tasksel, but without Task-Seeds;
631 # hacks required for seed/task mapping.
632 if seed == "required":
633 task = "minimal"
634 else:
635 task = seed
636 headers = self.task_headers(arch, seed)
637 if not headers:
638 continue
639 if "per-derivative" in headers:
640 task = "%s-%s" % (task_project, task)535 task = "%s-%s" % (task_project, task)
641 input_seeds = [seed]
642 else:
643 # Tasks implemented via tasksel, with Task-Seeds to indicate
644 # task/seed mapping.
645 task = seed
646 headers = self.task_headers(arch, seed)
647 if not headers:
648 continue
649 input_seeds = [seed] + headers.get("seeds", "").split()
650 if "per-derivative" in headers:
651 # Edubuntu is odd; it's structured as an add-on to
652 # Ubuntu, so sometimes we need to create ubuntu-* tasks.
653 # At the moment I don't see a better approach than
654 # hardcoding the task names.
655 if project == "edubuntu" and task in ("desktop", "live"):
656 task = "ubuntu-%s" % task
657 else:
658 task = "%s-%s" % (task_project, task)
659536
660 yield input_seeds, task537 yield input_seeds, task
661538
@@ -664,7 +541,6 @@
664 master_project = "source"541 master_project = "source"
665 else:542 else:
666 master_project = project543 master_project = project
667 series = self.config["DIST"]
668 output_dir = self.tasks_output_dir(master_project)544 output_dir = self.tasks_output_dir(master_project)
669 osextras.ensuredir(output_dir)545 osextras.ensuredir(output_dir)
670546
@@ -706,27 +582,6 @@
706 print(582 print(
707 "%s Task %s" % (pkg, ", ".join(tasknames)),583 "%s Task %s" % (pkg, ", ".join(tasknames)),
708 file=override)584 file=override)
709 if series == "breezy":
710 # In breezy, also generate Archive-Copier-Set headers for
711 # sets of packages that archive-copier needs to know to copy
712 # but that shouldn't appear as tasks in aptitude et al.
713 ship_acsets_path = self.seed_path(arch, "ship.acsets")
714 all_acsets = defaultdict(list)
715 try:
716 with open(ship_acsets_path) as ship_acsets:
717 for acset in ship_acsets:
718 acset = acset.rstrip("\n")
719 for package in self.seed_packages(arch, acset):
720 all_acsets[package].append(acset)
721 except IOError as e:
722 if e.errno != errno.ENOENT:
723 raise
724 for pkg, acsetnames in sorted(all_acsets.items()):
725 print(
726 "%s Archive-Copier-Set %s" % (
727 pkg, ", ".join(acsetnames)),
728 file=override)
729
730 # Help debian-cd to get priorities in sync with the current base585 # Help debian-cd to get priorities in sync with the current base
731 # system, so that debootstrap >= 0.3.1 can work out the correct586 # system, so that debootstrap >= 0.3.1 can work out the correct
732 # set of packages to install.587 # set of packages to install.
733588
=== modified file 'lib/cdimage/livefs.py'
--- lib/cdimage/livefs.py 2018-12-12 20:29:20 +0000
+++ lib/cdimage/livefs.py 2019-03-07 16:20:18 +0000
@@ -34,7 +34,7 @@
34 from urllib2 import URLError, unquote, urlopen34 from urllib2 import URLError, unquote, urlopen
3535
36from cdimage import osextras, sign36from cdimage import osextras, sign
37from cdimage.config import Series, Touch37from cdimage.config import Touch
38from cdimage.launchpad import get_launchpad38from cdimage.launchpad import get_launchpad
39from cdimage.log import logger39from cdimage.log import logger
40from cdimage.mail import get_notify_addresses, send_mail40from cdimage.mail import get_notify_addresses, send_mail
@@ -121,14 +121,11 @@
121 elif subarch in ("ac100", "nexus7"):121 elif subarch in ("ac100", "nexus7"):
122 options.extend(["-f", "plain"])122 options.extend(["-f", "plain"])
123123
124 if (config.project in ("ubuntu-base", "ubuntu-core", "ubuntu-touch",124 if config.project in ("ubuntu-base", "ubuntu-core", "ubuntu-touch"):
125 "ubuntu-touch-custom") or
126 (config.project == "ubuntu-desktop-next" and
127 config.subproject == "system-image")):
128 options.extend(["-f", "plain"])125 options.extend(["-f", "plain"])
129126
130 if config.subproject == "wubi":127 if config.subproject == "wubi":
131 if config["DIST"] >= "quantal":128 if config["DIST"] >= "trusty":
132 # TODO: Turn this back on once Wubi's resize2fs supports it.129 # TODO: Turn this back on once Wubi's resize2fs supports it.
133 # options.extend(["-f", "ext4"])130 # options.extend(["-f", "ext4"])
134 options.extend(["-f", "ext3"])131 options.extend(["-f", "ext3"])
@@ -140,14 +137,9 @@
140137
141def live_project(config, arch):138def live_project(config, arch):
142 project = config.project139 project = config.project
143 series = config["DIST"]
144140
145 if project == "livecd-base":141 if project == "livecd-base":
146 liveproject = "base"142 liveproject = "base"
147 elif project == "tocd3.1":
148 liveproject = "tocd"
149 elif project == "ubuntu-touch-custom":
150 liveproject = "ubuntu-touch"
151 elif (project == "ubuntu-server" and143 elif (project == "ubuntu-server" and
152 config.image_type == "daily-preinstalled"):144 config.image_type == "daily-preinstalled"):
153 liveproject = "ubuntu-cpc"145 liveproject = "ubuntu-cpc"
@@ -155,13 +147,9 @@
155 liveproject = project147 liveproject = project
156148
157 cpuarch, subarch = split_arch(arch)149 cpuarch, subarch = split_arch(arch)
158 if cpuarch == "lpia" and series <= "hardy":
159 liveproject = "%s-lpia" % liveproject
160150
161 if config["CDIMAGE_DVD"]:151 if config["CDIMAGE_DVD"]:
162 if ((project in ("ubuntu", "kubuntu") and series >= "hardy") or152 if project in ("ubuntu", "kubuntu", "edubuntu", "ubuntustudio"):
163 (project == "edubuntu" and series >= "karmic") or
164 (project == "ubuntustudio" and series >= "precise")):
165 liveproject += "-dvd"153 liveproject += "-dvd"
166154
167 return liveproject155 return liveproject
@@ -176,8 +164,7 @@
176164
177 if config["UBUNTU_DEFAULTS_LOCALE"]:165 if config["UBUNTU_DEFAULTS_LOCALE"]:
178 command.extend(["-u", config["UBUNTU_DEFAULTS_LOCALE"]])166 command.extend(["-u", config["UBUNTU_DEFAULTS_LOCALE"]])
179 elif config["DIST"] >= "oneiric":167 command.append("-l")
180 command.append("-l")
181168
182 command.extend(live_build_options(config, arch))169 command.extend(live_build_options(config, arch))
183170
@@ -482,28 +469,19 @@
482 series = config["DIST"]469 series = config["DIST"]
483470
484 if cpuarch == "amd64":471 if cpuarch == "amd64":
485 if series <= "dapper":472 if project == "ubuntustudio":
486 return ["amd64-generic"]473 return ["lowlatency"]
487 elif series <= "oneiric":474 else:
488 return ["generic"]475 return ["generic"]
489 else:
490 if project == "ubuntustudio":
491 return ["lowlatency"]
492 else:
493 return ["generic"]
494 elif cpuarch == "arm64":476 elif cpuarch == "arm64":
495 return ["generic"]477 return ["generic"]
496 elif cpuarch == "armel":478 elif cpuarch == "armel":
497 if series == "jaunty":479 if subarch == "mx5":
498 # We don't have any fallback flavour on armel.480 return ["linaro-lt-mx5"]
499 return ["imx51"]
500 else:481 else:
501 if subarch == "mx5":482 # Assume one kernel flavour for each subarch named like the
502 return ["linaro-lt-mx5"]483 # subarch.
503 else:484 return [subarch]
504 # Assume one kernel flavour for each subarch named like the
505 # subarch.
506 return [subarch]
507 elif cpuarch == "armhf":485 elif cpuarch == "armhf":
508 if subarch == "mx5":486 if subarch == "mx5":
509 return ["linaro-lt-mx5"]487 return ["linaro-lt-mx5"]
@@ -512,11 +490,7 @@
512 elif cpuarch == "hppa":490 elif cpuarch == "hppa":
513 return ["hppa32", "hppa64"]491 return ["hppa32", "hppa64"]
514 elif cpuarch == "i386":492 elif cpuarch == "i386":
515 if series <= "dapper":493 if series <= "precise":
516 return ["i386"]
517 elif series <= "oneiric":
518 return ["generic"]
519 elif series <= "precise":
520 if project in ("ubuntu", "edubuntu", "mythbuntu"):494 if project in ("ubuntu", "edubuntu", "mythbuntu"):
521 # lts-quantal495 # lts-quantal
522 return ["generic"]496 return ["generic"]
@@ -533,20 +507,9 @@
533 else:507 else:
534 return ["generic"]508 return ["generic"]
535 elif cpuarch == "ia64":509 elif cpuarch == "ia64":
536 if series <= "dapper":510 return ["ia64"]
537 return ["itanium-smp", "mckinley-smp"]
538 elif series <= "jaunty":
539 return ["itanium", "mckinley"]
540 else:
541 return ["ia64"]
542 elif cpuarch == "lpia":
543 return ["lpia"]
544 elif cpuarch == "powerpc":511 elif cpuarch == "powerpc":
545 if subarch == "ps3" and series <= "gutsy":512 if series <= "xenial":
546 return ["cell"]
547 elif series <= "oneiric":
548 return ["powerpc", "powerpc64-smp"]
549 elif series <= "xenial":
550 return ["powerpc-smp", "powerpc64-smp"]513 return ["powerpc-smp", "powerpc64-smp"]
551 else:514 else:
552 return ["powerpc-smp", "generic"]515 return ["powerpc-smp", "generic"]
@@ -561,61 +524,6 @@
561 "No live filesystem source known for %s" % arch)524 "No live filesystem source known for %s" % arch)
562525
563526
564def live_item_path_winfoss(config, arch):
565 # This is a mess of special cases. Fortunately it is now only of
566 # historical interest.
567 cpuarch, subarch = split_arch(arch)
568 project = config.project
569 series = config["DIST"]
570
571 if series == "warty" or cpuarch not in ("amd64", "i386"):
572 return
573
574 maitri = "http://maitri.ubuntu.com/theopencd"
575 henrik = "http://people.canonical.com/~henrik/winfoss"
576
577 if project == "ubuntu":
578 if series == "hoary":
579 if cpuarch == "i386":
580 yield "%s/ubuntu/winfoss/latest/Hoary-WinFOSS.tgz" % maitri
581 elif cpuarch == "amd64":
582 yield ("%s/ubuntu/amd64/latest/"
583 "Hoary-WinFOSS-amd64.tgz" % maitri)
584 elif series == "breezy":
585 yield "%s/winfoss/ubuntu/current/Ubuntu-WinFOSS-5.10.tgz" % maitri
586 elif series >= "dapper" and series <= "karmic":
587 if series > "gutsy":
588 series = Series.find_by_name("gutsy")
589 yield "%s/%s/ubuntu/current/ubuntu-winfoss-%s.tar.gz" % (
590 henrik, series, series.version)
591 elif project == "kubuntu":
592 if series == "hoary" and cpuarch == "i386":
593 yield ("%s/kubuntu/winfoss/latest/"
594 "Kubuntu-WinFOSS-i386.tgz" % maitri)
595 elif series == "breezy":
596 if cpuarch == "i386":
597 yield ("%s/winfoss/kubuntu/current/"
598 "Kubuntu-WinFOSS-5.10.tgz" % maitri)
599 elif cpuarch == "amd64":
600 yield ("%s/winfoss/kubuntu-AMD/current/"
601 "Kubuntu-WinFOSS-5.10-AMD.tgz" % maitri)
602 elif series >= "dapper" and series <= "karmic":
603 if series > "gutsy":
604 series = Series.find_by_name("gutsy")
605 yield "%s/%s/kubuntu/current/kubuntu-winfoss-%s.tar.gz" % (
606 henrik, series, series.version)
607 elif project == "edubuntu":
608 if series >= "feisty" and series <= "karmic":
609 if series > "gutsy":
610 series = Series.find_by_name("gutsy")
611 yield "%s/%s/edubuntu/current/edubuntu-winfoss-%s.tar.gz" % (
612 henrik, series, series.version)
613 elif project == "tocd3" and cpuarch == "i386":
614 yield "%s/tocd3/fsm/TOCD3.tgz" % maitri
615 elif project == "tocd3.1" and cpuarch == "i386":
616 yield "%s/winfoss/tocd3.1/current/TOCD-31.tgz" % maitri
617
618
619def live_item_paths(config, arch, item):527def live_item_paths(config, arch, item):
620 if item == "ltsp-squashfs" and arch == "amd64":528 if item == "ltsp-squashfs" and arch == "amd64":
621 # use i386 LTSP image on amd64 too529 # use i386 LTSP image on amd64 too
@@ -630,22 +538,31 @@
630 liveproject_subarch = liveproject538 liveproject_subarch = liveproject
631539
632 lp, lp_livefs = get_lp_livefs(config, arch)540 lp, lp_livefs = get_lp_livefs(config, arch)
541 uris = []
542 root = ""
633 if lp_livefs is not None:543 if lp_livefs is not None:
634 lp_kwargs = live_build_lp_kwargs(config, lp, lp_livefs, arch)544 lp_kwargs = live_build_lp_kwargs(config, lp, lp_livefs, arch)
635 lp_build = lp_livefs.getLatestBuild(545 lp_build = lp_livefs.getLatestBuild(
636 lp_kwargs["distro_arch_series"],546 lp_kwargs["distro_arch_series"],
637 unique_key=lp_kwargs.get("unique_key"))547 unique_key=lp_kwargs.get("unique_key"))
638 lp_urls = list(lp_build.getFileUrls())548 uris = list(lp_build.getFileUrls())
639
640 def urls_for(base):
641 for url in lp_urls:
642 if unquote(os.path.basename(url)) == base:
643 yield url
644 else:549 else:
645 root = livecd_base(config, arch)550 root = livecd_base(config, arch)
551 try:
552 uris = [ os.path.join(root, u) for u in os.listdir(root) ]
553 except OSError:
554 # fallback to exact given uri (for http://) in url_for as we can't
555 # list content.
556 pass
646557
647 def urls_for(base):558 def urls_for(base, item):
648 yield "%s/%s" % (root, base)559 if uris:
560 for uri in uris:
561 filename = unquote(os.path.basename(uri))
562 if filename.startswith(base + '.') and filename.endswith('.' + item):
563 yield uri
564 else:
565 yield os.path.join(root, base + '.' + item)
649566
650 if item in (567 if item in (
651 "cloop", "squashfs", "manifest", "manifest-desktop", "manifest-remove",568 "cloop", "squashfs", "manifest", "manifest-desktop", "manifest-remove",
@@ -653,27 +570,22 @@
653 "rootfs.tar.gz", "custom.tar.gz", "device.tar.gz",570 "rootfs.tar.gz", "custom.tar.gz", "device.tar.gz",
654 "azure.device.tar.gz", "raspi2.device.tar.gz", "plano.device.tar.gz",571 "azure.device.tar.gz", "raspi2.device.tar.gz", "plano.device.tar.gz",
655 "tar.xz", "iso", "os.snap", "kernel.snap", "disk1.img.xz",572 "tar.xz", "iso", "os.snap", "kernel.snap", "disk1.img.xz",
656 "dragonboard.kernel.snap", "raspi2.kernel.snap", "installer.squashfs",573 "dragonboard.kernel.snap", "raspi2.kernel.snap",
657 "maas-rack.squashfs", "maas-region.squashfs",
658 "img.xz", "model-assertion"574 "img.xz", "model-assertion"
659 ):575 ):
660 if project == "tocd3":576 if item == "ext4" and arch == "armhf+nexus7":
661 # auto-purged - reverting to plan B
662 yield "/home/cjwatson/tocd3/livecd.tocd3.%s" % item
663 elif project == "ubuntu" and series == "breezy":
664 # auto-purged - reverting to plan B
665 yield "/home/cjwatson/breezy-live/ubuntu/livecd.%s.%s" % (
666 arch, item)
667 elif item == "ext4" and arch == "armhf+nexus7":
668 for url in urls_for(577 for url in urls_for(
669 "livecd.%s.%s-nexus7" % (liveproject_subarch, item)):578 "livecd." + liveproject_subarch, item + "-nexus7"):
670 yield url579 yield url
671 elif item == "disk1.img.xz":580 elif item == "disk1.img.xz":
672 for url in urls_for(581 for url in urls_for(
673 "livecd.%s.%s" % (liveproject, item)):582 "livecd." + liveproject, item):
674 yield url583 yield url
675 else:584 else:
676 for url in urls_for("livecd.%s.%s" % (liveproject_subarch, item)):585 for url in urls_for("livecd."+ liveproject_subarch, item):
586 # filter out redundant artefacts
587 if url.endswith("modules.squashfs"):
588 continue
677 yield url589 yield url
678 elif item in (590 elif item in (
679 "kernel", "initrd", "bootimg", "modules.squashfs"591 "kernel", "initrd", "bootimg", "modules.squashfs"
@@ -681,8 +593,7 @@
681 our_flavours = flavours(config, arch)593 our_flavours = flavours(config, arch)
682 our_flavours.extend(["%s-hwe" % (f,) for f in our_flavours])594 our_flavours.extend(["%s-hwe" % (f,) for f in our_flavours])
683 for flavour in our_flavours:595 for flavour in our_flavours:
684 base = "livecd.%s.%s-%s" % (liveproject_subarch, item, flavour)596 for url in urls_for("livecd." + liveproject_subarch, item + "-" + flavour):
685 for url in urls_for(base):
686 yield url597 yield url
687 elif item in (598 elif item in (
688 "boot-%s+%s.img" % (target.ubuntu_arch, target.subarch)599 "boot-%s+%s.img" % (target.ubuntu_arch, target.subarch)
@@ -695,35 +606,30 @@
695 for target in Touch.list_targets_by_ubuntu_arch(arch)606 for target in Touch.list_targets_by_ubuntu_arch(arch)
696 ):607 ):
697 for flavour in flavours(config, arch):608 for flavour in flavours(config, arch):
698 base = "livecd.%s.%s" % (liveproject_subarch, item)609 for url in urls_for("livecd." + liveproject_subarch, item):
699 for url in urls_for(base):
700 yield url610 yield url
701 elif item == "kernel-efi-signed":611 elif item == "kernel-efi-signed":
702 if series >= "precise" and arch == "amd64":612 if series >= "precise" and arch == "amd64":
703 for flavour in flavours(config, arch):613 for flavour in flavours(config, arch):
704 base = "livecd.%s.kernel-%s.efi.signed" % (614 for url in urls_for("livecd." + liveproject_subarch,
705 liveproject_subarch, flavour)615 "kernel-" + flavour + ".efi.signed"):
706 for url in urls_for(base):
707 yield url616 yield url
708 elif item == "winfoss":
709 for path in live_item_path_winfoss(config, arch):
710 yield path
711 elif item == "wubi":617 elif item == "wubi":
712 if (project != "xubuntu" and arch in ("amd64", "i386") and618 if (project != "xubuntu" and arch in ("amd64", "i386")):
713 series >= "gutsy"):
714 yield ("http://people.canonical.com/~ubuntu-archive/wubi/%s/"619 yield ("http://people.canonical.com/~ubuntu-archive/wubi/%s/"
715 "stable" % series)620 "stable" % series)
716 elif item == "umenu":
717 if arch in ("amd64", "i386") and series == "hardy":
718 yield "http://people.canonical.com/~evand/umenu/stable"
719 elif item == "usb-creator":621 elif item == "usb-creator":
720 if arch in ("amd64", "i386"):622 if arch in ("amd64", "i386"):
721 yield ("http://people.canonical.com/~evand/usb-creator/%s/"623 yield ("http://people.canonical.com/~evand/usb-creator/%s/"
722 "stable" % series)624 "stable" % series)
723 elif item == "ltsp-squashfs":625 elif item == "ltsp-squashfs":
724 if arch in ("amd64", "i386"):626 if arch in ("amd64", "i386"):
725 for url in urls_for("livecd.%s-ltsp.squashfs" % liveproject):627 for url in urls_for("livecd." + liveproject + "-ltsp", "squashfs"):
726 yield url628 yield url
629 # generic artefacts we always download
630 elif item.endswith("squashfs") or item.endswith("manifest") or item.endswith("size"):
631 for url in urls_for("livecd." + liveproject_subarch, item):
632 yield url
727 else:633 else:
728 raise UnknownLiveItem("Unknown live filesystem item '%s'" % item)634 raise UnknownLiveItem("Unknown live filesystem item '%s'" % item)
729635
@@ -824,29 +730,31 @@
824 found = True730 found = True
825 except osextras.FetchError:731 except osextras.FetchError:
826 pass732 pass
827 elif item in ("wubi", "umenu", "usb-creator"):733 elif item in ("wubi", "usb-creator"):
828 target = os.path.join(output_dir, "%s.%s.exe" % (arch, item))734 target = os.path.join(output_dir, "%s.%s.exe" % (arch, item))
829 try:735 try:
830 osextras.fetch(config, urls[0], target)736 osextras.fetch(config, urls[0], target)
831 found = True737 found = True
832 except osextras.FetchError:738 except osextras.FetchError:
833 pass739 pass
834 elif item == "winfoss":
835 target = os.path.join(output_dir, "%s.%s.tgz" % (arch, item))
836 try:
837 osextras.fetch(config, urls[0], target)
838 found = True
839 except osextras.FetchError:
840 pass
841 else:740 else:
842 target = os.path.join(output_dir, "%s.%s" % (arch, item))741 for url in urls:
843 try:742 # server-squashfs isn't the suffix of the downloadable item.
844 osextras.fetch(config, urls[0], target)743 # prefer a special case over removing suffix + reinjecting item
845 if item in ["squashfs", "server-squashfs"]:744 # when suffix != item
846 sign.sign_cdimage(config, target)745 if item == "server-squashfs":
847 found = True746 target = os.path.join(output_dir, "%s.%s" % (arch, item))
848 except osextras.FetchError:747 # strip livecd.<PROJECT> and replace by arch
849 pass748 else:
749 filename = unquote(os.path.basename(url)).split('.', 2)[-1]
750 target = os.path.join(output_dir, "%s.%s" % (arch, filename))
751 try:
752 osextras.fetch(config, url, target)
753 if target.endswith("squashfs"):
754 sign.sign_cdimage(config, target)
755 found = True
756 except osextras.FetchError:
757 pass
850 return found758 return found
851759
852760
@@ -909,9 +817,6 @@
909 elif download_live_items(config, arch, "cloop"):817 elif download_live_items(config, arch, "cloop"):
910 got_image = True818 got_image = True
911 elif download_live_items(config, arch, "squashfs"):819 elif download_live_items(config, arch, "squashfs"):
912 download_live_items(config, arch, "installer.squashfs")
913 download_live_items(config, arch, "maas-rack.squashfs")
914 download_live_items(config, arch, "maas-region.squashfs")
915 download_live_items(config, arch, "modules.squashfs")820 download_live_items(config, arch, "modules.squashfs")
916 got_image = True821 got_image = True
917 elif download_live_items(config, arch, "rootfs.tar.gz"):822 elif download_live_items(config, arch, "rootfs.tar.gz"):
@@ -920,8 +825,7 @@
920 got_image = True825 got_image = True
921 else:826 else:
922 continue827 continue
923 if (series >= "dapper" and828 if (project != "ubuntu-base" and
924 project != "ubuntu-base" and
925 not config["CDIMAGE_SQUASHFS_BASE"] and829 not config["CDIMAGE_SQUASHFS_BASE"] and
926 config.subproject != "wubi"):830 config.subproject != "wubi"):
927 download_live_items(config, arch, "kernel")831 download_live_items(config, arch, "kernel")
@@ -943,21 +847,9 @@
943847
944 if (project not in ("livecd-base", "ubuntu-base", "ubuntu-core",848 if (project not in ("livecd-base", "ubuntu-base", "ubuntu-core",
945 "kubuntu-active") and849 "kubuntu-active") and
946 (project != "ubuntu-desktop-next" or
947 config.subproject == "system-image") and
948 (project != "edubuntu" or series >= "precise") and850 (project != "edubuntu" or series >= "precise") and
949 (project != "ubuntukylin" or series < "utopic")):851 (project != "ubuntukylin" or series <= "trusty")):
950 if series <= "feisty":852 if series <= "trusty":
951 pass
952 elif series <= "intrepid":
953 if config["CDIMAGE_DVD"] != "1":
954 download_live_items(config, arch, "wubi")
955 download_live_items(config, arch, "umenu")
956 umenu_path = os.path.join(
957 output_dir, "%s.umenu.exe" % arch)
958 if os.path.exists(umenu_path):
959 write_autorun(config, arch, "umenu.exe", "Install")
960 elif series <= "vivid":
961 # TODO: We still have to do something about not853 # TODO: We still have to do something about not
962 # including Wubi on the DVDs.854 # including Wubi on the DVDs.
963 download_live_items(config, arch, "wubi")855 download_live_items(config, arch, "wubi")
@@ -976,19 +868,15 @@
976 "Install %s" % autorun_project)868 "Install %s" % autorun_project)
977869
978 if project not in ("livecd-base", "ubuntu-base", "ubuntu-core",870 if project not in ("livecd-base", "ubuntu-base", "ubuntu-core",
979 "ubuntu-desktop-next", "edubuntu"):871 "edubuntu"):
980 if (project in ("kubuntu-active", "ubuntu-netbook",872 download_live_items(config, arch, "usb-creator")
981 "ubuntu-moblin-remix") or
982 config["CDIMAGE_DVD"] or
983 series >= "maverick"):
984 download_live_items(config, arch, "usb-creator")
985 if project == "ubuntu-core" and config["CDIMAGE_LIVE"]:873 if project == "ubuntu-core" and config["CDIMAGE_LIVE"]:
986 download_live_items(config, arch, "model-assertion")874 download_live_items(config, arch, "model-assertion")
987875
988 if not got_image:876 if not got_image:
989 raise NoFilesystemImages("No filesystem images found.")877 raise NoFilesystemImages("No filesystem images found.")
990878
991 if config.project in ("ubuntu-touch", "ubuntu-touch-custom"):879 if config.project == "ubuntu-touch":
992 for arch in config.arches:880 for arch in config.arches:
993 for abootimg in (881 for abootimg in (
994 "boot-%s+%s.img" % (target.ubuntu_arch, target.subarch)882 "boot-%s+%s.img" % (target.ubuntu_arch, target.subarch)
@@ -1013,7 +901,7 @@
1013 )901 )
1014 download_live_items(config, arch, "custom.tar.gz")902 download_live_items(config, arch, "custom.tar.gz")
1015903
1016 if config.project in ("ubuntu-core", "ubuntu-desktop-next"):904 if config.project == "ubuntu-core":
1017 for arch in config.arches:905 for arch in config.arches:
1018 download_live_items(config, arch, "device.tar.gz")906 download_live_items(config, arch, "device.tar.gz")
1019907
@@ -1031,12 +919,7 @@
1031 if arch == "arm64":919 if arch == "arm64":
1032 download_live_items(config, arch, "dragonboard.kernel.snap")920 download_live_items(config, arch, "dragonboard.kernel.snap")
1033921
1034 if (project == "edubuntu" and config["CDIMAGE_INSTALL"] and922 if project == "edubuntu" and config["CDIMAGE_DVD"]:
1035 series <= "hardy"):
1036 for cpuarch in config.cpuarches:
1037 download_live_items(config, arch, "winfoss")
1038
1039 if project == "edubuntu" and config["CDIMAGE_DVD"] and series >= "lucid":
1040 for arch in config.arches:923 for arch in config.arches:
1041 if arch in ("amd64", "i386"):924 if arch in ("amd64", "i386"):
1042 # TODO: Disabled for raring (LP: #1154601)925 # TODO: Disabled for raring (LP: #1154601)
1043926
=== modified file 'lib/cdimage/project.py'
--- lib/cdimage/project.py 2017-05-01 02:22:20 +0000
+++ lib/cdimage/project.py 2019-03-07 16:20:18 +0000
@@ -29,19 +29,13 @@
29# values of 25 - (length of longest relevant architecture name).29# values of 25 - (length of longest relevant architecture name).
30project_map = {30project_map = {
31 "ubuntu": "Ubuntu",31 "ubuntu": "Ubuntu",
32 "ubuntu-desktop-next": "Ubuntu-Desktop-Next",
33 "ubuntu-zh_CN": "Ubuntu Chinese Edition",32 "ubuntu-zh_CN": "Ubuntu Chinese Edition",
34 "kubuntu": "Kubuntu",33 "kubuntu": "Kubuntu",
35 "kubuntu-active": "Kubuntu-Active",34 "kubuntu-active": "Kubuntu-Active",
36 "kubuntu-plasma5": "Kubuntu-Plasma-5",
37 "edubuntu": "Edubuntu",35 "edubuntu": "Edubuntu",
38 "xubuntu": "Xubuntu",36 "xubuntu": "Xubuntu",
39 "gobuntu": "Gobuntu",37 "gobuntu": "Gobuntu",
40 "ubuntu-server": "Ubuntu-Server",38 "ubuntu-server": "Ubuntu-Server",
41 "jeos": "Ubuntu-JeOS",
42 "ubuntu-mid": "Ubuntu-MID",
43 "ubuntu-netbook": "Ubuntu-Netbook",
44 "ubuntu-headless": "Ubuntu-Headless",
45 "ubuntustudio": "Ubuntu-Studio",39 "ubuntustudio": "Ubuntu-Studio",
46 "mythbuntu": "Mythbuntu",40 "mythbuntu": "Mythbuntu",
47 "lubuntu": "Lubuntu",41 "lubuntu": "Lubuntu",
@@ -50,15 +44,11 @@
50 "ubuntu-gnome": "Ubuntu-GNOME",44 "ubuntu-gnome": "Ubuntu-GNOME",
51 "ubuntu-budgie": "Ubuntu-Budgie",45 "ubuntu-budgie": "Ubuntu-Budgie",
52 "ubuntu-mate": "Ubuntu-MATE",46 "ubuntu-mate": "Ubuntu-MATE",
53 "ubuntu-moblin-remix": "Ubuntu-Moblin-Remix",
54 "livecd-base": "LiveCD-Base",47 "livecd-base": "LiveCD-Base",
55 "ubuntu-core": "Ubuntu Core",48 "ubuntu-core": "Ubuntu Core",
56 "ubuntu-base": "Ubuntu-Base",49 "ubuntu-base": "Ubuntu-Base",
57 "ubuntu-touch-preview": "Ubuntu Touch Preview",50 "ubuntu-touch-preview": "Ubuntu Touch Preview",
58 "ubuntu-touch": "Ubuntu Touch",51 "ubuntu-touch": "Ubuntu Touch",
59 "ubuntu-touch-custom": "Ubuntu Touch Custom Build",
60 "tocd3": "TheOpenCDv3",
61 "tocd3.1": "TheOpenCDv3.1",
62}52}
6353
6454
6555
=== modified file 'lib/cdimage/tests/test_build.py'
--- lib/cdimage/tests/test_build.py 2018-01-09 01:47:28 +0000
+++ lib/cdimage/tests/test_build.py 2019-03-07 16:20:18 +0000
@@ -74,7 +74,7 @@
74 super(TestUpdateLocalIndices, self).setUp()74 super(TestUpdateLocalIndices, self).setUp()
75 self.config = Config(read=False)75 self.config = Config(read=False)
76 self.config.root = self.use_temp_dir()76 self.config.root = self.use_temp_dir()
77 self.config["DIST"] = "raring"77 self.config["DIST"] = "trusty"
78 self.config["CPUARCHES"] = "i386"78 self.config["CPUARCHES"] = "i386"
79 self.packages = os.path.join(self.temp_dir, "local", "packages")79 self.packages = os.path.join(self.temp_dir, "local", "packages")
80 self.database = os.path.join(self.temp_dir, "local", "database")80 self.database = os.path.join(self.temp_dir, "local", "database")
@@ -118,45 +118,45 @@
118 expected_command, cwd=self.packages)118 expected_command, cwd=self.packages)
119119
120 self.assertCountEqual([120 self.assertCountEqual([
121 "raring_local_binary-i386.list",121 "trusty_local_binary-i386.list",
122 "raring_local_debian-installer_binary-i386.list",122 "trusty_local_debian-installer_binary-i386.list",
123 ], os.listdir(self.dists))123 ], os.listdir(self.dists))
124 with open(os.path.join(124 with open(os.path.join(
125 self.dists, "raring_local_binary-i386.list")) as f:125 self.dists, "trusty_local_binary-i386.list")) as f:
126 self.assertCountEqual([126 self.assertCountEqual([
127 "pool/local/f/fake/fake_1_i386.deb",127 "pool/local/f/fake/fake_1_i386.deb",
128 "pool/local/f/fake/fake-nf_1_all.deb",128 "pool/local/f/fake/fake-nf_1_all.deb",
129 ], f.read().splitlines())129 ], f.read().splitlines())
130 with open(os.path.join(130 with open(os.path.join(
131 self.dists,131 self.dists,
132 "raring_local_debian-installer_binary-i386.list")) as f:132 "trusty_local_debian-installer_binary-i386.list")) as f:
133 self.assertCountEqual([133 self.assertCountEqual([
134 "pool/local/f/fake/fake-udeb_1_i386.udeb",134 "pool/local/f/fake/fake-udeb_1_i386.udeb",
135 "pool/local/f/fake/fake-udeb-indep_1_all.udeb",135 "pool/local/f/fake/fake-udeb-indep_1_all.udeb",
136 ], f.read().splitlines())136 ], f.read().splitlines())
137137
138 self.assertCountEqual([138 self.assertCountEqual([
139 "override.raring.local.i386",139 "override.trusty.local.i386",
140 "override.raring.local.debian-installer.i386",140 "override.trusty.local.debian-installer.i386",
141 ], os.listdir(self.indices))141 ], os.listdir(self.indices))
142 with open(os.path.join(142 with open(os.path.join(
143 self.indices, "override.raring.local.i386")) as f:143 self.indices, "override.trusty.local.i386")) as f:
144 self.assertCountEqual([144 self.assertCountEqual([
145 "fake\toptional\tlocal/misc",145 "fake\toptional\tlocal/misc",
146 "fake-nf\textra\tlocal/admin",146 "fake-nf\textra\tlocal/admin",
147 ], f.read().splitlines())147 ], f.read().splitlines())
148 with open(os.path.join(148 with open(os.path.join(
149 self.indices,149 self.indices,
150 "override.raring.local.debian-installer.i386")) as f:150 "override.trusty.local.debian-installer.i386")) as f:
151 self.assertCountEqual([151 self.assertCountEqual([
152 "fake-udeb\toptional\tlocal/debian-installer",152 "fake-udeb\toptional\tlocal/debian-installer",
153 "fake-udeb-indep\textra\tlocal/debian-installer",153 "fake-udeb-indep\textra\tlocal/debian-installer",
154 ], f.read().splitlines())154 ], f.read().splitlines())
155155
156 self.assertTrue(os.path.exists(os.path.join(156 self.assertTrue(os.path.exists(os.path.join(
157 self.packages, "dists", "raring", "local", "binary-i386")))157 self.packages, "dists", "trusty", "local", "binary-i386")))
158 self.assertTrue(os.path.exists(os.path.join(158 self.assertTrue(os.path.exists(os.path.join(
159 self.packages, "dists", "raring", "local", "debian-installer",159 self.packages, "dists", "trusty", "local", "debian-installer",
160 "binary-i386")))160 "binary-i386")))
161161
162162
@@ -189,23 +189,23 @@
189 raise osextras.FetchError189 raise osextras.FetchError
190190
191 mock_fetch.side_effect = fetch_side_effect191 mock_fetch.side_effect = fetch_side_effect
192 self.config["DIST"] = "oneiric"192 self.config["DIST"] = "precise"
193 self.config["ARCHES"] = "i386"193 self.config["ARCHES"] = "i386"
194 build_ubuntu_defaults_locale(self.config)194 build_ubuntu_defaults_locale(self.config)
195 output_dir = os.path.join(195 output_dir = os.path.join(
196 self.temp_dir, "scratch", "ubuntu-zh_CN", "oneiric", "daily-live",196 self.temp_dir, "scratch", "ubuntu-zh_CN", "precise", "daily-live",
197 "live")197 "live")
198 self.assertTrue(os.path.isdir(output_dir))198 self.assertTrue(os.path.isdir(output_dir))
199 self.assertCountEqual([199 self.assertCountEqual([
200 "oneiric-desktop-i386.iso",200 "precise-desktop-i386.iso",
201 "oneiric-desktop-i386.list",201 "precise-desktop-i386.list",
202 "oneiric-desktop-i386.manifest",202 "precise-desktop-i386.manifest",
203 "oneiric-desktop-i386.manifest-remove",203 "precise-desktop-i386.manifest-remove",
204 "oneiric-desktop-i386.size",204 "precise-desktop-i386.size",
205 ], os.listdir(output_dir))205 ], os.listdir(output_dir))
206 mock_check_call.assert_called_once_with([206 mock_check_call.assert_called_once_with([
207 os.path.join(self.temp_dir, "debian-cd", "tools", "pi-makelist"),207 os.path.join(self.temp_dir, "debian-cd", "tools", "pi-makelist"),
208 os.path.join(output_dir, "oneiric-desktop-i386.iso"),208 os.path.join(output_dir, "precise-desktop-i386.iso"),
209 ], stdout=mock.ANY)209 ], stdout=mock.ANY)
210210
211211
@@ -243,7 +243,7 @@
243 mock_fetch.side_effect = fetch_side_effect243 mock_fetch.side_effect = fetch_side_effect
244 mock_sign.side_effect = sign_side_effect244 mock_sign.side_effect = sign_side_effect
245 self.config["PROJECT"] = "livecd-base"245 self.config["PROJECT"] = "livecd-base"
246 self.config["DIST"] = "raring"246 self.config["DIST"] = "trusty"
247 self.config["IMAGE_TYPE"] = "livecd-base"247 self.config["IMAGE_TYPE"] = "livecd-base"
248 self.config["ARCHES"] = "i386"248 self.config["ARCHES"] = "i386"
249 self.capture_logging()249 self.capture_logging()
@@ -253,7 +253,7 @@
253 self.epoch_date,253 self.epoch_date,
254 ])254 ])
255 live_dir = os.path.join(255 live_dir = os.path.join(
256 self.temp_dir, "scratch", "livecd-base", "raring", "livecd-base",256 self.temp_dir, "scratch", "livecd-base", "trusty", "livecd-base",
257 "live")257 "live")
258 self.assertTrue(os.path.isdir(live_dir))258 self.assertTrue(os.path.isdir(live_dir))
259 self.assertCountEqual(259 self.assertCountEqual(
@@ -271,7 +271,7 @@
271271
272 mock_fetch.side_effect = fetch_side_effect272 mock_fetch.side_effect = fetch_side_effect
273 self.config["PROJECT"] = "ubuntu-base"273 self.config["PROJECT"] = "ubuntu-base"
274 self.config["DIST"] = "raring"274 self.config["DIST"] = "trusty"
275 self.config["IMAGE_TYPE"] = "daily"275 self.config["IMAGE_TYPE"] = "daily"
276 self.config["ARCHES"] = "i386"276 self.config["ARCHES"] = "i386"
277 self.capture_logging()277 self.capture_logging()
@@ -283,15 +283,15 @@
283 self.epoch_date,283 self.epoch_date,
284 ])284 ])
285 output_dir = os.path.join(285 output_dir = os.path.join(
286 self.temp_dir, "scratch", "ubuntu-base", "raring", "daily",286 self.temp_dir, "scratch", "ubuntu-base", "trusty", "daily",
287 "debian-cd", "i386")287 "debian-cd", "i386")
288 self.assertTrue(os.path.isdir(output_dir))288 self.assertTrue(os.path.isdir(output_dir))
289 self.assertCountEqual([289 self.assertCountEqual([
290 "raring-base-i386.manifest",290 "trusty-base-i386.manifest",
291 "raring-base-i386.raw",291 "trusty-base-i386.raw",
292 "raring-base-i386.type",292 "trusty-base-i386.type",
293 ], os.listdir(output_dir))293 ], os.listdir(output_dir))
294 with open(os.path.join(output_dir, "raring-base-i386.type")) as f:294 with open(os.path.join(output_dir, "trusty-base-i386.type")) as f:
295 self.assertEqual("tar archive\n", f.read())295 self.assertEqual("tar archive\n", f.read())
296296
297 @mock.patch("cdimage.osextras.fetch")297 @mock.patch("cdimage.osextras.fetch")
@@ -376,7 +376,7 @@
376 mock_fetch.side_effect = fetch_side_effect376 mock_fetch.side_effect = fetch_side_effect
377 self.config["CDIMAGE_PREINSTALLED"] = "1"377 self.config["CDIMAGE_PREINSTALLED"] = "1"
378 self.config["PROJECT"] = project378 self.config["PROJECT"] = project
379 self.config["DIST"] = "saucy"379 self.config["DIST"] = "trusty"
380 self.config["IMAGE_TYPE"] = "daily-preinstalled"380 self.config["IMAGE_TYPE"] = "daily-preinstalled"
381 self.config["ARCHES"] = "armhf"381 self.config["ARCHES"] = "armhf"
382 self.capture_logging()382 self.capture_logging()
@@ -388,34 +388,34 @@
388 self.epoch_date,388 self.epoch_date,
389 ])389 ])
390 output_dir = os.path.join(390 output_dir = os.path.join(
391 self.temp_dir, "scratch", project, "saucy",391 self.temp_dir, "scratch", project, "trusty",
392 "daily-preinstalled", "debian-cd", "armhf")392 "daily-preinstalled", "debian-cd", "armhf")
393 self.assertTrue(os.path.isdir(output_dir))393 self.assertTrue(os.path.isdir(output_dir))
394 touch_files = ["saucy-preinstalled-boot-%s+%s.img" % (394 touch_files = ["trusty-preinstalled-boot-%s+%s.img" % (
395 touch_target.ubuntu_arch, touch_target.subarch)395 touch_target.ubuntu_arch, touch_target.subarch)
396 for touch_target in Touch.list_targets_by_ubuntu_arch("armhf")]396 for touch_target in Touch.list_targets_by_ubuntu_arch("armhf")]
397 touch_files.extend(["saucy-preinstalled-recovery-%s+%s.img" % (397 touch_files.extend(["trusty-preinstalled-recovery-%s+%s.img" % (
398 touch_target.android_arch, touch_target.subarch)398 touch_target.android_arch, touch_target.subarch)
399 for touch_target in Touch.list_targets_by_ubuntu_arch("armhf")])399 for touch_target in Touch.list_targets_by_ubuntu_arch("armhf")])
400 touch_files.extend(["saucy-preinstalled-system-%s+%s.img" % (400 touch_files.extend(["trusty-preinstalled-system-%s+%s.img" % (
401 touch_target.android_arch, touch_target.subarch)401 touch_target.android_arch, touch_target.subarch)
402 for touch_target in Touch.list_targets_by_ubuntu_arch("armhf")])402 for touch_target in Touch.list_targets_by_ubuntu_arch("armhf")])
403 touch_files.extend([403 touch_files.extend([
404 "saucy-preinstalled-touch-armhf.manifest",404 "trusty-preinstalled-touch-armhf.manifest",
405 "saucy-preinstalled-touch-armhf.raw",405 "trusty-preinstalled-touch-armhf.raw",
406 "saucy-preinstalled-touch-armhf.type",406 "trusty-preinstalled-touch-armhf.type",
407 "saucy-preinstalled-touch-armhf.tar.gz",407 "trusty-preinstalled-touch-armhf.tar.gz",
408 "saucy-preinstalled-touch-armhf.custom.tar.gz",408 "trusty-preinstalled-touch-armhf.custom.tar.gz",
409 ])409 ])
410 self.assertCountEqual(touch_files, os.listdir(output_dir))410 self.assertCountEqual(touch_files, os.listdir(output_dir))
411 with open(os.path.join(411 with open(os.path.join(
412 output_dir, "saucy-preinstalled-touch-armhf.type")412 output_dir, "trusty-preinstalled-touch-armhf.type")
413 ) as f:413 ) as f:
414 self.assertEqual("tar archive\n", f.read())414 self.assertEqual("tar archive\n", f.read())
415 for touch_target in Touch.list_targets_by_ubuntu_arch("armhf"):415 for touch_target in Touch.list_targets_by_ubuntu_arch("armhf"):
416 system_img = "saucy-preinstalled-system-%s+%s.img" % (416 system_img = "trusty-preinstalled-system-%s+%s.img" % (
417 touch_target.android_arch, touch_target.subarch)417 touch_target.android_arch, touch_target.subarch)
418 recovery_img = "saucy-preinstalled-recovery-%s+%s.img" % (418 recovery_img = "trusty-preinstalled-recovery-%s+%s.img" % (
419 touch_target.android_arch, touch_target.subarch)419 touch_target.android_arch, touch_target.subarch)
420 self.assertTrue(os.path.exists(420 self.assertTrue(os.path.exists(
421 os.path.join(output_dir, system_img)))421 os.path.join(output_dir, system_img)))
@@ -425,41 +425,6 @@
425 def test_ubuntu_touch(self):425 def test_ubuntu_touch(self):
426 self._perform_ubuntu_touch_testing("ubuntu-touch")426 self._perform_ubuntu_touch_testing("ubuntu-touch")
427427
428 def test_ubuntu_touch_custom(self):
429 self._perform_ubuntu_touch_testing("ubuntu-touch-custom")
430
431 @mock.patch("cdimage.osextras.fetch")
432 def test_ubuntu_desktop_next_system_image(self, mock_fetch):
433 def fetch_side_effect(config, source, target):
434 if (target.endswith(".manifest") or
435 target.endswith(".rootfs.tar.gz")):
436 touch(target)
437 else:
438 raise osextras.FetchError
439
440 mock_fetch.side_effect = fetch_side_effect
441 self.config["PROJECT"] = "ubuntu-desktop-next"
442 self.config["SUBPROJECT"] = "system-image"
443 self.config["DIST"] = "utopic"
444 self.config["IMAGE_TYPE"] = "daily"
445 self.config["ARCHES"] = "i386"
446 self.capture_logging()
447 build_livecd_base(self.config)
448 self.assertLogEqual([
449 "===== Downloading live filesystem images =====",
450 self.epoch_date,
451 "===== Copying images to debian-cd output directory =====",
452 self.epoch_date,
453 ])
454 output_dir = os.path.join(
455 self.temp_dir, "scratch", "ubuntu-desktop-next", "utopic", "daily",
456 "live")
457 self.assertTrue(os.path.isdir(output_dir))
458 self.assertCountEqual([
459 "i386.manifest",
460 "i386.rootfs.tar.gz",
461 ], os.listdir(output_dir))
462
463428
464class TestExtractDebootstrap(TestCase):429class TestExtractDebootstrap(TestCase):
465 def setUp(self):430 def setUp(self):
@@ -469,27 +434,27 @@
469434
470 def test_debootstrap_script(self):435 def test_debootstrap_script(self):
471 for series, script in (436 for series, script in (
472 ("gutsy", "usr/lib/debootstrap/scripts/gutsy"),437 ("precise", "usr/share/debootstrap/scripts/precise"),
473 ("hardy", "usr/share/debootstrap/scripts/hardy"),438 ("bionic", "usr/share/debootstrap/scripts/bionic"),
474 ):439 ):
475 self.config["DIST"] = series440 self.config["DIST"] = series
476 self.assertEqual(script, _debootstrap_script(self.config))441 self.assertEqual(script, _debootstrap_script(self.config))
477442
478 def test_extract_debootstrap(self):443 def test_extract_debootstrap(self):
479 self.config["PROJECT"] = "ubuntu"444 self.config["PROJECT"] = "ubuntu"
480 self.config["DIST"] = "raring"445 self.config["DIST"] = "trusty"
481 self.config["IMAGE_TYPE"] = "daily"446 self.config["IMAGE_TYPE"] = "daily"
482 self.config["ARCHES"] = "amd64+mac"447 self.config["ARCHES"] = "amd64+mac"
483 mirror_dir = os.path.join(self.temp_dir, "ftp")448 mirror_dir = os.path.join(self.temp_dir, "ftp")
484 packages_path = os.path.join(449 packages_path = os.path.join(
485 mirror_dir, "dists", "raring", "main", "debian-installer",450 mirror_dir, "dists", "trusty", "main", "debian-installer",
486 "binary-amd64", "Packages.gz")451 "binary-amd64", "Packages.gz")
487 udeb_path = os.path.join(452 udeb_path = os.path.join(
488 mirror_dir, "pool", "main", "d", "debootstrap",453 mirror_dir, "pool", "main", "d", "debootstrap",
489 "debootstrap-udeb_1_all.udeb")454 "debootstrap-udeb_1_all.udeb")
490 self.make_deb(455 self.make_deb(
491 udeb_path, "debian-installer", "extra",456 udeb_path, "debian-installer", "extra",
492 files={"/usr/share/debootstrap/scripts/raring": b"sentinel"})457 files={"/usr/share/debootstrap/scripts/trusty": b"sentinel"})
493 os.makedirs(os.path.dirname(packages_path))458 os.makedirs(os.path.dirname(packages_path))
494 with gzip.GzipFile(packages_path, "wb") as packages:459 with gzip.GzipFile(packages_path, "wb") as packages:
495 ftparchive = subprocess.Popen(460 ftparchive = subprocess.Popen(
@@ -500,8 +465,8 @@
500 self.assertEqual(0, ftparchive.returncode)465 self.assertEqual(0, ftparchive.returncode)
501 extract_debootstrap(self.config)466 extract_debootstrap(self.config)
502 output_path = os.path.join(467 output_path = os.path.join(
503 self.temp_dir, "scratch", "ubuntu", "raring", "daily",468 self.temp_dir, "scratch", "ubuntu", "trusty", "daily",
504 "debootstrap", "raring-amd64+mac")469 "debootstrap", "trusty-amd64+mac")
505 self.assertTrue(os.path.exists(output_path))470 self.assertTrue(os.path.exists(output_path))
506 with open(output_path, "rb") as output:471 with open(output_path, "rb") as output:
507 self.assertEqual(b"sentinel", output.read())472 self.assertEqual(b"sentinel", output.read())
@@ -523,10 +488,10 @@
523 @mock.patch("cdimage.osextras.unlink_force")488 @mock.patch("cdimage.osextras.unlink_force")
524 def test_lock_build_image_set(self, mock_unlink_force, mock_check_call):489 def test_lock_build_image_set(self, mock_unlink_force, mock_check_call):
525 self.config["PROJECT"] = "ubuntu"490 self.config["PROJECT"] = "ubuntu"
526 self.config["DIST"] = "raring"491 self.config["DIST"] = "trusty"
527 self.config["IMAGE_TYPE"] = "daily"492 self.config["IMAGE_TYPE"] = "daily"
528 expected_lock_path = os.path.join(493 expected_lock_path = os.path.join(
529 self.temp_dir, "etc", ".lock-build-image-set-ubuntu-raring-daily")494 self.temp_dir, "etc", ".lock-build-image-set-ubuntu-trusty-daily")
530 self.assertFalse(os.path.exists(expected_lock_path))495 self.assertFalse(os.path.exists(expected_lock_path))
531 with lock_build_image_set(self.config):496 with lock_build_image_set(self.config):
532 mock_check_call.assert_called_once_with([497 mock_check_call.assert_called_once_with([
@@ -539,12 +504,12 @@
539 def test_lock_build_image_set_chinese(self, mock_unlink_force,504 def test_lock_build_image_set_chinese(self, mock_unlink_force,
540 mock_check_call):505 mock_check_call):
541 self.config["PROJECT"] = "ubuntu"506 self.config["PROJECT"] = "ubuntu"
542 self.config["DIST"] = "raring"507 self.config["DIST"] = "trusty"
543 self.config["IMAGE_TYPE"] = "daily"508 self.config["IMAGE_TYPE"] = "daily"
544 self.config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"509 self.config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"
545 expected_lock_path = os.path.join(510 expected_lock_path = os.path.join(
546 self.temp_dir, "etc",511 self.temp_dir, "etc",
547 ".lock-build-image-set-ubuntu-chinese-edition-raring-daily")512 ".lock-build-image-set-ubuntu-chinese-edition-trusty-daily")
548 self.assertFalse(os.path.exists(expected_lock_path))513 self.assertFalse(os.path.exists(expected_lock_path))
549 with lock_build_image_set(self.config):514 with lock_build_image_set(self.config):
550 mock_check_call.assert_called_once_with([515 mock_check_call.assert_called_once_with([
@@ -554,25 +519,20 @@
554519
555 def test_configure_onlyfree_unsupported(self):520 def test_configure_onlyfree_unsupported(self):
556 for project, series, onlyfree, unsupported in (521 for project, series, onlyfree, unsupported in (
557 ("ubuntu", "raring", False, False),522 ("ubuntu", "trusty", False, False),
558 ("gobuntu", "hardy", True, False),523 ("gobuntu", "hardy", True, False),
559 ("edubuntu", "jaunty", False, False),524 ("edubuntu", "precise", False, True),
560 ("edubuntu", "karmic", False, True),525 ("xubuntu", "precise", False, True),
561 ("xubuntu", "gutsy", False, False),
562 ("xubuntu", "hardy", False, True),
563 ("kubuntu", "precise", False, False),526 ("kubuntu", "precise", False, False),
564 ("kubuntu", "quantal", False, True),527 ("kubuntu", "trusty", False, True),
565 ("kubuntu-active", "raring", False, True),528 ("kubuntu-active", "trusty", False, True),
566 ("kubuntu-plasma5", "utopic", False, True),529 ("ubuntustudio", "trusty", False, True),
567 ("ubuntustudio", "raring", False, True),530 ("mythbuntu", "trusty", False, True),
568 ("mythbuntu", "raring", False, True),531 ("lubuntu", "trusty", False, True),
569 ("lubuntu", "raring", False, True),532 ("ubuntukylin", "trusty", False, True),
570 ("ubuntukylin", "raring", False, True),533 ("ubuntu-gnome", "trusty", False, True),
571 ("ubuntu-gnome", "raring", False, True),534 ("ubuntu-budgie", "bionic", False, True),
572 ("ubuntu-budgie", "zesty", False, True),535 ("ubuntu-mate", "xenial", False, True),
573 ("ubuntu-mate", "vivid", False, True),
574 ("ubuntu-moblin-remix", "raring", False, True),
575 ("ubuntu-desktop-next", "utopic", False, False),
576 ):536 ):
577 config = Config(read=False)537 config = Config(read=False)
578 config["PROJECT"] = project538 config["PROJECT"] = project
@@ -605,7 +565,7 @@
605565
606 def test_open_log_writes_log(self):566 def test_open_log_writes_log(self):
607 self.config["PROJECT"] = "ubuntu"567 self.config["PROJECT"] = "ubuntu"
608 self.config["DIST"] = "raring"568 self.config["DIST"] = "trusty"
609 self.config["IMAGE_TYPE"] = "daily"569 self.config["IMAGE_TYPE"] = "daily"
610 self.config["CDIMAGE_DATE"] = "20130224"570 self.config["CDIMAGE_DATE"] = "20130224"
611 pid = os.fork()571 pid = os.fork()
@@ -620,7 +580,7 @@
620 else: # parent580 else: # parent
621 self.wait_for_pid(pid, 0)581 self.wait_for_pid(pid, 0)
622 expected_log_path = os.path.join(582 expected_log_path = os.path.join(
623 self.temp_dir, "log", "ubuntu", "raring", "daily-20130224.log")583 self.temp_dir, "log", "ubuntu", "trusty", "daily-20130224.log")
624 self.assertTrue(os.path.exists(expected_log_path))584 self.assertTrue(os.path.exists(expected_log_path))
625 with open(expected_log_path) as log:585 with open(expected_log_path) as log:
626 self.assertEqual([586 self.assertEqual([
@@ -631,7 +591,7 @@
631591
632 def test_open_log_chinese(self):592 def test_open_log_chinese(self):
633 self.config["PROJECT"] = "ubuntu"593 self.config["PROJECT"] = "ubuntu"
634 self.config["DIST"] = "raring"594 self.config["DIST"] = "trusty"
635 self.config["IMAGE_TYPE"] = "daily"595 self.config["IMAGE_TYPE"] = "daily"
636 self.config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"596 self.config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"
637 self.config["CDIMAGE_DATE"] = "20130224"597 self.config["CDIMAGE_DATE"] = "20130224"
@@ -647,7 +607,7 @@
647 else: # parent607 else: # parent
648 self.wait_for_pid(pid, 0)608 self.wait_for_pid(pid, 0)
649 expected_log_path = os.path.join(609 expected_log_path = os.path.join(
650 self.temp_dir, "log", "ubuntu-chinese-edition", "raring",610 self.temp_dir, "log", "ubuntu-chinese-edition", "trusty",
651 "daily-20130224.log")611 "daily-20130224.log")
652 self.assertTrue(os.path.exists(expected_log_path))612 self.assertTrue(os.path.exists(expected_log_path))
653 with open(expected_log_path) as log:613 with open(expected_log_path) as log:
@@ -880,7 +840,7 @@
880 ["make", "-C", os.path.dirname(path)])840 ["make", "-C", os.path.dirname(path)])
881841
882 def test_configure_splash(self):842 def test_configure_splash(self):
883 data_dir = os.path.join(self.temp_dir, "debian-cd", "data", "raring")843 data_dir = os.path.join(self.temp_dir, "debian-cd", "data", "trusty")
884 for key, extension in (844 for key, extension in (
885 ("SPLASHRLE", "rle"),845 ("SPLASHRLE", "rle"),
886 ("GFXSPLASH", "pcx"),846 ("GFXSPLASH", "pcx"),
@@ -890,7 +850,7 @@
890 config = Config(read=False)850 config = Config(read=False)
891 config.root = self.temp_dir851 config.root = self.temp_dir
892 config["PROJECT"] = "kubuntu"852 config["PROJECT"] = "kubuntu"
893 config["DIST"] = "raring"853 config["DIST"] = "trusty"
894 path = os.path.join(854 path = os.path.join(
895 data_dir, "%s.%s" % (855 data_dir, "%s.%s" % (
896 "kubuntu" if project_specific else "splash",856 "kubuntu" if project_specific else "splash",
@@ -941,10 +901,10 @@
941901
942 def test_fix_permissions(self):902 def test_fix_permissions(self):
943 self.config["PROJECT"] = "ubuntu"903 self.config["PROJECT"] = "ubuntu"
944 self.config["DIST"] = "raring"904 self.config["DIST"] = "trusty"
945 self.config["IMAGE_TYPE"] = "daily"905 self.config["IMAGE_TYPE"] = "daily"
946 scratch_dir = os.path.join(906 scratch_dir = os.path.join(
947 self.temp_dir, "scratch", "ubuntu", "raring", "daily")907 self.temp_dir, "scratch", "ubuntu", "trusty", "daily")
948 subdir = os.path.join(scratch_dir, "x")908 subdir = os.path.join(scratch_dir, "x")
949 dir_one = os.path.join(subdir, "1")909 dir_one = os.path.join(subdir, "1")
950 file_two = os.path.join(subdir, "2")910 file_two = os.path.join(subdir, "2")
@@ -978,14 +938,14 @@
978938
979 @mock.patch("cdimage.build.send_mail")939 @mock.patch("cdimage.build.send_mail")
980 def test_notify_failure_no_recipients(self, mock_send_mail):940 def test_notify_failure_no_recipients(self, mock_send_mail):
981 self.config["DIST"] = "raring"941 self.config["DIST"] = "trusty"
982 notify_failure(self.config, None)942 notify_failure(self.config, None)
983 self.assertEqual(0, mock_send_mail.call_count)943 self.assertEqual(0, mock_send_mail.call_count)
984944
985 @mock.patch("cdimage.build.send_mail")945 @mock.patch("cdimage.build.send_mail")
986 def test_notify_failure_no_log(self, mock_send_mail):946 def test_notify_failure_no_log(self, mock_send_mail):
987 self.config["PROJECT"] = "ubuntu"947 self.config["PROJECT"] = "ubuntu"
988 self.config["DIST"] = "raring"948 self.config["DIST"] = "trusty"
989 self.config["IMAGE_TYPE"] = "daily"949 self.config["IMAGE_TYPE"] = "daily"
990 self.config["CDIMAGE_DATE"] = "20130225"950 self.config["CDIMAGE_DATE"] = "20130225"
991 path = os.path.join(self.temp_dir, "production", "notify-addresses")951 path = os.path.join(self.temp_dir, "production", "notify-addresses")
@@ -993,13 +953,13 @@
993 print("ALL\tfoo@example.org", file=notify_addresses)953 print("ALL\tfoo@example.org", file=notify_addresses)
994 notify_failure(self.config, None)954 notify_failure(self.config, None)
995 mock_send_mail.assert_called_once_with(955 mock_send_mail.assert_called_once_with(
996 "CD image ubuntu/raring/daily failed to build on 20130225",956 "CD image ubuntu/trusty/daily failed to build on 20130225",
997 "build-image-set", ["foo@example.org"], "")957 "build-image-set", ["foo@example.org"], "")
998958
999 @mock.patch("cdimage.build.send_mail")959 @mock.patch("cdimage.build.send_mail")
1000 def test_notify_failure_log(self, mock_send_mail):960 def test_notify_failure_log(self, mock_send_mail):
1001 self.config["PROJECT"] = "ubuntu"961 self.config["PROJECT"] = "ubuntu"
1002 self.config["DIST"] = "raring"962 self.config["DIST"] = "trusty"
1003 self.config["IMAGE_TYPE"] = "daily"963 self.config["IMAGE_TYPE"] = "daily"
1004 self.config["CDIMAGE_DATE"] = "20130225"964 self.config["CDIMAGE_DATE"] = "20130225"
1005 path = os.path.join(self.temp_dir, "production", "notify-addresses")965 path = os.path.join(self.temp_dir, "production", "notify-addresses")
@@ -1010,14 +970,14 @@
1010 print("Log", file=log)970 print("Log", file=log)
1011 notify_failure(self.config, log_path)971 notify_failure(self.config, log_path)
1012 mock_send_mail.assert_called_once_with(972 mock_send_mail.assert_called_once_with(
1013 "CD image ubuntu/raring/daily failed to build on 20130225",973 "CD image ubuntu/trusty/daily failed to build on 20130225",
1014 "build-image-set", ["foo@example.org"], mock.ANY)974 "build-image-set", ["foo@example.org"], mock.ANY)
1015 self.assertEqual(log_path, mock_send_mail.call_args[0][3].name)975 self.assertEqual(log_path, mock_send_mail.call_args[0][3].name)
1016976
1017 @mock.patch("cdimage.build.send_mail")977 @mock.patch("cdimage.build.send_mail")
1018 def test_notify_failure_chinese(self, mock_send_mail):978 def test_notify_failure_chinese(self, mock_send_mail):
1019 self.config["PROJECT"] = "ubuntu"979 self.config["PROJECT"] = "ubuntu"
1020 self.config["DIST"] = "raring"980 self.config["DIST"] = "trusty"
1021 self.config["IMAGE_TYPE"] = "daily"981 self.config["IMAGE_TYPE"] = "daily"
1022 self.config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"982 self.config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"
1023 self.config["CDIMAGE_DATE"] = "20130225"983 self.config["CDIMAGE_DATE"] = "20130225"
@@ -1029,7 +989,7 @@
1029 print("Log", file=log)989 print("Log", file=log)
1030 notify_failure(self.config, log_path)990 notify_failure(self.config, log_path)
1031 mock_send_mail.assert_called_once_with(991 mock_send_mail.assert_called_once_with(
1032 "CD image ubuntu-chinese-edition/raring/daily failed to build on "992 "CD image ubuntu-chinese-edition/trusty/daily failed to build on "
1033 "20130225",993 "20130225",
1034 "build-image-set", ["foo@example.org"], mock.ANY)994 "build-image-set", ["foo@example.org"], mock.ANY)
1035 self.assertEqual(log_path, mock_send_mail.call_args[0][3].name)995 self.assertEqual(log_path, mock_send_mail.call_args[0][3].name)
@@ -1055,14 +1015,14 @@
1055 def test_build_image_set_locked_notifies_on_failure(1015 def test_build_image_set_locked_notifies_on_failure(
1056 self, mock_send_mail, mock_sync_local_mirror, *args):1016 self, mock_send_mail, mock_sync_local_mirror, *args):
1057 self.config["PROJECT"] = "ubuntu"1017 self.config["PROJECT"] = "ubuntu"
1058 self.config["DIST"] = "raring"1018 self.config["DIST"] = "trusty"
1059 self.config["IMAGE_TYPE"] = "daily"1019 self.config["IMAGE_TYPE"] = "daily"
1060 self.config["CDIMAGE_DATE"] = "20130225"1020 self.config["CDIMAGE_DATE"] = "20130225"
1061 path = os.path.join(self.temp_dir, "production", "notify-addresses")1021 path = os.path.join(self.temp_dir, "production", "notify-addresses")
1062 with mkfile(path, "w") as notify_addresses:1022 with mkfile(path, "w") as notify_addresses:
1063 print("ALL\tfoo@example.org", file=notify_addresses)1023 print("ALL\tfoo@example.org", file=notify_addresses)
1064 log_path = os.path.join(1024 log_path = os.path.join(
1065 self.temp_dir, "log", "ubuntu", "raring", "daily-20130225.log")1025 self.temp_dir, "log", "ubuntu", "trusty", "daily-20130225.log")
1066 os.makedirs(os.path.join(self.temp_dir, "etc"))1026 os.makedirs(os.path.join(self.temp_dir, "etc"))
10671027
1068 def force_failure(*args):1028 def force_failure(*args):
@@ -1113,7 +1073,7 @@
1113 mock_tracker_set_rebuild_status, mock_call):1073 mock_tracker_set_rebuild_status, mock_call):
1114 self.config["PROJECT"] = "ubuntu"1074 self.config["PROJECT"] = "ubuntu"
1115 self.config["CAPPROJECT"] = "Ubuntu"1075 self.config["CAPPROJECT"] = "Ubuntu"
1116 self.config["DIST"] = "raring"1076 self.config["DIST"] = "trusty"
1117 self.config["IMAGE_TYPE"] = "daily"1077 self.config["IMAGE_TYPE"] = "daily"
1118 self.config["ARCHES"] = "amd64 i386"1078 self.config["ARCHES"] = "amd64 i386"
1119 self.config["CPUARCHES"] = "amd64 i386"1079 self.config["CPUARCHES"] = "amd64 i386"
@@ -1127,8 +1087,8 @@
1127 touch(germinate_path)1087 touch(germinate_path)
1128 os.chmod(germinate_path, 0o755)1088 os.chmod(germinate_path, 0o755)
1129 germinate_output = os.path.join(1089 germinate_output = os.path.join(
1130 self.temp_dir, "scratch", "ubuntu", "raring", "daily", "germinate")1090 self.temp_dir, "scratch", "ubuntu", "trusty", "daily", "germinate")
1131 log_dir = os.path.join(self.temp_dir, "log", "ubuntu", "raring")1091 log_dir = os.path.join(self.temp_dir, "log", "ubuntu", "trusty")
11321092
1133 def side_effect(command, *args, **kwargs):1093 def side_effect(command, *args, **kwargs):
1134 if command[0] == germinate_path:1094 if command[0] == germinate_path:
@@ -1150,8 +1110,8 @@
1150 germinate_path,1110 germinate_path,
1151 "--seed-source", mock.ANY,1111 "--seed-source", mock.ANY,
1152 "--mirror", "file://%s/" % germinate_output,1112 "--mirror", "file://%s/" % germinate_output,
1153 "--seed-dist", "ubuntu.raring",1113 "--seed-dist", "ubuntu.trusty",
1154 "--dist", "raring,raring-security,raring-updates",1114 "--dist", "trusty,trusty-security,trusty-updates",
1155 "--arch", arch,1115 "--arch", arch,
1156 "--components", "main",1116 "--components", "main",
1157 "--no-rdepends",1117 "--no-rdepends",
@@ -1204,8 +1164,8 @@
1204 DATE1164 DATE
1205 ===== Germinating =====1165 ===== Germinating =====
1206 DATE1166 DATE
1207 Germinating for raring/amd64 ...1167 Germinating for trusty/amd64 ...
1208 Germinating for raring/i386 ...1168 Germinating for trusty/i386 ...
1209 ===== Generating new task lists =====1169 ===== Generating new task lists =====
1210 DATE1170 DATE
1211 ===== Checking for other task changes =====1171 ===== Checking for other task changes =====
@@ -1226,10 +1186,10 @@
1226 "cdimage.build.build_image_set_locked", side_effect=KeyboardInterrupt)1186 "cdimage.build.build_image_set_locked", side_effect=KeyboardInterrupt)
1227 def test_build_image_set_interrupted(self, *args):1187 def test_build_image_set_interrupted(self, *args):
1228 self.config["PROJECT"] = "ubuntu"1188 self.config["PROJECT"] = "ubuntu"
1229 self.config["DIST"] = "raring"1189 self.config["DIST"] = "trusty"
1230 self.config["IMAGE_TYPE"] = "daily"1190 self.config["IMAGE_TYPE"] = "daily"
1231 lock_path = os.path.join(1191 lock_path = os.path.join(
1232 self.temp_dir, "etc", ".lock-build-image-set-ubuntu-raring-daily")1192 self.temp_dir, "etc", ".lock-build-image-set-ubuntu-trusty-daily")
1233 multipidfile_path = os.path.join(1193 multipidfile_path = os.path.join(
1234 self.temp_dir, "etc", ".build-image-set-pids")1194 self.temp_dir, "etc", ".build-image-set-pids")
1235 os.makedirs(os.path.dirname(lock_path))1195 os.makedirs(os.path.dirname(lock_path))
@@ -1241,10 +1201,10 @@
1241 @mock.patch("cdimage.build.build_image_set_locked")1201 @mock.patch("cdimage.build.build_image_set_locked")
1242 def test_build_image_set_terminated(self, mock_build_image_set_locked):1202 def test_build_image_set_terminated(self, mock_build_image_set_locked):
1243 self.config["PROJECT"] = "ubuntu"1203 self.config["PROJECT"] = "ubuntu"
1244 self.config["DIST"] = "raring"1204 self.config["DIST"] = "trusty"
1245 self.config["IMAGE_TYPE"] = "daily"1205 self.config["IMAGE_TYPE"] = "daily"
1246 lock_path = os.path.join(1206 lock_path = os.path.join(
1247 self.temp_dir, "etc", ".lock-build-image-set-ubuntu-raring-daily")1207 self.temp_dir, "etc", ".lock-build-image-set-ubuntu-trusty-daily")
1248 multipidfile_path = os.path.join(1208 multipidfile_path = os.path.join(
1249 self.temp_dir, "etc", ".build-image-set-pids")1209 self.temp_dir, "etc", ".build-image-set-pids")
1250 os.makedirs(os.path.dirname(lock_path))1210 os.makedirs(os.path.dirname(lock_path))
@@ -1264,10 +1224,10 @@
1264 @mock.patch("cdimage.build.build_image_set_locked")1224 @mock.patch("cdimage.build.build_image_set_locked")
1265 def test_build_image_set(self, mock_build_image_set_locked):1225 def test_build_image_set(self, mock_build_image_set_locked):
1266 self.config["PROJECT"] = "ubuntu"1226 self.config["PROJECT"] = "ubuntu"
1267 self.config["DIST"] = "raring"1227 self.config["DIST"] = "trusty"
1268 self.config["IMAGE_TYPE"] = "daily"1228 self.config["IMAGE_TYPE"] = "daily"
1269 lock_path = os.path.join(1229 lock_path = os.path.join(
1270 self.temp_dir, "etc", ".lock-build-image-set-ubuntu-raring-daily")1230 self.temp_dir, "etc", ".lock-build-image-set-ubuntu-trusty-daily")
1271 multipidfile_path = os.path.join(1231 multipidfile_path = os.path.join(
1272 self.temp_dir, "etc", ".build-image-set-pids")1232 self.temp_dir, "etc", ".build-image-set-pids")
1273 os.makedirs(os.path.dirname(lock_path))1233 os.makedirs(os.path.dirname(lock_path))
12741234
=== modified file 'lib/cdimage/tests/test_build_id.py'
--- lib/cdimage/tests/test_build_id.py 2014-07-17 17:12:16 +0000
+++ lib/cdimage/tests/test_build_id.py 2019-03-07 16:20:18 +0000
@@ -66,12 +66,12 @@
66 config = Config(read=False)66 config = Config(read=False)
67 config.root = self.use_temp_dir()67 config.root = self.use_temp_dir()
68 config["PROJECT"] = "ubuntu"68 config["PROJECT"] = "ubuntu"
69 config["DIST"] = "raring"69 config["DIST"] = "trusty"
70 config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"70 config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"
71 os.mkdir(os.path.join(self.temp_dir, "etc"))71 os.mkdir(os.path.join(self.temp_dir, "etc"))
72 stamp = os.path.join(72 stamp = os.path.join(
73 config.root, "etc",73 config.root, "etc",
74 ".next-build-suffix-ubuntu-chinese-edition-raring-daily")74 ".next-build-suffix-ubuntu-chinese-edition-trusty-daily")
75 self.assertFalse(os.path.exists(stamp))75 self.assertFalse(os.path.exists(stamp))
76 self.assertEqual("20130225", next_build_id(config, ""))76 self.assertEqual("20130225", next_build_id(config, ""))
77 with open(stamp) as stamp_file:77 with open(stamp) as stamp_file:
7878
=== modified file 'lib/cdimage/tests/test_check_installable.py'
--- lib/cdimage/tests/test_check_installable.py 2017-08-27 06:42:48 +0000
+++ lib/cdimage/tests/test_check_installable.py 2019-03-07 16:20:18 +0000
@@ -41,7 +41,7 @@
41 self.config["PROJECT"] = "ubuntu"41 self.config["PROJECT"] = "ubuntu"
42 self.config["CAPPROJECT"] = "Ubuntu"42 self.config["CAPPROJECT"] = "Ubuntu"
43 self.config["IMAGE_TYPE"] = "daily"43 self.config["IMAGE_TYPE"] = "daily"
44 self.config["DIST"] = "warty"44 self.config["DIST"] = "precise"
45 self.config["ARCHES"] = "i386"45 self.config["ARCHES"] = "i386"
4646
47 def test_dirs(self):47 def test_dirs(self):
@@ -49,29 +49,29 @@
49 self.assertEqual(os.path.join(self.config.root, "britney"), britney)49 self.assertEqual(os.path.join(self.config.root, "britney"), britney)
50 self.assertEqual(50 self.assertEqual(
51 os.path.join(51 os.path.join(
52 self.config.root, "scratch", "ubuntu", "warty", "daily",52 self.config.root, "scratch", "ubuntu", "precise", "daily",
53 "tmp"),53 "tmp"),
54 image_top)54 image_top)
55 self.assertEqual(55 self.assertEqual(
56 os.path.join(56 os.path.join(
57 self.config.root, "scratch", "ubuntu", "warty", "daily",57 self.config.root, "scratch", "ubuntu", "precise", "daily",
58 "live"),58 "live"),
59 live)59 live)
60 self.assertEqual(60 self.assertEqual(
61 os.path.join(britney, "data", "ubuntu", "daily", "warty"), data)61 os.path.join(britney, "data", "ubuntu", "daily", "precise"), data)
6262
63 def test_prepare_no_packages(self):63 def test_prepare_no_packages(self):
64 _, _, _, data = _check_installable_dirs(self.config)64 _, _, _, data = _check_installable_dirs(self.config)
65 self.capture_logging()65 self.capture_logging()
66 _prepare_check_installable(self.config)66 _prepare_check_installable(self.config)
67 self.assertLogEqual(["No Packages.gz for warty/i386; not checking"])67 self.assertLogEqual(["No Packages.gz for precise/i386; not checking"])
68 self.assertEqual(["Sources"], os.listdir(data))68 self.assertEqual(["Sources"], os.listdir(data))
69 self.assertEqual(0, os.stat(os.path.join(data, "Sources")).st_size)69 self.assertEqual(0, os.stat(os.path.join(data, "Sources")).st_size)
7070
71 def test_prepare_with_packages(self):71 def test_prepare_with_packages(self):
72 _, image_top, _, data = _check_installable_dirs(self.config)72 _, image_top, _, data = _check_installable_dirs(self.config)
73 packages_gz = os.path.join(73 packages_gz = os.path.join(
74 image_top, "warty-i386", "CD1", "dists", "warty", "main",74 image_top, "precise-i386", "CD1", "dists", "precise", "main",
75 "binary-i386", "Packages.gz")75 "binary-i386", "Packages.gz")
76 os.makedirs(os.path.dirname(packages_gz))76 os.makedirs(os.path.dirname(packages_gz))
77 packages_gz_file = gzip.open(packages_gz, "wb")77 packages_gz_file = gzip.open(packages_gz, "wb")
@@ -125,5 +125,5 @@
125 "timeout", "30",125 "timeout", "30",
126 os.path.join(britney, "rptprobs.sh"), data,126 os.path.join(britney, "rptprobs.sh"), data,
127 os.path.join(127 os.path.join(
128 britney, "report", "ubuntu", "daily", "warty_probs.html"),128 britney, "report", "ubuntu", "daily", "precise_probs.html"),
129 "Ubuntu warty"], command)129 "Ubuntu precise"], command)
130130
=== modified file 'lib/cdimage/tests/test_config.py'
--- lib/cdimage/tests/test_config.py 2018-10-30 13:23:58 +0000
+++ lib/cdimage/tests/test_config.py 2019-03-07 16:20:18 +0000
@@ -295,12 +295,6 @@
295 self.assertEqual(None, config.core_series)295 self.assertEqual(None, config.core_series)
296 config["DIST"] = "xenial"296 config["DIST"] = "xenial"
297 self.assertEqual("16", config.core_series)297 self.assertEqual("16", config.core_series)
298 config["DIST"] = "yakkety"
299 self.assertEqual("16", config.core_series)
300 config["DIST"] = "zesty"
301 self.assertEqual("16", config.core_series)
302 config["DIST"] = "artful"
303 self.assertEqual("16", config.core_series)
304 config["DIST"] = "bionic"298 config["DIST"] = "bionic"
305 self.assertEqual("18", config.core_series)299 self.assertEqual("18", config.core_series)
306 config["DIST"] = "cosmic"300 config["DIST"] = "cosmic"
307301
=== modified file 'lib/cdimage/tests/test_germinate.py'
--- lib/cdimage/tests/test_germinate.py 2019-02-22 10:32:26 +0000
+++ lib/cdimage/tests/test_germinate.py 2019-03-07 16:20:18 +0000
@@ -68,10 +68,10 @@
6868
69 def test_output_dir(self):69 def test_output_dir(self):
70 self.config.root = "/cdimage"70 self.config.root = "/cdimage"
71 self.config["DIST"] = "raring"71 self.config["DIST"] = "bionic"
72 self.config["IMAGE_TYPE"] = "daily"72 self.config["IMAGE_TYPE"] = "daily"
73 self.assertEqual(73 self.assertEqual(
74 "/cdimage/scratch/ubuntu/raring/daily/germinate",74 "/cdimage/scratch/ubuntu/bionic/daily/germinate",
75 self.germination.output_dir("ubuntu"))75 self.germination.output_dir("ubuntu"))
7676
77 def test_seed_sources_local_seeds(self):77 def test_seed_sources_local_seeds(self):
@@ -82,18 +82,11 @@
8282
83 def test_seed_sources_bzr(self):83 def test_seed_sources_bzr(self):
84 for project, series, owners in (84 for project, series, owners in (
85 ("kubuntu", "natty", ["ubuntu-core-dev"]),85 ("kubuntu", "precise", ["kubuntu-dev"]),
86 ("kubuntu", "oneiric", ["kubuntu-dev"]),86 ("kubuntu-active", "precise", ["kubuntu-dev"]),
87 ("kubuntu-active", "natty", ["ubuntu-core-dev"]),87 ("mythbuntu", "trusty", ["mythbuntu-dev"]),
88 ("kubuntu-active", "oneiric", ["kubuntu-dev"]),88 ("ubuntu-budgie", "bionic", ["ubuntubudgie-dev"]),
89 ("kubuntu-plasma5", "utopic", ["kubuntu-dev"]),89 ("ubuntu-mate", "xenial", ["ubuntu-mate-dev"]),
90 ("mythbuntu", "raring", ["mythbuntu-dev"]),
91 ("xubuntu", "hardy", ["ubuntu-core-dev"]),
92 ("ubuntu-budgie", "zesty",
93 ["ubuntubudgie-dev"]),
94 ("ubuntu-mate", "vivid",
95 ["ubuntu-mate-dev"]),
96 ("ubuntu-moblin-remix", "hardy", ["moblin"]),
97 ("ubuntukylin", "trusty", ["ubuntu-core-dev"]),90 ("ubuntukylin", "trusty", ["ubuntu-core-dev"]),
98 ):91 ):
99 self.config["DIST"] = series92 self.config["DIST"] = series
@@ -106,14 +99,14 @@
106 self.assertEqual(sources, self.germination.seed_sources(project))99 self.assertEqual(sources, self.germination.seed_sources(project))
107100
108 for project, series, owners in (101 for project, series, owners in (
109 ("ubuntu", "raring", ["ubuntu-core-dev"]),102 ("ubuntu", "trusty", ["ubuntu-core-dev"]),
110 ("lubuntu", "raring", ["lubuntu-dev", "ubuntu-core-dev"]),103 ("lubuntu", "trusty", ["lubuntu-dev", "ubuntu-core-dev"]),
111 ("xubuntu", "intrepid", ["xubuntu-dev", "ubuntu-core-dev"]),104 ("xubuntu", "precise", ["xubuntu-dev", "ubuntu-core-dev"]),
112 ("ubuntu-gnome", "raring",105 ("ubuntu-gnome", "trusty",
113 ["ubuntu-gnome-dev", "ubuntu-core-dev"]),106 ["ubuntu-gnome-dev", "ubuntu-core-dev"]),
114 ("ubuntukylin", "utopic",107 ("ubuntukylin", "xenial",
115 ["ubuntukylin-members", "ubuntu-core-dev"]),108 ["ubuntukylin-members", "ubuntu-core-dev"]),
116 ("ubuntustudio", "raring",109 ("ubuntustudio", "trusty",
117 ["ubuntustudio-dev", "ubuntu-core-dev"]),110 ["ubuntustudio-dev", "ubuntu-core-dev"]),
118 ):111 ):
119 self.config["DIST"] = series112 self.config["DIST"] = series
@@ -124,7 +117,7 @@
124117
125 def test_seed_sources_non_bzr(self):118 def test_seed_sources_non_bzr(self):
126 self.germination = Germination(self.config, prefer_vcs=False)119 self.germination = Germination(self.config, prefer_vcs=False)
127 self.config["DIST"] = "raring"120 self.config["DIST"] = "trusty"
128 self.assertEqual(121 self.assertEqual(
129 ["http://people.canonical.com/~ubuntu-archive/seeds/"],122 ["http://people.canonical.com/~ubuntu-archive/seeds/"],
130 self.germination.seed_sources("ubuntu"))123 self.germination.seed_sources("ubuntu"))
@@ -141,22 +134,22 @@
141134
142 def test_make_index(self):135 def test_make_index(self):
143 self.config.root = self.use_temp_dir()136 self.config.root = self.use_temp_dir()
144 self.config["DIST"] = "raring"137 self.config["DIST"] = "trusty"
145 self.config["IMAGE_TYPE"] = "daily"138 self.config["IMAGE_TYPE"] = "daily"
146 files = []139 files = []
147 for component in "main", "restricted", "universe", "multiverse":140 for component in "main", "restricted", "universe", "multiverse":
148 source_dir = os.path.join(141 source_dir = os.path.join(
149 self.temp_dir, "ftp", "dists", "raring", component, "source")142 self.temp_dir, "ftp", "dists", "trusty", component, "source")
150 os.makedirs(source_dir)143 os.makedirs(source_dir)
151 with gzip.GzipFile(144 with gzip.GzipFile(
152 os.path.join(source_dir, "Sources.gz"), "wb") as sources:145 os.path.join(source_dir, "Sources.gz"), "wb") as sources:
153 sources.write(component.encode("UTF-8"))146 sources.write(component.encode("UTF-8"))
154 sources.write(b"\n")147 sources.write(b"\n")
155 files.append("dists/raring/%s/source/Sources.gz" % component)148 files.append("dists/trusty/%s/source/Sources.gz" % component)
156 self.germination.make_index("ubuntu", "i386", files[0], files)149 self.germination.make_index("ubuntu", "i386", files[0], files)
157 output_file = os.path.join(150 output_file = os.path.join(
158 self.temp_dir, "scratch", "ubuntu", "raring", "daily", "germinate",151 self.temp_dir, "scratch", "ubuntu", "trusty", "daily", "germinate",
159 "dists", "raring", "main", "source", "Sources.gz")152 "dists", "trusty", "main", "source", "Sources.gz")
160 self.assertTrue(os.path.exists(output_file))153 self.assertTrue(os.path.exists(output_file))
161 with gzip.GzipFile(output_file, "rb") as output_sources:154 with gzip.GzipFile(output_file, "rb") as output_sources:
162 self.assertEqual(155 self.assertEqual(
@@ -179,27 +172,19 @@
179 ], self.germination.germinate_dists)172 ], self.germination.germinate_dists)
180173
181 def test_germinate_dists_no_proposed(self):174 def test_germinate_dists_no_proposed(self):
182 self.config["DIST"] = "raring"175 self.config["DIST"] = "trusty"
183 self.assertEqual([176 self.assertEqual([
184 "raring",177 "trusty",
185 "raring-security",178 "trusty-security",
186 "raring-updates",179 "trusty-updates",
187 ], self.germination.germinate_dists)180 ], self.germination.germinate_dists)
188181
189 def test_seed_dist(self):182 def test_seed_dist(self):
190 for project, series, seed_dist in (183 for project, series, seed_dist in (
191 ("ubuntu", "raring", "ubuntu.raring"),184 ("ubuntu", "trusty", "ubuntu.trusty"),
192 ("ubuntu-server", "breezy", "ubuntu-server.breezy"),185 ("ubuntu-server", "trusty", "ubuntu.trusty"),
193 ("ubuntu-server", "raring", "ubuntu.raring"),186 ("ubuntukylin", "trusty", "ubuntu.trusty"),
194 ("jeos", "breezy", "jeos.breezy"),187 ("ubuntukylin", "xenial", "ubuntukylin.xenial"),
195 ("jeos", "hardy", "ubuntu.hardy"),
196 ("ubuntukylin", "raring", "ubuntu.raring"),
197 ("ubuntukylin", "utopic", "ubuntukylin.utopic"),
198 ("ubuntu-mid", "hardy", "mobile.hardy"),
199 ("ubuntu-netbook", "maverick", "netbook.maverick"),
200 ("ubuntu-headless", "lucid", "ubuntu.lucid"),
201 ("ubuntu-moblin-remix", "hardy", "moblin.hardy"),
202 ("ubuntu-desktop-next", "utopic", "ubuntu-touch.utopic"),
203 ):188 ):
204 self.config["DIST"] = series189 self.config["DIST"] = series
205 self.assertEqual(seed_dist, self.germination.seed_dist(project))190 self.assertEqual(seed_dist, self.germination.seed_dist(project))
@@ -224,13 +209,13 @@
224 self.temp_dir, "germinate", "bin", "germinate")209 self.temp_dir, "germinate", "bin", "germinate")
225 touch(germinate_path)210 touch(germinate_path)
226 os.chmod(germinate_path, 0o755)211 os.chmod(germinate_path, 0o755)
227 self.config["DIST"] = "raring"212 self.config["DIST"] = "trusty"
228 self.config["IMAGE_TYPE"] = "daily"213 self.config["IMAGE_TYPE"] = "daily"
229214
230 output_dir = "%s/scratch/ubuntu/raring/daily/germinate" % self.temp_dir215 output_dir = "%s/scratch/ubuntu/trusty/daily/germinate" % self.temp_dir
231 expected_files = []216 expected_files = []
232217
233 for dist in "raring", "raring-security", "raring-updates":218 for dist in "trusty", "trusty-security", "trusty-updates":
234 for suffix in (219 for suffix in (
235 "binary-amd64/Packages.gz",220 "binary-amd64/Packages.gz",
236 "source/Sources.gz",221 "source/Sources.gz",
@@ -257,8 +242,8 @@
257 "--seed-source",242 "--seed-source",
258 "https://git.launchpad.net/~ubuntu-core-dev/ubuntu-seeds/+git/",243 "https://git.launchpad.net/~ubuntu-core-dev/ubuntu-seeds/+git/",
259 "--mirror", "file://%s/" % output_dir,244 "--mirror", "file://%s/" % output_dir,
260 "--seed-dist", "ubuntu.raring",245 "--seed-dist", "ubuntu.trusty",
261 "--dist", "raring,raring-security,raring-updates",246 "--dist", "trusty,trusty-security,trusty-updates",
262 "--arch", "amd64",247 "--arch", "amd64",
263 "--components", "main",248 "--components", "main",
264 "--no-rdepends",249 "--no-rdepends",
@@ -272,19 +257,19 @@
272 @mock.patch("cdimage.germinate.Germination.germinate_arch")257 @mock.patch("cdimage.germinate.Germination.germinate_arch")
273 def test_germinate_project(self, mock_germinate_arch):258 def test_germinate_project(self, mock_germinate_arch):
274 self.config.root = self.use_temp_dir()259 self.config.root = self.use_temp_dir()
275 self.config["DIST"] = "raring"260 self.config["DIST"] = "trusty"
276 self.config["ARCHES"] = "amd64 i386"261 self.config["ARCHES"] = "amd64 i386"
277 self.config["IMAGE_TYPE"] = "daily"262 self.config["IMAGE_TYPE"] = "daily"
278 self.capture_logging()263 self.capture_logging()
279 self.germination.germinate_project("ubuntu")264 self.germination.germinate_project("ubuntu")
280 self.assertTrue(os.path.isdir(os.path.join(265 self.assertTrue(os.path.isdir(os.path.join(
281 self.temp_dir, "scratch", "ubuntu", "raring", "daily",266 self.temp_dir, "scratch", "ubuntu", "trusty", "daily",
282 "germinate")))267 "germinate")))
283 mock_germinate_arch.assert_has_calls(268 mock_germinate_arch.assert_has_calls(
284 [mock.call("ubuntu", "amd64"), mock.call("ubuntu", "i386")])269 [mock.call("ubuntu", "amd64"), mock.call("ubuntu", "i386")])
285 self.assertLogEqual([270 self.assertLogEqual([
286 "Germinating for raring/amd64 ...",271 "Germinating for trusty/amd64 ...",
287 "Germinating for raring/i386 ...",272 "Germinating for trusty/i386 ...",
288 ])273 ])
289274
290 @mock.patch("cdimage.germinate.Germination.germinate_project")275 @mock.patch("cdimage.germinate.Germination.germinate_project")
@@ -367,45 +352,6 @@
367 ["usb-ship-live", ["usb-langsupport"]],352 ["usb-ship-live", ["usb-langsupport"]],
368 ])353 ])
369354
370 def write_ubuntu_hoary_structure(self):
371 """Write the Ubuntu 5.04 STRUCTURE file."""
372 self.write_structure([
373 ["base", []],
374 ["desktop", ["base"]],
375 ["ship", ["base", "desktop"]],
376 ["live", ["base", "desktop"]],
377 ["installer", []],
378 ["casper", []],
379 ["supported", ["base", "desktop", "ship", "live"]],
380 ])
381
382 def write_ubuntu_breezy_structure(self):
383 """Write the Ubuntu 5.10 STRUCTURE file."""
384 self.write_structure([
385 ["minimal", []],
386 ["standard", ["minimal"]],
387 ["desktop", ["minimal", "standard"]],
388 ["ship", ["minimal", "standard", "desktop"]],
389 ["live", ["minimal", "standard", "desktop"]],
390 ["installer", []],
391 ["casper", []],
392 ["supported", ["minimal", "standard", "desktop", "ship", "live"]],
393 ])
394
395 def write_ubuntu_dapper_structure(self):
396 """Write a reduced version of the Ubuntu 6.06 LTS STRUCTURE file."""
397 self.write_structure([
398 ["minimal", []],
399 ["boot", []],
400 ["standard", ["minimal"]],
401 ["desktop", ["minimal", "standard"]],
402 ["server", ["boot", "minimal", "standard"]],
403 ["ship", ["boot", "minimal", "standard", "desktop"]],
404 ["live", ["minimal", "standard", "desktop"]],
405 ["ship-live", ["boot", "minimal", "standard", "desktop", "live"]],
406 ["installer", []],
407 ])
408
409 def write_kubuntu_structure(self):355 def write_kubuntu_structure(self):
410 """Write a reduced version of the Kubuntu STRUCTURE file.356 """Write a reduced version of the Kubuntu STRUCTURE file.
411357
@@ -471,7 +417,7 @@
471 self.write_ubuntu_structure()417 self.write_ubuntu_structure()
472 output = GerminateOutput(self.config, self.temp_dir)418 output = GerminateOutput(self.config, self.temp_dir)
473 self.config["PROJECT"] = "ubuntu"419 self.config["PROJECT"] = "ubuntu"
474 self.config["DIST"] = "raring"420 self.config["DIST"] = "trusty"
475 expected = [421 expected = [
476 "boot", "installer", "required", "minimal", "standard",422 "boot", "installer", "required", "minimal", "standard",
477 "desktop-common", "desktop", "d-i-requirements", "ship",423 "desktop-common", "desktop", "d-i-requirements", "ship",
@@ -487,16 +433,6 @@
487 self.config["PROJECT"] = "ubuntu-server"433 self.config["PROJECT"] = "ubuntu-server"
488 expected = [434 expected = [
489 "boot", "installer", "required", "minimal", "standard",435 "boot", "installer", "required", "minimal", "standard",
490 "desktop-common", "desktop", "d-i-requirements", "ship",
491 ]
492 for series in all_series[:3]:
493 self.config["DIST"] = series
494 self.assertEqual(expected, list(output.list_seeds("tasks")))
495 expected = ["required", "minimal", "standard", "server"]
496 self.config["DIST"] = all_series[3]
497 self.assertEqual(expected, list(output.list_seeds("tasks")))
498 expected = [
499 "boot", "installer", "required", "minimal", "standard",
500 "dns-server", "lamp-server", "openssh-server", "print-server",436 "dns-server", "lamp-server", "openssh-server", "print-server",
501 "samba-server", "postgresql-server", "mail-server", "server",437 "samba-server", "postgresql-server", "mail-server", "server",
502 "tomcat-server", "virt-host", "d-i-requirements", "server-ship",438 "tomcat-server", "virt-host", "d-i-requirements", "server-ship",
@@ -509,7 +445,7 @@
509 self.write_ubuntu_structure()445 self.write_ubuntu_structure()
510 output = GerminateOutput(self.config, self.temp_dir)446 output = GerminateOutput(self.config, self.temp_dir)
511 self.config["PROJECT"] = "ubuntu-server"447 self.config["PROJECT"] = "ubuntu-server"
512 self.config["DIST"] = "raring"448 self.config["DIST"] = "trusty"
513 self.config["CDIMAGE_SQUASHFS_BASE"] = "1"449 self.config["CDIMAGE_SQUASHFS_BASE"] = "1"
514 expected = [450 expected = [
515 "boot", "installer", "standard", "dns-server", "lamp-server",451 "boot", "installer", "standard", "dns-server", "lamp-server",
@@ -523,7 +459,7 @@
523 self.write_kubuntu_structure()459 self.write_kubuntu_structure()
524 output = GerminateOutput(self.config, self.temp_dir)460 output = GerminateOutput(self.config, self.temp_dir)
525 self.config["PROJECT"] = "kubuntu-active"461 self.config["PROJECT"] = "kubuntu-active"
526 self.config["DIST"] = "raring"462 self.config["DIST"] = "trusty"
527 expected = [463 expected = [
528 "boot", "installer", "required", "minimal", "standard",464 "boot", "installer", "required", "minimal", "standard",
529 "desktop-common", "desktop", "d-i-requirements", "ship",465 "desktop-common", "desktop", "d-i-requirements", "ship",
@@ -531,44 +467,17 @@
531 ]467 ]
532 self.assertEqual(expected, list(output.list_seeds("tasks")))468 self.assertEqual(expected, list(output.list_seeds("tasks")))
533469
534 def test_list_seeds_tasks_jeos(self):
535 self.write_structure([
536 ["required", []],
537 ["minimal", ["required"]],
538 ["jeos", ["minimal"]],
539 ])
540 output = GerminateOutput(self.config, self.temp_dir)
541 self.config["PROJECT"] = "jeos"
542 self.assertEqual(
543 ["required", "minimal", "jeos"], list(output.list_seeds("tasks")))
544
545 def test_list_seeds_installer(self):470 def test_list_seeds_installer(self):
546 self.write_ubuntu_breezy_structure()
547 self.write_structure([["installer", []], ["casper", []]])471 self.write_structure([["installer", []], ["casper", []]])
548 output = GerminateOutput(self.config, self.temp_dir)472 output = GerminateOutput(self.config, self.temp_dir)
549 self.config["CDIMAGE_INSTALL_BASE"] = "1"473 self.config["CDIMAGE_INSTALL_BASE"] = "1"
550 self.assertEqual(["installer"], list(output.list_seeds("installer")))474 self.assertEqual(["installer"], list(output.list_seeds("installer")))
551 del self.config["CDIMAGE_INSTALL_BASE"]475 del self.config["CDIMAGE_INSTALL_BASE"]
552 self.config["CDIMAGE_LIVE"] = "1"476 self.config["CDIMAGE_LIVE"] = "1"
553 self.config["DIST"] = "hoary"477 self.config["DIST"] = "precise"
554 self.assertEqual(["casper"], list(output.list_seeds("installer")))
555 self.config["DIST"] = "breezy"
556 self.assertEqual(["casper"], list(output.list_seeds("installer")))
557 self.config["DIST"] = "dapper"
558 self.assertEqual([], list(output.list_seeds("installer")))478 self.assertEqual([], list(output.list_seeds("installer")))
559479
560 def test_list_seeds_debootstrap(self):480 def test_list_seeds_debootstrap(self):
561 self.write_ubuntu_hoary_structure()
562 output = GerminateOutput(self.config, self.temp_dir)
563 for series in all_series[:2]:
564 self.config["DIST"] = series
565 self.assertEqual(["base"], list(output.list_seeds("debootstrap")))
566 self.write_ubuntu_breezy_structure()
567 output = GerminateOutput(self.config, self.temp_dir)
568 for series in all_series[2:6]:
569 self.config["DIST"] = series
570 self.assertEqual(
571 ["minimal"], list(output.list_seeds("debootstrap")))
572 self.write_ubuntu_structure()481 self.write_ubuntu_structure()
573 output = GerminateOutput(self.config, self.temp_dir)482 output = GerminateOutput(self.config, self.temp_dir)
574 for series in all_series[6:]:483 for series in all_series[6:]:
@@ -578,23 +487,6 @@
578 list(output.list_seeds("debootstrap")))487 list(output.list_seeds("debootstrap")))
579488
580 def test_list_seeds_base(self):489 def test_list_seeds_base(self):
581 self.write_ubuntu_hoary_structure()
582 output = GerminateOutput(self.config, self.temp_dir)
583 for series in all_series[:2]:
584 self.config["DIST"] = series
585 self.assertEqual(["base"], list(output.list_seeds("base")))
586 self.write_ubuntu_breezy_structure()
587 output = GerminateOutput(self.config, self.temp_dir)
588 self.config["DIST"] = all_series[2]
589 self.assertEqual(
590 ["minimal", "standard"], list(output.list_seeds("base")))
591 self.write_ubuntu_dapper_structure()
592 output = GerminateOutput(self.config, self.temp_dir)
593 for series in all_series[3:6]:
594 self.config["DIST"] = series
595 self.assertEqual(
596 ["boot", "minimal", "standard"],
597 list(output.list_seeds("base")))
598 self.write_ubuntu_structure()490 self.write_ubuntu_structure()
599 output = GerminateOutput(self.config, self.temp_dir)491 output = GerminateOutput(self.config, self.temp_dir)
600 for series in all_series[6:]:492 for series in all_series[6:]:
@@ -615,7 +507,7 @@
615 def write_seed_output(self, arch, seed, packages):507 def write_seed_output(self, arch, seed, packages):
616 """Write a simplified Germinate output file, enough for testing."""508 """Write a simplified Germinate output file, enough for testing."""
617 with mkfile(os.path.join(self.temp_dir, arch, seed)) as f:509 with mkfile(os.path.join(self.temp_dir, arch, seed)) as f:
618 why = "Ubuntu.Raring %s seed" % seed510 why = "Ubuntu.Trusty %s seed" % seed
619 pkg_len = max(len("Package"), max(map(len, packages)))511 pkg_len = max(len("Package"), max(map(len, packages)))
620 src_len = max(len("Source"), max(map(len, packages)))512 src_len = max(len("Source"), max(map(len, packages)))
621 why_len = len(why)513 why_len = len(why)
@@ -660,20 +552,20 @@
660 "usb-ship-live",552 "usb-ship-live",
661 ], list(output.master_seeds()))553 ], list(output.master_seeds()))
662554
663 def test_master_seeds_dvd_ubuntu_raring(self):555 def test_master_seeds_dvd_ubuntu_trusty(self):
664 self.write_ubuntu_structure()556 self.write_ubuntu_structure()
665 output = GerminateOutput(self.config, self.temp_dir)557 output = GerminateOutput(self.config, self.temp_dir)
666 self.config["PROJECT"] = "ubuntu"558 self.config["PROJECT"] = "ubuntu"
667 self.config["DIST"] = "raring"559 self.config["DIST"] = "trusty"
668 self.config["CDIMAGE_DVD"] = "1"560 self.config["CDIMAGE_DVD"] = "1"
669 self.assertEqual(561 self.assertEqual(
670 ["usb-langsupport", "usb-ship-live"], list(output.master_seeds()))562 ["usb-langsupport", "usb-ship-live"], list(output.master_seeds()))
671563
672 def test_master_seeds_install_ubuntu_raring(self):564 def test_master_seeds_install_ubuntu_trusty(self):
673 self.write_ubuntu_structure()565 self.write_ubuntu_structure()
674 output = GerminateOutput(self.config, self.temp_dir)566 output = GerminateOutput(self.config, self.temp_dir)
675 self.config["PROJECT"] = "ubuntu"567 self.config["PROJECT"] = "ubuntu"
676 self.config["DIST"] = "raring"568 self.config["DIST"] = "trusty"
677 self.config["CDIMAGE_INSTALL"] = "1"569 self.config["CDIMAGE_INSTALL"] = "1"
678 self.config["CDIMAGE_INSTALL_BASE"] = "1"570 self.config["CDIMAGE_INSTALL_BASE"] = "1"
679 self.assertEqual([571 self.assertEqual([
@@ -681,11 +573,11 @@
681 "desktop-common", "desktop", "d-i-requirements", "ship",573 "desktop-common", "desktop", "d-i-requirements", "ship",
682 ], list(output.master_seeds()))574 ], list(output.master_seeds()))
683575
684 def test_master_seeds_live_ubuntu_raring(self):576 def test_master_seeds_live_ubuntu_trusty(self):
685 self.write_ubuntu_structure()577 self.write_ubuntu_structure()
686 output = GerminateOutput(self.config, self.temp_dir)578 output = GerminateOutput(self.config, self.temp_dir)
687 self.config["PROJECT"] = "ubuntu"579 self.config["PROJECT"] = "ubuntu"
688 self.config["DIST"] = "raring"580 self.config["DIST"] = "trusty"
689 self.config["CDIMAGE_INSTALL_BASE"] = "1"581 self.config["CDIMAGE_INSTALL_BASE"] = "1"
690 self.config["CDIMAGE_LIVE"] = "1"582 self.config["CDIMAGE_LIVE"] = "1"
691 self.assertEqual([583 self.assertEqual([
@@ -701,11 +593,11 @@
701593
702 self.write_ubuntu_structure()594 self.write_ubuntu_structure()
703 output = GerminateOutput(self.config, self.temp_dir)595 output = GerminateOutput(self.config, self.temp_dir)
704 self.config["DIST"] = "raring"596 self.config["DIST"] = "trusty"
705 mock_master_seeds.side_effect = side_effect597 mock_master_seeds.side_effect = side_effect
706 self.assertEqual([598 self.assertEqual([
707 "#include <ubuntu/raring/required>",599 "#include <ubuntu/trusty/required>",
708 "#include <ubuntu/raring/minimal>",600 "#include <ubuntu/trusty/minimal>",
709 ], list(output.master_task_entries("ubuntu")))601 ], list(output.master_task_entries("ubuntu")))
710602
711 @mock.patch(603 @mock.patch(
@@ -713,18 +605,18 @@
713 def test_master_task_entries_no_seeds(self, mock_master_seeds):605 def test_master_task_entries_no_seeds(self, mock_master_seeds):
714 self.write_ubuntu_structure()606 self.write_ubuntu_structure()
715 output = GerminateOutput(self.config, self.temp_dir)607 output = GerminateOutput(self.config, self.temp_dir)
716 self.config["DIST"] = "raring"608 self.config["DIST"] = "trusty"
717 self.assertRaises(609 self.assertRaises(
718 NoMasterSeeds, list, output.master_task_entries("ubuntu"))610 NoMasterSeeds, list, output.master_task_entries("ubuntu"))
719611
720 def test_tasks_output_dir(self):612 def test_tasks_output_dir(self):
721 self.write_ubuntu_structure()613 self.write_ubuntu_structure()
722 output = GerminateOutput(self.config, self.temp_dir)614 output = GerminateOutput(self.config, self.temp_dir)
723 self.config["DIST"] = "raring"615 self.config["DIST"] = "trusty"
724 self.config["IMAGE_TYPE"] = "daily"616 self.config["IMAGE_TYPE"] = "daily"
725 self.assertEqual(617 self.assertEqual(
726 os.path.join(618 os.path.join(
727 self.temp_dir, "scratch", "ubuntu", "raring", "daily",619 self.temp_dir, "scratch", "ubuntu", "trusty", "daily",
728 "tasks"),620 "tasks"),
729 output.tasks_output_dir("ubuntu"))621 output.tasks_output_dir("ubuntu"))
730622
@@ -753,7 +645,7 @@
753 def test_task_packages_squashfs(self):645 def test_task_packages_squashfs(self):
754 self.write_ubuntu_structure()646 self.write_ubuntu_structure()
755 self.config["PROJECT"] = "ubuntu-server"647 self.config["PROJECT"] = "ubuntu-server"
756 self.config["DIST"] = "raring"648 self.config["DIST"] = "trusty"
757 self.write_seed_output(649 self.write_seed_output(
758 "i386", "installer", ["base-installer", "bootstrap-base"])650 "i386", "installer", ["base-installer", "bootstrap-base"])
759 output = GerminateOutput(self.config, self.temp_dir)651 output = GerminateOutput(self.config, self.temp_dir)
@@ -765,26 +657,6 @@
765 ["base-installer", "live-installer"],657 ["base-installer", "live-installer"],
766 list(output.task_packages("i386", "installer", "installer")))658 list(output.task_packages("i386", "installer", "installer")))
767659
768 def test_task_packages_gutsy_ps3_hack(self):
769 self.write_structure([["boot", []], ["installer", []]])
770 self.write_seed_output(
771 "powerpc+ps3", "boot", ["linux-image-2.6.22-14-powerpc64-smp"])
772 self.write_seed_output(
773 "powerpc+ps3", "installer", [
774 "block-modules-2.6.22-14-powerpc-di",
775 "block-modules-2.6.22-14-powerpc64-smp-di",
776 ])
777 self.config["DIST"] = "gutsy"
778 self.config["CDIMAGE_INSTALL_BASE"] = "1"
779 output = GerminateOutput(self.config, self.temp_dir)
780 self.assertEqual(
781 ["linux-image-2.6.22-14-cell"],
782 list(output.task_packages("powerpc+ps3", "boot", "boot")))
783 self.assertEqual(
784 ["block-modules-2.6.22-14-cell-di"],
785 list(output.task_packages(
786 "powerpc+ps3", "installer", "installer")))
787
788 def test_task_packages_precise_kernels(self):660 def test_task_packages_precise_kernels(self):
789 self.write_structure([["boot", []], ["installer", []]])661 self.write_structure([["boot", []], ["installer", []]])
790 self.write_seed_output(662 self.write_seed_output(
@@ -812,7 +684,7 @@
812 def test_initrd_packages(self):684 def test_initrd_packages(self):
813 self.write_ubuntu_structure()685 self.write_ubuntu_structure()
814 manifest_path = os.path.join(686 manifest_path = os.path.join(
815 self.temp_dir, "ftp", "dists", "raring", "main", "installer-i386",687 self.temp_dir, "ftp", "dists", "trusty", "main", "installer-i386",
816 "current", "images", "MANIFEST.udebs")688 "current", "images", "MANIFEST.udebs")
817 with mkfile(manifest_path) as manifest:689 with mkfile(manifest_path) as manifest:
818 print(dedent("""\690 print(dedent("""\
@@ -822,7 +694,7 @@
822 netboot/netboot.tar.gz694 netboot/netboot.tar.gz
823 \tdownload-installer 1.32ubuntu1 all695 \tdownload-installer 1.32ubuntu1 all
824 \tnet-retriever 1.32ubuntu1 i386"""), file=manifest)696 \tnet-retriever 1.32ubuntu1 i386"""), file=manifest)
825 self.config["DIST"] = "raring"697 self.config["DIST"] = "trusty"
826 output = GerminateOutput(self.config, self.temp_dir)698 output = GerminateOutput(self.config, self.temp_dir)
827 self.assertEqual(699 self.assertEqual(
828 set(["anna", "cdrom-detect"]),700 set(["anna", "cdrom-detect"]),
@@ -835,7 +707,7 @@
835 def test_common_initrd_packages(self):707 def test_common_initrd_packages(self):
836 self.write_ubuntu_structure()708 self.write_ubuntu_structure()
837 manifest_path = os.path.join(709 manifest_path = os.path.join(
838 self.temp_dir, "ftp", "dists", "raring", "main", "installer-i386",710 self.temp_dir, "ftp", "dists", "trusty", "main", "installer-i386",
839 "current", "images", "MANIFEST.udebs")711 "current", "images", "MANIFEST.udebs")
840 with mkfile(manifest_path) as manifest:712 with mkfile(manifest_path) as manifest:
841 print(dedent("""\713 print(dedent("""\
@@ -845,7 +717,7 @@
845 netboot/netboot.tar.gz717 netboot/netboot.tar.gz
846 \tanna 1.45ubuntu1 i386718 \tanna 1.45ubuntu1 i386
847 \tnet-retriever 1.32ubuntu1 i386"""), file=manifest)719 \tnet-retriever 1.32ubuntu1 i386"""), file=manifest)
848 self.config["DIST"] = "raring"720 self.config["DIST"] = "trusty"
849 output = GerminateOutput(self.config, self.temp_dir)721 output = GerminateOutput(self.config, self.temp_dir)
850 self.assertEqual(set(["anna"]), output.common_initrd_packages("i386"))722 self.assertEqual(set(["anna"]), output.common_initrd_packages("i386"))
851723
@@ -870,8 +742,6 @@
870 self.assertEqual(expected, output.task_headers("i386", "desktop"))742 self.assertEqual(expected, output.task_headers("i386", "desktop"))
871 self.assertEqual({}, output.task_headers("i386", "missing"))743 self.assertEqual({}, output.task_headers("i386", "missing"))
872744
873 # TODO: seed_task_mapping <= gutsy untested
874
875 def test_seed_task_mapping(self):745 def test_seed_task_mapping(self):
876 self.write_ubuntu_structure()746 self.write_ubuntu_structure()
877 seed_dir = os.path.join(self.temp_dir, "i386")747 seed_dir = os.path.join(self.temp_dir, "i386")
@@ -881,7 +751,7 @@
881 print(dedent("""\751 print(dedent("""\
882 Task-Per-Derivative: 1752 Task-Per-Derivative: 1
883 Task-Seeds: desktop-common"""), file=seedtext)753 Task-Seeds: desktop-common"""), file=seedtext)
884 self.config["DIST"] = "raring"754 self.config["DIST"] = "trusty"
885 output = GerminateOutput(self.config, self.temp_dir)755 output = GerminateOutput(self.config, self.temp_dir)
886 expected = [756 expected = [
887 (["standard"], "standard"),757 (["standard"], "standard"),
@@ -906,14 +776,14 @@
906 print("Task-Per-Derivative: 1", file=seedtext)776 print("Task-Per-Derivative: 1", file=seedtext)
907 with mkfile(os.path.join(seed_dir, "live.seedtext")) as seedtext:777 with mkfile(os.path.join(seed_dir, "live.seedtext")) as seedtext:
908 print("Task-Per-Derivative: 1", file=seedtext)778 print("Task-Per-Derivative: 1", file=seedtext)
909 self.config["DIST"] = "raring"779 self.config["DIST"] = "trusty"
910 self.config["ARCHES"] = "amd64 i386"780 self.config["ARCHES"] = "amd64 i386"
911 self.config["IMAGE_TYPE"] = "daily-live"781 self.config["IMAGE_TYPE"] = "daily-live"
912 self.config["CDIMAGE_LIVE"] = "1"782 self.config["CDIMAGE_LIVE"] = "1"
913 output = GerminateOutput(self.config, self.temp_dir)783 output = GerminateOutput(self.config, self.temp_dir)
914 output.write_tasks_project("ubuntu")784 output.write_tasks_project("ubuntu")
915 output_dir = os.path.join(785 output_dir = os.path.join(
916 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live",786 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live",
917 "tasks")787 "tasks")
918 self.assertCountEqual([788 self.assertCountEqual([
919 "required", "minimal", "desktop", "live",789 "required", "minimal", "desktop", "live",
@@ -990,7 +860,7 @@
990 with open(os.path.join(output_dir, "important.i386")) as f:860 with open(os.path.join(output_dir, "important.i386")) as f:
991 self.assertEqual("adduser-i386\nbase-files-i386\n", f.read())861 self.assertEqual("adduser-i386\nbase-files-i386\n", f.read())
992 with open(os.path.join(output_dir, "MASTER")) as f:862 with open(os.path.join(output_dir, "MASTER")) as f:
993 self.assertEqual("#include <ubuntu/raring/ship-live>\n", f.read())863 self.assertEqual("#include <ubuntu/trusty/ship-live>\n", f.read())
994864
995 # TODO: write_tasks untested865 # TODO: write_tasks untested
996866
@@ -998,10 +868,10 @@
998 def test_diff_tasks(self, mock_call):868 def test_diff_tasks(self, mock_call):
999 self.write_ubuntu_structure()869 self.write_ubuntu_structure()
1000 self.config["PROJECT"] = "ubuntu"870 self.config["PROJECT"] = "ubuntu"
1001 self.config["DIST"] = "raring"871 self.config["DIST"] = "trusty"
1002 self.config["IMAGE_TYPE"] = "daily-live"872 self.config["IMAGE_TYPE"] = "daily-live"
1003 output_dir = os.path.join(873 output_dir = os.path.join(
1004 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live",874 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live",
1005 "tasks")875 "tasks")
1006 touch(os.path.join(output_dir, "required"))876 touch(os.path.join(output_dir, "required"))
1007 touch(os.path.join(output_dir, "minimal"))877 touch(os.path.join(output_dir, "minimal"))
@@ -1026,10 +896,10 @@
1026 def test_update_tasks_no_mail(self, mock_diff_tasks):896 def test_update_tasks_no_mail(self, mock_diff_tasks):
1027 self.write_ubuntu_structure()897 self.write_ubuntu_structure()
1028 self.config["PROJECT"] = "ubuntu"898 self.config["PROJECT"] = "ubuntu"
1029 self.config["DIST"] = "raring"899 self.config["DIST"] = "trusty"
1030 self.config["IMAGE_TYPE"] = "daily-live"900 self.config["IMAGE_TYPE"] = "daily-live"
1031 output_dir = os.path.join(901 output_dir = os.path.join(
1032 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live",902 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live",
1033 "tasks")903 "tasks")
1034 touch(os.path.join(output_dir, "required"))904 touch(os.path.join(output_dir, "required"))
1035 touch(os.path.join(output_dir, "minimal"))905 touch(os.path.join(output_dir, "minimal"))
@@ -1039,7 +909,7 @@
1039 ["required", "minimal"],909 ["required", "minimal"],
1040 os.listdir(os.path.join(910 os.listdir(os.path.join(
1041 self.temp_dir, "debian-cd", "tasks", "auto", "daily-live",911 self.temp_dir, "debian-cd", "tasks", "auto", "daily-live",
1042 "ubuntu", "raring")))912 "ubuntu", "trusty")))
1043 self.assertCountEqual(913 self.assertCountEqual(
1044 ["required", "minimal"], os.listdir("%s-previous" % output_dir))914 ["required", "minimal"], os.listdir("%s-previous" % output_dir))
1045915
@@ -1048,7 +918,7 @@
1048 def test_update_tasks_no_recipients(self, mock_diff_tasks, mock_send_mail):918 def test_update_tasks_no_recipients(self, mock_diff_tasks, mock_send_mail):
1049 self.write_ubuntu_structure()919 self.write_ubuntu_structure()
1050 self.config["PROJECT"] = "ubuntu"920 self.config["PROJECT"] = "ubuntu"
1051 self.config["DIST"] = "raring"921 self.config["DIST"] = "trusty"
1052 self.config["IMAGE_TYPE"] = "daily-live"922 self.config["IMAGE_TYPE"] = "daily-live"
1053 output = GerminateOutput(self.config, self.temp_dir)923 output = GerminateOutput(self.config, self.temp_dir)
1054 os.makedirs(output.tasks_output_dir("ubuntu"))924 os.makedirs(output.tasks_output_dir("ubuntu"))
@@ -1093,10 +963,10 @@
1093 self.write_ubuntu_structure()963 self.write_ubuntu_structure()
1094 self.config["PROJECT"] = "ubuntu"964 self.config["PROJECT"] = "ubuntu"
1095 self.config["CAPPROJECT"] = "Ubuntu"965 self.config["CAPPROJECT"] = "Ubuntu"
1096 self.config["DIST"] = "raring"966 self.config["DIST"] = "trusty"
1097 self.config["IMAGE_TYPE"] = "daily-live"967 self.config["IMAGE_TYPE"] = "daily-live"
1098 output_dir = os.path.join(968 output_dir = os.path.join(
1099 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live",969 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live",
1100 "tasks")970 "tasks")
1101 touch(os.path.join(output_dir, "required"))971 touch(os.path.join(output_dir, "required"))
1102 touch(os.path.join(output_dir, "minimal"))972 touch(os.path.join(output_dir, "minimal"))
@@ -1114,7 +984,7 @@
1114 with open(os.path.join(self.temp_dir, "mail")) as mail:984 with open(os.path.join(self.temp_dir, "mail")) as mail:
1115 self.assertEqual(dedent("""\985 self.assertEqual(dedent("""\
1116 To: foo@example.org986 To: foo@example.org
1117 Subject: Task changes for Ubuntu daily-live/raring on 20130319987 Subject: Task changes for Ubuntu daily-live/trusty on 20130319
1118 X-Generated-By: update-tasks988 X-Generated-By: update-tasks
1119989
1120 --- minimal990 --- minimal
1121991
=== modified file 'lib/cdimage/tests/test_livefs.py'
--- lib/cdimage/tests/test_livefs.py 2018-12-12 20:29:20 +0000
+++ lib/cdimage/tests/test_livefs.py 2019-03-07 16:20:18 +0000
@@ -173,48 +173,26 @@
173 def test_project_livecd_base(self):173 def test_project_livecd_base(self):
174 self.assertProjectEqual("base", "livecd-base", "dapper")174 self.assertProjectEqual("base", "livecd-base", "dapper")
175175
176 def test_project_tocd3_1(self):
177 self.assertProjectEqual("tocd", "tocd3.1", "breezy")
178
179 def test_project_ubuntu_touch_custom(self):
180 self.assertProjectEqual("ubuntu-touch", "ubuntu-touch-custom", "vivid")
181
182 def test_ubuntu_dvd(self):176 def test_ubuntu_dvd(self):
183 for series in all_series[:7]:
184 self.assertProjectEqual(
185 "ubuntu", "ubuntu", series, cdimage_dvd="1")
186 for series in all_series[7:]:177 for series in all_series[7:]:
187 self.assertProjectEqual(178 self.assertProjectEqual(
188 "ubuntu-dvd", "ubuntu", series, cdimage_dvd="1")179 "ubuntu-dvd", "ubuntu", series, cdimage_dvd="1")
189180
190 def test_kubuntu_dvd(self):181 def test_kubuntu_dvd(self):
191 for series in all_series[:7]:
192 self.assertProjectEqual(
193 "kubuntu", "kubuntu", series, cdimage_dvd="1")
194 for series in all_series[7:]:182 for series in all_series[7:]:
195 self.assertProjectEqual(183 self.assertProjectEqual(
196 "kubuntu-dvd", "kubuntu", series, cdimage_dvd="1")184 "kubuntu-dvd", "kubuntu", series, cdimage_dvd="1")
197185
198 def test_edubuntu_dvd(self):186 def test_edubuntu_dvd(self):
199 for series in all_series[:10]:
200 self.assertProjectEqual(
201 "edubuntu", "edubuntu", series, cdimage_dvd="1")
202 for series in all_series[10:]:187 for series in all_series[10:]:
203 self.assertProjectEqual(188 self.assertProjectEqual(
204 "edubuntu-dvd", "edubuntu", series, cdimage_dvd="1")189 "edubuntu-dvd", "edubuntu", series, cdimage_dvd="1")
205190
206 def test_ubuntustudio_dvd(self):191 def test_ubuntustudio_dvd(self):
207 for series in all_series[:15]:
208 self.assertProjectEqual(
209 "ubuntustudio", "ubuntustudio", series, cdimage_dvd="1")
210 for series in all_series[15:]:192 for series in all_series[15:]:
211 self.assertProjectEqual(193 self.assertProjectEqual(
212 "ubuntustudio-dvd", "ubuntustudio", series, cdimage_dvd="1")194 "ubuntustudio-dvd", "ubuntustudio", series, cdimage_dvd="1")
213195
214 def test_lpia(self):
215 self.assertProjectEqual("ubuntu-lpia", "ubuntu", "hardy", arch="lpia")
216 self.assertProjectEqual("ubuntu", "ubuntu", "intrepid", arch="lpia")
217
218196
219def make_livefs_production_config(config):197def make_livefs_production_config(config):
220 config_path = os.path.join(config.root, "production", "livefs-builders")198 config_path = os.path.join(config.root, "production", "livefs-builders")
@@ -233,8 +211,6 @@
233 *\t\t*\t\thppa\t\t\tcastilla.buildd211 *\t\t*\t\thppa\t\t\tcastilla.buildd
234 *\t\t*\t\ti386\t\t\tcardamom.buildd212 *\t\t*\t\ti386\t\t\tcardamom.buildd
235 *\t\t*\t\tia64\t\t\tweddell.buildd213 *\t\t*\t\tia64\t\t\tweddell.buildd
236 *\t\t-hardy\t\tlpia\t\t\tcardamom.buildd
237 *\t\t*\t\tlpia\t\t\tconcordia.buildd
238 *\t\t*\t\tpowerpc\t\t\troyal.buildd214 *\t\t*\t\tpowerpc\t\t\troyal.buildd
239 *\t\t*\t\tppc64el\t\t\tfisher01.buildd215 *\t\t*\t\tppc64el\t\t\tfisher01.buildd
240 *\t\t*\t\tsparc\t\t\tvivies.buildd216 *\t\t*\t\tsparc\t\t\tvivies.buildd
@@ -297,12 +273,6 @@
297 for series in all_series:273 for series in all_series:
298 self.assertBuilderEqual("weddell.buildd", "ia64", series)274 self.assertBuilderEqual("weddell.buildd", "ia64", series)
299275
300 def test_lpia(self):
301 for series in all_series[:8]:
302 self.assertBuilderEqual("cardamom.buildd", "lpia", series)
303 for series in all_series[8:]:
304 self.assertBuilderEqual("concordia.buildd", "lpia", series)
305
306 def test_powerpc(self):276 def test_powerpc(self):
307 for series in all_series:277 for series in all_series:
308 self.assertBuilderEqual("royal.buildd", "powerpc", series)278 self.assertBuilderEqual("royal.buildd", "powerpc", series)
@@ -364,16 +334,11 @@
364 self.assertEqual(334 self.assertEqual(
365 ["-f", "plain"], live_build_options(self.config, "armhf"))335 ["-f", "plain"], live_build_options(self.config, "armhf"))
366336
367 def test_ubuntu_touch_custom(self):
368 self.config["PROJECT"] = "ubuntu-touch-custom"
369 self.assertEqual(
370 ["-f", "plain"], live_build_options(self.config, "armhf"))
371
372 def test_wubi(self):337 def test_wubi(self):
373 self.config["SUBPROJECT"] = "wubi"338 self.config["SUBPROJECT"] = "wubi"
374 for series, fstype in (339 for series, fstype in (
375 ("precise", "ext3"),340 ("precise", "ext3"),
376 ("quantal", "ext3"), # ext4341 ("trusty", "ext3"), # ext4
377 ):342 ):
378 self.config["DIST"] = series343 self.config["DIST"] = series
379 self.assertEqual(344 self.assertEqual(
@@ -405,10 +370,10 @@
405370
406 def test_basic(self):371 def test_basic(self):
407 self.config["PROJECT"] = "ubuntu"372 self.config["PROJECT"] = "ubuntu"
408 self.config["DIST"] = "raring"373 self.config["DIST"] = "trusty"
409 expected = self.base_expected + [374 expected = self.base_expected + [
410 "buildd@cardamom.buildd", "/home/buildd/bin/BuildLiveCD",375 "buildd@cardamom.buildd", "/home/buildd/bin/BuildLiveCD",
411 "-l", "-A", "i386", "-d", "raring", "ubuntu",376 "-l", "-A", "i386", "-d", "trusty", "ubuntu",
412 ]377 ]
413 self.assertEqual(expected, live_build_command(self.config, "i386"))378 self.assertEqual(expected, live_build_command(self.config, "i386"))
414379
@@ -417,8 +382,8 @@
417 self.assertCommandContains(["-u", "zh_CN"], "i386")382 self.assertCommandContains(["-u", "zh_CN"], "i386")
418383
419 def test_pre_live_build(self):384 def test_pre_live_build(self):
420 self.config["DIST"] = "natty"385 self.config["DIST"] = "precise"
421 self.assertNotIn("-l", live_build_command(self.config, "i386"))386 self.assertIn("-l", live_build_command(self.config, "i386"))
422387
423 @mock.patch(388 @mock.patch(
424 "cdimage.livefs.live_build_options", return_value=["-f", "plain"])389 "cdimage.livefs.live_build_options", return_value=["-f", "plain"])
@@ -506,21 +471,21 @@
506 def test_live_build_notify_failure_no_log(self, mock_send_mail, *args):471 def test_live_build_notify_failure_no_log(self, mock_send_mail, *args):
507 self.config.root = self.use_temp_dir()472 self.config.root = self.use_temp_dir()
508 self.config["PROJECT"] = "ubuntu"473 self.config["PROJECT"] = "ubuntu"
509 self.config["DIST"] = "raring"474 self.config["DIST"] = "trusty"
510 self.config["IMAGE_TYPE"] = "daily"475 self.config["IMAGE_TYPE"] = "daily"
511 path = os.path.join(self.temp_dir, "production", "notify-addresses")476 path = os.path.join(self.temp_dir, "production", "notify-addresses")
512 with mkfile(path) as notify_addresses:477 with mkfile(path) as notify_addresses:
513 print("ALL\tfoo@example.org", file=notify_addresses)478 print("ALL\tfoo@example.org", file=notify_addresses)
514 live_build_notify_failure(self.config, "i386")479 live_build_notify_failure(self.config, "i386")
515 mock_send_mail.assert_called_once_with(480 mock_send_mail.assert_called_once_with(
516 "LiveFS ubuntu/raring/i386 failed to build on 20130315",481 "LiveFS ubuntu/trusty/i386 failed to build on 20130315",
517 "buildlive", ["foo@example.org"], b"")482 "buildlive", ["foo@example.org"], b"")
518483
519 @mock.patch("time.strftime", return_value="20130315")484 @mock.patch("time.strftime", return_value="20130315")
520 @mock.patch("cdimage.livefs.send_mail")485 @mock.patch("cdimage.livefs.send_mail")
521 def test_live_build_notify_failure_log(self, mock_send_mail, *args):486 def test_live_build_notify_failure_log(self, mock_send_mail, *args):
522 self.config["PROJECT"] = "kubuntu"487 self.config["PROJECT"] = "kubuntu"
523 self.config["DIST"] = "raring"488 self.config["DIST"] = "trusty"
524 self.config["IMAGE_TYPE"] = "daily"489 self.config["IMAGE_TYPE"] = "daily"
525 path = os.path.join(self.temp_dir, "production", "notify-addresses")490 path = os.path.join(self.temp_dir, "production", "notify-addresses")
526 with mkfile(path) as notify_addresses:491 with mkfile(path) as notify_addresses:
@@ -529,10 +494,10 @@
529 with mock.patch("cdimage.livefs.urlopen", mock_urlopen_obj):494 with mock.patch("cdimage.livefs.urlopen", mock_urlopen_obj):
530 live_build_notify_failure(self.config, "armhf+omap4")495 live_build_notify_failure(self.config, "armhf+omap4")
531 mock_urlopen_obj.assert_called_once_with(496 mock_urlopen_obj.assert_called_once_with(
532 "http://kishi00.buildd/~buildd/LiveCD/raring/kubuntu-omap4/latest/"497 "http://kishi00.buildd/~buildd/LiveCD/trusty/kubuntu-omap4/latest/"
533 "livecd-armhf.out", timeout=30)498 "livecd-armhf.out", timeout=30)
534 mock_send_mail.assert_called_once_with(499 mock_send_mail.assert_called_once_with(
535 "LiveFS kubuntu-omap4/raring/armhf+omap4 failed to build on "500 "LiveFS kubuntu-omap4/trusty/armhf+omap4 failed to build on "
536 "20130315",501 "20130315",
537 "buildlive", ["foo@example.org"], b"Log data\n")502 "buildlive", ["foo@example.org"], b"Log data\n")
538503
@@ -542,7 +507,7 @@
542 @mock.patch("cdimage.livefs.send_mail")507 @mock.patch("cdimage.livefs.send_mail")
543 def test_run_live_builds_notifies_on_failure(self, mock_send_mail, *args):508 def test_run_live_builds_notifies_on_failure(self, mock_send_mail, *args):
544 self.config["PROJECT"] = "ubuntu"509 self.config["PROJECT"] = "ubuntu"
545 self.config["DIST"] = "raring"510 self.config["DIST"] = "trusty"
546 self.config["IMAGE_TYPE"] = "daily"511 self.config["IMAGE_TYPE"] = "daily"
547 self.config["ARCHES"] = "amd64 i386"512 self.config["ARCHES"] = "amd64 i386"
548 path = os.path.join(self.temp_dir, "production", "notify-addresses")513 path = os.path.join(self.temp_dir, "production", "notify-addresses")
@@ -563,10 +528,10 @@
563 ], self.captured_log_messages())528 ], self.captured_log_messages())
564 mock_send_mail.assert_has_calls([529 mock_send_mail.assert_has_calls([
565 mock.call(530 mock.call(
566 "LiveFS ubuntu/raring/amd64 failed to build on 20130315",531 "LiveFS ubuntu/trusty/amd64 failed to build on 20130315",
567 "buildlive", ["foo@example.org"], b"Log data\n"),532 "buildlive", ["foo@example.org"], b"Log data\n"),
568 mock.call(533 mock.call(
569 "LiveFS ubuntu/raring/i386 failed to build on 20130315",534 "LiveFS ubuntu/trusty/i386 failed to build on 20130315",
570 "buildlive", ["foo@example.org"], b"Log data\n"),535 "buildlive", ["foo@example.org"], b"Log data\n"),
571 ], any_order=True)536 ], any_order=True)
572537
@@ -577,7 +542,7 @@
577 def test_run_live_builds(self, mock_live_build_notify_failure, mock_popen,542 def test_run_live_builds(self, mock_live_build_notify_failure, mock_popen,
578 mock_tracker_set_rebuild_status, *args):543 mock_tracker_set_rebuild_status, *args):
579 self.config["PROJECT"] = "ubuntu"544 self.config["PROJECT"] = "ubuntu"
580 self.config["DIST"] = "raring"545 self.config["DIST"] = "trusty"
581 self.config["IMAGE_TYPE"] = "daily"546 self.config["IMAGE_TYPE"] = "daily"
582 self.config["ARCHES"] = "amd64 i386"547 self.config["ARCHES"] = "amd64 i386"
583 self.capture_logging()548 self.capture_logging()
@@ -605,12 +570,12 @@
605 mock.call(570 mock.call(
606 expected_command_base + [571 expected_command_base + [
607 "buildd@kapok.buildd", "/home/buildd/bin/BuildLiveCD",572 "buildd@kapok.buildd", "/home/buildd/bin/BuildLiveCD",
608 "-l", "-A", "amd64", "-d", "raring", "ubuntu",573 "-l", "-A", "amd64", "-d", "trusty", "ubuntu",
609 ]),574 ]),
610 mock.call(575 mock.call(
611 expected_command_base + [576 expected_command_base + [
612 "buildd@cardamom.buildd", "/home/buildd/bin/BuildLiveCD",577 "buildd@cardamom.buildd", "/home/buildd/bin/BuildLiveCD",
613 "-l", "-A", "i386", "-d", "raring", "ubuntu",578 "-l", "-A", "i386", "-d", "trusty", "ubuntu",
614 ])579 ])
615 ])580 ])
616 self.assertEqual(0, mock_live_build_notify_failure.call_count)581 self.assertEqual(0, mock_live_build_notify_failure.call_count)
@@ -622,7 +587,7 @@
622 mock_live_build_notify_failure,587 mock_live_build_notify_failure,
623 mock_popen, *args):588 mock_popen, *args):
624 self.config["PROJECT"] = "ubuntu"589 self.config["PROJECT"] = "ubuntu"
625 self.config["DIST"] = "raring"590 self.config["DIST"] = "trusty"
626 self.config["IMAGE_TYPE"] = "daily"591 self.config["IMAGE_TYPE"] = "daily"
627 self.config["ARCHES"] = "amd64 amd64+mac"592 self.config["ARCHES"] = "amd64 amd64+mac"
628 self.capture_logging()593 self.capture_logging()
@@ -632,7 +597,7 @@
632 "ssh", "-n", "-o", "StrictHostKeyChecking=no",597 "ssh", "-n", "-o", "StrictHostKeyChecking=no",
633 "-o", "BatchMode=yes",598 "-o", "BatchMode=yes",
634 "buildd@kapok.buildd", "/home/buildd/bin/BuildLiveCD",599 "buildd@kapok.buildd", "/home/buildd/bin/BuildLiveCD",
635 "-l", "-A", "amd64", "-d", "raring", "ubuntu",600 "-l", "-A", "amd64", "-d", "trusty", "ubuntu",
636 ]601 ]
637 mock_popen.assert_called_once_with(expected_command)602 mock_popen.assert_called_once_with(expected_command)
638 self.assertEqual(0, mock_live_build_notify_failure.call_count)603 self.assertEqual(0, mock_live_build_notify_failure.call_count)
@@ -643,7 +608,7 @@
643 @mock.patch("cdimage.livefs.send_mail")608 @mock.patch("cdimage.livefs.send_mail")
644 def test_run_live_builds_partial_success(self, mock_send_mail, *args):609 def test_run_live_builds_partial_success(self, mock_send_mail, *args):
645 self.config["PROJECT"] = "ubuntu"610 self.config["PROJECT"] = "ubuntu"
646 self.config["DIST"] = "raring"611 self.config["DIST"] = "trusty"
647 self.config["IMAGE_TYPE"] = "daily"612 self.config["IMAGE_TYPE"] = "daily"
648 self.config["ARCHES"] = "amd64 i386"613 self.config["ARCHES"] = "amd64 i386"
649 path = os.path.join(self.temp_dir, "production", "notify-addresses")614 path = os.path.join(self.temp_dir, "production", "notify-addresses")
@@ -677,17 +642,17 @@
677 mock.call(642 mock.call(
678 expected_command_base + [643 expected_command_base + [
679 "buildd@kapok.buildd", "/home/buildd/bin/BuildLiveCD",644 "buildd@kapok.buildd", "/home/buildd/bin/BuildLiveCD",
680 "-l", "-A", "amd64", "-d", "raring", "ubuntu",645 "-l", "-A", "amd64", "-d", "trusty", "ubuntu",
681 ]),646 ]),
682 mock.call(647 mock.call(
683 expected_command_base + [648 expected_command_base + [
684 "buildd@cardamom.buildd",649 "buildd@cardamom.buildd",
685 "/home/buildd/bin/BuildLiveCD",650 "/home/buildd/bin/BuildLiveCD",
686 "-l", "-A", "i386", "-d", "raring", "ubuntu",651 "-l", "-A", "i386", "-d", "trusty", "ubuntu",
687 ]),652 ]),
688 ])653 ])
689 mock_send_mail.assert_called_once_with(654 mock_send_mail.assert_called_once_with(
690 "LiveFS ubuntu/raring/i386 failed to build on 20130315",655 "LiveFS ubuntu/trusty/i386 failed to build on 20130315",
691 "buildlive", ["foo@example.org"], b"Log data\n")656 "buildlive", ["foo@example.org"], b"Log data\n")
692657
693 @skipUnless(launchpad_available, "launchpadlib not available")658 @skipUnless(launchpad_available, "launchpadlib not available")
@@ -702,7 +667,7 @@
702 mock_tracker_set_rebuild_status, mock_sleep,667 mock_tracker_set_rebuild_status, mock_sleep,
703 *args):668 *args):
704 self.config["PROJECT"] = "ubuntu"669 self.config["PROJECT"] = "ubuntu"
705 self.config["DIST"] = "utopic"670 self.config["DIST"] = "xenial"
706 self.config["IMAGE_TYPE"] = "daily"671 self.config["IMAGE_TYPE"] = "daily"
707 self.config["ARCHES"] = "amd64 i386"672 self.config["ARCHES"] = "amd64 i386"
708 osextras.unlink_force(os.path.join(673 osextras.unlink_force(os.path.join(
@@ -737,13 +702,13 @@
737 lp = get_launchpad()702 lp = get_launchpad()
738 owner = lp.people["ubuntu-cdimage"]703 owner = lp.people["ubuntu-cdimage"]
739 ubuntu = lp.distributions["ubuntu"]704 ubuntu = lp.distributions["ubuntu"]
740 utopic = ubuntu.getSeries(name_or_version="utopic")705 xenial = ubuntu.getSeries(name_or_version="xenial")
741 dases = [706 dases = [
742 utopic.getDistroArchSeries(archtag)707 xenial.getDistroArchSeries(archtag)
743 for archtag in ("amd64", "i386")]708 for archtag in ("amd64", "i386")]
744 self.assertEqual(2, len(dases))709 self.assertEqual(2, len(dases))
745 livefs = lp.livefses.getByName(710 livefs = lp.livefses.getByName(
746 owner=owner, distro_series=utopic, name="ubuntu-desktop")711 owner=owner, distro_series=xenial, name="ubuntu-desktop")
747 builds = [712 builds = [
748 livefs.getLatestBuild(distro_arch_series=das) for das in dases]713 livefs.getLatestBuild(distro_arch_series=das) for das in dases]
749 self.assertEqual(2, len(builds))714 self.assertEqual(2, len(builds))
@@ -844,7 +809,7 @@
844809
845 def test_livecd_override(self):810 def test_livecd_override(self):
846 self.assertBaseEqual(811 self.assertBaseEqual(
847 "ftp://blah/quantal/ubuntu/current", "i386", "ubuntu", "quantal",812 "ftp://blah/trusty/ubuntu/current", "i386", "ubuntu", "trusty",
848 livecd="ftp://blah")813 livecd="ftp://blah")
849814
850 def test_subproject(self):815 def test_subproject(self):
@@ -861,11 +826,11 @@
861826
862 def test_subarch(self):827 def test_subarch(self):
863 self.assertBaseEqual(828 self.assertBaseEqual(
864 self.base("royal.buildd", "ubuntu-ps3", "gutsy"),829 self.base("royal.buildd", "ubuntu-ps3", "precise"),
865 "powerpc+ps3", "ubuntu", "gutsy")830 "powerpc+ps3", "ubuntu", "precise")
866 self.assertBaseEqual(831 self.assertBaseEqual(
867 self.base("celbalrai.buildd", "ubuntu-server-omap", "oneiric"),832 self.base("celbalrai.buildd", "ubuntu-server-omap", "precise"),
868 "armel+omap", "ubuntu-server", "oneiric")833 "armel+omap", "ubuntu-server", "precise")
869834
870 def test_ubuntu_defaults_locale(self):835 def test_ubuntu_defaults_locale(self):
871 for series in all_series:836 for series in all_series:
@@ -882,9 +847,6 @@
882 self.assertEqual(expected.split(), flavours(config, arch))847 self.assertEqual(expected.split(), flavours(config, arch))
883848
884 def test_amd64(self):849 def test_amd64(self):
885 for series in all_series[:4]:
886 self.assertFlavoursEqual(
887 "amd64-generic", "amd64", "ubuntu", series)
888 for series in all_series[4:]:850 for series in all_series[4:]:
889 self.assertFlavoursEqual(851 self.assertFlavoursEqual(
890 "generic", "amd64", "ubuntu", series)852 "generic", "amd64", "ubuntu", series)
@@ -893,12 +855,11 @@
893 "lowlatency", "amd64", "ubuntustudio", series)855 "lowlatency", "amd64", "ubuntustudio", series)
894856
895 def test_armel(self):857 def test_armel(self):
896 self.assertFlavoursEqual("imx51", "armel+imx51", "ubuntu", "jaunty")
897 self.assertFlavoursEqual("imx51", "armel+omap", "ubuntu", "jaunty")
898 for series in all_series[10:]:858 for series in all_series[10:]:
899 self.assertFlavoursEqual(859 self.assertFlavoursEqual(
900 "linaro-lt-mx5", "armel+mx5", "ubuntu", series)860 "linaro-lt-mx5", "armel+mx5", "ubuntu", series)
901 self.assertFlavoursEqual("omap", "armel+omap", "ubuntu", series)861 self.assertFlavoursEqual("omap", "armel+omap", "ubuntu", series)
862 self.assertFlavoursEqual("imx51", "armel+imx51", "ubuntu", series)
902863
903 def test_armhf(self):864 def test_armhf(self):
904 for series in all_series:865 for series in all_series:
@@ -911,11 +872,8 @@
911 self.assertFlavoursEqual("hppa32 hppa64", "hppa", "ubuntu", series)872 self.assertFlavoursEqual("hppa32 hppa64", "hppa", "ubuntu", series)
912873
913 def test_i386(self):874 def test_i386(self):
914 for series in all_series[:4]:875 for series in all_series[4:]:
915 self.assertFlavoursEqual("i386", "i386", "ubuntu", series)
916 for series in all_series[4:15] + all_series[17:]:
917 self.assertFlavoursEqual("generic", "i386", "ubuntu", series)876 self.assertFlavoursEqual("generic", "i386", "ubuntu", series)
918 self.assertFlavoursEqual("generic", "i386", "ubuntu", "precise")
919 for series in all_series[4:]:877 for series in all_series[4:]:
920 self.assertFlavoursEqual("generic", "i386", "xubuntu", series)878 self.assertFlavoursEqual("generic", "i386", "xubuntu", series)
921 self.assertFlavoursEqual("generic", "i386", "lubuntu", series)879 self.assertFlavoursEqual("generic", "i386", "lubuntu", series)
@@ -926,33 +884,18 @@
926 "lowlatency", "i386", "ubuntustudio", series)884 "lowlatency", "i386", "ubuntustudio", series)
927885
928 def test_ia64(self):886 def test_ia64(self):
929 for series in all_series[:4]:
930 self.assertFlavoursEqual(
931 "itanium-smp mckinley-smp", "ia64", "ubuntu", series)
932 for series in all_series[4:10]:
933 self.assertFlavoursEqual(
934 "itanium mckinley", "ia64", "ubuntu", series)
935 for series in all_series[10:]:887 for series in all_series[10:]:
936 self.assertFlavoursEqual("ia64", "ia64", "ubuntu", series)888 self.assertFlavoursEqual("ia64", "ia64", "ubuntu", series)
937889
938 def test_lpia(self):
939 for series in all_series:
940 self.assertFlavoursEqual("lpia", "lpia", "ubuntu", series)
941
942 def test_powerpc(self):890 def test_powerpc(self):
943 for series in all_series[:15]:
944 self.assertFlavoursEqual(
945 "powerpc powerpc64-smp", "powerpc", "ubuntu", series)
946 for series in all_series[15:24]:891 for series in all_series[15:24]:
947 self.assertFlavoursEqual(892 self.assertFlavoursEqual(
948 "powerpc-smp powerpc64-smp", "powerpc", "ubuntu", series)893 "powerpc-smp powerpc64-smp", "powerpc", "ubuntu", series)
949 for series in all_series[24:]:894 for series in all_series[24:]:
950 self.assertFlavoursEqual(895 self.assertFlavoursEqual(
951 "powerpc-smp generic", "powerpc", "ubuntu", series)896 "powerpc-smp generic", "powerpc", "ubuntu", series)
952 self.assertFlavoursEqual("cell", "powerpc+ps3", "ubuntu", "gutsy")897 self.assertFlavoursEqual(
953 for series in all_series[7:15]:898 "powerpc-smp powerpc64-smp", "powerpc+ps3", "ubuntu", "precise")
954 self.assertFlavoursEqual(
955 "powerpc powerpc64-smp", "powerpc+ps3", "ubuntu", "hardy")
956899
957 def test_ppc64el(self):900 def test_ppc64el(self):
958 for series in all_series:901 for series in all_series:
@@ -985,20 +928,6 @@
985 self.config["DIST"] = series928 self.config["DIST"] = series
986 self.assertEqual([], list(live_item_paths(self.config, arch, item)))929 self.assertEqual([], list(live_item_paths(self.config, arch, item)))
987930
988 def test_tocd3_fallback(self):
989 for item in ("cloop", "manifest"):
990 self.assertPathsEqual(
991 ["/home/cjwatson/tocd3/livecd.tocd3.%s" % item],
992 "i386", item, "tocd3", "hoary")
993
994 def test_ubuntu_breezy_fallback(self):
995 for item in ("cloop", "manifest"):
996 for arch in ("amd64", "i386", "powerpc"):
997 self.assertPathsEqual(
998 ["/home/cjwatson/breezy-live/ubuntu/livecd.%s.%s" %
999 (arch, item)],
1000 arch, item, "ubuntu", "breezy")
1001
1002 def test_desktop_items(self):931 def test_desktop_items(self):
1003 for item in (932 for item in (
1004 "cloop", "squashfs", "manifest", "manifest-desktop",933 "cloop", "squashfs", "manifest", "manifest-desktop",
@@ -1019,14 +948,14 @@
1019 def test_imgxz(self):948 def test_imgxz(self):
1020 for item in ("img.xz", "model-assertion"):949 for item in ("img.xz", "model-assertion"):
1021 self.assertPathsEqual(950 self.assertPathsEqual(
1022 ["http://kapok.buildd/~buildd/LiveCD/artful/ubuntu-core/"951 ["http://kapok.buildd/~buildd/LiveCD/xenial/ubuntu-core/"
1023 "current/livecd.ubuntu-core.%s" % item],952 "current/livecd.ubuntu-core.%s" % item],
1024 "amd64", item, "ubuntu-core", "artful")953 "amd64", item, "ubuntu-core", "xenial")
1025 self.assertPathsEqual(954 self.assertPathsEqual(
1026 ["http://kishi00.buildd/~buildd/LiveCD/artful/"955 ["http://kishi00.buildd/~buildd/LiveCD/xenial/"
1027 "ubuntu-core-raspi2/current/"956 "ubuntu-core-raspi2/current/"
1028 "livecd.ubuntu-core-raspi2.%s" % item],957 "livecd.ubuntu-core-raspi2.%s" % item],
1029 "armhf+raspi2", item, "ubuntu-core", "artful")958 "armhf+raspi2", item, "ubuntu-core", "xenial")
1030959
1031 def test_kernel_items(self):960 def test_kernel_items(self):
1032 for item in ("kernel", "initrd", "bootimg"):961 for item in ("kernel", "initrd", "bootimg"):
@@ -1035,14 +964,14 @@
1035 ["%s/livecd.kubuntu.%s-generic" % (root, item),964 ["%s/livecd.kubuntu.%s-generic" % (root, item),
1036 "%s/livecd.kubuntu.%s-generic-hwe" % (root, item)],965 "%s/livecd.kubuntu.%s-generic-hwe" % (root, item)],
1037 "amd64", item, "kubuntu", "precise")966 "amd64", item, "kubuntu", "precise")
1038 root = ("http://royal.buildd/~buildd/LiveCD/hardy/ubuntu-ps3/"967 root = ("http://royal.buildd/~buildd/LiveCD/precise/ubuntu-ps3/"
1039 "current")968 "current")
1040 self.assertPathsEqual(969 self.assertPathsEqual(
1041 ["%s/livecd.ubuntu-ps3.%s-powerpc" % (root, item),970 ["%s/livecd.ubuntu-ps3.%s-powerpc-smp" % (root, item),
1042 "%s/livecd.ubuntu-ps3.%s-powerpc64-smp" % (root, item),971 "%s/livecd.ubuntu-ps3.%s-powerpc64-smp" % (root, item),
1043 "%s/livecd.ubuntu-ps3.%s-powerpc-hwe" % (root, item),972 "%s/livecd.ubuntu-ps3.%s-powerpc-smp-hwe" % (root, item),
1044 "%s/livecd.ubuntu-ps3.%s-powerpc64-smp-hwe" % (root, item)],973 "%s/livecd.ubuntu-ps3.%s-powerpc64-smp-hwe" % (root, item)],
1045 "powerpc+ps3", item, "ubuntu", "hardy")974 "powerpc+ps3", item, "ubuntu", "precise")
1046975
1047 def test_kernel_efi_signed(self):976 def test_kernel_efi_signed(self):
1048 self.assertNoPaths("i386", "kernel-efi-signed", "ubuntu", "quantal")977 self.assertNoPaths("i386", "kernel-efi-signed", "ubuntu", "quantal")
@@ -1056,21 +985,7 @@
1056 ["%s/livecd.ubuntu.kernel-generic.efi.signed" % root],985 ["%s/livecd.ubuntu.kernel-generic.efi.signed" % root],
1057 "amd64", "kernel-efi-signed", "ubuntu", "quantal")986 "amd64", "kernel-efi-signed", "ubuntu", "quantal")
1058987
1059 # TODO: Since this is only of historical interest, we only test a small
1060 # number of cases at the moment.
1061 def test_winfoss(self):
1062 self.assertNoPaths("i386", "winfoss", "ubuntu", "warty")
1063 self.assertNoPaths("powerpc", "winfoss", "ubuntu", "hardy")
1064 self.assertPathsEqual(
1065 ["http://people.canonical.com/~henrik/winfoss/gutsy/"
1066 "ubuntu/current/ubuntu-winfoss-7.10.tar.gz"],
1067 "i386", "winfoss", "ubuntu", "karmic")
1068 self.assertNoPaths("i386", "winfoss", "ubuntu", "precise")
1069
1070 def test_wubi(self):988 def test_wubi(self):
1071 for series in all_series[:6]:
1072 self.assertNoPaths("amd64", "wubi", "ubuntu", series)
1073 self.assertNoPaths("i386", "wubi", "ubuntu", series)
1074 for series in all_series[6:]:989 for series in all_series[6:]:
1075 path = ("http://people.canonical.com/~ubuntu-archive/wubi/%s/"990 path = ("http://people.canonical.com/~ubuntu-archive/wubi/%s/"
1076 "stable" % series)991 "stable" % series)
@@ -1079,15 +994,6 @@
1079 self.assertNoPaths("i386", "wubi", "xubuntu", "precise")994 self.assertNoPaths("i386", "wubi", "xubuntu", "precise")
1080 self.assertNoPaths("powerpc", "wubi", "ubuntu", "precise")995 self.assertNoPaths("powerpc", "wubi", "ubuntu", "precise")
1081996
1082 def test_umenu(self):
1083 for series in all_series[:7] + all_series[8:]:
1084 self.assertNoPaths("amd64", "umenu", "ubuntu", series)
1085 self.assertNoPaths("i386", "umenu", "ubuntu", series)
1086 path = "http://people.canonical.com/~evand/umenu/stable"
1087 self.assertPathsEqual([path], "amd64", "umenu", "ubuntu", "hardy")
1088 self.assertPathsEqual([path], "i386", "umenu", "ubuntu", "hardy")
1089 self.assertNoPaths("powerpc", "umenu", "ubuntu", "hardy")
1090
1091 def test_usb_creator(self):997 def test_usb_creator(self):
1092 for series in all_series:998 for series in all_series:
1093 path = ("http://people.canonical.com/~evand/usb-creator/%s/"999 path = ("http://people.canonical.com/~evand/usb-creator/%s/"
@@ -1118,49 +1024,50 @@
11181024
1119 def test_live_output_directory(self):1025 def test_live_output_directory(self):
1120 self.config["PROJECT"] = "ubuntu"1026 self.config["PROJECT"] = "ubuntu"
1121 self.config["DIST"] = "raring"1027 self.config["DIST"] = "trusty"
1122 self.config["IMAGE_TYPE"] = "daily-live"1028 self.config["IMAGE_TYPE"] = "daily-live"
1123 expected = os.path.join(1029 expected = os.path.join(
1124 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live", "live")1030 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live", "live")
1125 self.assertEqual(expected, live_output_directory(self.config))1031 self.assertEqual(expected, live_output_directory(self.config))
1126 self.config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"1032 self.config["UBUNTU_DEFAULTS_LOCALE"] = "zh_CN"
1127 expected = os.path.join(1033 expected = os.path.join(
1128 self.temp_dir, "scratch", "ubuntu-zh_CN", "raring", "daily-live",1034 self.temp_dir, "scratch", "ubuntu-zh_CN", "trusty", "daily-live",
1129 "live")1035 "live")
1130 self.assertEqual(expected, live_output_directory(self.config))1036 self.assertEqual(expected, live_output_directory(self.config))
11311037
1132 @mock.patch("cdimage.osextras.fetch")1038 @mock.patch("cdimage.osextras.fetch")
1133 def test_download_live_items_no_item(self, mock_fetch):1039 def test_download_live_items_no_item(self, mock_fetch):
1134 self.config["PROJECT"] = "ubuntu"1040 self.config["PROJECT"] = "ubuntu"
1135 self.config["DIST"] = "raring"1041 self.config["DIST"] = "trusty"
1136 self.config["IMAGE_TYPE"] = "daily-live"1042 self.config["IMAGE_TYPE"] = "daily-live"
1137 self.assertFalse(download_live_items(self.config, "powerpc", "umenu"))1043 self.assertFalse(download_live_items(self.config, "powerpc",
1044 "usb-creator"))
1138 self.assertEqual(0, mock_fetch.call_count)1045 self.assertEqual(0, mock_fetch.call_count)
11391046
1140 @mock.patch("cdimage.osextras.fetch", side_effect=osextras.FetchError)1047 @mock.patch("cdimage.osextras.fetch", side_effect=osextras.FetchError)
1141 def test_download_live_items_failed_fetch(self, mock_fetch):1048 def test_download_live_items_failed_fetch(self, mock_fetch):
1142 self.config["PROJECT"] = "ubuntu"1049 self.config["PROJECT"] = "ubuntu"
1143 self.config["DIST"] = "raring"1050 self.config["DIST"] = "trusty"
1144 self.config["IMAGE_TYPE"] = "daily-live"1051 self.config["IMAGE_TYPE"] = "daily-live"
1145 self.assertFalse(download_live_items(self.config, "i386", "squashfs"))1052 self.assertFalse(download_live_items(self.config, "i386", "squashfs"))
1146 mock_fetch.assert_called_once_with(1053 mock_fetch.assert_called_once_with(
1147 self.config,1054 self.config,
1148 "http://cardamom.buildd/~buildd/LiveCD/raring/ubuntu/current/"1055 "http://cardamom.buildd/~buildd/LiveCD/trusty/ubuntu/current/"
1149 "livecd.ubuntu.squashfs",1056 "livecd.ubuntu.squashfs",
1150 os.path.join(1057 os.path.join(
1151 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live",1058 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live",
1152 "live", "i386.squashfs"))1059 "live", "i386.squashfs"))
11531060
1154 @mock.patch("cdimage.osextras.fetch")1061 @mock.patch("cdimage.osextras.fetch")
1155 def test_download_live_items_kernel(self, mock_fetch):1062 def test_download_live_items_kernel(self, mock_fetch):
1156 self.config["PROJECT"] = "ubuntu"1063 self.config["PROJECT"] = "ubuntu"
1157 self.config["DIST"] = "quantal"1064 self.config["DIST"] = "trusty"
1158 self.config["IMAGE_TYPE"] = "daily-live"1065 self.config["IMAGE_TYPE"] = "daily-live"
1159 self.assertTrue(download_live_items(self.config, "powerpc", "kernel"))1066 self.assertTrue(download_live_items(self.config, "powerpc", "kernel"))
1160 prefix = ("http://royal.buildd/~buildd/LiveCD/quantal/ubuntu/current/"1067 prefix = ("http://royal.buildd/~buildd/LiveCD/trusty/ubuntu/current/"
1161 "livecd.ubuntu.kernel-")1068 "livecd.ubuntu.kernel-")
1162 target_dir = os.path.join(1069 target_dir = os.path.join(
1163 self.temp_dir, "scratch", "ubuntu", "quantal", "daily-live",1070 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live",
1164 "live")1071 "live")
1165 mock_fetch.assert_has_calls([1072 mock_fetch.assert_has_calls([
1166 mock.call(1073 mock.call(
@@ -1204,15 +1111,15 @@
1204 @mock.patch("cdimage.osextras.fetch")1111 @mock.patch("cdimage.osextras.fetch")
1205 def test_download_live_items_initrd(self, mock_fetch):1112 def test_download_live_items_initrd(self, mock_fetch):
1206 self.config["PROJECT"] = "ubuntu"1113 self.config["PROJECT"] = "ubuntu"
1207 self.config["DIST"] = "raring"1114 self.config["DIST"] = "trusty"
1208 self.config["IMAGE_TYPE"] = "daily-live"1115 self.config["IMAGE_TYPE"] = "daily-live"
1209 self.assertTrue(download_live_items(self.config, "i386", "kernel"))1116 self.assertTrue(download_live_items(self.config, "i386", "kernel"))
1210 prefix = ("http://cardamom.buildd/~buildd/LiveCD/raring/ubuntu/"1117 prefix = ("http://cardamom.buildd/~buildd/LiveCD/trusty/ubuntu/"
1211 "current/livecd.ubuntu.kernel-")1118 "current/livecd.ubuntu.kernel-")
1212 calls = []1119 calls = []
1213 for suffix in '', '-hwe':1120 for suffix in '', '-hwe':
1214 target_dir = os.path.join(1121 target_dir = os.path.join(
1215 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live",1122 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live",
1216 "live")1123 "live")
1217 calls.append(1124 calls.append(
1218 mock.call(1125 mock.call(
@@ -1223,14 +1130,14 @@
1223 @mock.patch("cdimage.osextras.fetch")1130 @mock.patch("cdimage.osextras.fetch")
1224 def test_download_live_items_kernel_efi_signed(self, mock_fetch):1131 def test_download_live_items_kernel_efi_signed(self, mock_fetch):
1225 self.config["PROJECT"] = "ubuntu"1132 self.config["PROJECT"] = "ubuntu"
1226 self.config["DIST"] = "raring"1133 self.config["DIST"] = "trusty"
1227 self.config["IMAGE_TYPE"] = "daily-live"1134 self.config["IMAGE_TYPE"] = "daily-live"
1228 self.assertTrue(1135 self.assertTrue(
1229 download_live_items(self.config, "amd64", "kernel-efi-signed"))1136 download_live_items(self.config, "amd64", "kernel-efi-signed"))
1230 prefix = ("http://kapok.buildd/~buildd/LiveCD/raring/ubuntu/"1137 prefix = ("http://kapok.buildd/~buildd/LiveCD/trusty/ubuntu/"
1231 "current/livecd.ubuntu.kernel-")1138 "current/livecd.ubuntu.kernel-")
1232 target_dir = os.path.join(1139 target_dir = os.path.join(
1233 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live", "live")1140 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live", "live")
1234 mock_fetch.assert_called_once_with(1141 mock_fetch.assert_called_once_with(
1235 self.config, prefix + "generic.efi.signed",1142 self.config, prefix + "generic.efi.signed",
1236 os.path.join(target_dir, "amd64.kernel-generic.efi.signed"))1143 os.path.join(target_dir, "amd64.kernel-generic.efi.signed"))
@@ -1238,16 +1145,16 @@
1238 @mock.patch("cdimage.osextras.fetch")1145 @mock.patch("cdimage.osextras.fetch")
1239 def test_download_live_items_bootimg(self, mock_fetch):1146 def test_download_live_items_bootimg(self, mock_fetch):
1240 self.config["PROJECT"] = "ubuntu"1147 self.config["PROJECT"] = "ubuntu"
1241 self.config["DIST"] = "raring"1148 self.config["DIST"] = "trusty"
1242 self.config["IMAGE_TYPE"] = "daily-preinstalled"1149 self.config["IMAGE_TYPE"] = "daily-preinstalled"
1243 self.assertTrue(1150 self.assertTrue(
1244 download_live_items(self.config, "armhf+omap4", "bootimg"))1151 download_live_items(self.config, "armhf+omap4", "bootimg"))
1245 url = ("http://kishi00.buildd/~buildd/LiveCD/raring/ubuntu-omap4/"1152 url = ("http://kishi00.buildd/~buildd/LiveCD/trusty/ubuntu-omap4/"
1246 "current/livecd.ubuntu-omap4.bootimg-omap4")1153 "current/livecd.ubuntu-omap4.bootimg-omap4")
1247 calls = []1154 calls = []
1248 for suffix in '', '-hwe':1155 for suffix in '', '-hwe':
1249 target_dir = os.path.join(1156 target_dir = os.path.join(
1250 self.temp_dir, "scratch", "ubuntu", "raring",1157 self.temp_dir, "scratch", "ubuntu", "trusty",
1251 "daily-preinstalled", "live")1158 "daily-preinstalled", "live")
1252 calls.append(1159 calls.append(
1253 mock.call(1160 mock.call(
@@ -1259,77 +1166,52 @@
1259 @mock.patch("cdimage.osextras.fetch")1166 @mock.patch("cdimage.osextras.fetch")
1260 def test_download_live_items_wubi(self, mock_fetch):1167 def test_download_live_items_wubi(self, mock_fetch):
1261 self.config["PROJECT"] = "ubuntu"1168 self.config["PROJECT"] = "ubuntu"
1262 self.config["DIST"] = "raring"1169 self.config["DIST"] = "trusty"
1263 self.config["IMAGE_TYPE"] = "daily-live"1170 self.config["IMAGE_TYPE"] = "daily-live"
1264 self.assertTrue(download_live_items(self.config, "i386", "wubi"))1171 self.assertTrue(download_live_items(self.config, "i386", "wubi"))
1265 url = "http://people.canonical.com/~ubuntu-archive/wubi/raring/stable"1172 url = "http://people.canonical.com/~ubuntu-archive/wubi/trusty/stable"
1266 target_dir = os.path.join(1173 target_dir = os.path.join(
1267 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live", "live")1174 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live", "live")
1268 mock_fetch.assert_called_once_with(1175 mock_fetch.assert_called_once_with(
1269 self.config, url, os.path.join(target_dir, "i386.wubi.exe"))1176 self.config, url, os.path.join(target_dir, "i386.wubi.exe"))
12701177
1271 @mock.patch("cdimage.osextras.fetch")1178 @mock.patch("cdimage.osextras.fetch")
1272 def test_download_live_items_umenu(self, mock_fetch):
1273 self.config["PROJECT"] = "ubuntu"
1274 self.config["DIST"] = "hardy"
1275 self.config["IMAGE_TYPE"] = "daily-live"
1276 self.assertTrue(download_live_items(self.config, "i386", "umenu"))
1277 url = "http://people.canonical.com/~evand/umenu/stable"
1278 target_dir = os.path.join(
1279 self.temp_dir, "scratch", "ubuntu", "hardy", "daily-live", "live")
1280 mock_fetch.assert_called_once_with(
1281 self.config, url, os.path.join(target_dir, "i386.umenu.exe"))
1282
1283 @mock.patch("cdimage.osextras.fetch")
1284 def test_download_live_items_usb_creator(self, mock_fetch):1179 def test_download_live_items_usb_creator(self, mock_fetch):
1285 self.config["PROJECT"] = "ubuntu"1180 self.config["PROJECT"] = "ubuntu"
1286 self.config["DIST"] = "raring"1181 self.config["DIST"] = "trusty"
1287 self.config["IMAGE_TYPE"] = "daily-live"1182 self.config["IMAGE_TYPE"] = "daily-live"
1288 self.assertTrue(1183 self.assertTrue(
1289 download_live_items(self.config, "i386", "usb-creator"))1184 download_live_items(self.config, "i386", "usb-creator"))
1290 url = "http://people.canonical.com/~evand/usb-creator/raring/stable"1185 url = "http://people.canonical.com/~evand/usb-creator/trusty/stable"
1291 target_dir = os.path.join(1186 target_dir = os.path.join(
1292 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live", "live")1187 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live", "live")
1293 mock_fetch.assert_called_once_with(1188 mock_fetch.assert_called_once_with(
1294 self.config, url, os.path.join(target_dir, "i386.usb-creator.exe"))1189 self.config, url, os.path.join(target_dir, "i386.usb-creator.exe"))
12951190
1296 @mock.patch("cdimage.osextras.fetch")1191 @mock.patch("cdimage.osextras.fetch")
1297 def test_download_live_items_winfoss(self, mock_fetch):
1298 self.config["PROJECT"] = "ubuntu"
1299 self.config["DIST"] = "gutsy"
1300 self.config["IMAGE_TYPE"] = "daily-live"
1301 self.assertTrue(download_live_items(self.config, "i386", "winfoss"))
1302 url = ("http://people.canonical.com/~henrik/winfoss/gutsy/ubuntu/"
1303 "current/ubuntu-winfoss-7.10.tar.gz")
1304 target_dir = os.path.join(
1305 self.temp_dir, "scratch", "ubuntu", "gutsy", "daily-live", "live")
1306 mock_fetch.assert_called_once_with(
1307 self.config, url, os.path.join(target_dir, "i386.winfoss.tgz"))
1308
1309 @mock.patch("cdimage.osextras.fetch")
1310 def test_download_live_items_squashfs(self, mock_fetch):1192 def test_download_live_items_squashfs(self, mock_fetch):
1311 self.config["PROJECT"] = "ubuntu"1193 self.config["PROJECT"] = "ubuntu"
1312 self.config["DIST"] = "raring"1194 self.config["DIST"] = "trusty"
1313 self.config["IMAGE_TYPE"] = "daily-live"1195 self.config["IMAGE_TYPE"] = "daily-live"
1314 self.assertTrue(download_live_items(self.config, "i386", "squashfs"))1196 self.assertTrue(download_live_items(self.config, "i386", "squashfs"))
1315 url = ("http://cardamom.buildd/~buildd/LiveCD/raring/ubuntu/"1197 url = ("http://cardamom.buildd/~buildd/LiveCD/trusty/ubuntu/"
1316 "current/livecd.ubuntu.squashfs")1198 "current/livecd.ubuntu.squashfs")
1317 target_dir = os.path.join(1199 target_dir = os.path.join(
1318 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live", "live")1200 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live", "live")
1319 mock_fetch.assert_called_once_with(1201 mock_fetch.assert_called_once_with(
1320 self.config, url, os.path.join(target_dir, "i386.squashfs"))1202 self.config, url, os.path.join(target_dir, "i386.squashfs"))
13211203
1322 @mock.patch("cdimage.osextras.fetch")1204 @mock.patch("cdimage.osextras.fetch")
1323 def test_download_live_items_server_squashfs(self, mock_fetch):1205 def test_download_live_items_server_squashfs(self, mock_fetch):
1324 self.config["PROJECT"] = "edubuntu"1206 self.config["PROJECT"] = "edubuntu"
1325 self.config["DIST"] = "raring"1207 self.config["DIST"] = "trusty"
1326 self.config["IMAGE_TYPE"] = "dvd"1208 self.config["IMAGE_TYPE"] = "dvd"
1327 self.assertTrue(1209 self.assertTrue(
1328 download_live_items(self.config, "i386", "server-squashfs"))1210 download_live_items(self.config, "i386", "server-squashfs"))
1329 url = ("http://cardamom.buildd/~buildd/LiveCD/raring/ubuntu-server/"1211 url = ("http://cardamom.buildd/~buildd/LiveCD/trusty/ubuntu-server/"
1330 "current/livecd.ubuntu-server.squashfs")1212 "current/livecd.ubuntu-server.squashfs")
1331 target_dir = os.path.join(1213 target_dir = os.path.join(
1332 self.temp_dir, "scratch", "edubuntu", "raring", "dvd", "live")1214 self.temp_dir, "scratch", "edubuntu", "trusty", "dvd", "live")
1333 mock_fetch.assert_called_once_with(1215 mock_fetch.assert_called_once_with(
1334 self.config, url, os.path.join(target_dir, "i386.server-squashfs"))1216 self.config, url, os.path.join(target_dir, "i386.server-squashfs"))
13351217
@@ -1364,6 +1246,10 @@
1364 self.assert_server_live_download_items(1246 self.assert_server_live_download_items(
1365 "bionic", "maas-region.squashfs", ["maas-region.squashfs"])1247 "bionic", "maas-region.squashfs", ["maas-region.squashfs"])
13661248
1249 def test_download_live_items_multi_layers_squashfs(self):
1250 self.assert_server_live_download_items(
1251 "disco", "minimal.standard.live.squashfs", ["minimal.standard.live.squashfs"])
1252
1367 def test_download_live_server_boot_items(self):1253 def test_download_live_server_boot_items(self):
1368 self.assert_server_live_download_items(1254 self.assert_server_live_download_items(
1369 "bionic", "kernel",1255 "bionic", "kernel",
@@ -1377,10 +1263,10 @@
13771263
1378 def test_write_autorun(self):1264 def test_write_autorun(self):
1379 self.config["PROJECT"] = "ubuntu"1265 self.config["PROJECT"] = "ubuntu"
1380 self.config["DIST"] = "raring"1266 self.config["DIST"] = "trusty"
1381 self.config["IMAGE_TYPE"] = "daily-live"1267 self.config["IMAGE_TYPE"] = "daily-live"
1382 output_dir = os.path.join(1268 output_dir = os.path.join(
1383 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live", "live")1269 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live", "live")
1384 os.makedirs(output_dir)1270 os.makedirs(output_dir)
1385 write_autorun(self.config, "i386", "wubi.exe", "Install Ubuntu")1271 write_autorun(self.config, "i386", "wubi.exe", "Install Ubuntu")
1386 autorun_path = os.path.join(output_dir, "i386.autorun.inf")1272 autorun_path = os.path.join(output_dir, "i386.autorun.inf")
@@ -1413,13 +1299,13 @@
14131299
1414 mock_fetch.side_effect = fetch_side_effect1300 mock_fetch.side_effect = fetch_side_effect
1415 self.config["PROJECT"] = "ubuntu"1301 self.config["PROJECT"] = "ubuntu"
1416 self.config["DIST"] = "raring"1302 self.config["DIST"] = "trusty"
1417 self.config["IMAGE_TYPE"] = "daily-live"1303 self.config["IMAGE_TYPE"] = "daily-live"
1418 self.config["ARCHES"] = "amd64 i386"1304 self.config["ARCHES"] = "amd64 i386"
1419 self.config["CDIMAGE_LIVE"] = "1"1305 self.config["CDIMAGE_LIVE"] = "1"
1420 download_live_filesystems(self.config)1306 download_live_filesystems(self.config)
1421 output_dir = os.path.join(1307 output_dir = os.path.join(
1422 self.temp_dir, "scratch", "ubuntu", "raring", "daily-live", "live")1308 self.temp_dir, "scratch", "ubuntu", "trusty", "daily-live", "live")
1423 self.assertCountEqual([1309 self.assertCountEqual([
1424 "amd64.autorun.inf",1310 "amd64.autorun.inf",
1425 "amd64.initrd-generic",1311 "amd64.initrd-generic",
14261312
=== modified file 'lib/cdimage/tests/test_mirror.py'
--- lib/cdimage/tests/test_mirror.py 2015-12-08 13:17:26 +0000
+++ lib/cdimage/tests/test_mirror.py 2019-03-07 16:20:18 +0000
@@ -66,10 +66,6 @@
66 for series in all_series:66 for series in all_series:
67 self.assertMirrorEqual("ftp", "i386", series)67 self.assertMirrorEqual("ftp", "i386", series)
6868
69 def test_lpia(self):
70 for series in all_series:
71 self.assertMirrorEqual("ftp", "lpia", series)
72
73 def test_powerpc(self):69 def test_powerpc(self):
74 for series in all_series:70 for series in all_series:
75 self.assertMirrorEqual("ftp", "powerpc", series)71 self.assertMirrorEqual("ftp", "powerpc", series)
7672
=== modified file 'lib/cdimage/tests/test_tree.py'
--- lib/cdimage/tests/test_tree.py 2019-03-06 20:19:33 +0000
+++ lib/cdimage/tests/test_tree.py 2019-03-07 16:20:18 +0000
@@ -247,44 +247,26 @@
247247
248 def test_publish_type(self):248 def test_publish_type(self):
249 for image_type, project, dist, publish_type in (249 for image_type, project, dist, publish_type in (
250 ("daily-preinstalled", "ubuntu-netbook", "precise",
251 "preinstalled-netbook"),
252 ("daily-preinstalled", "ubuntu-headless", "precise",
253 "preinstalled-headless"),
254 ("daily-preinstalled", "ubuntu-server", "precise",250 ("daily-preinstalled", "ubuntu-server", "precise",
255 "preinstalled-server"),251 "preinstalled-server"),
256 ("daily-preinstalled", "ubuntu-server", "xenial",252 ("daily-preinstalled", "ubuntu-server", "xenial",
257 "preinstalled-server"),253 "preinstalled-server"),
258 ("daily-preinstalled", "ubuntu", "precise",254 ("daily-preinstalled", "ubuntu", "precise",
259 "preinstalled-desktop"),255 "preinstalled-desktop"),
260 ("daily-preinstalled", "ubuntu-touch", "saucy",256 ("daily-preinstalled", "ubuntu-touch", "trusty",
261 "preinstalled-touch"),257 "preinstalled-touch"),
262 ("daily-preinstalled", "ubuntu-touch-custom", "vivid",258 ("daily-live", "edubuntu", "precise", "desktop"),
263 "preinstalled-touch"),259 ("daily-live", "kubuntu-netbook", "precise", "netbook"),
264 ("daily-live", "edubuntu", "edgy", "live"),260 ("daily-live", "ubuntu-server", "precise", "live-server"),
265 ("daily-live", "edubuntu", "feisty", "desktop"),261 ("daily-live", "ubuntu", "precise", "desktop"),
266 ("daily-live", "kubuntu-netbook", "lucid", "netbook"),262 ("daily-live", "ubuntu-zh_CN", "trusty", "desktop"),
267 ("daily-live", "kubuntu-plasma5", "utopic", "desktop"),
268 ("daily-live", "ubuntu-mid", "lucid", "mid"),
269 ("daily-live", "ubuntu-moblin-remix", "lucid", "moblin-remix"),
270 ("daily-live", "ubuntu-netbook", "hardy", "netbook"),
271 ("daily-live", "ubuntu-server", "hardy", "live-server"),
272 ("daily-live", "ubuntu", "breezy", "live"),
273 ("daily-live", "ubuntu", "dapper", "desktop"),
274 ("daily-live", "ubuntu-zh_CN", "raring", "desktop"),
275 ("daily-live", "ubuntu-core", "xenial", "live-core"),263 ("daily-live", "ubuntu-core", "xenial", "live-core"),
276 ("ports_dvd", "ubuntu", "hardy", "dvd"),264 ("ports_dvd", "ubuntu", "precise", "dvd"),
277 ("dvd", "kubuntu", "hardy", "dvd"),265 ("dvd", "kubuntu", "precise", "dvd"),
278 ("daily", "edubuntu", "edgy", "install"),266 ("daily", "edubuntu", "precise", "addon"),
279 ("daily", "edubuntu", "feisty", "server"),
280 ("daily", "edubuntu", "gutsy", "server"),
281 ("daily", "edubuntu", "hardy", "addon"),
282 ("daily", "jeos", "hardy", "jeos"),
283 ("daily", "ubuntu-base", "precise", "base"),267 ("daily", "ubuntu-base", "precise", "base"),
284 ("daily", "ubuntu-server", "breezy", "install"),268 ("daily", "ubuntu-server", "precise", "server"),
285 ("daily", "ubuntu-server", "dapper", "server"),269 ("daily", "ubuntu", "precise", "alternate"),
286 ("daily", "ubuntu", "breezy", "install"),
287 ("daily", "ubuntu", "dapper", "alternate"),
288 ):270 ):
289 self.config["PROJECT"] = project271 self.config["PROJECT"] = project
290 self.config["DIST"] = dist272 self.config["DIST"] = dist
@@ -318,8 +300,6 @@
318 for project, expected in (300 for project, expected in (
319 ("ubuntu", [assets + "/vanilla-framework-version-1.8.0.min.css"]),301 ("ubuntu", [assets + "/vanilla-framework-version-1.8.0.min.css"]),
320 ("kubuntu", ["//releases.ubuntu.com/include/kubuntu.css"]),302 ("kubuntu", ["//releases.ubuntu.com/include/kubuntu.css"]),
321 ("kubuntu-plasma5",
322 ["//releases.ubuntu.com/include/kubuntu-plasma5.css"]),
323 ("lubuntu",303 ("lubuntu",
324 ["//cdimage.ubuntu.com/include/lubuntu/style.css"]),304 ["//cdimage.ubuntu.com/include/lubuntu/style.css"]),
325 ("lubuntu-next",305 ("lubuntu-next",
@@ -330,7 +310,7 @@
330 self.assertEqual(expected, publisher.cssincludes())310 self.assertEqual(expected, publisher.cssincludes())
331311
332 def test_cdtypestr(self):312 def test_cdtypestr(self):
333 self.config["DIST"] = "quantal"313 self.config["DIST"] = "trusty"
334 publisher = Publisher(self.tree, "daily-live")314 publisher = Publisher(self.tree, "daily-live")
335 self.assertEqual(315 self.assertEqual(
336 "desktop image", publisher.cdtypestr("desktop", "iso"))316 "desktop image", publisher.cdtypestr("desktop", "iso"))
@@ -338,7 +318,7 @@
338 def test_cdtypedesc_desktop(self):318 def test_cdtypedesc_desktop(self):
339 self.config["PROJECT"] = "ubuntu"319 self.config["PROJECT"] = "ubuntu"
340 self.config["CAPPROJECT"] = "Ubuntu"320 self.config["CAPPROJECT"] = "Ubuntu"
341 self.config["DIST"] = "quantal"321 self.config["DIST"] = "trusty"
342 publisher = Publisher(self.tree, "daily-live")322 publisher = Publisher(self.tree, "daily-live")
343 desc = list(publisher.cdtypedesc("desktop", "iso"))323 desc = list(publisher.cdtypedesc("desktop", "iso"))
344 self.assertEqual(324 self.assertEqual(
@@ -358,7 +338,7 @@
358 def test_cdtypedesc_alternate(self):338 def test_cdtypedesc_alternate(self):
359 self.config["PROJECT"] = "ubuntu"339 self.config["PROJECT"] = "ubuntu"
360 self.config["CAPPROJECT"] = "Ubuntu"340 self.config["CAPPROJECT"] = "Ubuntu"
361 self.config["DIST"] = "quantal"341 self.config["DIST"] = "trusty"
362 publisher = Publisher(self.tree, "daily")342 publisher = Publisher(self.tree, "daily")
363 desc = list(publisher.cdtypedesc("alternate", "iso"))343 desc = list(publisher.cdtypedesc("alternate", "iso"))
364 self.assertEqual(344 self.assertEqual(
@@ -452,30 +432,30 @@
452 def test_find_images(self):432 def test_find_images(self):
453 for name in (433 for name in (
454 "MD5SUMS",434 "MD5SUMS",
455 "raring-desktop-amd64.iso", "raring-desktop-amd64.list",435 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.list",
456 "raring-desktop-i386.iso", "raring-desktop-i386.list",436 "trusty-desktop-i386.iso", "trusty-desktop-i386.list",
457 ):437 ):
458 touch(os.path.join(self.directory, name))438 touch(os.path.join(self.directory, name))
459 publisher = Publisher(self.tree, "daily-live")439 publisher = Publisher(self.tree, "daily-live")
460 self.assertCountEqual(440 self.assertCountEqual(
461 ["raring-desktop-amd64.list", "raring-desktop-i386.list"],441 ["trusty-desktop-amd64.list", "trusty-desktop-i386.list"],
462 publisher.find_images(self.directory, "raring", "desktop"))442 publisher.find_images(self.directory, "trusty", "desktop"))
463443
464 def test_find_source_images(self):444 def test_find_source_images(self):
465 for name in (445 for name in (
466 "MD5SUMS",446 "MD5SUMS",
467 "raring-src-1.iso", "raring-src-2.iso", "raring-src-3.iso",447 "trusty-src-1.iso", "trusty-src-2.iso", "trusty-src-3.iso",
468 ):448 ):
469 touch(os.path.join(self.directory, name))449 touch(os.path.join(self.directory, name))
470 publisher = Publisher(self.tree, "daily-live")450 publisher = Publisher(self.tree, "daily-live")
471 self.assertEqual(451 self.assertEqual(
472 [1, 2, 3], publisher.find_source_images(self.directory, "raring"))452 [1, 2, 3], publisher.find_source_images(self.directory, "trusty"))
473453
474 def test_find_any_with_extension(self):454 def test_find_any_with_extension(self):
475 for name in (455 for name in (
476 "MD5SUMS",456 "MD5SUMS",
477 "raring-desktop-amd64.iso", "raring-desktop-amd64.iso.torrent",457 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.iso.torrent",
478 "raring-desktop-i386.iso", "raring-desktop-i386.list",458 "trusty-desktop-i386.iso", "trusty-desktop-i386.list",
479 ):459 ):
480 touch(os.path.join(self.directory, name))460 touch(os.path.join(self.directory, name))
481 publisher = Publisher(self.tree, "daily-live")461 publisher = Publisher(self.tree, "daily-live")
@@ -496,21 +476,21 @@
496 # upgrading to XHTML so that we can use an XML parser.476 # upgrading to XHTML so that we can use an XML parser.
497 self.config["PROJECT"] = "ubuntu"477 self.config["PROJECT"] = "ubuntu"
498 self.config["CAPPROJECT"] = "Ubuntu"478 self.config["CAPPROJECT"] = "Ubuntu"
499 self.config["DIST"] = "raring"479 self.config["DIST"] = "trusty"
500 for name in (480 for name in (
501 "MD5SUMS",481 "MD5SUMS",
502 "raring-desktop-amd64.iso", "raring-desktop-amd64.iso.zsync",482 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.iso.zsync",
503 "raring-desktop-i386.iso", "raring-desktop-i386.list",483 "trusty-desktop-i386.iso", "trusty-desktop-i386.list",
504 ):484 ):
505 touch(os.path.join(self.directory, name))485 touch(os.path.join(self.directory, name))
506 publisher = Publisher(self.tree, "daily-live")486 publisher = Publisher(self.tree, "daily-live")
507 publisher.make_web_indices(self.directory, "raring", status="daily")487 publisher.make_web_indices(self.directory, "trusty", status="daily")
508488
509 self.assertCountEqual([489 self.assertCountEqual([
510 "HEADER.html", "FOOTER.html", ".htaccess",490 "HEADER.html", "FOOTER.html", ".htaccess",
511 "MD5SUMS",491 "MD5SUMS",
512 "raring-desktop-amd64.iso", "raring-desktop-amd64.iso.zsync",492 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.iso.zsync",
513 "raring-desktop-i386.iso", "raring-desktop-i386.list",493 "trusty-desktop-i386.iso", "trusty-desktop-i386.list",
514 ], os.listdir(self.directory))494 ], os.listdir(self.directory))
515495
516 header_path = os.path.join(self.directory, "HEADER.html")496 header_path = os.path.join(self.directory, "HEADER.html")
@@ -533,13 +513,13 @@
533 self.assertEqual(513 self.assertEqual(
534 "AddDescription \"Desktop image for 64-bit PC (AMD64) "514 "AddDescription \"Desktop image for 64-bit PC (AMD64) "
535 "computers (<a href=\\\"http://zsync.moria.org.uk/\\\">"515 "computers (<a href=\\\"http://zsync.moria.org.uk/\\\">"
536 "zsync</a> metafile)\" raring-desktop-amd64.iso.zsync\n"516 "zsync</a> metafile)\" trusty-desktop-amd64.iso.zsync\n"
537 "AddDescription \"Desktop image for 64-bit PC (AMD64) "517 "AddDescription \"Desktop image for 64-bit PC (AMD64) "
538 "computers (standard download)\" raring-desktop-amd64.iso\n"518 "computers (standard download)\" trusty-desktop-amd64.iso\n"
539 "AddDescription \"Desktop image for 32-bit PC (i386) "519 "AddDescription \"Desktop image for 32-bit PC (i386) "
540 "computers (standard download)\" raring-desktop-i386.iso\n"520 "computers (standard download)\" trusty-desktop-i386.iso\n"
541 "AddDescription \"Desktop image for 32-bit PC (i386) "521 "AddDescription \"Desktop image for 32-bit PC (i386) "
542 "computers (file listing)\" raring-desktop-i386.list\n"522 "computers (file listing)\" trusty-desktop-i386.list\n"
543 "\n"523 "\n"
544 "HeaderName HEADER.html\n"524 "HeaderName HEADER.html\n"
545 "ReadmeName FOOTER.html\n"525 "ReadmeName FOOTER.html\n"
@@ -739,35 +719,24 @@
739 ("edubuntu", None, "daily-preinstalled", "i386", 4700372992),719 ("edubuntu", None, "daily-preinstalled", "i386", 4700372992),
740 ("edubuntu", None, "dvd", "i386", 4700372992),720 ("edubuntu", None, "dvd", "i386", 4700372992),
741 ("ubuntustudio", None, "dvd", "i386", 4700372992),721 ("ubuntustudio", None, "dvd", "i386", 4700372992),
742 ("ubuntu-mid", None, "daily-live", "i386", 1073741824),
743 ("ubuntu-moblin-remix", None, "daily-live", "i386", 1073741824),
744 ("kubuntu", "trusty", "daily-live", "i386", 1283457024),722 ("kubuntu", "trusty", "daily-live", "i386", 1283457024),
745 ("kubuntu", "xenial", "daily-live", "i386", 2000000000),723 ("kubuntu", "xenial", "daily-live", "i386", 2000000000),
746 ("kubuntu-active", "trusty", "daily-live", "i386", 1283457024),724 ("kubuntu-active", "trusty", "daily-live", "i386", 1283457024),
747 ("kubuntu-active", "xenial", "daily-live", "i386", 2000000000),725 ("kubuntu-active", "xenial", "daily-live", "i386", 2000000000),
748 ("kubuntu-plasma5", "trusty", "daily-live", "i386", 1283457024),
749 ("kubuntu-plasma5", "xenial", "daily-live", "i386", 2000000000),
750 ("ubuntu", None, "dvd", "i386", 4700372992),726 ("ubuntu", None, "dvd", "i386", 4700372992),
751 ("ubuntu", "precise", "daily-live", "i386", 736665600),727 ("ubuntu", "precise", "daily-live", "i386", 736665600),
752 ("ubuntu", "quantal", "daily-live", "i386", 801000000),
753 ("ubuntu", "raring", "daily-live", "i386", 835000000),
754 ("ubuntu", "raring", "daily-live", "powerpc", 850000000),
755 ("ubuntu", "saucy", "daily-live", "i386", 950000000),
756 ("ubuntu", "saucy", "daily-live", "powerpc", 950000000),
757 ("ubuntu", "trusty", "daily-live", "i386", 1200000000),728 ("ubuntu", "trusty", "daily-live", "i386", 1200000000),
758 ("ubuntu", "trusty", "daily-live", "powerpc", 1200000000),729 ("ubuntu", "trusty", "daily-live", "powerpc", 1200000000),
759 ("ubuntu", "xenial", "daily-live", "i386", 2000000000),730 ("ubuntu", "xenial", "daily-live", "i386", 2000000000),
760 ("xubuntu", "quantal", "daily-live", "i386", 736665600),
761 ("xubuntu", "raring", "daily-live", "i386", 1073741824),
762 ("xubuntu", "xenial", "daily-live", "i386", 2000000000),731 ("xubuntu", "xenial", "daily-live", "i386", 2000000000),
763 ("ubuntu-gnome", "saucy", "daily-live", "i386", 1073741824),732 ("ubuntu-gnome", "trusty", "daily-live", "i386", 1073741824),
764 ("ubuntu-gnome", "xenial", "daily-live", "i386", 2000000000),733 ("ubuntu-gnome", "xenial", "daily-live", "i386", 2000000000),
765 ("ubuntu-budgie", "zesty", "daily-live", "i386", 2000000000),734 ("ubuntu-budgie", "bionic", "daily-live", "i386", 2000000000),
766 ("ubuntu-mate", "trusty", "daily-live", "amd64", 1073741824),735 ("ubuntu-mate", "trusty", "daily-live", "amd64", 1073741824),
767 ("ubuntu-mate", "xenial", "daily-live", "amd64", 2000000000),736 ("ubuntu-mate", "xenial", "daily-live", "amd64", 2000000000),
768 ("ubuntu-server", "xenial", "daily", "amd64", 1073741824),737 ("ubuntu-server", "xenial", "daily", "amd64", 1073741824),
769 ("ubuntu-server", "zesty", "daily", "amd64", 736665600),738 ("ubuntu-server", "bionic", "daily", "amd64", 1073741824),
770 ("ubuntu-server", "zesty", "daily", "ppc64el", 1073741824),739 ("ubuntu-server", "bionic", "daily", "ppc64el", 1073741824),
771 ):740 ):
772 if dist is not None:741 if dist is not None:
773 self.config["DIST"] = dist742 self.config["DIST"] = dist
@@ -843,27 +812,21 @@
843812
844 def test_jigdo_ports_powerpc(self):813 def test_jigdo_ports_powerpc(self):
845 publisher = self.make_publisher("ubuntu", "daily")814 publisher = self.make_publisher("ubuntu", "daily")
846 for series in all_series[:5]:
847 publisher.config["DIST"] = series
848 self.assertFalse(publisher.jigdo_ports("powerpc"))
849 for series in all_series[5:]:815 for series in all_series[5:]:
850 publisher.config["DIST"] = series816 publisher.config["DIST"] = series
851 self.assertTrue(publisher.jigdo_ports("powerpc"))817 self.assertTrue(publisher.jigdo_ports("powerpc"))
852818
853 def test_jigdo_ports_sparc(self):819 def test_jigdo_ports_sparc(self):
854 publisher = self.make_publisher("ubuntu", "daily")820 publisher = self.make_publisher("ubuntu", "daily")
855 for series in all_series[:3] + all_series[7:]:821 for series in all_series[7:]:
856 publisher.config["DIST"] = series822 publisher.config["DIST"] = series
857 self.assertTrue(publisher.jigdo_ports("sparc"))823 self.assertTrue(publisher.jigdo_ports("sparc"))
858 for series in all_series[3:7]:
859 publisher.config["DIST"] = series
860 self.assertFalse(publisher.jigdo_ports("sparc"))
861824
862 def test_jigdo_ports(self):825 def test_jigdo_ports(self):
863 publisher = self.make_publisher("ubuntu", "daily")826 publisher = self.make_publisher("ubuntu", "daily")
864 for arch in ("amd64", "i386"):827 for arch in ("amd64", "i386"):
865 self.assertFalse(publisher.jigdo_ports(arch))828 self.assertFalse(publisher.jigdo_ports(arch))
866 for arch in ("armel", "armhf", "hppa", "ia64", "lpia", "ppc64el",829 for arch in ("armel", "armhf", "hppa", "ia64", "ppc64el",
867 "s390x"):830 "s390x"):
868 self.assertTrue(publisher.jigdo_ports(arch))831 self.assertTrue(publisher.jigdo_ports(arch))
869832
@@ -921,7 +884,7 @@
921 return_value="img.xz")884 return_value="img.xz")
922 @mock.patch("cdimage.tree.zsyncmake")885 @mock.patch("cdimage.tree.zsyncmake")
923 def test_publish_core_binary(self, mock_zsyncmake, *args):886 def test_publish_core_binary(self, mock_zsyncmake, *args):
924 self.config["DIST"] = "artful"887 self.config["DIST"] = "xenial"
925 publisher = self.make_publisher("ubuntu-core", "daily-live")888 publisher = self.make_publisher("ubuntu-core", "daily-live")
926 source_dir = publisher.image_output("amd64")889 source_dir = publisher.image_output("amd64")
927 touch(os.path.join(890 touch(os.path.join(
@@ -1025,17 +988,17 @@
1025 os.readlink(os.path.join(publisher.publish_base, "current")))988 os.readlink(os.path.join(publisher.publish_base, "current")))
1026989
1027 def test_published_images(self):990 def test_published_images(self):
1028 self.config["DIST"] = "raring"991 self.config["DIST"] = "trusty"
1029 publisher = self.make_publisher("ubuntu", "daily-live")992 publisher = self.make_publisher("ubuntu", "daily-live")
1030 target_dir = os.path.join(publisher.publish_base, "20130321")993 target_dir = os.path.join(publisher.publish_base, "20130321")
1031 for name in (994 for name in (
1032 "MD5SUMS",995 "MD5SUMS",
1033 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",996 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1034 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",997 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1035 ):998 ):
1036 touch(os.path.join(target_dir, name))999 touch(os.path.join(target_dir, name))
1037 self.assertEqual(1000 self.assertEqual(
1038 set(["raring-desktop-amd64.iso", "raring-desktop-i386.iso"]),1001 set(["trusty-desktop-amd64.iso", "trusty-desktop-i386.iso"]),
1039 publisher.published_images("20130321"))1002 publisher.published_images("20130321"))
10401003
1041 def test_published_core_images(self):1004 def test_published_core_images(self):
@@ -1057,12 +1020,12 @@
10571020
1058 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")1021 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")
1059 def test_mark_current_missing_to_single(self, mock_polish_directory):1022 def test_mark_current_missing_to_single(self, mock_polish_directory):
1060 self.config["DIST"] = "raring"1023 self.config["DIST"] = "trusty"
1061 publisher = self.make_publisher("ubuntu", "daily-live")1024 publisher = self.make_publisher("ubuntu", "daily-live")
1062 target_dir = os.path.join(publisher.publish_base, "20130321")1025 target_dir = os.path.join(publisher.publish_base, "20130321")
1063 for name in (1026 for name in (
1064 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1027 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1065 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1028 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1066 ):1029 ):
1067 touch(os.path.join(target_dir, name))1030 touch(os.path.join(target_dir, name))
1068 publisher.mark_current("20130321", ["amd64", "i386"])1031 publisher.mark_current("20130321", ["amd64", "i386"])
@@ -1073,13 +1036,13 @@
10731036
1074 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")1037 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")
1075 def test_mark_current_missing_to_mixed(self, mock_polish_directory):1038 def test_mark_current_missing_to_mixed(self, mock_polish_directory):
1076 self.config["DIST"] = "raring"1039 self.config["DIST"] = "trusty"
1077 publisher = self.make_publisher("ubuntu", "daily-live")1040 publisher = self.make_publisher("ubuntu", "daily-live")
1078 target_dir = os.path.join(publisher.publish_base, "20130321")1041 target_dir = os.path.join(publisher.publish_base, "20130321")
1079 for name in (1042 for name in (
1080 "MD5SUMS",1043 "MD5SUMS",
1081 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1044 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1082 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1045 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1083 ):1046 ):
1084 touch(os.path.join(target_dir, name))1047 touch(os.path.join(target_dir, name))
1085 publisher.mark_current("20130321", ["amd64"])1048 publisher.mark_current("20130321", ["amd64"])
@@ -1087,10 +1050,10 @@
1087 self.assertFalse(os.path.islink(publish_current))1050 self.assertFalse(os.path.islink(publish_current))
1088 self.assertTrue(os.path.isdir(publish_current))1051 self.assertTrue(os.path.isdir(publish_current))
1089 self.assertCountEqual(1052 self.assertCountEqual(
1090 ["raring-desktop-amd64.iso", "raring-desktop-amd64.manifest"],1053 ["trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest"],
1091 os.listdir(publish_current))1054 os.listdir(publish_current))
1092 for name in (1055 for name in (
1093 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1056 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1094 ):1057 ):
1095 path = os.path.join(publish_current, name)1058 path = os.path.join(publish_current, name)
1096 self.assertTrue(os.path.islink(path))1059 self.assertTrue(os.path.islink(path))
@@ -1101,12 +1064,12 @@
11011064
1102 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")1065 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")
1103 def test_mark_current_single_to_single(self, mock_polish_directory):1066 def test_mark_current_single_to_single(self, mock_polish_directory):
1104 self.config["DIST"] = "raring"1067 self.config["DIST"] = "trusty"
1105 publisher = self.make_publisher("ubuntu", "daily-live")1068 publisher = self.make_publisher("ubuntu", "daily-live")
1106 for date in "20130320", "20130321":1069 for date in "20130320", "20130321":
1107 for name in (1070 for name in (
1108 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1071 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1109 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1072 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1110 ):1073 ):
1111 touch(os.path.join(publisher.publish_base, date, name))1074 touch(os.path.join(publisher.publish_base, date, name))
1112 publish_current = os.path.join(publisher.publish_base, "current")1075 publish_current = os.path.join(publisher.publish_base, "current")
@@ -1118,13 +1081,13 @@
11181081
1119 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")1082 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")
1120 def test_mark_current_single_to_mixed(self, mock_polish_directory):1083 def test_mark_current_single_to_mixed(self, mock_polish_directory):
1121 self.config["DIST"] = "raring"1084 self.config["DIST"] = "trusty"
1122 publisher = self.make_publisher("ubuntu", "daily-live")1085 publisher = self.make_publisher("ubuntu", "daily-live")
1123 for date in "20130320", "20130321":1086 for date in "20130320", "20130321":
1124 for name in (1087 for name in (
1125 "MD5SUMS",1088 "MD5SUMS",
1126 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1089 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1127 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1090 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1128 ):1091 ):
1129 touch(os.path.join(publisher.publish_base, date, name))1092 touch(os.path.join(publisher.publish_base, date, name))
1130 publish_current = os.path.join(publisher.publish_base, "current")1093 publish_current = os.path.join(publisher.publish_base, "current")
@@ -1133,13 +1096,13 @@
1133 self.assertFalse(os.path.islink(publish_current))1096 self.assertFalse(os.path.islink(publish_current))
1134 self.assertTrue(os.path.isdir(publish_current))1097 self.assertTrue(os.path.isdir(publish_current))
1135 self.assertCountEqual([1098 self.assertCountEqual([
1136 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1099 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1137 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1100 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1138 ], os.listdir(publish_current))1101 ], os.listdir(publish_current))
1139 for date, arch in (("20130320", "i386"), ("20130321", "amd64")):1102 for date, arch in (("20130320", "i386"), ("20130321", "amd64")):
1140 for name in (1103 for name in (
1141 "raring-desktop-%s.iso" % arch,1104 "trusty-desktop-%s.iso" % arch,
1142 "raring-desktop-%s.manifest" % arch,1105 "trusty-desktop-%s.manifest" % arch,
1143 ):1106 ):
1144 path = os.path.join(publish_current, name)1107 path = os.path.join(publish_current, name)
1145 self.assertTrue(os.path.islink(path))1108 self.assertTrue(os.path.islink(path))
@@ -1153,21 +1116,21 @@
11531116
1154 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")1117 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")
1155 def test_mark_current_mixed_to_single(self, mock_polish_directory):1118 def test_mark_current_mixed_to_single(self, mock_polish_directory):
1156 self.config["DIST"] = "raring"1119 self.config["DIST"] = "trusty"
1157 publisher = self.make_publisher("ubuntu", "daily-live")1120 publisher = self.make_publisher("ubuntu", "daily-live")
1158 for date in "20130320", "20130321":1121 for date in "20130320", "20130321":
1159 for name in (1122 for name in (
1160 "MD5SUMS",1123 "MD5SUMS",
1161 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1124 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1162 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1125 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1163 ):1126 ):
1164 touch(os.path.join(publisher.publish_base, date, name))1127 touch(os.path.join(publisher.publish_base, date, name))
1165 publish_current = os.path.join(publisher.publish_base, "current")1128 publish_current = os.path.join(publisher.publish_base, "current")
1166 osextras.ensuredir(publish_current)1129 osextras.ensuredir(publish_current)
1167 for date, arch in (("20130320", "i386"), ("20130321", "amd64")):1130 for date, arch in (("20130320", "i386"), ("20130321", "amd64")):
1168 for name in (1131 for name in (
1169 "raring-desktop-%s.iso" % arch,1132 "trusty-desktop-%s.iso" % arch,
1170 "raring-desktop-%s.manifest" % arch,1133 "trusty-desktop-%s.manifest" % arch,
1171 ):1134 ):
1172 os.symlink(1135 os.symlink(
1173 os.path.join(os.pardir, date, name),1136 os.path.join(os.pardir, date, name),
@@ -1179,25 +1142,25 @@
11791142
1180 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")1143 @mock.patch("cdimage.tree.DailyTreePublisher.polish_directory")
1181 def test_mark_current_mixed_to_mixed(self, mock_polish_directory):1144 def test_mark_current_mixed_to_mixed(self, mock_polish_directory):
1182 self.config["DIST"] = "raring"1145 self.config["DIST"] = "trusty"
1183 publisher = self.make_publisher("ubuntu", "daily-live")1146 publisher = self.make_publisher("ubuntu", "daily-live")
1184 for date in "20130320", "20130321":1147 for date in "20130320", "20130321":
1185 for name in (1148 for name in (
1186 "MD5SUMS",1149 "MD5SUMS",
1187 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1150 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1188 "raring-desktop-amd64+mac.iso",1151 "trusty-desktop-amd64+mac.iso",
1189 "raring-desktop-amd64+mac.manifest",1152 "trusty-desktop-amd64+mac.manifest",
1190 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1153 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1191 "raring-desktop-powerpc.iso",1154 "trusty-desktop-powerpc.iso",
1192 "raring-desktop-powerpc.manifest",1155 "trusty-desktop-powerpc.manifest",
1193 ):1156 ):
1194 touch(os.path.join(publisher.publish_base, date, name))1157 touch(os.path.join(publisher.publish_base, date, name))
1195 publish_current = os.path.join(publisher.publish_base, "current")1158 publish_current = os.path.join(publisher.publish_base, "current")
1196 osextras.ensuredir(publish_current)1159 osextras.ensuredir(publish_current)
1197 for date, arch in (("20130320", "i386"), ("20130321", "amd64")):1160 for date, arch in (("20130320", "i386"), ("20130321", "amd64")):
1198 for name in (1161 for name in (
1199 "raring-desktop-%s.iso" % arch,1162 "trusty-desktop-%s.iso" % arch,
1200 "raring-desktop-%s.manifest" % arch,1163 "trusty-desktop-%s.manifest" % arch,
1201 ):1164 ):
1202 os.symlink(1165 os.symlink(
1203 os.path.join(os.pardir, date, name),1166 os.path.join(os.pardir, date, name),
@@ -1206,12 +1169,12 @@
1206 self.assertFalse(os.path.islink(publish_current))1169 self.assertFalse(os.path.islink(publish_current))
1207 self.assertTrue(os.path.isdir(publish_current))1170 self.assertTrue(os.path.isdir(publish_current))
1208 self.assertCountEqual([1171 self.assertCountEqual([
1209 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1172 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1210 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1173 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1211 ], os.listdir(publish_current))1174 ], os.listdir(publish_current))
1212 for name in (1175 for name in (
1213 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1176 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1214 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1177 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1215 ):1178 ):
1216 path = os.path.join(publish_current, name)1179 path = os.path.join(publish_current, name)
1217 self.assertTrue(os.path.islink(path))1180 self.assertTrue(os.path.islink(path))
@@ -1227,19 +1190,19 @@
1227 self.assertFalse(os.path.islink(publish_current))1190 self.assertFalse(os.path.islink(publish_current))
1228 self.assertTrue(os.path.isdir(publish_current))1191 self.assertTrue(os.path.isdir(publish_current))
1229 self.assertCountEqual([1192 self.assertCountEqual([
1230 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1193 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1231 "raring-desktop-amd64+mac.iso",1194 "trusty-desktop-amd64+mac.iso",
1232 "raring-desktop-amd64+mac.manifest",1195 "trusty-desktop-amd64+mac.manifest",
1233 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1196 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1234 "raring-desktop-powerpc.iso", "raring-desktop-powerpc.manifest",1197 "trusty-desktop-powerpc.iso", "trusty-desktop-powerpc.manifest",
1235 ], os.listdir(publish_current))1198 ], os.listdir(publish_current))
1236 for date, arch in (1199 for date, arch in (
1237 ("20130320", "amd64+mac"), ("20130320", "powerpc"),1200 ("20130320", "amd64+mac"), ("20130320", "powerpc"),
1238 ("20130321", "amd64"), ("20130321", "i386"),1201 ("20130321", "amd64"), ("20130321", "i386"),
1239 ):1202 ):
1240 for name in (1203 for name in (
1241 "raring-desktop-%s.iso" % arch,1204 "trusty-desktop-%s.iso" % arch,
1242 "raring-desktop-%s.manifest" % arch,1205 "trusty-desktop-%s.manifest" % arch,
1243 ):1206 ):
1244 path = os.path.join(publish_current, name)1207 path = os.path.join(publish_current, name)
1245 self.assertTrue(os.path.islink(path))1208 self.assertTrue(os.path.islink(path))
@@ -1257,8 +1220,8 @@
1257 publisher = self.make_publisher("ubuntu", "daily-live")1220 publisher = self.make_publisher("ubuntu", "daily-live")
1258 old_target_dir = os.path.join(publisher.publish_base, "20130321")1221 old_target_dir = os.path.join(publisher.publish_base, "20130321")
1259 for name in (1222 for name in (
1260 "raring-desktop-amd64.iso", "raring-desktop-amd64.manifest",1223 "trusty-desktop-amd64.iso", "trusty-desktop-amd64.manifest",
1261 "raring-desktop-i386.iso", "raring-desktop-i386.manifest",1224 "trusty-desktop-i386.iso", "trusty-desktop-i386.manifest",
1262 ):1225 ):
1263 touch(os.path.join(old_target_dir, name))1226 touch(os.path.join(old_target_dir, name))
1264 target_dir = os.path.join(publisher.publish_base, "20130921")1227 target_dir = os.path.join(publisher.publish_base, "20130921")
@@ -1292,8 +1255,6 @@
1292 ("ubuntu", "daily-live", "desktop", "Ubuntu Desktop"),1255 ("ubuntu", "daily-live", "desktop", "Ubuntu Desktop"),
1293 ("kubuntu", "daily-live", "desktop", "Kubuntu Desktop"),1256 ("kubuntu", "daily-live", "desktop", "Kubuntu Desktop"),
1294 ("kubuntu-active", "daily-live", "desktop", "Kubuntu Active"),1257 ("kubuntu-active", "daily-live", "desktop", "Kubuntu Active"),
1295 ("kubuntu-plasma5", "daily-live", "desktop",
1296 "Kubuntu Plasma 5 Desktop"),
1297 ("edubuntu", "dvd", "dvd", "Edubuntu DVD"),1258 ("edubuntu", "dvd", "dvd", "Edubuntu DVD"),
1298 ("xubuntu", "daily-live", "desktop", "Xubuntu Desktop"),1259 ("xubuntu", "daily-live", "desktop", "Xubuntu Desktop"),
1299 ("ubuntu-server", "daily", "server", "Ubuntu Server"),1260 ("ubuntu-server", "daily", "server", "Ubuntu Server"),
@@ -1308,8 +1269,6 @@
1308 ("ubuntu-budgie", "daily-live", "desktop",1269 ("ubuntu-budgie", "daily-live", "desktop",
1309 "Ubuntu Budgie Desktop"),1270 "Ubuntu Budgie Desktop"),
1310 ("ubuntu-mate", "daily-live", "desktop", "Ubuntu MATE Desktop"),1271 ("ubuntu-mate", "daily-live", "desktop", "Ubuntu MATE Desktop"),
1311 ("ubuntu-desktop-next", "daily-preinstalled",
1312 "preinstalled-desktop-next", "Ubuntu Desktop (Unity 8)"),
1313 ):1272 ):
1314 # Use "daily" here to match bin/post-qa; qa_product shouldn't1273 # Use "daily" here to match bin/post-qa; qa_product shouldn't
1315 # use the publisher's image_type at all.1274 # use the publisher's image_type at all.
@@ -1335,15 +1294,6 @@
1335 "ubuntu-touch", "daily-preinstalled", "preinstalled-touch",1294 "ubuntu-touch", "daily-preinstalled", "preinstalled-touch",
1336 "armhf"))1295 "armhf"))
13371296
1338 def test_qa_product_ubuntu_touch_custom(self):
1339 publisher = self.make_publisher(
1340 "ubuntu-touch-custom", "daily-preinstalled")
1341 self.assertEqual(
1342 ("Ubuntu Touch Custom armhf", "iso"),
1343 publisher.qa_product(
1344 "ubuntu-touch-custom", "daily-preinstalled",
1345 "preinstalled-touch", "armhf"))
1346
1347 def test_qa_product_ubuntu_preinstalled(self):1297 def test_qa_product_ubuntu_preinstalled(self):
1348 publisher = self.make_publisher("ubuntu", "daily")1298 publisher = self.make_publisher("ubuntu", "daily")
1349 self.assertEqual(1299 self.assertEqual(
@@ -1365,8 +1315,6 @@
1365 ("ubuntu", "daily-live", "desktop", "Ubuntu Desktop"),1315 ("ubuntu", "daily-live", "desktop", "Ubuntu Desktop"),
1366 ("kubuntu", "daily-live", "desktop", "Kubuntu Desktop"),1316 ("kubuntu", "daily-live", "desktop", "Kubuntu Desktop"),
1367 ("kubuntu-active", "daily-live", "desktop", "Kubuntu Active"),1317 ("kubuntu-active", "daily-live", "desktop", "Kubuntu Active"),
1368 ("kubuntu-plasma5", "daily-live", "desktop",
1369 "Kubuntu Plasma 5 Desktop"),
1370 ("edubuntu", "dvd", "dvd", "Edubuntu DVD"),1318 ("edubuntu", "dvd", "dvd", "Edubuntu DVD"),
1371 ("xubuntu", "daily-live", "desktop", "Xubuntu Desktop"),1319 ("xubuntu", "daily-live", "desktop", "Xubuntu Desktop"),
1372 ("ubuntu-server", "daily", "server", "Ubuntu Server"),1320 ("ubuntu-server", "daily", "server", "Ubuntu Server"),
@@ -1381,8 +1329,6 @@
1381 ("ubuntu-budgie", "daily-live", "desktop",1329 ("ubuntu-budgie", "daily-live", "desktop",
1382 "Ubuntu Budgie Desktop"),1330 "Ubuntu Budgie Desktop"),
1383 ("ubuntu-mate", "daily-live", "desktop", "Ubuntu MATE Desktop"),1331 ("ubuntu-mate", "daily-live", "desktop", "Ubuntu MATE Desktop"),
1384 ("ubuntu-desktop-next/system-image", "daily-preinstalled",
1385 "preinstalled-desktop-next", "Ubuntu Desktop (Unity 8)"),
1386 ):1332 ):
1387 # Use "daily" here to match bin/post-qa; qa_product shouldn't1333 # Use "daily" here to match bin/post-qa; qa_product shouldn't
1388 # use the publisher's image_type at all.1334 # use the publisher's image_type at all.
@@ -1405,14 +1351,14 @@
1405 os.makedirs(os.path.join(publisher.publish_base, "20130221"))1351 os.makedirs(os.path.join(publisher.publish_base, "20130221"))
1406 publisher.post_qa(1352 publisher.post_qa(
1407 "20130221", [1353 "20130221", [
1408 "ubuntu/daily-live/raring-desktop-i386",1354 "ubuntu/daily-live/trusty-desktop-i386",
1409 "ubuntu/daily-live/raring-desktop-amd64",1355 "ubuntu/daily-live/trusty-desktop-amd64",
1410 ])1356 ])
1411 expected = [1357 expected = [
1412 ["Ubuntu Desktop i386", "20130221", ""],1358 ["Ubuntu Desktop i386", "20130221", ""],
1413 ["Ubuntu Desktop amd64", "20130221", ""],1359 ["Ubuntu Desktop amd64", "20130221", ""],
1414 ]1360 ]
1415 self.assertEqual("iso-raring", isotracker_module.tracker.target)1361 self.assertEqual("iso-trusty", isotracker_module.tracker.target)
1416 self.assertEqual(expected, isotracker_module.tracker.posted)1362 self.assertEqual(expected, isotracker_module.tracker.posted)
14171363
1418 os.makedirs(os.path.join(1364 os.makedirs(os.path.join(
@@ -1434,14 +1380,14 @@
1434 publisher = self.make_publisher("ubuntu", "daily-live")1380 publisher = self.make_publisher("ubuntu", "daily-live")
1435 touch(os.path.join(1381 touch(os.path.join(
1436 self.temp_dir, "www", "full", "daily-live", "20130315",1382 self.temp_dir, "www", "full", "daily-live", "20130315",
1437 "raring-desktop-i386.OVERSIZED"))1383 "trusty-desktop-i386.OVERSIZED"))
1438 publisher.post_qa(1384 publisher.post_qa(
1439 "20130315", ["ubuntu/daily-live/raring-desktop-i386"])1385 "20130315", ["ubuntu/daily-live/trusty-desktop-i386"])
1440 expected_note = (1386 expected_note = (
1441 "<strong>WARNING: This image is OVERSIZED. This should never "1387 "<strong>WARNING: This image is OVERSIZED. This should never "
1442 "happen during milestone testing.</strong>")1388 "happen during milestone testing.</strong>")
1443 expected = [["Ubuntu Desktop i386", "20130315", expected_note]]1389 expected = [["Ubuntu Desktop i386", "20130315", expected_note]]
1444 self.assertEqual("iso-raring", isotracker_module.tracker.target)1390 self.assertEqual("iso-trusty", isotracker_module.tracker.target)
1445 self.assertEqual(expected, isotracker_module.tracker.posted)1391 self.assertEqual(expected, isotracker_module.tracker.posted)
14461392
1447 publisher = self.make_publisher("kubuntu", "daily-live")1393 publisher = self.make_publisher("kubuntu", "daily-live")
@@ -1463,7 +1409,7 @@
1463 self.assertRaisesRegex(1409 self.assertRaisesRegex(
1464 Exception, r"Cannot post images from nonexistent directory: .*",1410 Exception, r"Cannot post images from nonexistent directory: .*",
1465 publisher.post_qa, "bad-date",1411 publisher.post_qa, "bad-date",
1466 ["ubuntu/daily-live/raring-desktop-i386"])1412 ["ubuntu/daily-live/trusty-desktop-i386"])
14671413
1468 @mock.patch("subprocess.call", return_value=0)1414 @mock.patch("subprocess.call", return_value=0)
1469 @mock.patch("cdimage.tree.DailyTreePublisher.make_web_indices")1415 @mock.patch("cdimage.tree.DailyTreePublisher.make_web_indices")
@@ -1652,8 +1598,8 @@
1652 publish_current = os.path.join(publisher.publish_base, "current")1598 publish_current = os.path.join(publisher.publish_base, "current")
1653 os.makedirs(publish_current)1599 os.makedirs(publish_current)
1654 os.symlink(1600 os.symlink(
1655 os.path.join(os.pardir, "20130319", "raring-desktop-i386.iso"),1601 os.path.join(os.pardir, "20130319", "trusty-desktop-i386.iso"),
1656 os.path.join(publish_current, "raring-desktop-i386.iso"))1602 os.path.join(publish_current, "trusty-desktop-i386.iso"))
1657 with mkfile(os.path.join(1603 with mkfile(os.path.join(
1658 self.temp_dir, "etc", "purge-days")) as purge_days:1604 self.temp_dir, "etc", "purge-days")) as purge_days:
1659 print("daily 1", file=purge_days)1605 print("daily 1", file=purge_days)
@@ -1805,16 +1751,10 @@
1805 return publisher1751 return publisher
18061752
1807 def test_image_output(self):1753 def test_image_output(self):
1808 self.config["DIST"] = "natty"1754 self.config["DIST"] = "precise"
1809 self.assertEqual(1755 self.assertEqual(
1810 os.path.join(1756 os.path.join(
1811 self.config.root, "scratch", "ubuntu-chinese-edition",1757 self.config.root, "scratch", "ubuntu-zh_CN", "precise",
1812 "natty"),
1813 self.make_publisher("ubuntu", "daily-live").image_output("i386"))
1814 self.config["DIST"] = "oneiric"
1815 self.assertEqual(
1816 os.path.join(
1817 self.config.root, "scratch", "ubuntu-zh_CN", "oneiric",
1818 "daily-live", "live"),1758 "daily-live", "live"),
1819 self.make_publisher("ubuntu", "daily-live").image_output("i386"))1759 self.make_publisher("ubuntu", "daily-live").image_output("i386"))
18201760
@@ -1906,15 +1846,15 @@
1906 def test_post_qa_oversized(self):1846 def test_post_qa_oversized(self):
1907 publisher = self.make_publisher("ubuntu", "daily-live")1847 publisher = self.make_publisher("ubuntu", "daily-live")
1908 touch(os.path.join(1848 touch(os.path.join(
1909 self.temp_dir, "www", "china-images", "raring", "daily-live",1849 self.temp_dir, "www", "china-images", "trusty", "daily-live",
1910 "20130315", "raring-desktop-i386.OVERSIZED"))1850 "20130315", "trusty-desktop-i386.OVERSIZED"))
1911 publisher.post_qa(1851 publisher.post_qa(
1912 "20130315", ["ubuntu-zh_CN/raring/daily-live/raring-desktop-i386"])1852 "20130315", ["ubuntu-zh_CN/trusty/daily-live/trusty-desktop-i386"])
1913 expected_note = (1853 expected_note = (
1914 "<strong>WARNING: This image is OVERSIZED. This should never "1854 "<strong>WARNING: This image is OVERSIZED. This should never "
1915 "happen during milestone testing.</strong>")1855 "happen during milestone testing.</strong>")
1916 expected = [["Ubuntu Chinese Desktop i386", "20130315", expected_note]]1856 expected = [["Ubuntu Chinese Desktop i386", "20130315", expected_note]]
1917 self.assertEqual("localized-iso-china-raring",1857 self.assertEqual("localized-iso-china-trusty",
1918 isotracker_module.tracker.target)1858 isotracker_module.tracker.target)
1919 self.assertEqual(expected, isotracker_module.tracker.posted)1859 self.assertEqual(expected, isotracker_module.tracker.posted)
19201860
@@ -2123,18 +2063,18 @@
21232063
2124 def test_daily_base(self):2064 def test_daily_base(self):
2125 self.config["PROJECT"] = "ubuntu"2065 self.config["PROJECT"] = "ubuntu"
2126 self.config["DIST"] = "quantal"2066 self.config["DIST"] = "trusty"
2127 self.assertEqual(2067 self.assertEqual(
2128 os.path.join(2068 os.path.join(
2129 self.temp_dir, "www", "full", "quantal", "daily", "20130327",2069 self.temp_dir, "www", "full", "trusty", "daily", "20130327",
2130 "i386"),2070 "i386"),
2131 self.get_publisher().daily_base(2071 self.get_publisher().daily_base(
2132 "quantal/daily", "20130327", "wubi", "i386"))2072 "trusty/daily", "20130327", "wubi", "i386"))
2133 self.config["DIST"] = "raring"2073 self.config["DIST"] = "trusty"
2134 self.assertEqual(2074 self.assertEqual(
2135 os.path.join(2075 os.path.join(
2136 self.temp_dir, "www", "full", "daily-live", "20130327",2076 self.temp_dir, "www", "full", "daily-live", "20130327",
2137 "raring-desktop-i386"),2077 "trusty-desktop-i386"),
2138 self.get_publisher().daily_base(2078 self.get_publisher().daily_base(
2139 "daily-live", "20130327", "desktop", "i386"))2079 "daily-live", "20130327", "desktop", "i386"))
21402080
@@ -2191,7 +2131,7 @@
2191 def test_symlink(self):2131 def test_symlink(self):
2192 pool_path = os.path.join(self.temp_dir, ".pool", "foo.iso")2132 pool_path = os.path.join(self.temp_dir, ".pool", "foo.iso")
2193 touch(pool_path)2133 touch(pool_path)
2194 dist_path = os.path.join(self.temp_dir, "raring", "foo.iso")2134 dist_path = os.path.join(self.temp_dir, "trusty", "foo.iso")
2195 os.makedirs(os.path.dirname(dist_path))2135 os.makedirs(os.path.dirname(dist_path))
2196 self.get_publisher().symlink(pool_path, dist_path)2136 self.get_publisher().symlink(pool_path, dist_path)
2197 self.assertEqual(2137 self.assertEqual(
@@ -2201,7 +2141,7 @@
2201 def test_hardlink(self):2141 def test_hardlink(self):
2202 pool_path = os.path.join(self.temp_dir, ".pool", "foo.iso")2142 pool_path = os.path.join(self.temp_dir, ".pool", "foo.iso")
2203 touch(pool_path)2143 touch(pool_path)
2204 dist_path = os.path.join(self.temp_dir, "raring", "foo.iso")2144 dist_path = os.path.join(self.temp_dir, "trusty", "foo.iso")
2205 os.makedirs(os.path.dirname(dist_path))2145 os.makedirs(os.path.dirname(dist_path))
2206 self.get_publisher().hardlink(pool_path, dist_path)2146 self.get_publisher().hardlink(pool_path, dist_path)
2207 self.assertEqual(os.stat(pool_path), os.stat(dist_path))2147 self.assertEqual(os.stat(pool_path), os.stat(dist_path))
@@ -2295,15 +2235,15 @@
22952235
2296 def test_target_dir(self):2236 def test_target_dir(self):
2297 self.config["PROJECT"] = "ubuntu"2237 self.config["PROJECT"] = "ubuntu"
2298 self.config["DIST"] = "raring"2238 self.config["DIST"] = "trusty"
2299 self.assertEqual(2239 self.assertEqual(
2300 os.path.join(2240 os.path.join(
2301 self.temp_dir, "www", "full", "releases", "raring", "release"),2241 self.temp_dir, "www", "full", "releases", "trusty", "release"),
2302 self.get_publisher().target_dir("daily", "20130327", "alternate"))2242 self.get_publisher().target_dir("daily", "20130327", "alternate"))
2303 self.config["PROJECT"] = "kubuntu"2243 self.config["PROJECT"] = "kubuntu"
2304 self.assertEqual(2244 self.assertEqual(
2305 os.path.join(2245 os.path.join(
2306 self.temp_dir, "www", "full", "kubuntu", "releases", "raring",2246 self.temp_dir, "www", "full", "kubuntu", "releases", "trusty",
2307 "release", "source"),2247 "release", "source"),
2308 self.get_publisher().target_dir("daily", "20130327", "src"))2248 self.get_publisher().target_dir("daily", "20130327", "src"))
23092249
@@ -2321,17 +2261,17 @@
23212261
2322 def test_torrent_dir(self):2262 def test_torrent_dir(self):
2323 self.config["PROJECT"] = "ubuntu"2263 self.config["PROJECT"] = "ubuntu"
2324 self.config["DIST"] = "raring"2264 self.config["DIST"] = "trusty"
2325 self.assertEqual(2265 self.assertEqual(
2326 os.path.join(2266 os.path.join(
2327 self.temp_dir, "www", "torrent", "releases",2267 self.temp_dir, "www", "torrent", "releases",
2328 "raring", "release", "desktop"),2268 "trusty", "release", "desktop"),
2329 self.get_publisher().torrent_dir("daily-live", "desktop"))2269 self.get_publisher().torrent_dir("daily-live", "desktop"))
2330 self.config["PROJECT"] = "kubuntu"2270 self.config["PROJECT"] = "kubuntu"
2331 self.assertEqual(2271 self.assertEqual(
2332 os.path.join(2272 os.path.join(
2333 self.temp_dir, "www", "torrent", "kubuntu", "releases",2273 self.temp_dir, "www", "torrent", "kubuntu", "releases",
2334 "raring", "beta-2", "desktop"),2274 "trusty", "beta-2", "desktop"),
2335 self.get_publisher(status="beta-2").torrent_dir(2275 self.get_publisher(status="beta-2").torrent_dir(
2336 "daily-live", "desktop"))2276 "daily-live", "desktop"))
23372277
@@ -2367,9 +2307,9 @@
23672307
2368 def test_publish_release_prefixes(self):2308 def test_publish_release_prefixes(self):
2369 self.config["PROJECT"] = "ubuntu"2309 self.config["PROJECT"] = "ubuntu"
2370 self.config["DIST"] = "raring"2310 self.config["DIST"] = "trusty"
2371 self.assertEqual(2311 self.assertEqual(
2372 ("raring", "raring-beta2"),2312 ("trusty", "trusty-beta2"),
2373 self.get_publisher(2313 self.get_publisher(
2374 official="no", status="beta-2").publish_release_prefixes())2314 official="no", status="beta-2").publish_release_prefixes())
2375 self.config["PROJECT"] = "kubuntu"2315 self.config["PROJECT"] = "kubuntu"
@@ -2445,16 +2385,16 @@
2445 def test_publish_release_arch_ubuntu_desktop_no(self, mock_call, *args):2385 def test_publish_release_arch_ubuntu_desktop_no(self, mock_call, *args):
2446 self.config["PROJECT"] = "ubuntu"2386 self.config["PROJECT"] = "ubuntu"
2447 self.config["CAPPROJECT"] = "Ubuntu"2387 self.config["CAPPROJECT"] = "Ubuntu"
2448 self.config["DIST"] = "raring"2388 self.config["DIST"] = "trusty"
2449 daily_dir = os.path.join(2389 daily_dir = os.path.join(
2450 self.temp_dir, "www", "full", "daily-live", "20130327")2390 self.temp_dir, "www", "full", "daily-live", "20130327")
2451 touch(os.path.join(daily_dir, "raring-desktop-i386.iso"))2391 touch(os.path.join(daily_dir, "trusty-desktop-i386.iso"))
2452 touch(os.path.join(daily_dir, "raring-desktop-i386.manifest"))2392 touch(os.path.join(daily_dir, "trusty-desktop-i386.manifest"))
2453 touch(os.path.join(daily_dir, "raring-desktop-i386.iso.zsync"))2393 touch(os.path.join(daily_dir, "trusty-desktop-i386.iso.zsync"))
2454 target_dir = os.path.join(2394 target_dir = os.path.join(
2455 self.temp_dir, "www", "full", "releases", "raring", "rc")2395 self.temp_dir, "www", "full", "releases", "trusty", "rc")
2456 torrent_dir = os.path.join(2396 torrent_dir = os.path.join(
2457 self.temp_dir, "www", "torrent", "releases", "raring", "rc",2397 self.temp_dir, "www", "torrent", "releases", "trusty", "rc",
2458 "desktop")2398 "desktop")
2459 osextras.ensuredir(target_dir)2399 osextras.ensuredir(target_dir)
2460 osextras.ensuredir(torrent_dir)2400 osextras.ensuredir(torrent_dir)
@@ -2464,13 +2404,13 @@
2464 "daily-live", "20130327", "desktop", "i386")2404 "daily-live", "20130327", "desktop", "i386")
2465 self.assertLogEqual([2405 self.assertLogEqual([
2466 "Copying desktop-i386 image ...",2406 "Copying desktop-i386 image ...",
2467 "Creating torrent for %s/raring-desktop-i386.iso ..." % target_dir,2407 "Creating torrent for %s/trusty-desktop-i386.iso ..." % target_dir,
2468 ])2408 ])
2469 self.assertCountEqual([2409 self.assertCountEqual([
2470 "raring-desktop-i386.iso", "raring-desktop-i386.iso.torrent",2410 "trusty-desktop-i386.iso", "trusty-desktop-i386.iso.torrent",
2471 "raring-desktop-i386.iso.zsync", "raring-desktop-i386.manifest",2411 "trusty-desktop-i386.iso.zsync", "trusty-desktop-i386.manifest",
2472 ], os.listdir(target_dir))2412 ], os.listdir(target_dir))
2473 target_base = os.path.join(target_dir, "raring-desktop-i386")2413 target_base = os.path.join(target_dir, "trusty-desktop-i386")
2474 self.assertFalse(os.path.islink("%s.iso" % target_base))2414 self.assertFalse(os.path.islink("%s.iso" % target_base))
2475 self.assertFalse(os.path.islink("%s.manifest" % target_base))2415 self.assertFalse(os.path.islink("%s.manifest" % target_base))
2476 mock_call.assert_called_once_with([2416 mock_call.assert_called_once_with([
@@ -2479,9 +2419,9 @@
2479 "%s.iso" % target_base,2419 "%s.iso" % target_base,
2480 ], stdout=mock.ANY)2420 ], stdout=mock.ANY)
2481 self.assertCountEqual([2421 self.assertCountEqual([
2482 "raring-desktop-i386.iso", "raring-desktop-i386.iso.torrent",2422 "trusty-desktop-i386.iso", "trusty-desktop-i386.iso.torrent",
2483 ], os.listdir(torrent_dir))2423 ], os.listdir(torrent_dir))
2484 torrent_base = os.path.join(torrent_dir, "raring-desktop-i386")2424 torrent_base = os.path.join(torrent_dir, "trusty-desktop-i386")
2485 self.assertEqual(2425 self.assertEqual(
2486 os.stat("%s.iso" % target_base), os.stat("%s.iso" % torrent_base))2426 os.stat("%s.iso" % target_base), os.stat("%s.iso" % torrent_base))
2487 self.assertEqual(2427 self.assertEqual(
@@ -2581,14 +2521,14 @@
25812521
2582 def test_target_dir(self):2522 def test_target_dir(self):
2583 self.config["PROJECT"] = "ubuntu"2523 self.config["PROJECT"] = "ubuntu"
2584 self.config["DIST"] = "raring"2524 self.config["DIST"] = "trusty"
2585 self.assertEqual(2525 self.assertEqual(
2586 os.path.join(self.temp_dir, "www", "simple", "raring"),2526 os.path.join(self.temp_dir, "www", "simple", "trusty"),
2587 self.get_publisher().target_dir("daily", "20130327", "alternate"))2527 self.get_publisher().target_dir("daily", "20130327", "alternate"))
2588 self.config["PROJECT"] = "kubuntu"2528 self.config["PROJECT"] = "kubuntu"
2589 self.assertEqual(2529 self.assertEqual(
2590 os.path.join(2530 os.path.join(
2591 self.temp_dir, "www", "simple", "kubuntu", "raring", "source"),2531 self.temp_dir, "www", "simple", "kubuntu", "trusty", "source"),
2592 self.get_publisher().target_dir("daily", "20130327", "src"))2532 self.get_publisher().target_dir("daily", "20130327", "src"))
25932533
2594 def test_version_link(self):2534 def test_version_link(self):
@@ -2604,29 +2544,29 @@
26042544
2605 def test_pool_dir(self):2545 def test_pool_dir(self):
2606 self.config["PROJECT"] = "ubuntu"2546 self.config["PROJECT"] = "ubuntu"
2607 self.config["DIST"] = "raring"2547 self.config["DIST"] = "trusty"
2608 self.assertEqual(2548 self.assertEqual(
2609 os.path.join(self.temp_dir, "www", "simple", ".pool"),2549 os.path.join(self.temp_dir, "www", "simple", ".pool"),
2610 self.get_publisher().pool_dir("daily"))2550 self.get_publisher().pool_dir("daily"))
2611 self.config["PROJECT"] = "kubuntu"2551 self.config["PROJECT"] = "kubuntu"
2612 self.config["DIST"] = "raring"2552 self.config["DIST"] = "trusty"
2613 self.assertEqual(2553 self.assertEqual(
2614 os.path.join(self.temp_dir, "www", "simple", "kubuntu", ".pool"),2554 os.path.join(self.temp_dir, "www", "simple", "kubuntu", ".pool"),
2615 self.get_publisher().pool_dir("daily"))2555 self.get_publisher().pool_dir("daily"))
26162556
2617 def test_torrent_dir(self):2557 def test_torrent_dir(self):
2618 self.config["PROJECT"] = "ubuntu"2558 self.config["PROJECT"] = "ubuntu"
2619 self.config["DIST"] = "raring"2559 self.config["DIST"] = "trusty"
2620 self.assertEqual(2560 self.assertEqual(
2621 os.path.join(2561 os.path.join(
2622 self.temp_dir, "www", "torrent", "simple",2562 self.temp_dir, "www", "torrent", "simple",
2623 "raring", "desktop"),2563 "trusty", "desktop"),
2624 self.get_publisher().torrent_dir("daily-live", "desktop"))2564 self.get_publisher().torrent_dir("daily-live", "desktop"))
2625 self.config["PROJECT"] = "kubuntu"2565 self.config["PROJECT"] = "kubuntu"
2626 self.assertEqual(2566 self.assertEqual(
2627 os.path.join(2567 os.path.join(
2628 self.temp_dir, "www", "torrent", "kubuntu", "simple",2568 self.temp_dir, "www", "torrent", "kubuntu", "simple",
2629 "raring", "desktop"),2569 "trusty", "desktop"),
2630 self.get_publisher().torrent_dir("daily-live", "desktop"))2570 self.get_publisher().torrent_dir("daily-live", "desktop"))
26312571
2632 def test_want_torrent(self):2572 def test_want_torrent(self):
@@ -2776,9 +2716,9 @@
2776 "ubuntu-13.04-rc-desktop-i386.manifest",2716 "ubuntu-13.04-rc-desktop-i386.manifest",
2777 ], os.listdir(pool_dir))2717 ], os.listdir(pool_dir))
2778 self.assertFalse(os.path.exists(os.path.join(2718 self.assertFalse(os.path.exists(os.path.join(
2779 self.temp_dir, "www", "simple", "raring")))2719 self.temp_dir, "www", "simple", "trusty")))
2780 self.assertFalse(os.path.exists(os.path.join(2720 self.assertFalse(os.path.exists(os.path.join(
2781 self.temp_dir, "www", "torrent", "simple", "raring", "desktop")))2721 self.temp_dir, "www", "torrent", "simple", "trusty", "desktop")))
2782 pool_base = os.path.join(pool_dir, "ubuntu-13.04-rc-desktop-i386")2722 pool_base = os.path.join(pool_dir, "ubuntu-13.04-rc-desktop-i386")
2783 mock_call.assert_called_once_with([2723 mock_call.assert_called_once_with([
2784 "zsyncmake", "-o", "%s.iso.zsync" % pool_base,2724 "zsyncmake", "-o", "%s.iso.zsync" % pool_base,
27852725
=== modified file 'lib/cdimage/tree.py'
--- lib/cdimage/tree.py 2019-03-06 20:19:33 +0000
+++ lib/cdimage/tree.py 2019-03-07 16:20:18 +0000
@@ -63,21 +63,16 @@
63projects = [63projects = [
64 "edubuntu",64 "edubuntu",
65 "gobuntu",65 "gobuntu",
66 "jeos",
67 "kubuntu",66 "kubuntu",
68 "kubuntu-active",67 "kubuntu-active",
69 "kubuntu-netbook",68 "kubuntu-netbook",
70 "kubuntu-plasma5",
71 "lubuntu",69 "lubuntu",
72 "lubuntu-next",70 "lubuntu-next",
73 "mythbuntu",71 "mythbuntu",
74 "ubuntu",72 "ubuntu",
75 "ubuntu-desktop-next",
76 "ubuntu-gnome",73 "ubuntu-gnome",
77 "ubuntu-budgie",74 "ubuntu-budgie",
78 "ubuntu-mate",75 "ubuntu-mate",
79 "ubuntu-headless",
80 "ubuntu-netbook",
81 "ubuntu-server",76 "ubuntu-server",
82 "ubuntukylin",77 "ubuntukylin",
83 "ubuntustudio",78 "ubuntustudio",
@@ -376,65 +371,36 @@
376 @property371 @property
377 def publish_type(self):372 def publish_type(self):
378 if self.image_type.endswith("-preinstalled"):373 if self.image_type.endswith("-preinstalled"):
379 if self.project == "ubuntu-netbook":374 if self.project == "ubuntu-server":
380 return "preinstalled-netbook"
381 elif self.project == "ubuntu-headless":
382 return "preinstalled-headless"
383 elif self.project == "ubuntu-server":
384 return "preinstalled-server"375 return "preinstalled-server"
385 elif self.project in ("ubuntu-touch", "ubuntu-touch-custom"):376 elif self.project == "ubuntu-touch":
386 return "preinstalled-touch"377 return "preinstalled-touch"
387 elif self.project == "ubuntu-core":378 elif self.project == "ubuntu-core":
388 return "preinstalled-core"379 return "preinstalled-core"
389 elif self.project == "ubuntu-desktop-next":
390 return "preinstalled-desktop-next"
391 else:380 else:
392 return "preinstalled-desktop"381 return "preinstalled-desktop"
393 elif self.image_type.endswith("-live"):382 elif self.image_type.endswith("-live"):
394 if self.project == "edubuntu":383 if self.project == "edubuntu":
395 if self.config["DIST"] <= "edgy":384 return "desktop"
396 return "live"385 elif self.project == "kubuntu-netbook":
397 else:
398 return "desktop"
399 elif self.project == "ubuntu-mid":
400 return "mid"
401 elif self.project == "ubuntu-moblin-remix":
402 return "moblin-remix"
403 elif self.project in ("ubuntu-netbook", "kubuntu-netbook"):
404 return "netbook"386 return "netbook"
405 elif self.project == "ubuntu-server":387 elif self.project == "ubuntu-server":
406 return "live-server"388 return "live-server"
407 elif self.project == "ubuntu-core":389 elif self.project == "ubuntu-core":
408 return "live-core"390 return "live-core"
409 else:391 else:
410 if self.config["DIST"] <= "breezy":392 return "desktop"
411 return "live"
412 else:
413 return "desktop"
414 elif self.image_type.endswith("_dvd") or self.image_type == "dvd":393 elif self.image_type.endswith("_dvd") or self.image_type == "dvd":
415 return "dvd"394 return "dvd"
416 else:395 else:
417 if self.project == "edubuntu":396 if self.project == "edubuntu":
418 if self.config["DIST"] <= "edgy":397 return "addon"
419 return "install"
420 elif self.config["DIST"] <= "gutsy":
421 return "server"
422 else:
423 return "addon"
424 elif self.project == "ubuntu-server":398 elif self.project == "ubuntu-server":
425 if self.config["DIST"] <= "breezy":399 return "server"
426 return "install"
427 else:
428 return "server"
429 elif self.project == "jeos":
430 return "jeos"
431 elif self.project == "ubuntu-base":400 elif self.project == "ubuntu-base":
432 return "base"401 return "base"
433 else:402 else:
434 if self.config["DIST"] <= "breezy":403 return "alternate"
435 return "install"
436 else:
437 return "alternate"
438404
439 # Keep this in sync with publish_type above.405 # Keep this in sync with publish_type above.
440 @staticmethod406 @staticmethod
@@ -442,13 +408,13 @@
442 if publish_type.startswith("preinstalled-"):408 if publish_type.startswith("preinstalled-"):
443 return "daily-preinstalled"409 return "daily-preinstalled"
444 elif publish_type in (410 elif publish_type in (
445 "desktop", "live", "mid", "moblin-remix", "netbook",411 "desktop", "live", "netbook",
446 "live-core", "live-server"):412 "live-core", "live-server"):
447 return "daily-live"413 return "daily-live"
448 elif publish_type == "dvd":414 elif publish_type == "dvd":
449 return "dvd"415 return "dvd"
450 elif publish_type in (416 elif publish_type in (
451 "addon", "alternate", "base", "install", "jeos", "server"):417 "addon", "alternate", "base", "install", "server"):
452 return "daily"418 return "daily"
453 else:419 else:
454 return None420 return None
@@ -474,8 +440,6 @@
474 def cssincludes(self):440 def cssincludes(self):
475 if self.project == "kubuntu":441 if self.project == "kubuntu":
476 return ["//releases.ubuntu.com/include/kubuntu.css"]442 return ["//releases.ubuntu.com/include/kubuntu.css"]
477 if self.project == "kubuntu-plasma5":
478 return ["//releases.ubuntu.com/include/kubuntu-plasma5.css"]
479 if self.project in ("lubuntu", "lubuntu-next"):443 if self.project in ("lubuntu", "lubuntu-next"):
480 return ["//cdimage.ubuntu.com/include/lubuntu/style.css"]444 return ["//cdimage.ubuntu.com/include/lubuntu/style.css"]
481 else:445 else:
@@ -485,11 +449,10 @@
485 def cdtypestr(self, publish_type, image_format):449 def cdtypestr(self, publish_type, image_format):
486 if image_format in ("tar.gz", "tar.xz", "custom.tar.gz"):450 if image_format in ("tar.gz", "tar.xz", "custom.tar.gz"):
487 cd = "filesystem archive"451 cd = "filesystem archive"
488 elif self.config["DIST"] < "quantal":452 elif self.config["DIST"] < "trusty":
489 if image_format in ("img", "img.gz"):453 if image_format in ("img", "img.gz"):
490 cd = "image"454 cd = "image"
491 elif self.project == "ubuntustudio":455 elif self.project == "ubuntustudio":
492 # Ubuntu Studio is expected to be oversized in Gutsy; sigh.
493 cd = "DVD"456 cd = "DVD"
494 else:457 else:
495 cd = "CD"458 cd = "CD"
@@ -523,18 +486,12 @@
523 return "source %s" % cd486 return "source %s" % cd
524 elif publish_type == "netbook":487 elif publish_type == "netbook":
525 return "netbook live %s" % cd488 return "netbook live %s" % cd
526 elif publish_type == "mid":
527 return "MID USB image"
528 elif publish_type == "moblin-remix":
529 return "Moblin live CD"
530 elif publish_type == "active":489 elif publish_type == "active":
531 return "preview active image"490 return "preview active image"
532 elif publish_type in ("server-uec", "uec"):491 elif publish_type in ("server-uec", "uec"):
533 return "UEC image"492 return "UEC image"
534 elif publish_type == "preinstalled-desktop":493 elif publish_type == "preinstalled-desktop":
535 return "preinstalled desktop %s" % cd494 return "preinstalled desktop %s" % cd
536 elif publish_type == "preinstalled-headless":
537 return "preinstalled headless %s" % cd
538 elif publish_type == "preinstalled-server":495 elif publish_type == "preinstalled-server":
539 return "preinstalled server %s" % cd496 return "preinstalled server %s" % cd
540 elif publish_type == "preinstalled-netbook":497 elif publish_type == "preinstalled-netbook":
@@ -545,8 +502,6 @@
545 return "preinstalled touch image"502 return "preinstalled touch image"
546 elif publish_type == "preinstalled-core":503 elif publish_type == "preinstalled-core":
547 return "preinstalled core image"504 return "preinstalled core image"
548 elif publish_type == "preinstalled-desktop-next":
549 return "preinstalled desktop next image"
550 elif publish_type == "wubi":505 elif publish_type == "wubi":
551 return "Wubi %s" % cd506 return "Wubi %s" % cd
552 else:507 else:
@@ -556,35 +511,20 @@
556 capproject = self.config.capproject511 capproject = self.config.capproject
557 series = self.config["DIST"]512 series = self.config["DIST"]
558513
559 if self.project == "mid":
560 # MID has lower memory requirements than others
561 desktop_ram = 128
562 if self.project == "xubuntu":514 if self.project == "xubuntu":
563 if series <= "intrepid":515 desktop_ram = 192
564 desktop_ram = 128
565 else:
566 desktop_ram = 192
567 else:516 else:
568 if series <= "feisty":517 if series <= "xenial":
569 desktop_ram = 256
570 elif series <= "gutsy":
571 desktop_ram = 320
572 elif series <= "hardy":
573 desktop_ram = 384
574 elif series <= "maverick":
575 desktop_ram = 256
576 elif series <= "artful":
577 desktop_ram = 384518 desktop_ram = 384
578 else:519 else:
579 desktop_ram = 1024520 desktop_ram = 1024
580521
581 if image_format in ("tar.gz", "tar.xz", "custom.tar.gz"):522 if image_format in ("tar.gz", "tar.xz", "custom.tar.gz"):
582 cd = "filesystem archive"523 cd = "filesystem archive"
583 elif self.config["DIST"] < "quantal":524 elif self.config["DIST"] <= "precise":
584 if image_format in ("img", "img.gz"):525 if image_format in ("img", "img.gz"):
585 cd = "image"526 cd = "image"
586 elif self.project == "ubuntustudio":527 elif self.project == "ubuntustudio":
587 # Ubuntu Studio is expected to be oversized in Gutsy; sigh.
588 cd = "dvd"528 cd = "dvd"
589 else:529 else:
590 cd = "cd"530 cd = "cd"
@@ -612,13 +552,6 @@
612 cd)552 cd)
613 self.prefmsg_emitted = True553 self.prefmsg_emitted = True
614 sentences.append(desktop_req)554 sentences.append(desktop_req)
615 if self.project == "ubuntu-desktop-next":
616 sentences.append(
617 "This is an experimental image. Please %s for caveats and "
618 "workarounds." %
619 Link("https://wiki.ubuntu.com/Unity8DesktopIso",
620 "read this page on the Ubuntu wiki",
621 show_class=True))
622 if self.project == "edubuntu":555 if self.project == "edubuntu":
623 sentences.append(556 sentences.append(
624 "You can install additional educational programs using "557 "You can install additional educational programs using "
@@ -651,24 +584,6 @@
651 "installer, please file a bug on the %s package." % bug_link,584 "installer, please file a bug on the %s package." % bug_link,
652 ])585 ])
653 return586 return
654 elif publish_type == "mid":
655 sentences.append(
656 "The MID USB image allows you to try %s without changing your "
657 "computer at all, and at your option to install it "
658 "permanently later." % capproject)
659 sentences.append(
660 "This USB image is optimized for handheld devices with 4-7\" "
661 "touchscreens and limited processing power.")
662 sentences.append(desktop_req)
663 elif publish_type == "moblin-remix":
664 sentences.append(
665 "The live %s allows you to try Ubuntu Moblin Remix without "
666 "changing your computer at all, and at your option to install "
667 "it permanently later." % cd)
668 sentences.append(
669 "This live %s is optimized for netbooks with screens up to "
670 "10\"." % cd)
671 sentences.append(desktop_req)
672 elif publish_type == "server" or publish_type == "live-server":587 elif publish_type == "server" or publish_type == "live-server":
673 if self.project == "edubuntu":588 if self.project == "edubuntu":
674 sentences.append(589 sentences.append(
@@ -832,7 +747,6 @@
832 "hppa": "HP PA-RISC",747 "hppa": "HP PA-RISC",
833 "i386": "32-bit PC (i386)",748 "i386": "32-bit PC (i386)",
834 "ia64": "IA-64",749 "ia64": "IA-64",
835 "lpia": "Low-Power Intel Architecture",
836 "powerpc": "Mac (PowerPC) and IBM-PPC (POWER5)",750 "powerpc": "Mac (PowerPC) and IBM-PPC (POWER5)",
837 "powerpc+ps3": "PlayStation 3",751 "powerpc+ps3": "PlayStation 3",
838 "ppc64el": "PowerPC64 Little-Endian",752 "ppc64el": "PowerPC64 Little-Endian",
@@ -911,10 +825,6 @@
911 "Intel processors.")825 "Intel processors.")
912 elif arch == "ia64":826 elif arch == "ia64":
913 sentences.append("For Intel Itanium and Itanium 2 computers.")827 sentences.append("For Intel Itanium and Itanium 2 computers.")
914 elif arch == "lpia":
915 sentences.append(
916 "For devices using the Low-Power Intel Architecture, "
917 "including the A1xx and Atom processors.")
918 elif arch == "powerpc":828 elif arch == "powerpc":
919 sentences.append(829 sentences.append(
920 "For Apple Macintosh G3, G4, and G5 computers, including "830 "For Apple Macintosh G3, G4, and G5 computers, including "
@@ -922,7 +832,7 @@
922 "machines.")832 "machines.")
923 elif arch == "powerpc+ps3":833 elif arch == "powerpc+ps3":
924 sentences.append("For Sony PlayStation 3 systems.")834 sentences.append("For Sony PlayStation 3 systems.")
925 if publish_type == "desktop" and self.config["DIST"] >= "gutsy":835 if publish_type == "desktop":
926 capproject = self.config.capproject836 capproject = self.config.capproject
927 sentences.append(837 sentences.append(
928 "(This defaults to installing %s permanently, since there "838 "(This defaults to installing %s permanently, since there "
@@ -952,8 +862,7 @@
952 return862 return
953863
954 usb_projects = (864 usb_projects = (
955 "ubuntu-mid", "ubuntu-moblin-remix",865 "kubuntu", "kubuntu-active",
956 "kubuntu", "kubuntu-active", "kubuntu-plasma5",
957 "ubuntu-mate",866 "ubuntu-mate",
958 )867 )
959 series = self.config["DIST"]868 series = self.config["DIST"]
@@ -979,8 +888,8 @@
979 "However, you may still test it using a DVD, a larger USB "888 "However, you may still test it using a DVD, a larger USB "
980 "drive, or a virtual machine.")889 "drive, or a virtual machine.")
981 elif (self.project in usb_projects or890 elif (self.project in usb_projects or
982 (self.project == "xubuntu" and series >= "raring") or891 (self.project == "xubuntu" and series >= "trusty") or
983 (self.project == "ubuntu-gnome" and series >= "saucy")):892 (self.project == "ubuntu-gnome" and series >= "trusty")):
984 sentences.append(893 sentences.append(
985 "Warning: This image is oversized (which is a bug) and will "894 "Warning: This image is oversized (which is a bug) and will "
986 "not fit onto a 1GB USB stick.")895 "not fit onto a 1GB USB stick.")
@@ -1156,13 +1065,13 @@
1156 "serveraddon", "addon",1065 "serveraddon", "addon",
1157 "dvd",1066 "dvd",
1158 "src",1067 "src",
1159 "netbook", "mid", "moblin-remix", "mobile", "active",1068 "netbook", "mobile", "active",
1160 "uec", "server-uec",1069 "uec", "server-uec",
1161 "preinstalled-desktop", "preinstalled-netbook",1070 "preinstalled-desktop", "preinstalled-netbook",
1162 "preinstalled-mobile", "preinstalled-active",1071 "preinstalled-mobile", "preinstalled-active",
1163 "preinstalled-headless", "preinstalled-server",1072 "preinstalled-server",
1164 "preinstalled-touch", "preinstalled-core", "wubi",1073 "preinstalled-touch", "preinstalled-core", "wubi",
1165 "preinstalled-desktop-next", "live-core",1074 "live-core",
1166 )1075 )
11671076
1168 all_arches = (1077 all_arches = (
@@ -1178,7 +1087,6 @@
1178 "ppc64el",1087 "ppc64el",
1179 "hppa",1088 "hppa",
1180 "ia64",1089 "ia64",
1181 "lpia",
1182 "s390x",1090 "s390x",
1183 "sparc",1091 "sparc",
1184 )1092 )
@@ -1254,12 +1162,6 @@
1254 "<link "1162 "<link "
1255 "href='http://fonts.googleapis.com/css?family=Ubuntu' "1163 "href='http://fonts.googleapis.com/css?family=Ubuntu' "
1256 "rel='stylesheet' type='text/css'>", file=header)1164 "rel='stylesheet' type='text/css'>", file=header)
1257 if self.project == "kubuntu-plasma5":
1258 print(
1259 "<link "
1260 "href='http://fonts.googleapis.com/css?family=Oxygen' "
1261 "rel='stylesheet' type='text/css'>", file=header)
1262 if self.project in ("kubuntu", "kubuntu-plasma5"):
1263 print(1165 print(
1264 "<link rel=\"icon\" type=\"image/png\" "1166 "<link rel=\"icon\" type=\"image/png\" "
1265 "href=\"http://www.kubuntu.org/themes/kubuntu10.04/"1167 "href=\"http://www.kubuntu.org/themes/kubuntu10.04/"
@@ -1315,11 +1217,8 @@
1315 if ("full" in reldir.split(os.pardir) and1217 if ("full" in reldir.split(os.pardir) and
1316 "-alpha-" not in base_prefix and1218 "-alpha-" not in base_prefix and
1317 base_prefix != self.config.series):1219 base_prefix != self.config.series):
1318 if self.project in (1220 if self.project in ("ubuntu", "ubuntu-server"):
1319 "ubuntu", "ubuntu-server", "ubuntu-netbook"):
1320 url = "http://releases.ubuntu.com/"1221 url = "http://releases.ubuntu.com/"
1321 elif self.project == "kubuntu" and series <= "oneiric":
1322 url = "http://releases.ubuntu.com/kubuntu/"
1323 else:1222 else:
1324 url = None1223 url = None
1325 if url:1224 if url:
@@ -1427,17 +1326,9 @@
14271326
1428 for path, arch, base in paths:1327 for path, arch, base in paths:
1429 if arch is None:1328 if arch is None:
1430 if publish_type == "mid":1329 raise WebIndicesException(
1431 imgarch = "lpia"1330 "Unknown image type %s!" %
1432 else:1331 publish_type)
1433 raise WebIndicesException(
1434 "Unknown image type %s!" %
1435 publish_type)
1436 archstr = self.arch_strings[imgarch]
1437 imagestr = "%s %s" % (archstr, cdtypestr)
1438 htaccessimagestr = "%s for %s computers" % (
1439 self.titlecase(cdtypestr), archstr)
1440 archdesc = self.archdesc(imgarch, publish_type)
1441 elif publish_type == "src":1332 elif publish_type == "src":
1442 imagestr = "%s %s" % (1333 imagestr = "%s %s" % (
1443 self.titlecase(cdtypestr), arch)1334 self.titlecase(cdtypestr), arch)
@@ -1638,7 +1529,7 @@
1638 if got_iso or got_img:1529 if got_iso or got_img:
1639 print(file=header)1530 print(file=header)
16401531
1641 if self.config.project in ("ubuntu-touch", "ubuntu-touch-custom"):1532 if self.config.project == "ubuntu-touch":
1642 for tag in self.ubuntu_touch_legal_notice():1533 for tag in self.ubuntu_touch_legal_notice():
1643 print(tag, file=header)1534 print(tag, file=header)
1644 print(file=header)1535 print(file=header)
@@ -1845,15 +1736,7 @@
1845 # All Edubuntu images are DVD sized (including arm).1736 # All Edubuntu images are DVD sized (including arm).
1846 # Ubuntu Studio is always DVD-sized for now.1737 # Ubuntu Studio is always DVD-sized for now.
1847 return 47003729921738 return 4700372992
1848 elif self.project in (1739 elif self.project in ("kubuntu", "kubuntu-active"):
1849 "ubuntu-mid", "ubuntu-moblin-remix",
1850 ):
1851 # Mobile images are designed for USB drives; arbitrarily pick
1852 # 1GB as a limit.
1853 return 1024 * 1024 * 1024
1854 elif self.project in (
1855 "kubuntu", "kubuntu-active", "kubuntu-plasma5",
1856 ):
1857 if self.config["DIST"] >= "xenial":1740 if self.config["DIST"] >= "xenial":
1858 # Per https://lists.ubuntu.com/archives/1741 # Per https://lists.ubuntu.com/archives/
1859 # ... ubuntu-release/2016-May/003749.html1742 # ... ubuntu-release/2016-May/003749.html
@@ -1862,23 +1745,14 @@
1862 return (1024 * 1024 * 1024) + (1024 * 1024 * 200)1745 return (1024 * 1024 * 1024) + (1024 * 1024 * 200)
1863 elif (self.project in ("ubuntu", "ubuntukylin") and1746 elif (self.project in ("ubuntu", "ubuntukylin") and
1864 self.publish_type != "dvd" and1747 self.publish_type != "dvd" and
1865 self.config["DIST"] >= "quantal"):1748 self.config["DIST"] >= "trusty"):
1866 # Ubuntu quantal onward has a succession of arbitrary limits.1749 if self.config["DIST"] == "trusty":
1867 if self.config["DIST"] == "quantal":
1868 return 801000000
1869 elif self.config["DIST"] == "raring":
1870 if arch == "powerpc":
1871 return 850000000
1872 else:
1873 return 835000000
1874 elif self.config["DIST"] == "saucy":
1875 return 950000000
1876 elif self.config["DIST"] in ("trusty", "utopic", "vivid", "wily"):
1877 return 1.2 * 1000 * 1000 * 10001750 return 1.2 * 1000 * 1000 * 1000
1878 else:1751 else:
1879 # next relevant size limit is a 2GB (not 2GiB) USB stick1752 # next relevant size limit is a 2GB (not 2GiB) USB stick
1880 return 2 * 1000 * 1000 * 10001753 return 2 * 1000 * 1000 * 1000
1881 elif self.project == "ubuntu-gnome" and self.config["DIST"] >= "saucy":1754 elif (self.project == "ubuntu-gnome" and
1755 self.config["DIST"] >= "trusty"):
1882 # Per https://lists.ubuntu.com/archives/1756 # Per https://lists.ubuntu.com/archives/
1883 # ... ubuntu-release/2016-May/003740.html1757 # ... ubuntu-release/2016-May/003740.html
1884 if self.config["DIST"] >= "xenial":1758 if self.config["DIST"] >= "xenial":
@@ -1895,7 +1769,7 @@
1895 elif self.project == "xubuntu" and self.config["DIST"] >= "xenial":1769 elif self.project == "xubuntu" and self.config["DIST"] >= "xenial":
1896 # https://irclogs.ubuntu.com/2019/02/17/%23ubuntu-release.html#t03:041770 # https://irclogs.ubuntu.com/2019/02/17/%23ubuntu-release.html#t03:04
1897 return 2 * 1000 * 1000 * 10001771 return 2 * 1000 * 1000 * 1000
1898 elif self.project == "xubuntu" and self.config["DIST"] >= "raring":1772 elif self.project == "xubuntu" and self.config["DIST"] >= "trusty":
1899 # http://irclogs.ubuntu.com/2013/02/11/%23xubuntu-devel.html#t21:481773 # http://irclogs.ubuntu.com/2013/02/11/%23xubuntu-devel.html#t21:48
1900 return 1024 * 1024 * 10241774 return 1024 * 1024 * 1024
1901 elif self.project == "ubuntu-mate":1775 elif self.project == "ubuntu-mate":
@@ -1907,7 +1781,7 @@
1907 # https://bugs.launchpad.net/bugs/17963681781 # https://bugs.launchpad.net/bugs/1796368
1908 return 2 * 1000 * 1000 * 10001782 return 2 * 1000 * 1000 * 1000
1909 elif (self.project in ("lubuntu", "lubuntu-next") and1783 elif (self.project in ("lubuntu", "lubuntu-next") and
1910 self.config["DIST"] >= "artful"):1784 self.config["DIST"] >= "bionic"):
1911 # https://irclogs.ubuntu.com/2017/07/27/%23ubuntu-release.html#t23:051785 # https://irclogs.ubuntu.com/2017/07/27/%23ubuntu-release.html#t23:05
1912 return int(1.5 * 1000 * 1000 * 1000)1786 return int(1.5 * 1000 * 1000 * 1000)
1913 elif self.project == "lubuntu" and self.config["DIST"] >= "trusty":1787 elif self.project == "lubuntu" and self.config["DIST"] >= "trusty":
@@ -1915,11 +1789,7 @@
1915 # https://irclogs.ubuntu.com/2016/10/01/%23ubuntu-release.html#t19:061789 # https://irclogs.ubuntu.com/2016/10/01/%23ubuntu-release.html#t19:06
1916 return 1024 * 1024 * 10241790 return 1024 * 1024 * 1024
1917 elif self.project == "ubuntu-server":1791 elif self.project == "ubuntu-server":
1918 if self.config["DIST"] == "xenial":1792 if self.config["DIST"] >= "xenial":
1919 return 1024 * 1024 * 1024
1920 elif self.config["DIST"] >= "zesty" and arch == "ppc64el":
1921 return 1024 * 1024 * 1024
1922 elif self.config["DIST"] >= "bionic":
1923 return 1024 * 1024 * 10241793 return 1024 * 1024 * 1024
1924 else:1794 else:
1925 return 7366656001795 return 736665600
@@ -2002,20 +1872,17 @@
2002 return "iso"1872 return "iso"
20031873
2004 def jigdo_ports(self, arch):1874 def jigdo_ports(self, arch):
2005 series = self.config["DIST"]
2006 cpuarch = arch.split("+")[0]1875 cpuarch = arch.split("+")[0]
2007 if cpuarch == "powerpc":1876 if cpuarch == "powerpc":
2008 # https://lists.ubuntu.com/archives/ubuntu-announce/2007-February/1877 # https://lists.ubuntu.com/archives/ubuntu-announce/2007-February/
2009 # 000098.html1878 # 000098.html
2010 if series > "edgy":1879 return True
2011 return True
2012 elif cpuarch == "sparc":1880 elif cpuarch == "sparc":
2013 # https://lists.ubuntu.com/archives/ubuntu-devel-announce/1881 # https://lists.ubuntu.com/archives/ubuntu-devel-announce/
2014 # 2008-March/000400.html1882 # 2008-March/000400.html
2015 if series < "dapper" or series > "gutsy":1883 return True
2016 return True
2017 elif cpuarch in (1884 elif cpuarch in (
2018 "arm64", "armel", "armhf", "hppa", "ia64", "lpia", "ppc64el",1885 "arm64", "armel", "armhf", "hppa", "ia64", "ppc64el",
2019 "s390x"):1886 "s390x"):
2020 return True1887 return True
2021 return False1888 return False
@@ -2377,17 +2244,14 @@
2377 for arch in arches:2244 for arch in arches:
2378 if image_base.endswith("-%s" % arch):2245 if image_base.endswith("-%s" % arch):
2379 matches = True2246 matches = True
2380 elif (self.config.project in ("ubuntu-touch",2247 elif (self.config.project == "ubuntu-touch" and
2381 "ubuntu-touch-custom") and
2382 arch == "armhf" and2248 arch == "armhf" and
2383 ("-armel+" in image_base or "-armhf+" in image_base)):2249 ("-armel+" in image_base or "-armhf+" in image_base)):
2384 matches = True2250 matches = True
2385 elif (self.config.project in ("ubuntu-touch",2251 elif (self.config.project == "ubuntu-touch" and
2386 "ubuntu-touch-custom") and
2387 arch == "i386" and "-i386+" in image_base):2252 arch == "i386" and "-i386+" in image_base):
2388 matches = True2253 matches = True
2389 elif (self.config.project in ("ubuntu-touch",2254 elif (self.config.project == "ubuntu-touch" and
2390 "ubuntu-touch-custom") and
2391 arch == "arm64" and "-arm64+" in image_base):2255 arch == "arm64" and "-arm64+" in image_base):
2392 matches = True2256 matches = True
2393 elif self.config.subproject == "wubi" and image_base == arch:2257 elif self.config.subproject == "wubi" and image_base == arch:
@@ -2834,18 +2698,13 @@
2834 """An object that can publish daily builds of the Chinese edition."""2698 """An object that can publish daily builds of the Chinese edition."""
28352699
2836 def image_output(self, arch):2700 def image_output(self, arch):
2837 if self.config["DIST"] < "oneiric":2701 project = "ubuntu"
2838 return os.path.join(2702 if self.config["UBUNTU_DEFAULTS_LOCALE"]:
2839 self.config.root, "scratch", "ubuntu-chinese-edition",2703 project = "-".join([
2840 self.config.full_series)2704 project, self.config["UBUNTU_DEFAULTS_LOCALE"]])
2841 else:2705 return os.path.join(
2842 project = "ubuntu"2706 self.config.root, "scratch", project, self.config.full_series,
2843 if self.config["UBUNTU_DEFAULTS_LOCALE"]:2707 self.image_type, "live")
2844 project = "-".join([
2845 project, self.config["UBUNTU_DEFAULTS_LOCALE"]])
2846 return os.path.join(
2847 self.config.root, "scratch", project, self.config.full_series,
2848 self.image_type, "live")
28492708
2850 @property2709 @property
2851 def source_extension(self):2710 def source_extension(self):
@@ -2871,8 +2730,7 @@
28712730
2872 def tree_suffix(self, source):2731 def tree_suffix(self, source):
2873 # Publish ports/daily to ports/releases/..., etc.2732 # Publish ports/daily to ports/releases/..., etc.
2874 ubuntu_projects = (2733 ubuntu_projects = ("ubuntu-server", )
2875 "ubuntu-server", "ubuntu-netbook", "ubuntu-mid", "ubuntu-headless")
2876 if "/" in source:2734 if "/" in source:
2877 project, tail = source.split("/", 1)2735 project, tail = source.split("/", 1)
2878 if project in ubuntu_projects:2736 if project in ubuntu_projects:
@@ -3009,10 +2867,7 @@
3009 def daily_base(self, source, date, publish_type, arch):2867 def daily_base(self, source, date, publish_type, arch):
3010 series = self.config["DIST"]2868 series = self.config["DIST"]
3011 daily_dir = self.daily_dir(source, date, publish_type)2869 daily_dir = self.daily_dir(source, date, publish_type)
3012 if publish_type in ("netbook", "mid") and series <= "intrepid":2870 if publish_type == "wubi":
3013 return os.path.join(
3014 daily_dir, "%s-%s" % (self.project, publish_type))
3015 elif publish_type == "wubi":
3016 return os.path.join(daily_dir, arch)2871 return os.path.join(daily_dir, arch)
3017 else:2872 else:
3018 return os.path.join(2873 return os.path.join(
@@ -3176,7 +3031,7 @@
31763031
3177 def want_manifest(self, publish_type, path):3032 def want_manifest(self, publish_type, path):
3178 if publish_type in (3033 if publish_type in (
3179 "live", "desktop", "netbook", "mid", "moblin-remix",3034 "live", "desktop", "netbook",
3180 "uec", "server-uec", "core", "wubi", "server", "live-server",3035 "uec", "server-uec", "core", "wubi", "server", "live-server",
3181 ):3036 ):
3182 return True3037 return True
@@ -3195,7 +3050,7 @@
3195 def want_metalink(self, publish_type):3050 def want_metalink(self, publish_type):
3196 # TODO: maybe others? metalink is only supported for Wubi3051 # TODO: maybe others? metalink is only supported for Wubi
3197 if publish_type in (3052 if publish_type in (
3198 "netbook", "mid", "moblin-remix", "uec", "server-uec",3053 "netbook", "uec", "server-uec",
3199 ):3054 ):
3200 return False3055 return False
3201 elif publish_type.startswith("preinstalled-"):3056 elif publish_type.startswith("preinstalled-"):
@@ -3393,14 +3248,12 @@
33933248
3394 # Override the architecture list for these types unconditionally.3249 # Override the architecture list for these types unconditionally.
3395 # TODO: should reset default-arches for the source project instead3250 # TODO: should reset default-arches for the source project instead
3396 if (publish_type in ("netbook", "moblin-remix") and3251 if (publish_type == "netbook" and
3397 not [arch for arch in arches if arch.startswith("armel")]):3252 not [arch for arch in arches if arch.startswith("armel")]):
3398 arches = ["i386"]3253 arches = ["i386"]
3399 elif publish_type == "mid":
3400 arches = ["lpia"]
34013254
3402 # Sanity-check.3255 # Sanity-check.
3403 if publish_type not in ("netbook", "mid", "src"):3256 if publish_type not in ("netbook", "src"):
3404 for arch in arches:3257 for arch in arches:
3405 paths = []3258 paths = []
3406 for ext in ("iso", "img", "img.gz", "img.xz", "img.tar.gz",3259 for ext in ("iso", "img", "img.gz", "img.xz", "img.tar.gz",

Subscribers

People subscribed via source and target branches