Merge ~xnox/britney/+git/britney2-ubuntu:ignore-di into ~ubuntu-release/britney/+git/britney2-ubuntu:master

Proposed by Dimitri John Ledkov
Status: Superseded
Proposed branch: ~xnox/britney/+git/britney2-ubuntu:ignore-di
Merge into: ~ubuntu-release/britney/+git/britney2-ubuntu:master
Diff against target: 54 lines (+16/-12)
2 files modified
britney.conf (+3/-0)
britney2/inputs/suiteloader.py (+13/-12)
Reviewer Review Type Date Requested Status
Iain Lane Needs Fixing
Review via email: mp+397690@code.launchpad.net

This proposal has been superseded by a proposal from 2021-02-18.

Commit message

suiteloader: stop loading debian-installer directories

udebs do not have symbol versioned shlibdeps, thus it means that when
there is glibc in proposed, any packages built in proposed get a udeb
depends on the strictly higher version of glibc in proposed. This
leads to entaglement of the $world with glibc transition. Similar
story with glib, openssl, etc.

However, we do not care about installability of debian-installer udebs
as they are obsolete in $devel series. We do care about them in the
supported stable lts series, however we currently do not use britney
for SRU releases there and usually we do migrate all the things,
before building point releases.

If there is need for britney checks on udebs in supported stable lts
series, loading udebs must become a conditional .conf option. But I
will need help with that, as I can't seem to find the production
configs used for the supported lts series and how to treak them
differently from $devel.

To post a comment you must log in.
Revision history for this message
Steve Langasek (vorlon) wrote :

In terms of being able to merge this back to Debian, it would be preferable to make this a configurable option rather than deleting the code.

Revision history for this message
Iain Lane (laney) wrote :

Right, this should be configurable please, so that (1) it can be done differently for stable releases, (2) it can be upstreamed - which should ideally be done ASAP if & when we merge something here.

See britney1 make_b2_config for the config file generation. However, for testing, you can ignore b1 and use a static configuration.

Question: would it be better to stop building udebs at all (noudeb profile, I'm thinking like we do for nocheck on riscv64)?

review: Needs Fixing
Revision history for this message
Dimitri John Ledkov (xnox) wrote :

@laney

noudeb is very hard, and yes i want to build with noudeb by default, but it is pain to get there. making britney ignore udebs is a very helpful tool to get there.

1) lp doesn't set build-profiles. also launchpad doesn't like when it dispatches a build, and it produces no debs (builds appear as failed, as nothing to build for us, because profiles result in nothing to build)

2) in dpkg, one can make noudeb implicitely declared one, but if one does that nochange rebuilds of all the udeb carrying packages must be uploaded and migrated simultaneously as otherwise britney will not let them migrate

3) there are a lot of dependencies between all the udebs. For example, i'm trying to unwind all the dependencies on *-modules, to be able to stop building kernel udebs. It will take many more package removals and delta in the packaging to eradicate all other udebs.

Thus yes, I hope to patch all the things to support noudeb build profile, and activate it by default. But to get there I would prefer to be able to drop udebs one by one, without stalling migrations and/or making it a mega-transition.

d9891a7... by Dimitri John Ledkov

suiteloader: add configuration option whether to load udebs.

udebs do not have symbol versioned shlibdeps, thus it means that when
there is glibc in proposed, any packages built in proposed get a udeb
depends on the strictly higher version of glibc in proposed. This
leads to entaglement of the $world with glibc transition. Similar
story with glib, openssl, etc.

By setting the new configuration option to HAS_UDEBS = no, one can
make suiteloader not look at udebs, and thus use britney even when
installability of udebs is not required.

Unmerged commits

d9891a7... by Dimitri John Ledkov

suiteloader: add configuration option whether to load udebs.

udebs do not have symbol versioned shlibdeps, thus it means that when
there is glibc in proposed, any packages built in proposed get a udeb
depends on the strictly higher version of glibc in proposed. This
leads to entaglement of the $world with glibc transition. Similar
story with glib, openssl, etc.

By setting the new configuration option to HAS_UDEBS = no, one can
make suiteloader not look at udebs, and thus use britney even when
installability of udebs is not required.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/britney.conf b/britney.conf
2index 74ecd4b..62403bd 100644
3--- a/britney.conf
4+++ b/britney.conf
5@@ -44,6 +44,9 @@ BREAK_ARCHES =
6 # if you're in this list, you are a new architecture
7 NEW_ARCHES =
8
9+# should udebs be looked at?
10+HAS_UDEBS = yes
11+
12 # priorities and delays
13 MINDAYS_LOW = 0
14 MINDAYS_MEDIUM = 0
15diff --git a/britney2/inputs/suiteloader.py b/britney2/inputs/suiteloader.py
16index 964f239..0208ecc 100644
17--- a/britney2/inputs/suiteloader.py
18+++ b/britney2/inputs/suiteloader.py
19@@ -489,22 +489,23 @@ class DebMirrorLikeSuiteContentLoader(SuiteContentLoader):
20 binary_dir,
21 'Packages')
22 filename = possibly_compressed(filename)
23- udeb_filename = os.path.join(basedir,
24- component,
25- "debian-installer",
26- binary_dir,
27- "Packages")
28- # We assume the udeb Packages file is present if the
29- # regular one is present
30- udeb_filename = possibly_compressed(udeb_filename)
31 self._read_packages_file(filename,
32 arch,
33 suite.sources,
34 packages)
35- self._read_packages_file(udeb_filename,
36- arch,
37- suite.sources,
38- packages)
39+ if getattr(self._base_config, 'has_udebs', 'yes') == 'yes':
40+ udeb_filename = os.path.join(basedir,
41+ component,
42+ "debian-installer",
43+ binary_dir,
44+ "Packages")
45+ # We assume the udeb Packages file is present if the
46+ # regular one is present
47+ udeb_filename = possibly_compressed(udeb_filename)
48+ self._read_packages_file(udeb_filename,
49+ arch,
50+ suite.sources,
51+ packages)
52 # create provides
53 provides = create_provides_map(packages)
54 binaries[arch] = packages

Subscribers

People subscribed via source and target branches