Hi Russ,

Let me adress the essential/bootstrap aspects of this sub-discussion
only.

On Thu, Aug 01, 2024 at 08:00:40PM -0700, Russ Allbery wrote:
> Given that it's included in base-files now and base-files is essential, I
> believe it has to continue to be provided by an essential package, unless
> we want to try to do the work of figuring out if os-release can be removed
> from essential (and I would not be eager to do that).

I concur.

> Since it is part of the essential set, though, I'm not sure the dependency
> from base-files is actually needed (but also it may not really matter).  I
> think dependencies between essential packages are only really used during
> the bootstrapping phase, and presumably os-release is not needed by
> bootstrapping.

It actually is the other way round. debootstrap-like tools will
automatically pick up all packages marked with "Essential: yes".
Bootstrapped systems will not magically install newly essential packages
though. So doing an upload of base-files that releases /etc/os-release
will not magically cause a newly essential os-release package to be
installed and thus our essential promise of /etc/os-release may be
temporarily broken. (There is no implication of how bad breaking this
promise is.) So whenever we want to add a new package to the essential
set, we need some existing essential package to declare a dependency on
that new package for the duration of one release cycle (as we do not
support skip upgrades).

The obvious candidate to express such a dependency would be base-files
here and that brings us back to the aspects you (Russ) mentioned earlier
regarding the fragility of the bootstrap order related to base-files.
Admittedly, bootstrapping is more empirically solved in Debian than
well-defined. As I attempted clarifying this in Debian policy earlier,
the outcome was to explicitly leave it undefined. If I remember
correctly, randomly ordering the maintainer scripts executed during
filesystem bootstrap makes things fail every now and then and the order
that most tools produce works well enough currently.  Any new dependency
inside the essential set poses a risk of perturbing this order that
happens to work by chance. Hence my request to validate the proposed
changes.  With luck, things just work, but we better figure out before
we upload to unstable.

This is not pretty, but it is what we have. And then I see this mostly
as a work item rather than a blocking issue once we agree on the other
matters.

Helmut

Reply via email to