summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-09-27Merge branch 'themepath-cfg' into 'master'HEADmasterRay Strode3-28/+95
main: add ThemePath configuration option See merge request plymouth/plymouth!142
2021-09-27scripts: support populating from configurable theme dirAlfonso Sánchez-Beato1-2/+48
Support populating initramfs with themes from the configurable theme directory.
2021-09-27main: add ThemeDir configuration optionAlfonso Sánchez-Beato1-5/+15
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-27main: refactor code for searching the theme pathAlfonso Sánchez-Beato1-28/+33
Refactor code that searched for the theme configuration so it can be reused.
2021-09-27ply-utils: add macro to count the number of elements in an arrayAlfonso Sánchez-Beato1-0/+2
2021-09-27main: free path variables before exitingAlfonso Sánchez-Beato1-0/+4
Free path variables before exiting so the code is more asan/valgrind friendly.
2021-09-23Merge branch 'weblate-plymouth-master' into 'master'Ray Strode1-7/+9
Translations update from Weblate See merge request plymouth/plymouth!145
2021-09-23Translated using Weblate (Czech)Pavel Borecki1-7/+9
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-22Merge branch 'crash_on_hide_message' into 'master'Ray Strode1-1/+3
Fix crash when hiding message in details splash mode See merge request plymouth/plymouth!140
2021-09-22Fix crash when hiding message in details splash modei.Dark_Templar1-1/+3
2021-09-22Merge branch 'ignore-serial-option' into 'master'Ray Strode1-1/+5
main: add ignore-serial-consoles option See merge request plymouth/plymouth!143
2021-09-22main: add ignore-serial-consoles optionAlfonso Sánchez-Beato1-1/+5
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-22Merge branch 'weblate-plymouth-master' into 'master'Ray Strode8-36/+159
Translations update from Weblate See merge request plymouth/plymouth!139
2021-09-21Translated using Weblate (Finnish)Jan Kuparinen2-0/+57
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-21Translated using Weblate (Sinhala)Hela Basa1-4/+7
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-21Translated using Weblate (Chinese (Simplified) (zh_CN))Liu Tao1-4/+5
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-21Translated using Weblate (Persian)Danial Behzadi2-0/+57
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-21Translated using Weblate (Friulian)Fabio Tomat1-7/+8
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-21Translated using Weblate (Belarusian)Yauhen Bugamol1-13/+15
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-21Translated using Weblate (Spanish)Emilio Herrera1-8/+10
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-21Merge branch 'master' into 'master'Ray Strode1-20/+5
main: Ensure that doubles in config files are parsed with '.' Closes #153 See merge request plymouth/plymouth!144
2021-09-21main: Ensure that doubles in config files are parsed with '.'Robin Ebert1-20/+5
2021-04-06Merge branch 'rework-shutdown-handling' into 'master'Hans de Goede8-20/+136
Rework shutdown handling See merge request plymouth/plymouth!138
2021-04-06systemd: Add plymouth-switch-root-initramfs.service to switch back to ↵Ray Strode5-12/+50
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-06main: Add a plymouthd-fd-escrow helperRay Strode3-0/+51
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-06main: Dump debug log to plymouth-shutdown-debug.log on shutdown/rebootHans de Goede1-2/+7
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-06main: Cleanly quit on SIGTERMHans de Goede1-0/+14
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-03-31main: Only mark plymouthd as unkillable when running from the initrdHans de Goede1-3/+6
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-31ply-device-manager: Don't deactivate renderers from ply_device_manager_free ()Hans de Goede1-3/+8
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-29Merge branch 'text-n-details-splash-fixes' into 'master'Hans de Goede7-8/+24
Text and details splash fixes See merge request plymouth/plymouth!137
2021-03-29details: Clear newly added text-display before replaying log messagesHans de Goede1-1/+3
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-29text/tribar: Fix ply_boot_splash_hide () not clearing the terminalHans de Goede2-4/+2
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-29ply-text-display: Fix bottom pixels of fbcon not getting clearedHans de Goede1-1/+1
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-29ply-text-display: Only skip clearing the screen when tracing to a terminalHans de Goede1-1/+1
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-29main: Redirect stdio/stderr to null when tracing to a fileHans de Goede1-1/+1
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-29ply-logger: Add a ply_is_tracing_to_terminal () helperHans de Goede2-0/+16
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-27Merge branch 'gportay/plymouth-do-not-close-vt-on-show-hide-splash'Hans de Goede1-0/+2
main: Retain splash on on_show_splash() and on_hide_splash() https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/127
2021-03-27main: Retain splash on on_show_splash() and on_hide_splash()Gaël PORTAY1-0/+2
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-23Merge branch 'gportay/plymouth-fix-another-bad-assertion'Hans de Goede1-1/+0
ply-device-manager: Fix bad assertion https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/126
2021-03-23ply-device-manager: Fix bad assertionGaël PORTAY1-1/+0
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-23Merge branch 'gportay/plymouth-two-step-link-libintl-if-nls'Hans de Goede1-1/+1
two-step: Links against libintl.so if LNS https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/128
2021-03-23two-step: Links against libintl.so if LNSGaël PORTAY1-1/+1
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-23Merge branch 'weblate/plymouth-weblate-plymouth-master'Hans de Goede18-105/+293
2021-03-23Added translation using Weblate (Sinhala)Hela Basa2-0/+54
Co-authored-by: Hela Basa <r45xveza@pm.me>
2021-03-23Translated using Weblate (Serbian)Марко Костић (Marko Kostić)1-9/+11
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-23Translated using Weblate (Dutch)Geert Warrink1-7/+8
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-23Translated using Weblate (Basque)Mikel Olasagasti1-8/+9
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-23Translated using Weblate (Russian)Igor Gorbounov1-9/+10
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-23Translated using Weblate (Hungarian)Balázs Meskó1-7/+9
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-23Translated using Weblate (Hebrew)Yaron Shahrabani2-0/+58
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