Commit graph

2510 commits

Author SHA1 Message Date
Ray Strode
716b5bd9e2 Merge branch 'fix-buffer' into 'main'
drm: do not reset the buffer twice

See merge request plymouth/plymouth!152
2022-01-15 05:02:37 +00:00
Oleg Solovyov
5d75819462 drm: Retry setting scanout buffer on failure
Plymouth currently assumes that setting the scanout buffer will succeed.
if it fails because of a driver bug or transient failure it should try
again next frame.

This commit adds that error handling code.
2022-01-15 04:58:38 +00:00
Ray Strode
27764b2a2c Merge branch 'version-naming-change' into 'main'
autogoo: Determine project version from date

See merge request plymouth/plymouth!153
2022-01-11 17:10:11 +00:00
Ray Strode
7b203e49b9 autogoo: Determine project version from date
Numbers are arbitrary, and we've never successfully made it to
version 1.0 after like 15 years or something.

Furthermore, plymouth has a very slow release schedule at present
and some distros hate building from git.

So, I'd like to start generating tarballs more regularly.

Adopting a version number derived from the date will help facilitate
that.

This commit changes AC_INIT to compute the version automatically.

https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/143
https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/158
2022-01-11 10:38:28 -05:00
Ray Strode
a3dcafa8b2 Merge branch 'wip/use-logo-file' into 'main'
spinfinity: use logo file passed to configure

See merge request plymouth/plymouth!110
2022-01-11 14:35:27 +00:00
Ray Strode
729869f5c0 spinfinity: use logo file passed to configure
At the moment we hardcode the header to a logo file that ships
in fedora.

This commit changes it to use the logo configured by the distro.

https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/106
2022-01-11 14:28:45 +00:00
Ray Strode
3e75dda9e6 Merge branch 'weblate-plymouth-master' into 'main'
Translations update from Weblate

See merge request plymouth/plymouth!146
2022-01-11 14:26:24 +00:00
Yauhen Bugamol
d70a7e3d38 Translated using Weblate (Belarusian)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Yauhen Bugamol <3abac@3a.by>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/be/
Translation: plymouth/master
2022-01-11 14:26:09 +00:00
Ray Strode
39d374d8ec Merge branch 'add_croatian_language' into 'main'
Add Croatian language

See merge request plymouth/plymouth!148
2022-01-11 14:25:37 +00:00
muzena
48cbafd4b1 Add Croatian language 2022-01-11 14:25:25 +00:00
Ray Strode
202646d2fb Merge branch 'fix-configure-help-string' into 'main'
configure: Fix help string for --with-background-end-color-stop

See merge request plymouth/plymouth!149
2022-01-11 14:24:31 +00:00
João Paulo Rechi Vita
df10062109 configure: Fix help string for --with-background-end-color-stop
Looks like it was copied from --with-background-start-color-stop and
never updated to reflect the option it is describing.
2022-01-11 14:24:14 +00:00
Ray Strode
1906f04428 Merge branch 'fix-twostep-comments' into 'main'
two-step: Fix typos and missing words in comments

See merge request plymouth/plymouth!150
2022-01-11 14:23:40 +00:00
João Paulo Rechi Vita
315dc61851 two-step: Fix typos and missing words in comments 2021-12-01 10:32:06 -05:00
Ray Strode
5b91b9ed84 Merge branch 'configurable-show-animation-fraction' into 'main'
two-step: Make SHOW_ANIMATION_FRACTION configurable

See merge request plymouth/plymouth!151
2021-11-16 17:31:55 +00:00
Jasper St. Pierre
4d3f553efc two-step: Make SHOW_ANIMATION_FRACTION configurable
Allow themes to configure at which percentage of the boot progress the
animation should transition to the end animation.

At Endless we use this to only show the end animation from the start of
the boot splash by setting it to 0.0.
2021-11-15 19:25:59 -05:00
Ray Strode
18363cd887 Merge branch 'honour-rotation' into 'main'
drm: Honour screen rotation when detecting HiDPI

See merge request plymouth/plymouth!147
2021-10-18 23:45:12 +00:00
Emil Velikov
a76fe9a069 drm: Honour screen rotation when detecting HiDPI
Currently if the screen is rotated by 90 degrees, the effective
width/height will be swapped. Thus we will incorrectly detect the panel
as HiDPI.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
2021-10-18 11:58:29 +01:00
Ray Strode
bad6d41504 Merge branch 'themepath-cfg' into 'master'
main: add ThemePath configuration option

See merge request plymouth/plymouth!142
2021-09-27 10:27:11 +00:00
Alfonso Sánchez-Beato
3003cabf96 scripts: support populating from configurable theme dir
Support populating initramfs with themes from the configurable theme
directory.
2021-09-27 10:03:53 +00:00
Alfonso Sánchez-Beato
3fa05404b0 main: add ThemeDir configuration option
Add a new option called ThemeDir to the configuration file, so a
configurable directory can be used to ship themes. The option applies
only to the theme specified in the same configuration file.
2021-09-27 10:03:53 +00:00
Alfonso Sánchez-Beato
a3607d7ad4 main: refactor code for searching the theme path
Refactor code that searched for the theme configuration so it can be
reused.
2021-09-27 10:03:53 +00:00
Alfonso Sánchez-Beato
a4a1afc83f ply-utils: add macro to count the number of elements in an array 2021-09-27 10:03:53 +00:00
Alfonso Sánchez-Beato
4bf060c5dd main: free path variables before exiting
Free path variables before exiting so the code is more asan/valgrind
friendly.
2021-09-27 10:03:53 +00:00
Ray Strode
dae14773bd Merge branch 'weblate-plymouth-master' into 'master'
Translations update from Weblate

See merge request plymouth/plymouth!145
2021-09-23 19:00:10 +00:00
Pavel Borecki
4ddeccb8cb Translated using Weblate (Czech)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Pavel Borecki <pavel.borecki@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/cs/
Translation: plymouth/master
2021-09-23 11:05:04 +02:00
Ray Strode
1297d4c3ee Merge branch 'crash_on_hide_message' into 'master'
Fix crash when hiding message in details splash mode

See merge request plymouth/plymouth!140
2021-09-22 14:33:26 +00:00
i.Dark_Templar
6f480678a6 Fix crash when hiding message in details splash mode 2021-09-22 14:26:27 +00:00
Ray Strode
ea99a2e140 Merge branch 'ignore-serial-option' into 'master'
main: add ignore-serial-consoles option

See merge request plymouth/plymouth!143
2021-09-22 14:22:48 +00:00
Alfonso Sánchez-Beato
0c503db27e main: add ignore-serial-consoles option
Add --ignore-serial-consoles option so we can ignore serial consoles
also when starting plymouthd and not only from the kernel command
line.
2021-09-22 14:18:35 +00:00
Ray Strode
2a4fbd8978 Merge branch 'weblate-plymouth-master' into 'master'
Translations update from Weblate

See merge request plymouth/plymouth!139
2021-09-22 14:17:05 +00:00
Jan Kuparinen
12b4608b8a Translated using Weblate (Finnish)
Currently translated at 100.0% (7 of 7 strings)

Added translation using Weblate (Finnish)

Co-authored-by: Jan Kuparinen <copper_fin@hotmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/fi/
Translation: plymouth/master
2021-09-21 19:10:02 +00:00
Hela Basa
5c1aa0aaf6 Translated using Weblate (Sinhala)
Currently translated at 14.2% (1 of 7 strings)

Co-authored-by: Hela Basa <r45xveza@pm.me>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/si/
Translation: plymouth/master
2021-09-21 19:10:02 +00:00
Liu Tao
4075ea7521 Translated using Weblate (Chinese (Simplified) (zh_CN))
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Liu Tao <lyuutau@outlook.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/zh_CN/
Translation: plymouth/master
2021-09-21 19:10:02 +00:00
Danial Behzadi
ece1074efe Translated using Weblate (Persian)
Currently translated at 100.0% (7 of 7 strings)

Added translation using Weblate (Persian)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/fa/
Translation: plymouth/master
2021-09-21 19:10:02 +00:00
Fabio Tomat
f9577dbc15 Translated using Weblate (Friulian)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Fabio Tomat <f.t.public@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/fur/
Translation: plymouth/master
2021-09-21 19:10:02 +00:00
Yauhen Bugamol
c5da4acab2 Translated using Weblate (Belarusian)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Yauhen Bugamol <3abac@3a.by>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/be/
Translation: plymouth/master
2021-09-21 19:10:02 +00:00
Emilio Herrera
e9cb6294d6 Translated using Weblate (Spanish)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Emilio Herrera <ehespinosa57@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/es/
Translation: plymouth/master
2021-09-21 19:10:02 +00:00
Ray Strode
8ff8a78a35 Merge branch 'master' into 'master'
main: Ensure that doubles in config files are parsed with '.'

Closes #153

See merge request plymouth/plymouth!144
2021-09-21 14:40:01 +00:00
Robin Ebert
07458698b1
main: Ensure that doubles in config files are parsed with '.' 2021-09-21 16:11:16 +02:00
Hans de Goede
e55447500f Merge branch 'rework-shutdown-handling' into 'master'
Rework shutdown handling

See merge request plymouth/plymouth!138
2021-04-06 11:53:40 +00:00
Ray Strode
2a7755febb systemd: Add plymouth-switch-root-initramfs.service to switch back to initramfs on shutdown
Add a plymouth-switch-root-initramfs.service, which will call
"plymouth update-root-fs --new-root-dir=/run/initramfs" to switch back
to the initramfs (when applicable).

Systemd will run this service before plymouthd receives the SIGTERM on
shutdown, so this will cause the plymouthd-fd-escrow helper to run
from the initramfs.

This avoids the plymouthd-fd-escrow helper keeping the rootfs busy.

Changes by Hans de Goede:
- Fix a couple of typos
- Add Conflicts=dracut-shutdown.service to plymouth-switch-root-initramfs.service
  dracut-shutdown.service restores the initramfs when it is _stopped_
  use Conflicts to make sure its ExecStop has run before we do
- Add a check for switching back to the initramfs to on_newroot () and dump
  the debug-buffer before the switch (while we still have access to /var/log).
- Also add plymouth-switch-root-initramfs.service to kexec.target.wants.
  kexec.target.wants uses --mode=shutdown, so the plymouthd-fd-escrow helper
  will run, so we need to switch to the initramfs.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-04-06 13:45:41 +02:00
Ray Strode
a0c743c76a main: Add a plymouthd-fd-escrow helper
When plymouth receives SIGTERM during shutdown or reboot, we must
exit cleanly to avoid keeping files open on the rootfs and to avoid
making drmModeSetCrtc () calls after the kms driver's shutdown method
has ran.

But at the same time we also want the boot-splash to stay up (in its
idle form) until the system actually reboots or powers off.
So we want to avoid the boot-splash getting replaced by e.g.
the text-console.

Add a plymouthd-fd-escrow helper which will get forked off when we
receive a SIGTERM in reboot/shutdown mode with pixel-displays active.

This helper will keep the fds for the pixel-displays open, so that
the boot-splash stays up until the end.

Changes by Hans de Goede:
- Start the escrow helper from main.c instead of from the drm plugin
- Rename the helper from plymouthd-drm-escrow to plymouthd-fd-escrow, since it
  will be used to escrow fbdev fd-s too now
- In the child of the fork, continue with quiting normally (letting the
  bootsplash become idle) instead of exiting directly
- Make plymouthd-fd-escrow a normal dynamic binary instead of a static binary,
  the initrd already contains dynamic binaries so it does not have to be static
- Split the changes adding plymouth-switch-root-initramfs.service into a
  separate patch
- Rewrite commit message

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-04-06 13:15:05 +02:00
Hans de Goede
a4bb4c146b main: Dump debug log to plymouth-shutdown-debug.log on shutdown/reboot
When working on plymouth I always have "plymouth.debug=stream:/dev/null"
on the kernel commandline. This enables tracing without logging anything
to the console and causes the entire trace to be logged to
/var/log/plymouth-debug.log when plymouth quits.

This is very useful for debugging (non crash) issues with plymouth at boot.
With the recent "main: Cleanly quit on SIGTERM" change plymouth will now
also write a trace log to /var/log/plymouth-debug.log on shutdown/reboot,
but this will be overwritten again on boot by the boot log.

This commit changes the default debug_buffer_path value from:
/var/log/plymouth-debug.log to /var/log/plymouth-shutdown-debug.log
when in shutdown or reboot mode so that it does not get overwritten
by the debug-log written at boot.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-04-06 13:15:05 +02:00
Hans de Goede
eb5227b474 main: Cleanly quit on SIGTERM
Now that we are no longer unconditionally opting out of getting terminated,
we get send a SIGTERM when transitioning from the rootfs back to the initrd
on poweroff/reboot.

Catch this SIGTERM and then exit cleanly by calling the on_quit handler,
besides exiting cleanly being the right thing to do, this will also allow the
boot-splash to go idle, so that it can cleanly finish the end-animation.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-04-06 13:15:05 +02:00
Hans de Goede
156ae7437e main: Only mark plymouthd as unkillable when running from the initrd
Before this commit plymouthd would always mark itself as "unkillable"
by setting "argv[0][0] = '@';" as documented here:
https://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons/

There are 2 problems with this:

1. This causes filesystems to fail to remount read-only in some case,
plymouthd may be holding open a deleted file (say an upgraded library).
If that happens, then the filesystem won't allow the disk to be remounted
read-only, because when plymouth dies, the filesystem will need to do I/O
to clean up the removed file from disk.

2. This causes the "gracefully shutdown" of displays which the kernel's
i915 driver recently introduced in commit fe0f1e3bfdfe ("drm/i915: Shut
down displays gracefully on reboot") to get undone. Because of being
"unkillable" plymouthd keeps running and showing the spinner animation
to the very end, this results in a drmModeSetCrtc () call after the i915
display driver has turned off the displays. This causes 2 issues:

2.1 This causes the screen to go black for 1-2 seconds and then show the
plymouth screen again for 1-2 seconds on poweroff/reboot which looks ugly:
https://bugzilla.redhat.com/show_bug.cgi?id=1941329

2.2 This may cause issues with the attached monitors on reboot, since it
undoes the gracefull shutdown which the i915 does.

Change the code to only set "argv[0][0] = '@';" when run from the initrd
at bootup, this solves the 2 mentioned issues and brings the code inline
with the above specification which says this should only ever be used for
daemons started from the initrd.

Note this will cause plymouth to get killed on shutdown, leading to the
last couple of text messages of shutdown being shown on shutdown.
This will be fixed by the next couple of patches.

Related: https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/118
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1941329
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-31 16:35:27 +02:00
Hans de Goede
630ca2e18f ply-device-manager: Don't deactivate renderers from ply_device_manager_free ()
Don't deactivate renderers from ply_device_manager_free (),
ply_device_manager_free () is only ever called with the renderers still
active on a "plymouth quit --retain-splash".

Since the splash is being retained in this case the renderers should not be
deactivated. Normally this does not matter because plymouthd exits almost
immediately afterwards and the kernels will close the renderers fds on exit.

But with the upcoming plymouthd-drm-escrow binary which keeps the renderers
fds open, not deactivate renderers; and thus not dropping DRM master rights
does make a difference.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-31 16:35:27 +02:00
Hans de Goede
fbe2b79da5 Merge branch 'text-n-details-splash-fixes' into 'master'
Text and details splash fixes

See merge request plymouth/plymouth!137
2021-03-29 07:40:32 +00:00
Hans de Goede
0e59dde83a details: Clear newly added text-display before replaying log messages
When switching between the "text" splash and the "details" splash the
"text" splash's hide function clears the console/terminal before
the "details" splash replays the log messages. So on each switch
the user sees all the log messages once.

But when switching between a graphical/pixel splash and details,
the console/terminal is not touched by the graphical splash's hide
function; and the details splash's hide function deliberately does
not clear the terminal on hide, so that when booting in detailed
mode, the log messages stay on the console when plymouth exits.

This means that when switching graphical-splash -> details ->
graphical-splash -> details, the second time the details splash
gets shown, the previous set of replayed log messages is still
on the terminal and all messages are now shown twice.
(and toggling back and forth a third time makes them all show 3
times, etc).

Fix this by clearing the terminal on show, before replaying the
log messages.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-29 09:27:01 +02:00
Hans de Goede
c6a8cf9dad text/tribar: Fix ply_boot_splash_hide () not clearing the terminal
In order to clear the console/terminal back to black again when hiding
the splash, we must restore the original terminal palette, so that
black actually is black before calling ply_text_display_clear_screen ().

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1933378
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-29 09:25:29 +02:00