Hi,

I'm doing yet another /usr-merge thread even though we already have too
many, I know.

The first one was about general discussion and problem analysis. In that
first thread, I posted a number of scripts for analyzing problems and
snapshot analysis data. In that second thread, we tried to gather
consensus around some of the views expressed.

# Continuous monitoring for problems

This thread hopefully becomes more of a FYI than a discussion. I've
turned those hacky scripts into some Python code that continuously (4
times a day) analyzes the archive for some of the problems summarized in
DEP17. Interested parties may find the code at
https://salsa.debian.org/helmutg/dumat. The results of the analysis[1]
(around 2000 lines) are updated at
https://subdivi.de/~helmut/dumat.yaml. While it says "issue" there, most
of them are *not* actionable right now. Please don't panic. Keep in mind
that the moratorium is still active (and that it prevents any of the
"risky" ones from becoming practically relevant). There is one kind of
issue that may be actionable right now and that's the class of "empty
directory" issues. If you notice that such an empty directory actually
is not necessary (which probably is the case in the majority of cases),
please go ahead and delete it from your package[2] or a file a bug with
a patch. Also, please declare Conflicts or Replaces as usual as some
forms of undeclared file conflicts also show up in the analysis. Another
thing that helps now is cleaning up really old and unversioned Replaces
as those may result in false negative detections.

What does dumat not detect?
 * DEP17-P4: Disagreeing alternatives are not a problem as long as we
   don't canonicalize alternatives (DEP17-M13). I think we can defer
   this without causing extra pain.
 * DEP17-P5: dpkg-statoverrides not matching the files shipped.
   Possibly, I can extend dumat to cover unconditional statoverrides.
 * DEP17-P8: Filesystem bootstrap. The test matrix is really small, so
   we'll probably notice when it gets broken.
 * DEP17-P9: Loss of aliasing symlinks. We can reliably address this
   centrally e.g. via DEP17-M4.

# A rough outlook

Let me give a rough idea on how I would like to move forward with this
and hope you agree with it.

For one thing, we need an agreement on the mitigations that we apply.
Except for the bootstrapping aspect, this seems relatively clear. That
discussion will likely continue and conclude eventually.

## A proposed process

Some of the mitigations are non-trivial to implement and cannot be done
e.g. by the janitor, but the dumat.yaml file tells us that the number
of occasions where we need them will be fairly low. It's the exceptional
case that goes wrong badly. Since the matter is fairly complex and since
breakage is rare, I would like to move forward in a way where we do not
ask maintainers to pay attention to /usr-merge problems proactively,
but reactively. That works with two mechanisms:
 * We generally ask maintainers to upload some classes of changes to
   experimental first. Those include:
    + Moving files from / to /usr.
    + Moving files between packages.
    + Changing diversions.
    + Changing path-based trigger interest.
    + When in doubt.
 * You allow me to turn that dumat.yaml tool into an automatic rc bug
   filing service.
The big benefit of this approach is that it lifts the mental load of the
matter from individual maintainer's brains. You have a simple rule (use
experimental when in doubt) and if your change poses any issue, you
receive an rc bug (for that experimental package if you uploaded there
or possibly for sid where it acts as migration blocker). My expectation
is that such bugs are rare events. If you don't receive an rc bug within
two days, assume that your change is fine.

I am aware that having an automatic bug filing service with no human
supervision (ahead of filing) is something we never had before. Much
less for rc bugs. Before enabling this, you definitely want to see a bug
template. Are there general objections to this idea? I already talked to
Paul Gevers and he sees this as the preferred interface to implement a
migration blocker.

## Usertagging bugs

In order to avoid filing duplicates, I need a usertagging scheme for
bugs. Are there opinions on what user I should use for this? In the
simplest instance, I can use my DD login. Roughly speaking every issue
type shall translate to an individual usertag. Is there a common usertag
for undeclared file conflicts to reuse?

# Other aspects

## Informative MBF

When I discussed this in Hamburg, there was a request to actively reach
out to affected maintainers by sending a minor bug for every source
package that is somehow involved. The bug would ask maintainers to move
their files from / to /usr, how to do so, the need to do this via
experimental first and the chances of getting an rc bug in the process.
Do people who have not been to Hamburg Reunion 2023 confirm this?

## No good solution for bookworm-backports

There is one major issue where I don't have a good answer:
bookworm-backports. When this originally surfaced, Luca Boccassi
suggested that we do not canonicalize in backports. That's easier said
than done as the support for split-/usr will soon vanish from packages.
Thanks to Simon Richter for pointing at this missing piece of the puzzle
recently. If we were to canonicalize in bookworm-backports (as needed),
we'd need much the same infrastructure as in trixie (e.g. the
usrmerge-support package). Adding such intrusive changes to
bookworm-backports and pulled by a significant fraction of backports
sounds bad to me. The alternative here is that backporting will become a
lot harder as those performing backports would have to undo the
canonicalization. Worse, such backports pose new upgrade paths that may
result in more mitigations in unstable to support bookworm-backports ->
trixie upgrades. To make matters worse, an upload to bookworm-backports
is immediately available to users and there is no migration that some
check (such as dumat) could hook into. What I could easily offer is
extending dumat such that you can analyze the problems that would result
from uploading a given .changes file, but it only tells about a subset
of problems. I wish I was able to tell a better story for
bookworm-backports and welcome ideas.

## Another DEP17-P6 mitigation

Please allow me to biggy-back one more mitigation onto this mail. The
problem of loosing empty directories (DEP17-P6, originally reported by
Andreas Beckmann) can also be addressed by shipping the directory in
*both* aliased and canonical location. This technically is a violation
of current Debian policy and this also is at least partially
incompatible with DEP17-M4 (shipping aliasing links in a package). This
technique is currently employed by gcc-snapshot (not sure if
accidentally). I shall be adding this to DEP17 even though I think we
should not employ it. Let me know if you think otherwise.

I see it got way longer than intended, but at the same time all of the
topics raised seem relevant to me. Hope we get more agreement this time.

Helmut

[1] If you are really deeply interested and want to redo the analysis
without downloading 300GB of Debian packages, you may also download
https://subdivi.de/~helmut/dumat.sql.zst to perform the actual analysis
yourself. It runs in less than a minute on a beefy machine and this is
really where the interesting bits happen.

[2] List of packages that *may* be actionable: fwupd, gcc-snapshot,
gretl, lib32lsan0, libjte-dev, libmpeg3-dev, libswe-dev, libx32lsan0,
pcp, pkg-config, pkgconf, pkgconf-bin, python3-expeyes, systemd

Reply via email to