Package: plymouth
Version: 0.9.4-3

We encountered a way how plymouth can cause initrd creation to fail:

/usr/share/initramfs-tools/hooks/plymouth
contains a call to plymouth-set-default-theme, reading the set theme name.
plymouth-set-default-theme fails back to "text" apparently, if the desired
theme (set via plymouthd.conf) is unknown.

If this name is not "text" or "details", the script later on tries to copy
/etc/fonts/fonts.conf

However, if fontconfig-config isn't yet installed (and thus plymouth-themes
isn't installed yet), then the following sequence can (and for us
reproducibly did) happen:

- Configuration file plymouthd.conf was written, setting theme "lines".
- Installation of kernel, plymouth, plymouth-themes, desktop-base,
fontconfig-config requested
- packages are unpacked by dpkg (which doesn't copy conffiles to their
destination)
- Note: plymouth hook script is now active (not a conffile)
- kernel gets configured. tries to build initrd
- plymouth hook gets executed
- plymouth hook reads desired theme, finds "lines" (installed by
desktop-base)
- plymouth hook fails to copy /etc/fonts/fonts.conf and aborts

I'll describe multiple options. The first two are the most sensible IMHO.

Option 1:

Let the hook script or plymouth-set-default-theme fall back to the "text"
or "details" theme if required files are not available yet. At least in our
case, the initrd would have gotten rebuilt again later on, eliminating the
issue of a silent fallback.

Option 2:

Let plymouth declare a "Pre-Depends: fontconfig-config" to ensure that the
conffile from fontconfig-config is actually available at the time plymouth
gets installed and thus activates the initramfs-tools hook script. This
introduces an indirect dependency on various fonts, but seems reasonable
anyways. Would eliminate the silent fallback and would thus probably come
closest to user expectation.

Option 3:

Let both desktop-base and plymouth-themes Pre-Depend on fontconfig-config -
This would move the responsibility to whoever provides a plymouth theme. As
the set of such packages is not necessarily a closed set, I'm not sure if
this is maintainable in the long run.

My personal preference would probably be Option 2: It would get the issue
fixed for everyone at little extra cost.

Reply via email to