Commit graph

2463 commits

Author SHA1 Message Date
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
Hans de Goede
9b9d7e1b3a ply-text-display: Fix bottom pixels of fbcon not getting cleared
When fbcon is used for the console then there might be some unused
rows of pixels at the bottom because the screen's height in pixel
is not fully divideable by the font height. So the remaining few
rows of pixels at the bottom are unused.

The "text" splash changes the background color of the terminal and
then does a ply_text_display_clear_screen () to clear the console
to the new background color.

ply_text_display_clear_screen () was using "ESC [ 2 J" as control-sequence
to clear the screen. Which means "clear the entire screen" but fbcon
seems to not always count the unused bottom rows part of the "entire
screen", leaving them black.

Also send an "ESC [ 3 J" control-sequence when clearing the screen,
which means "clear the entire screen; and the scrollback-buffer".
Using this does consistenly result in the unused bottom rows always
being set to the background color.

This new behavior is esp. important when hiding the splash (e.g.
when quiting) because under some circumstances (1) the "ESC [ 2 J"
would clear the unused bottom rows to plymouth's background color
and then when hiding the splash it would not clear the unused rows,
leaving the unused rows set to plymouth's background color after
plymouth has quit.

Note the "ESC [ 2 J" control sequences is also still send because older
(serial) terminals may not support the "ESC [ 3 J" control sequence.

1) The exact circumstances when this happens are unclear

Related: 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
Hans de Goede
9ef171f733 ply-text-display: Only skip clearing the screen when tracing to a terminal
When the user has chosen to enable tracing to a file, so that the terminal
output stays the same as when not tracing, ply_text_display_clear_screen ()
should still clear the screen, as it does when not tracing.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-29 09:25:29 +02:00
Hans de Goede
8291d668ae main: Redirect stdio/stderr to null when tracing to a file
When the user has chosen to enable tracing to a file, so that the terminal
output stays the same as when not tracing, we should still redirect
tdio/stderr to /dev/null as we do when not tracing.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-29 09:25:29 +02:00
Hans de Goede
ca869a3fff ply-logger: Add a ply_is_tracing_to_terminal () helper
Track if we are logging to the terminal (or to a file) and add
a new ply_is_tracing_to_terminal () helper.

This will be used in follow-up patches to replace some
ply_is_tracing () checks for things which should only be done
when tracing to a terminal (and not when tracing to a file).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-29 09:24:45 +02:00
Hans de Goede
cf1ca1945c Merge branch 'gportay/plymouth-do-not-close-vt-on-show-hide-splash'
main: Retain splash on on_show_splash() and on_hide_splash()

https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/127
2021-03-27 17:59:43 +01:00
Gaël PORTAY
e733f2b41d main: Retain splash on on_show_splash() and on_hide_splash()
The function ply_device_manager_activate_keyboard() asserts for positive
file-descriptors.

However, the daemon aborts after the splash screen is shown again after
being hidden; the virtual terminal file-descriptor is -1 (i.e. plymouth
show-splash; plymouth hide-splash; plymouth-show-spash).

The three helpers on_show_splash(), on_hide_splash() and on_quit() share
the same function dump_details_and_quit_splash().

This function calls on_hide() and on_quit(); the later deallocates and
closes the virtual terminal if the flag should_retain_splash is not set.
This is always the case on both on_show_splash() and on_hide_splash().
Only on_quit() has the ability to set that flag. Therefore, the virtual
terminal is always deallocated and closed on on_hide_splash (), and in a
some condition on on_show_splash().

The virtual terminal is allocated by ply_device_manager_new() in the
function main() and it is deallocated in the function quit_program()
(i.e. at the begining and at the end of the daemon). The function
quit_program() is called either by on_quit() or by on_boot_splash_idle()
(on quit only, not on deactivate). The two helpers on_show_splash() and
on_hide_splash() *MUST NOT* dealocates and closes the virtual terminal.

This sets the flag should_retain_splash in both helpers on_show_splash()
and on_hide_splash() to prevent them from deallocation the virtual
terminal.

Fixes:

	01:24:16.983 ply-event-loop.c:732:ply_event_loop_watch_fd                  : fd: 9
	01:24:16.994 ply-boot-server.c:393:print_connection_process_identity       : connection is from pid 8474 (plymouth show-splash) with parent pid 2137 (-ash)
	01:24:16.994 ply-boot-server.c:492:ply_boot_connection_on_request          : got show splash request
	01:24:16.994 main.c:832:plymouth_should_ignore_show_splash_calls           : checking if plymouth should be running
	01:24:16.994 main.c:933:on_show_splash                                     : at least one display already available, so loading splash
	01:24:16.994 main.c:864:plymouth_should_show_default_splash                : checking if plymouth should show default splash
	01:24:16.994 main.c:892:plymouth_should_show_default_splash                : using default splash because kernel command line has option "splash"
	01:24:16.994 main.c:445:show_default_splash                                : Showing splash screen
	01:24:16.994 main.c:459:show_default_splash                                : Trying distribution default splash
	01:24:16.994 main.c:1692:load_theme                                        : Loading boot splash theme '/usr/share/plymouth/themes/spinner/spinner.plymouth'
	01:24:16.995 ply-key-file.c:175:ply_key_file_load_group                    : trying to load group Plymouth Theme
	01:24:16.995 ply-key-file.c:175:ply_key_file_load_group                    : trying to load group two-step
	01:24:16.995 ply-key-file.c:175:ply_key_file_load_group                    : trying to load group boot-up
	01:24:16.995 ply-key-file.c:175:ply_key_file_load_group                    : trying to load group shutdown
	01:24:16.995 ply-key-file.c:175:ply_key_file_load_group                    : trying to load group reboot
	01:24:16.995 ply-key-file.c:175:ply_key_file_load_group                    : trying to load group updates
	01:24:16.995 ply-key-file.c:175:ply_key_file_load_group                    : trying to load group system-upgrade
	01:24:16.996 ply-key-file.c:175:ply_key_file_load_group                    : trying to load group firmware-upgrade
	01:24:16.996 ply-key-file.c:262:ply_key_file_load_groups                   : key file has no more groups
	01:24:16.996 plugin.c:1030:create_plugin                                   : Using '/usr/share/plymouth/themes/spinner' as working directory
	01:24:16.996 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'ProgressBarHorizontalAlignment'
	01:24:16.996 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'ProgressBarVerticalAlignment'
	01:24:16.996 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'ProgressBarWidth'
	01:24:16.996 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'ProgressBarHeight'
	01:24:16.996 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'SuppressMessages'
	01:24:16.997 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'ProgressBarShowPercentComplete'
	01:24:16.997 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'UseProgressBar'
	01:24:16.997 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'UseFirmwareBackground'
	01:24:16.997 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'Title'
	01:24:16.997 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'SubTitle'
	01:24:16.997 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'SuppressMessages'
	01:24:16.997 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'ProgressBarShowPercentComplete'
	01:24:16.997 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'UseProgressBar'
	01:24:16.997 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'UseFirmwareBackground'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'Title'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'SubTitle'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'SuppressMessages'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'ProgressBarShowPercentComplete'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'UseProgressBar'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'UseFirmwareBackground'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'Title'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'SubTitle'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'UseFirmwareBackground'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'UseFirmwareBackground'
	01:24:17.331 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'UseFirmwareBackground'
	01:24:17.332 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'DialogClearsFirmwareBackground'
	01:24:17.332 ply-key-file.c:359:ply_key_file_get_raw_value                 : key file does not have entry for key 'ProgressFunction'
	01:24:17.332 main.c:1708:load_theme                                        : attaching plugin to event loop
	01:24:17.332 main.c:1711:load_theme                                        : attaching progress to plugin
	01:24:17.332 ply-boot-splash.c:138:ply_boot_splash_add_pixel_display       : adding 1920x1080 pixel display
	01:24:17.332 plugin.c:1563:add_pixel_display                               : adding pixel display to plugin
	01:24:17.332 ply-device-manager.c:1028:ply_device_manager_activate_renderer: activating renderers
	01:24:17.332 plugin.c:918:activate                                         : taking master and scanning out
	01:24:17.332 ply-terminal.c:242:ply_terminal_unlock                        : couldn't unlock terminal settings: Bad file descriptor
	01:24:17.332 plugin.c:693:ply_renderer_head_set_scan_out_buffer            : Setting scan out buffer of 1920x1080 head to our buffer
	01:24:17.333 plugin.c:1693:flush_head                                      : Needed to reset scan out buffer on 1920x1080 renderer head
	01:24:17.334 ply-boot-splash.c:486:ply_boot_splash_show                    : showing splash screen
	01:24:17.334 plugin.c:1621:show_splash_screen                              : loading lock image
	01:24:17.335 plugin.c:1626:show_splash_screen                              : loading box image
	01:24:17.335 plugin.c:1635:show_splash_screen                              : loading corner image
	01:24:17.335 plugin.c:1644:show_splash_screen                              : loading header image
	01:24:17.335 plugin.c:1653:show_splash_screen                              : loading background tile image
	01:24:17.335 plugin.c:1681:show_splash_screen                              : loading watermark image
	01:24:17.335 plugin.c:615:view_load                                        : loading entry
	01:24:17.340 ply-keymap-icon.c:158:ply_keymap_icon_load                    : loading '/usr/share/plymouth/themes/spinner/keyboard.png': success
	01:24:17.495 ply-keymap-icon.c:165:ply_keymap_icon_load                    : loading '/usr/share/plymouth/themes/spinner/keymap-render.png': success
	01:24:17.496 plugin.c:625:view_load                                        : loading progress animation
	01:24:17.497 ply-progress-animation.c:373:ply_progress_animation_add_frames: could not find any progress animation frames
	01:24:17.497 plugin.c:627:view_load                                        : optional progress animation wouldn't load
	01:24:17.498 plugin.c:636:view_load                                        : loading throbber
	01:24:17.531 plugin.c:1697:show_splash_screen                              : starting boot animations
	01:24:17.531 plugin.c:1336:start_progress_animation                        : starting animation
	01:24:17.587 ply-terminal.c:242:ply_terminal_unlock                        : couldn't unlock terminal settings: Bad file descriptor
	01:24:17.599 ply-terminal.c:242:ply_terminal_unlock                        : couldn't unlock terminal settings: Bad file descriptor
	01:24:17.599 ply-device-manager.c:1061:ply_device_manager_activate_keyboard: activating keyboards
	Assertion failed: fd >= 0 (ply-event-loop.c: ply_event_loop_watch_fd: 732)
	Aborted

Signed-off-by: Gaël PORTAY <gael.portay@collabora.com>
2021-03-27 17:58:23 +01:00
Hans de Goede
8a3c9bbf24 Merge branch 'gportay/plymouth-fix-another-bad-assertion'
ply-device-manager: Fix bad assertion

https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/126
2021-03-23 11:05:47 +01:00
Gaël PORTAY
7dcd1f645d ply-device-manager: Fix bad assertion
The function watch_for_udev_events() asserts that udev_monitor cannot be
NULL.

This situation is actually possible and it is easy reproductible by
deactivating and reactivating the splash then.

This commit removes that assertion which is not true. Furthermore, the
function allocates a monitor if it is NULL, right after that assertion.

Fixes:

	00:12:42.405 ply-boot-server.c:393:print_connection_process_identity       : connection is from pid 2227 (plymouth reactivate) with parent pid 2137 (-ash)
	00:12:42.405 ply-boot-server.c:521:ply_boot_connection_on_request          : got reactivate request
	00:12:42.405 ply-terminal.c:637:ply_terminal_open                          : trying to open terminal '/dev/tty1'
	00:12:42.405 ply-terminal.c:430:ply_terminal_refresh_geometry              : looking up terminal text geometry
	00:12:42.405 ply-terminal.c:442:ply_terminal_refresh_geometry              : terminal is now 240x67 text cells
	00:12:42.405 ply-device-manager.c:1062:ply_device_manager_activate_keyboard: activating keyboards
	00:12:42.405 ply-device-manager.c:1114:ply_device_manager_unpause          : ply_device_manager_unpause() called, resuming watching for udev events
	00:12:42.405 ply-device-manager.c:1118:ply_device_manager_unpause          : ply_device_manager_unpause(): timeout elapsed while paused, looking for udev devices
	00:12:42.406 ply-device-manager.c:909:create_devices_from_udev             : Timeout elapsed, looking for devices from udev
	00:12:42.406 ply-device-manager.c:331:create_devices_for_subsystem         : creating objects for drm devices
	00:12:42.407 ply-device-manager.c:351:create_devices_for_subsystem         : found device /sys/devices/platform/soc/soc:gpu/drm/card0
	00:12:42.407 ply-device-manager.c:358:create_devices_for_subsystem         : device is initialized
	00:12:42.408 ply-device-manager.c:367:create_devices_for_subsystem         : found node /dev/dri/card0
	00:12:42.408 ply-device-manager.c:275:create_devices_for_udev_device       : device subsystem is drm
	00:12:42.408 ply-device-manager.c:278:create_devices_for_udev_device       : found DRM device /dev/dri/card0
	00:12:42.408 ply-device-manager.c:774:create_devices_for_terminal_and_rende: ignoring device /dev/dri/card0 since it's already managed
	00:12:42.408 ply-device-manager.c:351:create_devices_for_subsystem         : found device /sys/devices/platform/soc/soc:gpu/drm/card0/card0-Composite-1
	00:12:42.408 ply-device-manager.c:358:create_devices_for_subsystem         : device is initialized
	00:12:42.409 ply-device-manager.c:351:create_devices_for_subsystem         : found device /sys/devices/platform/soc/soc:gpu/drm/card0/card0-HDMI-A-1
	00:12:42.409 ply-device-manager.c:358:create_devices_for_subsystem         : device is initialized
	00:12:42.409 ply-device-manager.c:351:create_devices_for_subsystem         : found device /sys/devices/platform/soc/soc:gpu/drm/card0/card0-Writeback-1
	00:12:42.410 ply-device-manager.c:358:create_devices_for_subsystem         : device is initialized
	00:12:42.410 ply-device-manager.c:351:create_devices_for_subsystem         : found device /sys/devices/platform/soc/soc:gpu/drm/renderD128
	00:12:42.410 ply-device-manager.c:358:create_devices_for_subsystem         : device is initialized
	00:12:42.410 ply-device-manager.c:371:create_devices_for_subsystem         : device doesn't have a devices tag
	00:12:42.410 ply-device-manager.c:331:create_devices_for_subsystem         : creating objects for frame buffer devices
	00:12:42.411 ply-device-manager.c:351:create_devices_for_subsystem         : found device /sys/devices/platform/soc/soc:gpu/graphics/fb0
	00:12:42.412 ply-device-manager.c:358:create_devices_for_subsystem         : device is initialized
	00:12:42.412 ply-device-manager.c:367:create_devices_for_subsystem         : found node /dev/fb0
	00:12:42.412 ply-device-manager.c:275:create_devices_for_udev_device       : device subsystem is graphics
	00:12:42.412 ply-device-manager.c:281:create_devices_for_udev_device       : found frame buffer device /dev/fb0
	00:12:42.412 ply-device-manager.c:231:fb_device_has_drm_device             : trying to find associated drm node for fb device (path: platform-soc:gpu)
	00:12:42.418 ply-device-manager.c:285:create_devices_for_udev_device       : ignoring, since there's a DRM device associated with it
	00:12:42.418 ply-device-manager.c:351:create_devices_for_subsystem         : found device /sys/devices/virtual/graphics/fbcon
	00:12:42.418 ply-device-manager.c:374:create_devices_for_subsystem         : it's not initialized
	Assertion failed: manager->udev_monitor == NULL (ply-device-manager.c: watch_for_udev_events: 461)
	Aborted

Signed-off-by: Gaël PORTAY <gael.portay@collabora.com>
2021-03-23 11:00:20 +01:00
Hans de Goede
0b9148a0ed Merge branch 'gportay/plymouth-two-step-link-libintl-if-nls'
two-step: Links against libintl.so if LNS

https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/128
2021-03-23 10:51:40 +01:00
Gaël PORTAY
bd273d2703 two-step: Links against libintl.so if LNS
The plugin two-step cannot be loaded on a system based on the musl libc
library.

	01:25:00.427 ply-utils.c:536:ply_open_module                               : Could not load module "/usr/lib/plymouth/two-step.so": Error relocating /usr/lib/plymouth/two-step.so: libintl_dgettext: symbol not found

The utilities ldd and objdump reports the missing symbol:

	# ldd /usr/lib/plymouth/two-step.so
	/lib/ld-musl-aarch64.so.1 (0x7fad6c0000)
	libply-splash-graphics.so.5 => /usr/lib/libply-splash-graphics.so.5 (0x7fad683000)
	libply-splash-core.so.5 => /lib/libply-splash-core.so.5 (0x7fad654000)
	libply.so.5 => /lib/libply.so.5 (0x7fad629000)
	libc.musl-aarch64.so.1 => /lib/ld-musl-aarch64.so.1 (0x7fad6c0000)
	libpng16.so.16 => /usr/lib/libpng16.so.16 (0x7fad5ea000)
	libudev.so.1 => /lib/libudev.so.1 (0x7fad5b7000)
	libz.so.1 => /lib/libz.so.1 (0x7fad590000)
	Error relocating /usr/lib/plymouth/two-step.so: libintl_dgettext: symbol not found

	# objdump -T /usr/lib/plymouth/two-step.so | grep gettext
	0000000000000000      D  *UND*	0000000000000000 libintl_dgettext

The missing symbol is archived to the library libintl.so (running
plymouthd with the environment LD_PRELOAD=/usr/lib/libintl.so fixes the
issue).

	# objdump -T /usr/lib/libintl.so | grep gettext
	0000000000005aa0 g    DF .text	0000000000000008 libintl_dngettext
	0000000000007134 g    DF .text	0000000000000004 dgettext
	0000000000002300 g    DF .text	0000000000000014 libintl_dcgettext
	0000000000005aa8 g    DF .text	0000000000000018 libintl_ngettext
	0000000000007130 g    DF .text	0000000000000004 gettext
	0000000000007140 g    DF .text	0000000000000004 dngettext
	0000000000002314 g    DF .text	0000000000000008 libintl_dgettext
	000000000000231c g    DF .text	0000000000000010 libintl_gettext
	0000000000007138 g    DF .text	0000000000000004 dcgettext
	000000000000713c g    DF .text	0000000000000004 ngettext
	0000000000005a90 g    DF .text	0000000000000010 libintl_dcngettext
	0000000000007144 g    DF .text	0000000000000004 dcngettext

The story is much complicated, however, the autotools does the magic.

The GNU gettext FAQ[1] says explicitly that if the program's final link
command does not contain the option -lintl...

> In this case it's likely a bug in the package you are building: The
package's Makefiles should make sure that “-lintl” is used where needed.

Autoconf sets both variables LIBINTL and LTLIBINTL with the appropriate
link options if NLS is being used. These variables are left empty if the
option --disable-nls is set at the configure step.

	LIBINTL = /usr/lib/libintl.so
	LTLIBINTL = -L/usr/lib -lintl

This links the plugin two-step to libintl by adding the libtool variable
LTLIBINTL to the list of the plugin's libraries to link with.

Note: The plugin two-step loads fine on a system based on the glibc
library (without this commit). The plugin uses the intermediate symbol
dcgettext which is implemented by the glibc instead of the remapped
symbol libintl_gettext which is implemented by gettext in libintl.

On glibc:

	# objdump -T /usr/lib/plymouth/two-step.so | grep gettext
	0000000000000000      DF *UND*	0000000000000000  GLIBC_2.2.5 dcgettext

	$ objdump -T /usr/lib/libc.so.6 | grep gettext
	0000000000037ec0  w   DF .text	0000000000000014  GLIBC_2.2.5 dcngettext
	0000000000036630  w   DF .text	0000000000000013  GLIBC_2.2.5 dcgettext
	0000000000037ef0  w   DF .text	000000000000001a  GLIBC_2.2.5 ngettext
	0000000000036660  w   DF .text	0000000000000013  GLIBC_2.2.5 gettext
	0000000000036630 g    DF .text	0000000000000013  GLIBC_2.2.5 __dcgettext
	0000000000036650  w   DF .text	000000000000000e  GLIBC_2.2.5 dgettext
	0000000000036650 g    DF .text	000000000000000e  GLIBC_2.2.5 __dgettext
	0000000000037ee0  w   DF .text	000000000000000f  GLIBC_2.2.5 dngettext

On musl:

	# objdump -T /usr/lib/plymouth/two-step.so | grep gettext
	0000000000000000      D  *UND*	0000000000000000 libintl_dgettext

	# objdump -T /lib/libc.musl-aarch64.so.1 | grep gettext
	0000000000025724 g    DF .text	0000000000000010 dcgettext
	0000000000027828 g    DF .text	0000000000000014 ngettext
	0000000000025734 g    DF .text	0000000000000008 dngettext
	000000000002573c g    DF .text	0000000000000010 dgettext
	000000000002781c g    DF .text	000000000000000c gettext
	0000000000025294 g    DF .text	0000000000000490 dcngettext

	# objdump -T /usr/lib/libintl.so | grep libintl_dgettext
	0000000000002314 g    DF .text	0000000000000008 libintl_dgettext

However, this commit changes nothing for system based on glibc as the
magic of the Autoconf leaves the LIBINTL and LTLIBINTL empty even if the
NLS is being used.

[1]: https://www.gnu.org/software/gettext/FAQ.html#integrating_undefined

Signed-off-by: Gaël PORTAY <gael.portay@collabora.com>
2021-03-23 10:51:31 +01:00
Hans de Goede
a2dcb19d8d Merge branch 'weblate/plymouth-weblate-plymouth-master' 2021-03-23 10:44:02 +01:00
Hela Basa
29891c8e2e Added translation using Weblate (Sinhala)
Co-authored-by: Hela Basa <r45xveza@pm.me>
2021-03-23 10:41:42 +01:00
Марко Костић (Marko Kostić)
2a9484def9 Translated using Weblate (Serbian)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/sr/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Geert Warrink
949b5dc26c Translated using Weblate (Dutch)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Geert Warrink <geert.warrink@onsnet.nu>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/nl/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Mikel Olasagasti
5167defc4a Translated using Weblate (Basque)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Mikel Olasagasti <mikel@olasagasti.info>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/eu/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Igor Gorbounov
d7d72a8163 Translated using Weblate (Russian)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Igor Gorbounov <igor.gorbounov@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/ru/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Balázs Meskó
07213a7de5 Translated using Weblate (Hungarian)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Balázs Meskó <meskobalazs@mailbox.org>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/hu/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Yaron Shahrabani
e30739bf64 Translated using Weblate (Hebrew)
Currently translated at 100.0% (7 of 7 strings)

Added translation using Weblate (Hebrew)

Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/he/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
玉堂白鹤
7b7a79384a Translated using Weblate (Chinese (Simplified) (zh_CN))
Currently translated at 85.7% (6 of 7 strings)

Co-authored-by: 玉堂白鹤 <yjwork@qq.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/zh_CN/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Carmen Bianca Bakker
c8f4a84cdc Translated using Weblate (Esperanto)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Carmen Bianca Bakker <carmen@carmenbianca.eu>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/eo/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Robbi Nespu
c0fab8c43b Translated using Weblate (Malay)
Currently translated at 100.0% (7 of 7 strings)

Translated using Weblate (Malay)

Currently translated at 100.0% (7 of 7 strings)

Added translation using Weblate (Malay)

Co-authored-by: Robbi Nespu <robbinespu@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/ms/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
A S Alam
5925eeae12 Translated using Weblate (Punjabi)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: A S Alam <amanpreet.alam@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/pa/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Andika Triwidada
1770a17c9d Translated using Weblate (Indonesian)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Andika Triwidada <andika@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/id/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
scootergrisen
7fa9b2c403 Translated using Weblate (Danish)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: scootergrisen <scootergrisen@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/da/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Julien Humbert
0d1da54a51 Translated using Weblate (French)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Julien Humbert <julroy67@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/fr/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Göran Uddeborg
96267b676a Translated using Weblate (Swedish)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Göran Uddeborg <goeran@uddeborg.se>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/sv/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Milo Casagrande
3b12d4d375 Translated using Weblate (Italian)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Milo Casagrande <milo@milo.name>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/it/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Jean-Baptiste Holcroft
b1b94b88b6 Translated using Weblate (French)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/fr/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Tobias Weise
f410c906ab Translated using Weblate (German)
Currently translated at 100.0% (7 of 7 strings)

Co-authored-by: Tobias Weise <tobias.weise@web.de>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/de/
Translation: plymouth/master
2021-03-23 10:41:42 +01:00
Ray Strode
5784567544 Merge branch 'fix-compile-gettext-mismatch' into 'master'
Fix compilation when system has mismatching gettext

See merge request plymouth/plymouth!135
2021-03-09 12:16:39 +00:00
Wolfgang Haupt
1e00a7a0ce The use of AM_GNU_GETTEXT_VERSION in configure.ac instructs autopoint to
copy po/Makefile.in.in from the exact gettext version. It is fine if the
version of gettext installed on the system has the same minor version
number with the requested version, but it fails if you have a newer
version of gettext because of the mismatch between autoconf macros and
Makefile.in.in.

  *** error: gettext infrastructure mismatch: using a Makefile.in.in
  from gettext version 0.19 but the autoconf macros are from gettext
  version 0.20

Instead of specifying the exact version with AM_GNU_GETTEXT_VERSION, we
can use AM_GNU_GETTEXT_REQUIRE_VERSION to ask autopoint to simply use
the gettext version installed on the system to prevent the mismatch.
2021-03-09 12:12:23 +00:00
Hans de Goede
9773f3e513 Merge branch 'drm_probe_speedup' into 'master'
Speed up DRM-connector probing

See merge request plymouth/plymouth!133
2021-03-09 11:25:31 +00:00
Hans de Goede
42ee6809b0 ply-device-manager: Speed up DRM-connector probing
During the initial monitor/connector enumeration on boot the kernel
fires a large number of change events. If we process these 1 by 1,
we spend a lot of time probing the DRM-connectors. So instead we
collect them all and then coalescence them so that if there are multiple
change events pending for a single card, we only re-probe the card once.

Here are some numbers of the probing times before / after this patch:

1. Lenovo X1 carbon 8th gen connected to a Lenovo Thunderbolt dock gen 2
   with 2 FullHD monitors connected:
Before: add event card0: 00:00:02.543 last change complete at: 00:00:04.250,
   12 change events processed, 13 probes done!
After: add event card0: 00:00:02.548 last change complete at: 00:00:04.049
   1 change event processed, 2 probes done!

2. Intel skylake CPU + iGPU based desktop with 2 FullHD monitors connected:
Before: add event card0: 00:00:02.394 last change complete at: 00:00:05.024,
   5 change events processed, 6 probes done!
After: add event card0: 00:00:02.343 last change complete at: 00:00:03.744,
   1 change event processed, 2 probes done!

In the Thunderbolt dock case we probe the DRM-connectors 2 times instead
of 13 times after this change. This does not lead to a big speed-up though
because the dock caches the monitors EDID info and the DP aux channel to
the dock is quite fast.

In the desktop case we only reduce the amount of probes from 6 to 2, so
less then in the Thunderbolt dock case, but since we don't have the EDID
caching happening there this does reduce the time which it takes to probe
the DRM-connectors from 2.6 seconds to 1.4 seconds which is a huge
improvement.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-06 10:57:05 +01:00
Hans de Goede
dc8dc20b26 ply-device-manager: add a verify_add_or_change() helper
Add a verify_add_or_change() helper function. This is a preparation
patch for coalescing multiple change events on the same card together
to speed up probing of the drm connectors.

Note this causes the action == "add" || action == "change" check to
be done twice. This double checking goes away in the next patch.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-06 10:57:05 +01:00
Hans de Goede
a649b55108 ply-device-manager: push udev_device_get_devnode call up into on_udev_event
on_udev_event calls either on_drm_udev_add_or_change; or
free_devices_for_udev_device. Both of these functions call
udev_device_get_devnode and are a no-op if that returns NULL.

Cleanup things by directly calling udev_device_get_devnode from
on_udev_event and exit eary if the udev_device does not have
an associated devnode.

With the udev_device_get_devnode call handled by on_udev_event,
all that is left of free_devices_for_udev_device is a single
line calling free_devices_from_device_path. So drop
free_devices_for_udev_device and directly call
free_devices_from_device_path from on_udev_event.

Note this also fixes a theoretical udev_device reference leak
in the action == NULL early-exit path. In practice action never
is NULL, so this was not really a problem. But in the refactored
code we now also do the early-exit on dev_path == NULL which does
actually happen.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-06 10:57:05 +01:00
Hans de Goede
9a3899c0ab two-step: Fix unused variable compiler warning
Fix the following:

plugin.c: In function ‘show_splash_screen’:
plugin.c:1645:13: warning: unused variable ‘i’ [-Wunused-variable]
 1645 |         int i;
      |

Compiler warning which I introduced in:

https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/132/

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-06 10:57:05 +01:00
Hans de Goede
8c249a46f2 Merge branch 'remove_new_object_sh' into 'master'
scripts: Remove new-object.sh

See merge request plymouth/plymouth!134
2021-03-06 09:53:53 +00:00
Hans de Goede
ba1a1e28d3 scripts: Remove new-object.sh
Remove new-object.sh. As discussed in:

https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/113

It is not used (and may very well have never been used?).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-06 10:40:36 +01:00
Hans de Goede
5c4b4012da Merge branch 'bgrt_fallback_image_fixes' into 'master'
BGRT fallback image fixes

See merge request plymouth/plymouth!132
2021-03-05 14:51:55 +00:00
Hans de Goede
c5db6cf2d1 two-step: Only create background_bgrt_fallback_image if use_firmware_background is set
We should not create (and try to use) the background_bgrt_fallback_image
when the config file has not requested use of the firmware-background.

Otherwise we will end up using bgrt-fallback.png if present even when the
config file has not requested usage of the firmware-background.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-05 13:55:10 +01:00
Hans de Goede
9cb47b71cb two-step: Always load the BGRT fallback image
view_set_bgrt_background() can fail even if the BGRT image was loaded
successfully. So we may need the fallback image even though the
BGRT image was loaded successfully.

This commit also fixes plugin->background_bgrt_fallback_image not being
free-ed and set to NULL when loading the fallback image fails.

Note this also drops the clearing of the use_firmware_background flagss
when we fail to load both the BGRT and the fallback images. Clearing
these flags is not necessary. They are only checked if
plugin->background_bgrt_image or plugin->background_bgrt_fallback_image
are non NULL; and if the loading of both images failed then both
are NULL.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-05 13:52:38 +01:00
Hans de Goede
6bd905e5e8 Merge branch 'fix-bgrt-fallback' into 'master'
Fix BGRT fallback rendering

Closes #142

See merge request plymouth/plymouth!131
2021-03-05 10:41:06 +00:00
Adrian Vovk
64522226f4 Fix BGRT fallback rendering 2021-03-02 16:13:23 -05:00
Ray Strode
c74b3aef9c Merge branch 'kill-mode-change' into 'master'
systemd: switch to KillMode=mixed

See merge request plymouth/plymouth!122
2021-02-22 12:49:19 +00:00
Ray Strode
9d0f8b2e7b systemd: switch to KillMode=mixed
KillMode=none is deprecated, so we need to stop using it.

For now, use `KillMode=mixed` and `IgnoreOnIsolate=true` instead.

In the future, we should change plymouth to be able to exit and
start again without restarting the active animation, but that's
going to require some effort.

https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/123
2021-02-22 12:45:11 +00:00
Ray Strode
c4ced2a2d7 Merge branch 'use-fallback-image-if-bgrt-is-not-supported' into 'master'
Use fallback image if BGRT is not supported

See merge request plymouth/plymouth!125
2020-12-07 22:39:07 +00:00
Marius Meisenzahl
3ed2a1a92c Use fallback image if BGRT is not supported 2020-12-07 22:39:07 +00:00