From 5dfe64bd91a02a9a13dd703e951cd2cdb346054a Mon Sep 17 00:00:00 2001 From: eabdullin Date: Tue, 11 Nov 2025 08:58:16 +0000 Subject: [PATCH] import CS plymouth-24.004.60-17.el10 --- .gitignore | 2 +- .plymouth.metadata | 1 - ...console-text-when-splash-is-requeste.patch | 58 + ...ils-dont-duplicate-output-on-console.patch | 209 +++ ...Set-unbuffered-input-when-creating-a.patch | 37 + ...er-Revert-Fall-back-to-text-plugin-i.patch | 52 + ...o-not-assume-all-keyboards-have-LEDs.patch | 108 ++ ...obgress-Remove-the-throbgress-plugin.patch | 1112 -------------- ...during-shutdown-with-everything-else.patch | 871 ----------- ...002-throbgress-update-for-api-change.patch | 142 -- SOURCES/boot-duration | 39 - SOURCES/bootlog | 8 - SOURCES/plymouth-update-initrd | 2 - SOURCES/ship-label-plugin-in-initrd.patch | 154 -- SPECS/plymouth.spec | 1298 ----------------- SOURCES/charge.plymouth => charge.plymouth | 4 +- ...4.004.60-immediately-probe-simpledrm.patch | 556 +++++++ plymouth.spec | 849 +++++++++++ sources | 1 + 19 files changed, 1873 insertions(+), 3630 deletions(-) delete mode 100644 .plymouth.metadata create mode 100644 0001-Revert-src-Hide-console-text-when-splash-is-requeste.patch create mode 100644 0001-details-dont-duplicate-output-on-console.patch create mode 100644 0001-ply-boot-splash-Set-unbuffered-input-when-creating-a.patch create mode 100644 0001-ply-device-manager-Revert-Fall-back-to-text-plugin-i.patch create mode 100644 0001-renderers-Do-not-assume-all-keyboards-have-LEDs.patch delete mode 100644 SOURCES/0001-Revert-throbgress-Remove-the-throbgress-plugin.patch delete mode 100644 SOURCES/0001-src-die-during-shutdown-with-everything-else.patch delete mode 100644 SOURCES/0002-throbgress-update-for-api-change.patch delete mode 100644 SOURCES/boot-duration delete mode 100644 SOURCES/bootlog delete mode 100644 SOURCES/plymouth-update-initrd delete mode 100644 SOURCES/ship-label-plugin-in-initrd.patch delete mode 100644 SPECS/plymouth.spec rename SOURCES/charge.plymouth => charge.plymouth (61%) create mode 100644 plymouth-24.004.60-immediately-probe-simpledrm.patch create mode 100644 plymouth.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index c9930e7..e82c090 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/plymouth-1e36e303e08ba425fecbcff4dde22c8ee936638c.tar.bz2 +plymouth-24.004.60.tar.bz2 diff --git a/.plymouth.metadata b/.plymouth.metadata deleted file mode 100644 index 56ff012..0000000 --- a/.plymouth.metadata +++ /dev/null @@ -1 +0,0 @@ -7847967f397a536ccf5fb2d43aa561ac5e5dff6c SOURCES/plymouth-1e36e303e08ba425fecbcff4dde22c8ee936638c.tar.bz2 diff --git a/0001-Revert-src-Hide-console-text-when-splash-is-requeste.patch b/0001-Revert-src-Hide-console-text-when-splash-is-requeste.patch new file mode 100644 index 0000000..d18b9c8 --- /dev/null +++ b/0001-Revert-src-Hide-console-text-when-splash-is-requeste.patch @@ -0,0 +1,58 @@ +From e6f09b05707be8aec488d757c5abe56cb3060a75 Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Sat, 16 Mar 2024 17:22:57 -0700 +Subject: [PATCH] Revert "src: Hide console text when splash is requested" + +This reverts commit 48881ba2ef3d25fd27fd150d4d5957d4df9868e0. +It breaks display entirely on minimal installs. +--- + src/libply-splash-core/ply-terminal.c | 2 -- + src/main.c | 12 ++++-------- + 2 files changed, 4 insertions(+), 10 deletions(-) + +diff --git a/src/libply-splash-core/ply-terminal.c b/src/libply-splash-core/ply-terminal.c +index 1a9ec353..2036e507 100644 +--- a/src/libply-splash-core/ply-terminal.c ++++ b/src/libply-splash-core/ply-terminal.c +@@ -357,8 +357,6 @@ ply_terminal_write (ply_terminal_t *terminal, + assert (terminal != NULL); + assert (format != NULL); + +- ply_terminal_set_mode (terminal, PLY_TERMINAL_MODE_TEXT); +- + string = NULL; + va_start (args, format); + size = vasprintf (&string, format, args); +diff --git a/src/main.c b/src/main.c +index 33fe51e0..81e34c54 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -1000,14 +1000,6 @@ on_show_splash (state_t *state) + if (!state->is_attached && state->should_be_attached && has_displays) + attach_to_running_session (state); + +- if (state->local_console_terminal != NULL) +- ply_terminal_set_mode (state->local_console_terminal, PLY_TERMINAL_MODE_GRAPHICS); +- +-#ifdef PLY_ENABLE_SYSTEMD_INTEGRATION +- if (state->is_attached) +- tell_systemd_to_print_details (state); +-#endif +- + if (has_displays) { + ply_trace ("at least one display already available, so loading splash"); + show_splash (state); +@@ -1438,6 +1430,10 @@ on_quit (state_t *state, + state->quit_trigger = quit_trigger; + state->should_retain_splash = retain_splash; + ++#ifdef PLY_ENABLE_SYSTEMD_INTEGRATION ++ tell_systemd_to_stop_printing_details (state); ++#endif ++ + ply_trace ("closing log"); + if (state->session != NULL) + ply_terminal_session_close_log (state->session); +-- +2.44.0 + diff --git a/0001-details-dont-duplicate-output-on-console.patch b/0001-details-dont-duplicate-output-on-console.patch new file mode 100644 index 0000000..e89bcae --- /dev/null +++ b/0001-details-dont-duplicate-output-on-console.patch @@ -0,0 +1,209 @@ +From 2446472f9ac9246f2ee25a92e8ebb17c54b923bd Mon Sep 17 00:00:00 2001 +From: Adrian Vovk +Date: Fri, 9 May 2025 14:44:24 -0400 +Subject: [PATCH 1/3] utils: Don't lose log level when silencing kmsg + +Once we disable kmsg logging to the console, the kernel will set the +console log level to the minimum log level (i.e. only logging kernel +panics). However the unintended side effect is that our own kmsg-reader +will start filtering out all kernel log messages, since we also respect +the kernel's console log level. + +This change make it so that we keep using the original console log level +whenever we disable the kernel's output. This lets us keep forwarding +the kernel's kmsg output +--- + src/libply/ply-utils.c | 79 +++++++++++++++++++++++++----------------- + 1 file changed, 47 insertions(+), 32 deletions(-) + +diff --git a/src/libply/ply-utils.c b/src/libply/ply-utils.c +index 6fa64975..782fadd8 100644 +--- a/src/libply/ply-utils.c ++++ b/src/libply/ply-utils.c +@@ -89,6 +89,10 @@ static int overridden_device_scale = 0; + static char kernel_command_line[PLY_MAX_COMMAND_LINE_SIZE]; + static bool kernel_command_line_is_set; + ++static int cached_current_log_level = 0; ++static int cached_default_log_level = 0; ++static double log_level_update_time = 0.0; ++ + bool + ply_open_unidirectional_pipe (int *sender_fd, + int *receiver_fd) +@@ -673,20 +677,6 @@ ply_create_file_link (const char *source, + return true; + } + +-void +-ply_show_new_kernel_messages (bool should_show) +-{ +- int type; +- +- if (should_show) +- type = PLY_ENABLE_CONSOLE_PRINTK; +- else +- type = PLY_DISABLE_CONSOLE_PRINTK; +- +- if (klogctl (type, NULL, 0) < 0) +- ply_trace ("could not toggle printk visibility: %m"); +-} +- + ply_daemon_handle_t * + ply_create_daemon (void) + { +@@ -1118,26 +1108,14 @@ int ply_guess_device_scale (uint32_t width, + return get_device_scale (width, height, 0, 0, true); + } + +-void +-ply_get_kmsg_log_levels (int *current_log_level, +- int *default_log_level) ++static void ++ply_get_kmsg_log_levels_uncached (int *current_log_level, ++ int *default_log_level) + { +- static double last_update_time = 0; +- static int cached_current_log_level = 0; +- static int cached_default_log_level = 0; + char log_levels[4096] = ""; +- double current_time; + char *field, *fields; + int fd; + +- current_time = ply_get_timestamp (); +- +- if ((current_time - last_update_time) < 1.0) { +- *current_log_level = cached_current_log_level; +- *default_log_level = cached_default_log_level; +- return; +- } +- + ply_trace ("opening /proc/sys/kernel/printk"); + fd = open ("/proc/sys/kernel/printk", O_RDONLY); + +@@ -1171,11 +1149,48 @@ ply_get_kmsg_log_levels (int *current_log_level, + } + + *default_log_level = atoi (field); ++} + +- cached_current_log_level = *current_log_level; +- cached_default_log_level = *default_log_level; ++void ++ply_get_kmsg_log_levels (int *current_log_level, ++ int *default_log_level) ++{ ++ double current_time; ++ bool no_cache; ++ bool cache_expired; ++ ++ no_cache = cached_current_log_level == 0 || cached_default_log_level == 0; ++ current_time = ply_get_timestamp (); ++ cache_expired = log_level_update_time > 0.0 && (current_time - log_level_update_time) >= 1.0; ++ ++ if (no_cache || cache_expired) { ++ ply_get_kmsg_log_levels_uncached (&cached_current_log_level, &cached_default_log_level); ++ log_level_update_time = current_time; ++ } ++ ++ *current_log_level = cached_current_log_level; ++ *default_log_level = cached_default_log_level; ++} ++ ++void ++ply_show_new_kernel_messages (bool should_show) ++{ ++ int type; ++ ++ if (should_show) { ++ type = PLY_ENABLE_CONSOLE_PRINTK; ++ ++ cached_current_log_level = cached_default_log_level = 0; ++ log_level_update_time = 0.0; ++ } else { ++ type = PLY_DISABLE_CONSOLE_PRINTK; ++ ++ ply_get_kmsg_log_levels_uncached (&cached_current_log_level, &cached_default_log_level); ++ log_level_update_time = -1.0; /* Disable expiration */ ++ } + +- last_update_time = current_time; ++ if (klogctl (type, NULL, 0) < 0) ++ ply_trace ("could not toggle printk visibility: %m"); + } + + static const char * +-- +GitLab + + +From 6d7b3c3342e80f94410165c72bb2d907624e3fff Mon Sep 17 00:00:00 2001 +From: Adrian Vovk +Date: Fri, 9 May 2025 15:17:48 -0400 +Subject: [PATCH 2/3] details: Suppress kernel's own kmsg console output + +Plymouth forwards /dev/console and /dev/kmsg to all consoles (and to the +graphical splash). With the details plugin, we would do this without +suppressing the kernel's own output first. This would lead to duplicate +log entries +--- + src/plugins/splash/details/plugin.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/plugins/splash/details/plugin.c b/src/plugins/splash/details/plugin.c +index 9e150b5c..c7674fc0 100644 +--- a/src/plugins/splash/details/plugin.c ++++ b/src/plugins/splash/details/plugin.c +@@ -308,6 +308,8 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + detach_from_event_loop, + plugin); + ++ ply_show_new_kernel_messages (false); ++ + if (boot_buffer) { + plugin->boot_buffer = boot_buffer; + +@@ -350,6 +352,8 @@ hide_splash_screen (ply_boot_splash_plugin_t *plugin, + detach_from_event_loop, + plugin); + detach_from_event_loop (plugin); ++ ++ ply_show_new_kernel_messages (true); + } + + static void +-- +GitLab + + +From a53065d0ce0b28a214b9088afc9d4d769c030d3b Mon Sep 17 00:00:00 2001 +From: Adrian Vovk +Date: Fri, 9 May 2025 15:35:38 -0400 +Subject: [PATCH 3/3] kmsg-reader: Seek to the end of the ringbuffer + +Otherwise, whenever plymouth starts we'd replay all previous kmsg +entries, even if they've already been logged to the console. This leads +to duplicated log entires, and makes it hard to debug things. + +With /dev/console, we only log what we capture while Plymouth is +running. Let's do the same with /dev/kmsg +--- + src/libply-splash-core/ply-kmsg-reader.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/libply-splash-core/ply-kmsg-reader.c b/src/libply-splash-core/ply-kmsg-reader.c +index 439da415..9e9de214 100644 +--- a/src/libply-splash-core/ply-kmsg-reader.c ++++ b/src/libply-splash-core/ply-kmsg-reader.c +@@ -204,6 +204,8 @@ ply_kmsg_reader_start (ply_kmsg_reader_t *kmsg_reader) + if (kmsg_reader->kmsg_fd < 0) + return; + ++ lseek (kmsg_reader->kmsg_fd, 0, SEEK_END); ++ + kmsg_reader->fd_watch = ply_event_loop_watch_fd (ply_event_loop_get_default (), kmsg_reader->kmsg_fd, PLY_EVENT_LOOP_FD_STATUS_HAS_DATA, + (ply_event_handler_t) handle_kmsg_message, + NULL, +-- +GitLab diff --git a/0001-ply-boot-splash-Set-unbuffered-input-when-creating-a.patch b/0001-ply-boot-splash-Set-unbuffered-input-when-creating-a.patch new file mode 100644 index 0000000..f0de1ba --- /dev/null +++ b/0001-ply-boot-splash-Set-unbuffered-input-when-creating-a.patch @@ -0,0 +1,37 @@ +From 10ac8d2dc927b112ce6aeb06bc73d9c46550954c Mon Sep 17 00:00:00 2001 +From: n3rdopolis +Date: Tue, 6 Feb 2024 18:52:25 -0500 +Subject: [PATCH] ply-boot-splash: Set unbuffered input when creating a text + display + +--- + src/libply-splash-core/ply-boot-splash.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/libply-splash-core/ply-boot-splash.c b/src/libply-splash-core/ply-boot-splash.c +index 12fb6c10..217f455e 100644 +--- a/src/libply-splash-core/ply-boot-splash.c ++++ b/src/libply-splash-core/ply-boot-splash.c +@@ -173,6 +173,7 @@ ply_boot_splash_add_text_display (ply_boot_splash_t *splash, + ply_text_display_t *display) + { + int number_of_columns, number_of_rows; ++ ply_terminal_t *terminal; + + if (splash->plugin_interface->add_text_display == NULL) + return; +@@ -183,6 +184,11 @@ ply_boot_splash_add_text_display (ply_boot_splash_t *splash, + ply_trace ("adding %dx%d text display", number_of_columns, number_of_rows); + + splash->plugin_interface->add_text_display (splash->plugin, display); ++ ++ terminal = ply_text_display_get_terminal (display); ++ if (terminal) ++ ply_terminal_set_unbuffered_input (terminal); ++ + ply_list_append_data (splash->text_displays, display); + } + +-- +2.44.0 + diff --git a/0001-ply-device-manager-Revert-Fall-back-to-text-plugin-i.patch b/0001-ply-device-manager-Revert-Fall-back-to-text-plugin-i.patch new file mode 100644 index 0000000..33edf0b --- /dev/null +++ b/0001-ply-device-manager-Revert-Fall-back-to-text-plugin-i.patch @@ -0,0 +1,52 @@ +From 4a8c0a4231d35ac060f41b582596684cfba7c9ae Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 7 May 2024 12:42:10 +0200 +Subject: [PATCH] ply-device-manager: Revert "Fall back to text plugin if no + renderers installed" + +The drm renderer may fail to open /dev/dri/card# with -ENOENT when trying +to open/probe a simpledrm registered drm device and the open races with +that drm device being removed to be replaced by a new drm device registered +by the native GPU driver (e.g. i915 / amdgpu). + +Switching to text mode immediately when this race gets hit is undesirable, +as it causes text mode on systems where plymouth would run in graphics +mode before. Remove the immediate switch to text mode on -ENOENT. +Delaying the switch to textmode until the timeout as before. + +This reverts commit 03842d5201e4486fe62635c7b470eb94696f985d. + +Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2270030 +--- + src/libply-splash-core/ply-device-manager.c | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 59e579dd..d75ac6c5 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -52,7 +52,6 @@ + static void create_devices_from_udev (ply_device_manager_t *manager); + #endif + +-static void create_non_graphical_devices (ply_device_manager_t *manager); + static bool create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager, + const char *device_path, + ply_terminal_t *terminal, +@@ -1102,13 +1101,6 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager, + renderer = ply_renderer_new (renderer_type, device_path, terminal); + + if (renderer != NULL && !ply_renderer_open (renderer)) { +- if (errno == ENOENT) { +- ply_trace ("No renderer plugins installed, creating non-graphical devices"); +- ply_renderer_free (renderer); +- create_non_graphical_devices (manager); +- manager->device_timeout_elapsed = true; +- return false; +- } + ply_trace ("could not open renderer for %s", device_path); + ply_renderer_free (renderer); + renderer = NULL; +-- +2.44.0 + diff --git a/0001-renderers-Do-not-assume-all-keyboards-have-LEDs.patch b/0001-renderers-Do-not-assume-all-keyboards-have-LEDs.patch new file mode 100644 index 0000000..10575f9 --- /dev/null +++ b/0001-renderers-Do-not-assume-all-keyboards-have-LEDs.patch @@ -0,0 +1,108 @@ +From 709f21e80199ee51badff2d9b5dc6bae8af2a1a1 Mon Sep 17 00:00:00 2001 +From: n3rdopolis +Date: Wed, 31 Jan 2024 08:38:38 -0500 +Subject: [PATCH] renderers: Do not assume all keyboards have LEDs + +This is an attempt to fix #245 +--- + src/plugins/renderers/drm/plugin.c | 22 +++++++++++++++++++-- + src/plugins/renderers/frame-buffer/plugin.c | 22 +++++++++++++++++++-- + 2 files changed, 40 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 54cfe874..2fbb6b85 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -1972,6 +1972,17 @@ get_panel_properties (ply_renderer_backend_t *backend, + return true; + } + ++static ply_input_device_t * ++get_any_input_device (ply_renderer_backend_t *backend) ++{ ++ ply_list_node_t *node = ply_list_get_first_node (backend->input_source.input_devices); ++ ++ if (node != NULL) ++ return ply_list_node_get_data (node); ++ ++ return NULL; ++} ++ + static ply_input_device_t * + get_any_input_device_with_leds (ply_renderer_backend_t *backend) + { +@@ -1994,6 +2005,9 @@ get_capslock_state (ply_renderer_backend_t *backend) + { + if (using_input_device (&backend->input_source)) { + ply_input_device_t *dev = get_any_input_device_with_leds (backend); ++ if (!dev) ++ return false; ++ + return ply_input_device_get_capslock_state (dev); + } + if (!backend->terminal) +@@ -2006,8 +2020,12 @@ static const char * + get_keymap (ply_renderer_backend_t *backend) + { + if (using_input_device (&backend->input_source)) { +- ply_input_device_t *dev = get_any_input_device_with_leds (backend); +- const char *keymap = ply_input_device_get_keymap (dev); ++ const char *keymap; ++ ply_input_device_t *dev = get_any_input_device (backend); ++ if (!dev) ++ return NULL; ++ ++ keymap = ply_input_device_get_keymap (dev); + if (keymap != NULL) { + return keymap; + } +diff --git a/src/plugins/renderers/frame-buffer/plugin.c b/src/plugins/renderers/frame-buffer/plugin.c +index e57d0437..3d56116e 100644 +--- a/src/plugins/renderers/frame-buffer/plugin.c ++++ b/src/plugins/renderers/frame-buffer/plugin.c +@@ -821,6 +821,17 @@ close_input_source (ply_renderer_backend_t *backend, + backend->input_source_is_open = false; + } + ++static ply_input_device_t * ++get_any_input_device (ply_renderer_backend_t *backend) ++{ ++ ply_list_node_t *node = ply_list_get_first_node (backend->input_source.input_devices); ++ ++ if (node != NULL) ++ return ply_list_node_get_data (node); ++ ++ return NULL; ++} ++ + static ply_input_device_t * + get_any_input_device_with_leds (ply_renderer_backend_t *backend) + { +@@ -843,6 +854,9 @@ get_capslock_state (ply_renderer_backend_t *backend) + { + if (using_input_device (&backend->input_source)) { + ply_input_device_t *dev = get_any_input_device_with_leds (backend); ++ if (!dev) ++ return false; ++ + return ply_input_device_get_capslock_state (dev); + } + if (!backend->terminal) +@@ -855,8 +869,12 @@ static const char * + get_keymap (ply_renderer_backend_t *backend) + { + if (using_input_device (&backend->input_source)) { +- ply_input_device_t *dev = get_any_input_device_with_leds (backend); +- const char *keymap = ply_input_device_get_keymap (dev); ++ const char *keymap; ++ ply_input_device_t *dev = get_any_input_device (backend); ++ if (!dev) ++ return NULL; ++ ++ keymap = ply_input_device_get_keymap (dev); + if (keymap != NULL) { + return keymap; + } +-- +2.46.1 + diff --git a/SOURCES/0001-Revert-throbgress-Remove-the-throbgress-plugin.patch b/SOURCES/0001-Revert-throbgress-Remove-the-throbgress-plugin.patch deleted file mode 100644 index cfe6bc3..0000000 --- a/SOURCES/0001-Revert-throbgress-Remove-the-throbgress-plugin.patch +++ /dev/null @@ -1,1112 +0,0 @@ -From ae48268a110722927cc9deb2f667f6327634436c Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 15 Jun 2020 10:22:20 -0400 -Subject: [PATCH 1/2] Revert "throbgress: Remove the throbgress plugin" - -This reverts commit a76638856d600496f8f69b308fbcf7d623430851. ---- - configure.ac | 1 + - src/plugins/splash/Makefile.am | 2 +- - src/plugins/splash/throbgress/Makefile.am | 28 + - src/plugins/splash/throbgress/plugin.c | 980 ++++++++++++++++++++++ - 4 files changed, 1010 insertions(+), 1 deletion(-) - create mode 100644 src/plugins/splash/throbgress/Makefile.am - create mode 100644 src/plugins/splash/throbgress/plugin.c - -diff --git a/configure.ac b/configure.ac -index d34245a..970e19f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -280,60 +280,61 @@ plymouththemedir=$datadir/plymouth/themes - AS_AC_EXPAND(PLYMOUTH_THEME_PATH, $plymouththemedir) - - plymouthruntimethemedir=$plymouthruntimedir/themes - AS_AC_EXPAND(PLYMOUTH_RUNTIME_THEME_PATH, $plymouthruntimethemedir) - - plymouthplugindir=$libdir/plymouth/ - AS_AC_EXPAND(PLYMOUTH_PLUGIN_PATH, $plymouthplugindir) - - plymouthpolicydir=$datadir/plymouth/ - AS_AC_EXPAND(PLYMOUTH_POLICY_DIR, $plymouthpolicydir) - - plymouthconfdir=$sysconfdir/plymouth/ - AS_AC_EXPAND(PLYMOUTH_CONF_DIR, $plymouthconfdir) - - AS_AC_EXPAND(PLYMOUTH_LIBDIR, $libdir) - AS_AC_EXPAND(PLYMOUTH_LIBEXECDIR, $libexecdir) - AS_AC_EXPAND(PLYMOUTH_DATADIR, $datadir) - - AC_CONFIG_FILES([Makefile po/Makefile.in - src/libply/Makefile - src/libply-splash-core/Makefile - src/libply-splash-graphics/Makefile - src/ply-splash-core.pc - src/ply-splash-graphics.pc - src/plugins/Makefile - src/plugins/renderers/Makefile - src/plugins/renderers/frame-buffer/Makefile - src/plugins/renderers/drm/Makefile - src/plugins/renderers/x11/Makefile - src/plugins/splash/Makefile -+ src/plugins/splash/throbgress/Makefile - src/plugins/splash/fade-throbber/Makefile - src/plugins/splash/tribar/Makefile - src/plugins/splash/text/Makefile - src/plugins/splash/details/Makefile - src/plugins/splash/space-flares/Makefile - src/plugins/splash/two-step/Makefile - src/plugins/splash/script/Makefile - src/plugins/controls/Makefile - src/plugins/controls/label/Makefile - src/Makefile - src/client/ply-boot-client.pc - src/client/Makefile - src/upstart-bridge/Makefile - themes/Makefile - themes/spinfinity/Makefile - themes/fade-in/Makefile - themes/tribar/Makefile - themes/text/Makefile - themes/details/Makefile - themes/solar/Makefile - themes/glow/Makefile - themes/spinner/Makefile - themes/script/Makefile - themes/bgrt/Makefile - images/Makefile - scripts/plymouth-generate-initrd - scripts/plymouth-populate-initrd - scripts/plymouth-set-default-theme - scripts/Makefile - systemd-units/plymouth-halt.service -diff --git a/src/plugins/splash/Makefile.am b/src/plugins/splash/Makefile.am -index d167530..a19197b 100644 ---- a/src/plugins/splash/Makefile.am -+++ b/src/plugins/splash/Makefile.am -@@ -1,2 +1,2 @@ --SUBDIRS = fade-throbber text details space-flares two-step script tribar -+SUBDIRS = throbgress fade-throbber text details space-flares two-step script tribar - MAINTAINERCLEANFILES = Makefile.in -diff --git a/src/plugins/splash/throbgress/Makefile.am b/src/plugins/splash/throbgress/Makefile.am -new file mode 100644 -index 0000000..2ac1b0c ---- /dev/null -+++ b/src/plugins/splash/throbgress/Makefile.am -@@ -0,0 +1,28 @@ -+AM_CPPFLAGS = -I$(top_srcdir) \ -+ -I$(srcdir)/../../../libply \ -+ -I$(srcdir)/../../../libply-splash-core \ -+ -I$(srcdir)/../../../libply-splash-graphics \ -+ -I$(srcdir)/../../.. \ -+ -I$(srcdir)/../.. \ -+ -I$(srcdir)/.. \ -+ -I$(srcdir) -+ -+plugindir = $(libdir)/plymouth -+plugin_LTLIBRARIES = throbgress.la -+ -+throbgress_la_CFLAGS = $(PLYMOUTH_CFLAGS) \ -+ -DPLYMOUTH_IMAGE_DIR=\"$(datadir)/plymouth/\" \ -+ -DPLYMOUTH_TIME_DIR=\"$(localstatedir)/lib/plymouth/\"\ -+ -DPLYMOUTH_LOGO_FILE=\"$(logofile)\" \ -+ -DPLYMOUTH_BACKGROUND_COLOR=$(background_color) \ -+ -DPLYMOUTH_BACKGROUND_END_COLOR=$(background_end_color) \ -+ -DPLYMOUTH_BACKGROUND_START_COLOR=$(background_start_color) -+ -+throbgress_la_LDFLAGS = -module -avoid-version -export-dynamic -+throbgress_la_LIBADD = $(PLYMOUTH_LIBS) \ -+ ../../../libply/libply.la \ -+ ../../../libply-splash-core/libply-splash-core.la \ -+ ../../../libply-splash-graphics/libply-splash-graphics.la -+throbgress_la_SOURCES = $(srcdir)/plugin.c -+ -+MAINTAINERCLEANFILES = Makefile.in -diff --git a/src/plugins/splash/throbgress/plugin.c b/src/plugins/splash/throbgress/plugin.c -new file mode 100644 -index 0000000..86be064 ---- /dev/null -+++ b/src/plugins/splash/throbgress/plugin.c -@@ -0,0 +1,980 @@ -+/* throbgress.c - boot splash plugin -+ * -+ * Copyright (C) 2007, 2008 Red Hat, Inc. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -+ * 02111-1307, USA. -+ * -+ * Written by: Ray Strode -+ * Will Woods -+ */ -+#include "config.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "ply-boot-splash-plugin.h" -+#include "ply-buffer.h" -+#include "ply-entry.h" -+#include "ply-event-loop.h" -+#include "ply-key-file.h" -+#include "ply-label.h" -+#include "ply-list.h" -+#include "ply-progress-bar.h" -+#include "ply-logger.h" -+#include "ply-image.h" -+#include "ply-trigger.h" -+#include "ply-pixel-buffer.h" -+#include "ply-pixel-display.h" -+#include "ply-utils.h" -+ -+#include "ply-throbber.h" -+ -+#ifndef FRAMES_PER_SECOND -+#define FRAMES_PER_SECOND 30 -+#endif -+ -+#ifndef BAR_HEIGHT -+#define BAR_HEIGHT 16 -+#endif -+ -+typedef enum -+{ -+ PLY_BOOT_SPLASH_DISPLAY_NORMAL, -+ PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY, -+ PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY -+} ply_boot_splash_display_type_t; -+ -+typedef struct -+{ -+ ply_boot_splash_plugin_t *plugin; -+ ply_pixel_display_t *display; -+ ply_entry_t *entry; -+ ply_throbber_t *throbber; -+ ply_progress_bar_t *progress_bar; -+ ply_label_t *label; -+ ply_label_t *message_label; -+ ply_rectangle_t box_area, lock_area, logo_area, bar_area; -+} view_t; -+ -+struct _ply_boot_splash_plugin -+{ -+ ply_event_loop_t *loop; -+ ply_boot_splash_mode_t mode; -+ ply_image_t *logo_image; -+ ply_image_t *lock_image; -+ ply_image_t *box_image; -+ ply_list_t *views; -+ -+ char *image_dir; -+ ply_boot_splash_display_type_t state; -+ -+ uint32_t background_start_color; -+ uint32_t background_end_color; -+ -+ ply_trigger_t *idle_trigger; -+ -+ uint32_t root_is_mounted : 1; -+ uint32_t is_visible : 1; -+ uint32_t is_animating : 1; -+ uint32_t is_idle : 1; -+}; -+ -+ply_boot_splash_plugin_interface_t *ply_boot_splash_plugin_get_interface (void); -+static void detach_from_event_loop (ply_boot_splash_plugin_t *plugin); -+ -+static void become_idle (ply_boot_splash_plugin_t *plugin, -+ ply_trigger_t *idle_trigger); -+ -+static view_t * -+view_new (ply_boot_splash_plugin_t *plugin, -+ ply_pixel_display_t *display) -+{ -+ view_t *view; -+ -+ view = calloc (1, sizeof(view_t)); -+ view->plugin = plugin; -+ view->display = display; -+ -+ view->entry = ply_entry_new (plugin->image_dir); -+ view->throbber = ply_throbber_new (plugin->image_dir, -+ "throbber-"); -+ view->progress_bar = ply_progress_bar_new (); -+ view->label = ply_label_new (); -+ view->message_label = ply_label_new (); -+ -+ return view; -+} -+ -+static void -+view_free (view_t *view) -+{ -+ ply_entry_free (view->entry); -+ ply_throbber_free (view->throbber); -+ ply_progress_bar_free (view->progress_bar); -+ ply_label_free (view->label); -+ ply_label_free (view->message_label); -+ -+ free (view); -+} -+ -+static void -+free_views (ply_boot_splash_plugin_t *plugin) -+{ -+ ply_list_node_t *node; -+ -+ node = ply_list_get_first_node (plugin->views); -+ -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ view_free (view); -+ ply_list_remove_node (plugin->views, node); -+ -+ node = next_node; -+ } -+ -+ ply_list_free (plugin->views); -+ plugin->views = NULL; -+} -+ -+static bool -+view_load (view_t *view) -+{ -+ ply_trace ("loading entry"); -+ if (!ply_entry_load (view->entry)) -+ return false; -+ -+ ply_trace ("loading throbber"); -+ if (!ply_throbber_load (view->throbber)) -+ return false; -+ -+ return true; -+} -+ -+static bool -+load_views (ply_boot_splash_plugin_t *plugin) -+{ -+ ply_list_node_t *node; -+ bool view_loaded; -+ -+ view_loaded = false; -+ node = ply_list_get_first_node (plugin->views); -+ -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ if (view_load (view)) -+ view_loaded = true; -+ -+ node = next_node; -+ } -+ -+ return view_loaded; -+} -+ -+static void -+view_redraw (view_t *view) -+{ -+ unsigned long screen_width, screen_height; -+ -+ screen_width = ply_pixel_display_get_width (view->display); -+ screen_height = ply_pixel_display_get_height (view->display); -+ -+ ply_pixel_display_draw_area (view->display, 0, 0, -+ screen_width, screen_height); -+} -+ -+static void -+redraw_views (ply_boot_splash_plugin_t *plugin) -+{ -+ ply_list_node_t *node; -+ -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ view_redraw (view); -+ -+ node = next_node; -+ } -+} -+ -+static void -+pause_views (ply_boot_splash_plugin_t *plugin) -+{ -+ ply_list_node_t *node; -+ -+ ply_trace ("pausing views"); -+ -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ ply_pixel_display_pause_updates (view->display); -+ -+ node = next_node; -+ } -+} -+ -+static void -+unpause_views (ply_boot_splash_plugin_t *plugin) -+{ -+ ply_list_node_t *node; -+ -+ ply_trace ("unpausing views"); -+ -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ ply_pixel_display_unpause_updates (view->display); -+ -+ node = next_node; -+ } -+} -+ -+static void -+view_start_animation (view_t *view) -+{ -+ ply_boot_splash_plugin_t *plugin; -+ -+ unsigned long screen_width, screen_height; -+ long width, height; -+ -+ assert (view != NULL); -+ -+ plugin = view->plugin; -+ -+ assert (plugin != NULL); -+ assert (plugin->loop != NULL); -+ -+ screen_width = ply_pixel_display_get_width (view->display); -+ screen_height = ply_pixel_display_get_height (view->display); -+ -+ ply_pixel_display_draw_area (view->display, 0, 0, -+ screen_width, screen_height); -+ -+ if (plugin->mode == PLY_BOOT_SPLASH_MODE_SHUTDOWN || -+ plugin->mode == PLY_BOOT_SPLASH_MODE_REBOOT) -+ return; -+ -+ plugin->is_idle = false; -+ -+ width = ply_throbber_get_width (view->throbber); -+ height = ply_throbber_get_height (view->throbber); -+ ply_throbber_start (view->throbber, -+ plugin->loop, -+ view->display, -+ screen_width / 2.0 - width / 2.0, -+ view->logo_area.y + view->logo_area.height + height / 2); -+ ply_progress_bar_show (view->progress_bar, -+ view->display, -+ 0, -+ screen_height - BAR_HEIGHT, -+ screen_width, -+ BAR_HEIGHT); -+ view_redraw (view); -+} -+ -+static void -+view_show_prompt (view_t *view, -+ const char *prompt) -+{ -+ ply_boot_splash_plugin_t *plugin; -+ int x, y; -+ int entry_width, entry_height; -+ -+ assert (view != NULL); -+ -+ plugin = view->plugin; -+ -+ if (ply_entry_is_hidden (view->entry)) { -+ unsigned long screen_width, screen_height; -+ -+ screen_width = ply_pixel_display_get_width (view->display); -+ screen_height = ply_pixel_display_get_height (view->display); -+ -+ view->box_area.width = ply_image_get_width (plugin->box_image); -+ view->box_area.height = ply_image_get_height (plugin->box_image); -+ view->box_area.x = screen_width / 2.0 - view->box_area.width / 2.0; -+ view->box_area.y = screen_height / 2.0 - view->box_area.height / 2.0; -+ -+ view->lock_area.width = ply_image_get_width (plugin->lock_image); -+ view->lock_area.height = ply_image_get_height (plugin->lock_image); -+ -+ entry_width = ply_entry_get_width (view->entry); -+ entry_height = ply_entry_get_height (view->entry); -+ -+ x = screen_width / 2.0 - (view->lock_area.width + entry_width) / 2.0 + view->lock_area.width; -+ y = screen_height / 2.0 - entry_height / 2.0; -+ -+ view->lock_area.x = screen_width / 2.0 - (view->lock_area.width + entry_width) / 2.0; -+ view->lock_area.y = screen_height / 2.0 - view->lock_area.height / 2.0; -+ -+ ply_entry_show (view->entry, plugin->loop, view->display, x, y); -+ } -+ -+ if (prompt != NULL) { -+ ply_label_set_text (view->label, prompt); -+ -+ x = view->box_area.x + view->lock_area.width / 2; -+ y = view->box_area.y + view->box_area.height; -+ -+ ply_label_show (view->label, view->display, x, y); -+ } -+} -+ -+static void -+view_hide_prompt (view_t *view) -+{ -+ assert (view != NULL); -+ -+ ply_entry_hide (view->entry); -+ ply_label_hide (view->label); -+} -+ -+static ply_boot_splash_plugin_t * -+create_plugin (ply_key_file_t *key_file) -+{ -+ ply_boot_splash_plugin_t *plugin; -+ char *image_dir, *image_path; -+ char *color; -+ -+ srand ((int) ply_get_timestamp ()); -+ plugin = calloc (1, sizeof(ply_boot_splash_plugin_t)); -+ -+ plugin->logo_image = ply_image_new (PLYMOUTH_LOGO_FILE); -+ image_dir = ply_key_file_get_value (key_file, "throbgress", "ImageDir"); -+ -+ asprintf (&image_path, "%s/lock.png", image_dir); -+ plugin->lock_image = ply_image_new (image_path); -+ free (image_path); -+ -+ asprintf (&image_path, "%s/box.png", image_dir); -+ plugin->box_image = ply_image_new (image_path); -+ free (image_path); -+ -+ plugin->image_dir = image_dir; -+ plugin->views = ply_list_new (); -+ -+ color = ply_key_file_get_value (key_file, "throbgress", "BackgroundStartColor"); -+ -+ if (color != NULL) -+ plugin->background_start_color = strtol (color, NULL, 0); -+ else -+ plugin->background_start_color = PLYMOUTH_BACKGROUND_START_COLOR; -+ -+ free (color); -+ -+ color = ply_key_file_get_value (key_file, "throbgress", "BackgroundEndColor"); -+ -+ if (color != NULL) -+ plugin->background_end_color = strtol (color, NULL, 0); -+ else -+ plugin->background_end_color = PLYMOUTH_BACKGROUND_END_COLOR; -+ -+ free (color); -+ -+ return plugin; -+} -+ -+static void -+destroy_plugin (ply_boot_splash_plugin_t *plugin) -+{ -+ if (plugin == NULL) -+ return; -+ -+ ply_trace ("destroying plugin"); -+ -+ if (plugin->loop != NULL) { -+ ply_event_loop_stop_watching_for_exit (plugin->loop, (ply_event_loop_exit_handler_t) -+ detach_from_event_loop, -+ plugin); -+ detach_from_event_loop (plugin); -+ } -+ -+ ply_image_free (plugin->logo_image); -+ ply_image_free (plugin->box_image); -+ ply_image_free (plugin->lock_image); -+ -+ free_views (plugin); -+ -+ free (plugin); -+} -+ -+static void -+draw_background (view_t *view, -+ ply_pixel_buffer_t *pixel_buffer, -+ int x, -+ int y, -+ int width, -+ int height) -+{ -+ ply_boot_splash_plugin_t *plugin; -+ ply_rectangle_t area; -+ -+ plugin = view->plugin; -+ -+ area.x = x; -+ area.y = y; -+ area.width = width; -+ area.height = height; -+ -+ if (plugin->background_start_color != plugin->background_end_color) -+ ply_pixel_buffer_fill_with_gradient (pixel_buffer, &area, -+ plugin->background_start_color, -+ plugin->background_end_color); -+ else -+ ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, -+ plugin->background_start_color); -+} -+ -+static void -+draw_logo (view_t *view, -+ ply_pixel_buffer_t *pixel_buffer) -+{ -+ ply_boot_splash_plugin_t *plugin; -+ uint32_t *logo_data; -+ unsigned long screen_width, screen_height; -+ long width, height; -+ -+ plugin = view->plugin; -+ -+ screen_width = ply_pixel_display_get_width (view->display); -+ screen_height = ply_pixel_display_get_height (view->display); -+ -+ width = ply_image_get_width (plugin->logo_image); -+ height = ply_image_get_height (plugin->logo_image); -+ logo_data = ply_image_get_data (plugin->logo_image); -+ view->logo_area.x = (screen_width / 2) - (width / 2); -+ view->logo_area.y = (screen_height / 2) - (height / 2); -+ view->logo_area.width = width; -+ view->logo_area.height = height; -+ -+ ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, -+ &view->logo_area, -+ logo_data); -+} -+ -+static void -+start_animation (ply_boot_splash_plugin_t *plugin) -+{ -+ ply_list_node_t *node; -+ -+ if (plugin->is_animating) -+ return; -+ -+ ply_trace ("starting animation"); -+ -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ view_start_animation (view); -+ -+ node = next_node; -+ } -+ -+ plugin->is_animating = true; -+ -+ if (plugin->mode == PLY_BOOT_SPLASH_MODE_SHUTDOWN || -+ plugin->mode == PLY_BOOT_SPLASH_MODE_REBOOT) -+ plugin->is_idle = true; -+} -+ -+static void -+stop_animation (ply_boot_splash_plugin_t *plugin, -+ ply_trigger_t *trigger) -+{ -+ ply_list_node_t *node; -+ -+ assert (plugin != NULL); -+ assert (plugin->loop != NULL); -+ -+ if (!plugin->is_animating) -+ return; -+ -+ ply_trace ("stopping animation%s", -+ trigger != NULL ? " with trigger" : ""); -+ -+ plugin->is_animating = false; -+ -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ ply_progress_bar_hide (view->progress_bar); -+ if (trigger != NULL) -+ ply_trigger_ignore_next_pull (trigger); -+ ply_throbber_stop (view->throbber, trigger); -+ -+ node = next_node; -+ } -+ -+ if (trigger != NULL) -+ ply_trigger_pull (trigger, NULL); -+} -+ -+static void -+detach_from_event_loop (ply_boot_splash_plugin_t *plugin) -+{ -+ plugin->loop = NULL; -+} -+ -+static void -+on_draw (view_t *view, -+ ply_pixel_buffer_t *pixel_buffer, -+ int x, -+ int y, -+ int width, -+ int height) -+{ -+ ply_boot_splash_plugin_t *plugin; -+ -+ plugin = view->plugin; -+ -+ draw_background (view, pixel_buffer, x, y, width, height); -+ -+ if (plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY || -+ plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) { -+ uint32_t *box_data, *lock_data; -+ -+ box_data = ply_image_get_data (plugin->box_image); -+ ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, -+ &view->box_area, -+ box_data); -+ ply_entry_draw_area (view->entry, pixel_buffer, x, y, width, height); -+ ply_label_draw_area (view->label, pixel_buffer, x, y, width, height); -+ lock_data = ply_image_get_data (plugin->lock_image); -+ ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, -+ &view->lock_area, -+ lock_data); -+ } else { -+ draw_logo (view, pixel_buffer); -+ ply_throbber_draw_area (view->throbber, -+ pixel_buffer, x, y, width, height); -+ ply_progress_bar_draw_area (view->progress_bar, -+ pixel_buffer, x, y, width, height); -+ } -+ ply_label_draw_area (view->message_label, -+ pixel_buffer, -+ x, y, width, height); -+} -+ -+static void -+add_pixel_display (ply_boot_splash_plugin_t *plugin, -+ ply_pixel_display_t *display) -+{ -+ view_t *view; -+ -+ ply_trace ("adding pixel display to plugin"); -+ view = view_new (plugin, display); -+ -+ ply_pixel_display_set_draw_handler (view->display, -+ (ply_pixel_display_draw_handler_t) -+ on_draw, view); -+ -+ if (plugin->is_visible) { -+ if (view_load (view)) -+ ply_list_append_data (plugin->views, view); -+ else -+ view_free (view); -+ } else { -+ ply_list_append_data (plugin->views, view); -+ } -+} -+ -+static void -+remove_pixel_display (ply_boot_splash_plugin_t *plugin, -+ ply_pixel_display_t *display) -+{ -+ ply_list_node_t *node; -+ -+ ply_trace ("removing pixel display from plugin"); -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ view_t *view; -+ ply_list_node_t *next_node; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ if (view->display == display) { -+ ply_pixel_display_set_draw_handler (view->display, NULL, NULL); -+ view_free (view); -+ ply_list_remove_node (plugin->views, node); -+ return; -+ } -+ -+ node = next_node; -+ } -+} -+ -+static bool -+show_splash_screen (ply_boot_splash_plugin_t *plugin, -+ ply_event_loop_t *loop, -+ ply_buffer_t *boot_buffer, -+ ply_boot_splash_mode_t mode) -+{ -+ assert (plugin != NULL); -+ assert (plugin->logo_image != NULL); -+ -+ plugin->loop = loop; -+ plugin->mode = mode; -+ -+ ply_trace ("loading logo image"); -+ if (!ply_image_load (plugin->logo_image)) -+ return false; -+ -+ ply_trace ("loading lock image"); -+ if (!ply_image_load (plugin->lock_image)) -+ return false; -+ -+ ply_trace ("loading box image"); -+ if (!ply_image_load (plugin->box_image)) -+ return false; -+ -+ if (!load_views (plugin)) { -+ ply_trace ("couldn't load views"); -+ return false; -+ } -+ -+ ply_event_loop_watch_for_exit (loop, (ply_event_loop_exit_handler_t) -+ detach_from_event_loop, -+ plugin); -+ -+ ply_trace ("starting boot animation"); -+ start_animation (plugin); -+ -+ plugin->is_visible = true; -+ -+ return true; -+} -+ -+static void -+update_status (ply_boot_splash_plugin_t *plugin, -+ const char *status) -+{ -+ assert (plugin != NULL); -+} -+ -+static void -+on_boot_progress (ply_boot_splash_plugin_t *plugin, -+ double duration, -+ double percent_done) -+{ -+ ply_list_node_t *node; -+ double total_duration; -+ -+ if (plugin->mode == PLY_BOOT_SPLASH_MODE_UPDATES || -+ plugin->mode == PLY_BOOT_SPLASH_MODE_SYSTEM_UPGRADE || -+ plugin->mode == PLY_BOOT_SPLASH_MODE_FIRMWARE_UPGRADE) -+ return; -+ -+ total_duration = duration / percent_done; -+ -+ /* Fun made-up smoothing function to make the growth asymptotic: -+ * fraction(time,estimate)=1-2^(-(time^1.45)/estimate) */ -+ percent_done = 1.0 - pow (2.0, -pow (duration, 1.45) / total_duration) * (1.0 - percent_done); -+ -+ node = ply_list_get_first_node (plugin->views); -+ -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ ply_progress_bar_set_percent_done (view->progress_bar, percent_done); -+ -+ node = next_node; -+ } -+} -+ -+static void -+hide_splash_screen (ply_boot_splash_plugin_t *plugin, -+ ply_event_loop_t *loop) -+{ -+ assert (plugin != NULL); -+ -+ ply_trace ("hiding splash"); -+ if (plugin->loop != NULL) { -+ stop_animation (plugin, NULL); -+ -+ ply_event_loop_stop_watching_for_exit (plugin->loop, (ply_event_loop_exit_handler_t) -+ detach_from_event_loop, -+ plugin); -+ detach_from_event_loop (plugin); -+ } -+ -+ plugin->is_visible = false; -+} -+ -+static void -+show_password_prompt (ply_boot_splash_plugin_t *plugin, -+ const char *text, -+ int number_of_bullets) -+{ -+ ply_list_node_t *node; -+ -+ ply_trace ("showing password prompt"); -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ view_show_prompt (view, text); -+ ply_entry_set_bullet_count (view->entry, number_of_bullets); -+ -+ node = next_node; -+ } -+} -+ -+static void -+show_prompt (ply_boot_splash_plugin_t *plugin, -+ const char *prompt, -+ const char *entry_text) -+{ -+ ply_list_node_t *node; -+ -+ ply_trace ("showing prompt"); -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ view_show_prompt (view, prompt); -+ ply_entry_set_text (view->entry, entry_text); -+ -+ node = next_node; -+ } -+} -+ -+static void -+on_root_mounted (ply_boot_splash_plugin_t *plugin) -+{ -+ ply_trace ("root filesystem mounted"); -+ plugin->root_is_mounted = true; -+} -+ -+static void -+become_idle (ply_boot_splash_plugin_t *plugin, -+ ply_trigger_t *idle_trigger) -+{ -+ ply_trace ("deactivation requested"); -+ if (plugin->is_idle) { -+ ply_trace ("plugin is already idle"); -+ ply_trigger_pull (idle_trigger, NULL); -+ return; -+ } -+ -+ stop_animation (plugin, idle_trigger); -+ plugin->is_idle = true; -+} -+ -+static void -+hide_prompt (ply_boot_splash_plugin_t *plugin) -+{ -+ ply_list_node_t *node; -+ -+ ply_trace ("hiding prompt"); -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ -+ view_hide_prompt (view); -+ -+ node = next_node; -+ } -+} -+ -+ -+static void -+show_message (ply_boot_splash_plugin_t *plugin, -+ const char *message) -+{ -+ ply_trace ("Showing message '%s'", message); -+ ply_list_node_t *node; -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ ply_label_set_text (view->message_label, message); -+ ply_label_show (view->message_label, view->display, 10, 10); -+ -+ ply_pixel_display_draw_area (view->display, 10, 10, -+ ply_label_get_width (view->message_label), -+ ply_label_get_height (view->message_label)); -+ node = next_node; -+ } -+} -+ -+static void -+display_normal (ply_boot_splash_plugin_t *plugin) -+{ -+ pause_views (plugin); -+ if (plugin->state != PLY_BOOT_SPLASH_DISPLAY_NORMAL) -+ hide_prompt (plugin); -+ -+ plugin->state = PLY_BOOT_SPLASH_DISPLAY_NORMAL; -+ start_animation (plugin); -+ redraw_views (plugin); -+ unpause_views (plugin); -+} -+ -+static void -+display_password (ply_boot_splash_plugin_t *plugin, -+ const char *prompt, -+ int bullets) -+{ -+ pause_views (plugin); -+ if (plugin->state == PLY_BOOT_SPLASH_DISPLAY_NORMAL) -+ stop_animation (plugin, NULL); -+ -+ plugin->state = PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY; -+ show_password_prompt (plugin, prompt, bullets); -+ redraw_views (plugin); -+ unpause_views (plugin); -+} -+ -+static void -+display_question (ply_boot_splash_plugin_t *plugin, -+ const char *prompt, -+ const char *entry_text) -+{ -+ pause_views (plugin); -+ if (plugin->state == PLY_BOOT_SPLASH_DISPLAY_NORMAL) -+ stop_animation (plugin, NULL); -+ -+ plugin->state = PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY; -+ show_prompt (plugin, prompt, entry_text); -+ redraw_views (plugin); -+ unpause_views (plugin); -+} -+ -+static void -+display_message (ply_boot_splash_plugin_t *plugin, -+ const char *message) -+{ -+ show_message (plugin, message); -+} -+ -+static void -+system_update (ply_boot_splash_plugin_t *plugin, -+ int progress) -+{ -+ ply_list_node_t *node; -+ -+ if (plugin->mode != PLY_BOOT_SPLASH_MODE_UPDATES && -+ plugin->mode != PLY_BOOT_SPLASH_MODE_SYSTEM_UPGRADE && -+ plugin->mode != PLY_BOOT_SPLASH_MODE_FIRMWARE_UPGRADE) -+ return; -+ -+ node = ply_list_get_first_node (plugin->views); -+ while (node != NULL) { -+ ply_list_node_t *next_node; -+ view_t *view; -+ -+ view = ply_list_node_get_data (node); -+ next_node = ply_list_get_next_node (plugin->views, node); -+ ply_progress_bar_set_percent_done (view->progress_bar, (double) progress / 100.f); -+ node = next_node; -+ } -+} -+ -+ply_boot_splash_plugin_interface_t * -+ply_boot_splash_plugin_get_interface (void) -+{ -+ static ply_boot_splash_plugin_interface_t plugin_interface = -+ { -+ .create_plugin = create_plugin, -+ .destroy_plugin = destroy_plugin, -+ .add_pixel_display = add_pixel_display, -+ .remove_pixel_display = remove_pixel_display, -+ .show_splash_screen = show_splash_screen, -+ .update_status = update_status, -+ .on_boot_progress = on_boot_progress, -+ .hide_splash_screen = hide_splash_screen, -+ .on_root_mounted = on_root_mounted, -+ .become_idle = become_idle, -+ .display_normal = display_normal, -+ .display_password = display_password, -+ .display_question = display_question, -+ .display_message = display_message, -+ .system_update = system_update, -+ }; -+ -+ return &plugin_interface; -+} -+ -+/* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ --- -2.21.0 - diff --git a/SOURCES/0001-src-die-during-shutdown-with-everything-else.patch b/SOURCES/0001-src-die-during-shutdown-with-everything-else.patch deleted file mode 100644 index da8f264..0000000 --- a/SOURCES/0001-src-die-during-shutdown-with-everything-else.patch +++ /dev/null @@ -1,871 +0,0 @@ -From f55051678452647e035853ee94a89cb54ea2aa4a Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Fri, 17 Jul 2020 16:06:44 -0400 -Subject: [PATCH] src: die during shutdown with everything else - -plymouthd currently avoids getting killed at shutdown. This causes -filesystems to fail to remount read-only in some cases. - -This commit changes things up so that plymouthd dies with everyone else, -but spawns a process to hold open the drm device that can keep the splash -up until the very end. - -In order to keep this process alive until the very end, it gets run -from within the initramfs (if available). This requires adding service -files to jump back into the initramfs at shutdown ---- - configure.ac | 1 + - scripts/plymouth-populate-initrd.in | 2 + - src/Makefile.am | 7 +++ - src/main.c | 11 +++- - src/plugins/renderers/drm/Makefile.am | 3 +- - src/plugins/renderers/drm/plugin.c | 62 +++++++++++++++++++ - src/plymouthd-drm-escrow.c | 18 ++++++ - systemd-units/Makefile.am | 28 ++++++--- - systemd-units/plymouth-halt.service.in | 1 + - systemd-units/plymouth-poweroff.service.in | 1 + - systemd-units/plymouth-reboot.service.in | 1 + - .../plymouth-switch-root-initramfs.service.in | 12 ++++ - 12 files changed, 134 insertions(+), 13 deletions(-) - create mode 100644 src/plymouthd-drm-escrow.c - create mode 100644 systemd-units/plymouth-switch-root-initramfs.service.in - -diff --git a/configure.ac b/configure.ac -index 970e19f..1dc8cdb 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -319,36 +319,37 @@ AC_CONFIG_FILES([Makefile po/Makefile.in - src/plugins/controls/label/Makefile - src/Makefile - src/client/ply-boot-client.pc - src/client/Makefile - src/upstart-bridge/Makefile - themes/Makefile - themes/spinfinity/Makefile - themes/fade-in/Makefile - themes/tribar/Makefile - themes/text/Makefile - themes/details/Makefile - themes/solar/Makefile - themes/glow/Makefile - themes/spinner/Makefile - themes/script/Makefile - themes/bgrt/Makefile - images/Makefile - scripts/plymouth-generate-initrd - scripts/plymouth-populate-initrd - scripts/plymouth-set-default-theme - scripts/Makefile - systemd-units/plymouth-halt.service - systemd-units/plymouth-kexec.service - systemd-units/plymouth-poweroff.service - systemd-units/plymouth-quit.service - systemd-units/plymouth-quit-wait.service - systemd-units/plymouth-read-write.service - systemd-units/plymouth-reboot.service - systemd-units/plymouth-start.service - systemd-units/plymouth-switch-root.service -+ systemd-units/plymouth-switch-root-initramfs.service - systemd-units/systemd-ask-password-plymouth.path - systemd-units/systemd-ask-password-plymouth.service - systemd-units/Makefile - docs/Makefile - ]) - AC_OUTPUT -diff --git a/scripts/plymouth-populate-initrd.in b/scripts/plymouth-populate-initrd.in -index 60fd063..535a896 100755 ---- a/scripts/plymouth-populate-initrd.in -+++ b/scripts/plymouth-populate-initrd.in -@@ -1,54 +1,55 @@ - #!/bin/bash - # - # inst bits ruthlessly and viciously stolen from dracut - - [ -z "$DESTDIR" ] || exit 0 - - # For running on a (cross-compiled) sysroot, the following - # settings are needed: - # PLYMOUTH_SYSROOT - the sysroot directory - # PLYMOUTH_LDD - an optional ldd command that works on foreign binaries - # PLYMOUTH_LDD_PATH - optional PATH ldd is run with - - [ -z "$PLYMOUTH_LDD" ] && PLYMOUTH_LDD="ldd" - [ -z "$PLYMOUTH_LDD_PATH" ] && PLYMOUTH_LDD_PATH="$PATH" - [ -z "$PLYMOUTH_LIBEXECDIR" ] && PLYMOUTH_LIBEXECDIR="@PLYMOUTH_LIBEXECDIR@" - [ -z "$PLYMOUTH_DATADIR" ] && PLYMOUTH_DATADIR="@PLYMOUTH_DATADIR@" - [ -z "$PLYMOUTH_PLUGIN_PATH" ] && PLYMOUTH_PLUGIN_PATH="$(plymouth --get-splash-plugin-path)" - [ -z "$PLYMOUTH_LOGO_FILE" ] && PLYMOUTH_LOGO_FILE="@PLYMOUTH_LOGO_FILE@" - [ -n "$PLYMOUTH_THEME_NAME" ] && THEME_OVERRIDE=1 - [ -z "$PLYMOUTH_THEME_NAME" ] && PLYMOUTH_THEME_NAME=$(plymouth-set-default-theme) - [ -z "$PLYMOUTH_CONFDIR" ] && PLYMOUTH_CONFDIR="@PLYMOUTH_CONF_DIR@" - [ -z "$PLYMOUTH_POLICYDIR" ] && PLYMOUTH_POLICYDIR="@PLYMOUTH_POLICY_DIR@" - [ -z "$PLYMOUTH_DAEMON_PATH" ] && PLYMOUTH_DAEMON_PATH="@PLYMOUTH_DAEMON_DIR@/plymouthd" - [ -z "$PLYMOUTH_CLIENT_PATH" ] && PLYMOUTH_CLIENT_PATH="@PLYMOUTH_CLIENT_DIR@/plymouth" -+[ -z "$PLYMOUTH_DRM_ESCROW_PATH" ] && PLYMOUTH_DRM_ESCROW_PATH="@PLYMOUTH_LIBEXECDIR@/plymouth/plymouth-drm-escrow" - [ -z "$SYSTEMD_UNIT_DIR" ] && SYSTEMD_UNIT_DIR="@SYSTEMD_UNIT_DIR@" - [ -z "$SUPPORTED_LANGUAGES" ] && SUPPORTED_LANGUAGES="pt fr de it ru es en zh ja ko zh as bn gu hi kn ml mr or pa ta te" - - # Generic substring function. If $2 is in $1, return 0. - strstr() { [ "${1#*$2*}" != "$1" ]; } - - ddebug() { - [ "$verbose" = "true" ] && echo "$@" - } - - # normalize_path - # Prints the normalized path, where it removes any duplicated - # and trailing slashes. - # Example: - # $ normalize_path ///test/test// - # /test/test - normalize_path() { - shopt -q -s extglob - set -- "${1//+(\/)//}" - shopt -q -u extglob - echo "${1%/}" - } - - # convert_abs_rel - # Prints the relative path, when creating a symlink to from . - # Example: - # $ convert_abs_rel /usr/bin/test /bin/test-2 - # ../../bin/test-2 - # $ ln -s $(convert_abs_rel /usr/bin/test /bin/test-2) /usr/bin/test - convert_abs_rel() { -@@ -390,60 +391,61 @@ verbose=false - INITRDDIR="" - while [ $# -gt 0 ]; do - case $1 in - --verbose|-v) - verbose=true - ;; - --targetdir|-t) - shift - INITRDDIR="$1" - ;; - --help|-h) - usage normal - ;; - *) - usage error - break - ;; - esac - shift - done - - [ -z "$INITRDDIR" ] && usage error - - ddebug "Running with PLYMOUTH_SYSROOT=$PLYMOUTH_SYSROOT" - ddebug "Running with PLYMOUTH_LDD=$PLYMOUTH_LDD" - ddebug "Running with PLYMOUTH_LDD_PATH=$PLYMOUTH_LDD_PATH" - - mkdir -p ${INITRDDIR}${PLYMOUTH_DATADIR}/plymouth/themes - inst ${PLYMOUTH_DAEMON_PATH} $INITRDDIR - inst ${PLYMOUTH_CLIENT_PATH} $INITRDDIR -+inst ${PLYMOUTH_DRM_ESCROW_PATH} $INITRDDIR - inst ${PLYMOUTH_DATADIR}/plymouth/themes/text/text.plymouth $INITRDDIR - inst ${PLYMOUTH_PLUGIN_PATH}/text.so $INITRDDIR - inst ${PLYMOUTH_DATADIR}/plymouth/themes/details/details.plymouth $INITRDDIR - inst ${PLYMOUTH_PLUGIN_PATH}/details.so $INITRDDIR - inst ${PLYMOUTH_LOGO_FILE} $INITRDDIR - inst @RELEASE_FILE@ $INITRDDIR - inst ${PLYMOUTH_POLICYDIR}/plymouthd.defaults $INITRDDIR - inst ${PLYMOUTH_CONFDIR}/plymouthd.conf $INITRDDIR - - if [ -z "$PLYMOUTH_THEME_NAME" ]; then - echo "No default plymouth plugin is set" >&2 - exit 1 - fi - - if [ $THEME_OVERRIDE ]; then - conf=$INITRDDIR/${PLYMOUTH_CONFDIR}/plymouthd.conf - echo "modifying plymouthd.conf: Theme=$PLYMOUTH_THEME_NAME" >&2 - # make sure the section and key exist so we can modify them - grep -q "^ *\[Daemon\]" $conf || echo "[Daemon]" >> $conf - grep -q "^ *Theme *=" $conf || echo "Theme=fade-in" >> $conf - sed -i "s/^ *Theme *=.*/# theme modified by plymouth-populate-initrd\nTheme=$PLYMOUTH_THEME_NAME/" $conf - fi - - PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//') - PLYMOUTH_THEME_DIR="${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}" - PLYMOUTH_IMAGE_DIR=$(grep "ImageDir *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_THEME_DIR}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ImageDir *= *//') - - if [ ! -f ${PLYMOUTH_SYSROOT}${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then - echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" >&2 - exit 1 -diff --git a/src/Makefile.am b/src/Makefile.am -index 95ed019..78f3f78 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -1,52 +1,59 @@ - SUBDIRS = libply libply-splash-core libply-splash-graphics . plugins client - if ENABLE_UPSTART_MONITORING - SUBDIRS += upstart-bridge - endif - AM_CPPFLAGS = -I$(top_srcdir) \ - -I$(srcdir)/libply \ - -I$(srcdir)/libply-splash-core \ - -I$(srcdir) \ -+ -DPLYMOUTH_DRM_ESCROW_DIRECTORY=\"$(libexecdir)/plymouth\" \ - -DPLYMOUTH_LOG_DIRECTORY=\"$(localstatedir)/log\" \ - -DPLYMOUTH_SPOOL_DIRECTORY=\"$(localstatedir)/spool/plymouth\" \ - -DPLYMOUTH_TIME_DIRECTORY=\"$(localstatedir)/lib/plymouth/\" \ - -DPLYMOUTH_LOGO_FILE=\"$(logofile)\" - - plymouthdbindir = $(plymouthdaemondir) - plymouthdbin_PROGRAMS = plymouthd - - plymouthd_CFLAGS = $(PLYMOUTH_CFLAGS) \ - -rdynamic \ - -DPLYMOUTH_PLUGIN_PATH=\"$(PLYMOUTH_PLUGIN_PATH)\" \ - -DPLYMOUTH_THEME_PATH=\"$(PLYMOUTH_THEME_PATH)/\" \ - -DPLYMOUTH_POLICY_DIR=\"$(PLYMOUTH_POLICY_DIR)/\" \ - -DPLYMOUTH_RUNTIME_DIR=\"$(PLYMOUTH_RUNTIME_DIR)\" \ - -DPLYMOUTH_CONF_DIR=\"$(PLYMOUTH_CONF_DIR)/\" \ - -DPLYMOUTH_RUNTIME_THEME_PATH=\"$(PLYMOUTH_RUNTIME_THEME_PATH)/\" - plymouthd_LDADD = $(PLYMOUTH_LIBS) libply/libply.la libply-splash-core/libply-splash-core.la - plymouthd_SOURCES = \ - ply-boot-protocol.h \ - ply-boot-server.h \ - ply-boot-server.c \ - plugins/splash/details/plugin.c \ - main.c - -+escrowdir = $(libexecdir)/plymouth -+escrow_PROGRAMS = plymouthd-drm-escrow -+ -+plymouthd_drm_escrow_LDFLAGS = -all-static -+plymouthd_drm_escrow_SOURCES = plymouthd-drm-escrow.c -+ - plymouthdrundir = $(localstatedir)/run/plymouth - plymouthdspooldir = $(localstatedir)/spool/plymouth - plymouthdtimedir = $(localstatedir)/lib/plymouth - - pkgconfigdir = $(libdir)/pkgconfig - pkgconfig_DATA = ply-splash-core.pc ply-splash-graphics.pc - - plymouthd_defaultsdir = $(PLYMOUTH_POLICY_DIR) - dist_plymouthd_defaults_DATA = plymouthd.defaults - - plymouthd_confdir = $(PLYMOUTH_CONF_DIR) - dist_plymouthd_conf_DATA = plymouthd.conf - - install-data-hook: - -mkdir -p $(DESTDIR)$(plymouthdrundir) - -mkdir -p $(DESTDIR)$(plymouthdspooldir) - -mkdir -p $(DESTDIR)$(plymouthdtimedir) - - EXTRA_DIST = ply-splash-core.pc.in ply-splash-graphics.pc.in - MAINTAINERCLEANFILES = Makefile.in -diff --git a/src/main.c b/src/main.c -index 8848ad0..8372f2f 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -2181,65 +2181,70 @@ main (int argc, - - if (daemon_handle == NULL) { - ply_error ("plymouthd: cannot daemonize: %m"); - return EX_UNAVAILABLE; - } - } - - if (debug) - debug_buffer = ply_buffer_new (); - - signal (SIGABRT, on_crash); - signal (SIGSEGV, on_crash); - - /* before do anything we need to make sure we have a working - * environment. - */ - if (!initialize_environment (&state)) { - if (errno == 0) { - if (daemon_handle != NULL) - ply_detach_daemon (daemon_handle, 0); - return 0; - } - - ply_error ("plymouthd: could not setup basic operating environment: %m"); - if (daemon_handle != NULL) - ply_detach_daemon (daemon_handle, EX_OSERR); - return EX_OSERR; - } - - /* Make the first byte in argv be '@' so that we can survive systemd's killing -- * spree when going from initrd to /, and so we stay alive all the way until -- * the power is killed at shutdown. -+ * spree when going from initrd to / - * http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons -+ * -+ * If the system is shutting down, we let systemd slay us because otherwise we -+ * may prevent the root fs from getting remounted read-only. - */ -- argv[0][0] = '@'; -+ if (state.mode != PLY_BOOT_SPLASH_MODE_SHUTDOWN && -+ state.mode != PLY_BOOT_SPLASH_MODE_REBOOT) { -+ argv[0][0] = '@'; -+ } - - state.boot_server = start_boot_server (&state); - - if (state.boot_server == NULL) { - ply_trace ("plymouthd is already running"); - - if (daemon_handle != NULL) - ply_detach_daemon (daemon_handle, EX_OK); - return EX_OK; - } - - state.boot_buffer = ply_buffer_new (); - - if (attach_to_session) { - state.should_be_attached = attach_to_session; - if (!attach_to_running_session (&state)) { - ply_trace ("could not redirect console session: %m"); - if (!no_daemon) - ply_detach_daemon (daemon_handle, EX_UNAVAILABLE); - return EX_UNAVAILABLE; - } - } - - state.progress = ply_progress_new (); - state.splash_delay = NAN; - state.device_timeout = NAN; - - ply_progress_load_cache (state.progress, - get_cache_file_for_mode (state.mode)); - -diff --git a/src/plugins/renderers/drm/Makefile.am b/src/plugins/renderers/drm/Makefile.am -index 271b17f..22a819b 100644 ---- a/src/plugins/renderers/drm/Makefile.am -+++ b/src/plugins/renderers/drm/Makefile.am -@@ -1,23 +1,24 @@ - if ENABLE_DRM_RENDERER - AM_CPPFLAGS = -I$(top_srcdir) \ - -I$(srcdir)/../../../libply \ - -I$(srcdir)/../../../libply-splash-core \ - -I$(srcdir)/../../.. \ - -I$(srcdir)/../.. \ - -I$(srcdir)/.. \ -- -I$(srcdir) -+ -I$(srcdir) \ -+ -DPLYMOUTH_DRM_ESCROW_DIRECTORY=\"$(libexecdir)/plymouth\" - - plugindir = $(libdir)/plymouth/renderers - plugin_LTLIBRARIES = drm.la - - drm_la_CFLAGS = $(PLYMOUTH_CFLAGS) $(DRM_CFLAGS) - - drm_la_LDFLAGS = -module -avoid-version -export-dynamic - drm_la_LIBADD = $(PLYMOUTH_LIBS) $(DRM_LIBS) \ - ../../../libply/libply.la \ - ../../../libply-splash-core/libply-splash-core.la - drm_la_SOURCES = $(srcdir)/plugin.c - - endif - - MAINTAINERCLEANFILES = Makefile.in -diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c -index 4dbf8da..38bae36 100644 ---- a/src/plugins/renderers/drm/plugin.c -+++ b/src/plugins/renderers/drm/plugin.c -@@ -131,73 +131,79 @@ typedef struct - bool connected; - bool uses_hw_rotation; - } ply_output_t; - - struct _ply_renderer_backend - { - ply_event_loop_t *loop; - ply_terminal_t *terminal; - - int device_fd; - char *device_name; - drmModeRes *resources; - - ply_renderer_input_source_t input_source; - ply_list_t *heads; - ply_hashtable_t *heads_by_controller_id; - - ply_hashtable_t *output_buffers; - - ply_output_t *outputs; - int outputs_len; - int connected_count; - - int32_t dither_red; - int32_t dither_green; - int32_t dither_blue; - - uint32_t is_active : 1; - uint32_t requires_explicit_flushing : 1; - uint32_t use_preferred_mode : 1; -+ uint32_t watching_for_termination : 1; - - int panel_width; - int panel_height; - ply_pixel_buffer_rotation_t panel_rotation; - int panel_scale; - }; - - ply_renderer_plugin_interface_t *ply_renderer_backend_get_interface (void); - static bool open_input_source (ply_renderer_backend_t *backend, - ply_renderer_input_source_t *input_source); - static void flush_head (ply_renderer_backend_t *backend, - ply_renderer_head_t *head); - -+static void close_device (ply_renderer_backend_t *backend); -+ -+static void watch_for_termination (ply_renderer_backend_t *backend); -+static void stop_watching_for_termination (ply_renderer_backend_t *backend); -+ - /* A small helper to determine if we should try to keep the current mode - * or pick the best mode ourselves, we keep the current mode only if the - * user specified a specific mode using video= on the commandline. - */ - static bool - should_use_preferred_mode (void) - { - bool use_preferred_mode = true; - - if (ply_kernel_command_line_get_string_after_prefix ("video=")) - use_preferred_mode = false; - - ply_trace ("should_use_preferred_mode: %d", use_preferred_mode); - - return use_preferred_mode; - } - - static bool - ply_renderer_buffer_map (ply_renderer_backend_t *backend, - ply_renderer_buffer_t *buffer) - { - struct drm_mode_map_dumb map_dumb_buffer_request; - void *map_address; - - if (buffer->map_address != MAP_FAILED) { - buffer->map_count++; - return true; - } - - memset (&map_dumb_buffer_request, 0, sizeof(struct drm_mode_map_dumb)); -@@ -918,158 +924,214 @@ static void - destroy_backend (ply_renderer_backend_t *backend) - { - ply_trace ("destroying renderer backend for device %s", backend->device_name); - free_heads (backend); - - free (backend->device_name); - ply_hashtable_free (backend->output_buffers); - ply_hashtable_free (backend->heads_by_controller_id); - - free (backend->outputs); - free (backend); - } - - static void - activate (ply_renderer_backend_t *backend) - { - ply_renderer_head_t *head; - ply_list_node_t *node; - - ply_trace ("taking master and scanning out"); - backend->is_active = true; - - drmSetMaster (backend->device_fd); - node = ply_list_get_first_node (backend->heads); - while (node != NULL) { - head = (ply_renderer_head_t *) ply_list_node_get_data (node); - /* Flush out any pending drawing to the buffer */ - flush_head (backend, head); - node = ply_list_get_next_node (backend->heads, node); - } -+ -+ watch_for_termination (backend); - } - - static void - deactivate (ply_renderer_backend_t *backend) - { - ply_trace ("dropping master"); - drmDropMaster (backend->device_fd); - backend->is_active = false; -+ -+ stop_watching_for_termination (backend); - } - - static void - on_active_vt_changed (ply_renderer_backend_t *backend) - { - if (ply_terminal_is_active (backend->terminal)) { - ply_trace ("activating on vt change"); - activate (backend); - } else { - ply_trace ("deactivating on vt change"); - deactivate (backend); - } - } - - static bool - load_driver (ply_renderer_backend_t *backend) - { - int device_fd; - - ply_trace ("Opening '%s'", backend->device_name); - device_fd = open (backend->device_name, O_RDWR); - - if (device_fd < 0) { - ply_trace ("open failed: %m"); - return false; - } - - backend->device_fd = device_fd; - - drmDropMaster (device_fd); - - return true; - } - - static void - unload_backend (ply_renderer_backend_t *backend) - { - if (backend == NULL) - return; - - ply_trace ("unloading backend"); - - if (backend->device_fd >= 0) { - drmClose (backend->device_fd); - backend->device_fd = -1; - } - - destroy_backend (backend); - backend = NULL; - - } - -+static void -+on_term_signal (ply_renderer_backend_t *backend) -+{ -+ pid_t pid; -+ -+ ply_trace ("got SIGTERM, launching drm escrow to protect splash, and dying"); -+ -+ pid = fork(); -+ -+ if (pid == 0) { -+ const char *argv[] = { PLYMOUTH_DRM_ESCROW_DIRECTORY "/plymouthd-drm-escrow", NULL }; -+ -+ dup (backend->device_fd); -+ execve (argv[0], (char * const *) argv, NULL); -+ -+ ply_trace ("could not launch drm escrow process: %m"); -+ -+ _exit (1); -+ } -+ -+ -+ close_device (backend); -+ -+ exit (0); -+} -+ -+static void -+watch_for_termination (ply_renderer_backend_t *backend) -+{ -+ if (backend->watching_for_termination) -+ return; -+ -+ ply_trace ("watching for termination signal"); -+ ply_event_loop_watch_signal (backend->loop, SIGTERM, (ply_event_handler_t) on_term_signal, backend); -+ backend->watching_for_termination = true; -+} -+ -+static void -+stop_watching_for_termination (ply_renderer_backend_t *backend) -+{ -+ if (!backend->watching_for_termination) -+ return; -+ -+ ply_trace ("stopping watching for termination signal"); -+ ply_event_loop_stop_watching_signal (backend->loop, SIGTERM); -+ backend->watching_for_termination = false; -+} -+ - static bool - open_device (ply_renderer_backend_t *backend) - { - assert (backend != NULL); - assert (backend->device_name != NULL); - - if (!load_driver (backend)) - return false; - - if (backend->terminal == NULL) - return true; - - if (!ply_terminal_open (backend->terminal)) { - ply_trace ("could not open terminal: %m"); - return false; - } - - if (!ply_terminal_is_vt (backend->terminal)) { - ply_trace ("terminal is not a VT"); - ply_terminal_close (backend->terminal); - return false; - } - - ply_terminal_watch_for_active_vt_change (backend->terminal, - (ply_terminal_active_vt_changed_handler_t) - on_active_vt_changed, - backend); - -+ watch_for_termination (backend); -+ - return true; - } - - static void - close_device (ply_renderer_backend_t *backend) - { - ply_trace ("closing device"); - - free_heads (backend); - -+ stop_watching_for_termination (backend); -+ - if (backend->terminal != NULL) { - ply_terminal_stop_watching_for_active_vt_change (backend->terminal, - (ply_terminal_active_vt_changed_handler_t) - on_active_vt_changed, - backend); - } - - unload_backend (backend); - } - - static void - output_get_controller_info (ply_renderer_backend_t *backend, - drmModeConnector *connector, - ply_output_t *output) - { - int i; - drmModeEncoder *encoder; - - assert (backend != NULL); - - output->possible_controllers = 0xffffffff; - - for (i = 0; i < connector->count_encoders; i++) { - encoder = drmModeGetEncoder (backend->device_fd, - connector->encoders[i]); - - if (encoder == NULL) - continue; - - if (encoder->encoder_id == connector->encoder_id && encoder->crtc_id) { -diff --git a/src/plymouthd-drm-escrow.c b/src/plymouthd-drm-escrow.c -new file mode 100644 -index 0000000..9097db9 ---- /dev/null -+++ b/src/plymouthd-drm-escrow.c -@@ -0,0 +1,18 @@ -+#include -+#include -+ -+int -+main(int argc, char **argv) -+{ -+ signal (SIGTERM, SIG_IGN); -+ -+ /* Make the first byte in argv be '@' so that we can survive systemd's killing -+ * spree until the power is killed at shutdown. -+ * http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons -+ */ -+ argv[0][0] = '@'; -+ -+ while (pause()); -+ -+ return 0; -+} -diff --git a/systemd-units/Makefile.am b/systemd-units/Makefile.am -index b1d843b..bfede17 100644 ---- a/systemd-units/Makefile.am -+++ b/systemd-units/Makefile.am -@@ -1,78 +1,88 @@ - systemd_unit_templates = \ - plymouth-switch-root.service.in \ -+ plymouth-switch-root-initramfs.service.in \ - plymouth-start.service.in \ - plymouth-read-write.service.in \ - plymouth-quit.service.in \ - plymouth-quit-wait.service.in \ - plymouth-reboot.service.in \ - plymouth-kexec.service.in \ - plymouth-poweroff.service.in \ - plymouth-halt.service.in \ - systemd-ask-password-plymouth.path.in \ - systemd-ask-password-plymouth.service.in - - if ENABLE_SYSTEMD_INTEGRATION - systemdunitdir=$(SYSTEMD_UNIT_DIR) - systemdunit_DATA = $(systemd_unit_templates:.in=) - - install-data-hook: - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/initrd-switch-root.target.wants\ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysinit.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/multi-user.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/reboot.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/kexec.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/poweroff.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/halt.target.wants - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/initrd-switch-root.target.wants && \ - rm -f plymouth-start.service plymouth-switch-root.service && \ - $(LN_S) ../plymouth-start.service && \ - $(LN_S) ../plymouth-switch-root.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysinit.target.wants && \ - rm -f plymouth-start.service plymouth-read-write.service && \ - $(LN_S) ../plymouth-start.service && \ - $(LN_S) ../plymouth-read-write.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/multi-user.target.wants && \ - rm -f plymouth-quit.service plymouth-quit-wait.service && \ - $(LN_S) ../plymouth-quit.service && \ - $(LN_S) ../plymouth-quit-wait.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/reboot.target.wants && \ -- rm -f plymouth-reboot.service && \ -- $(LN_S) ../plymouth-reboot.service) -+ rm -f plymouth-reboot.service \ -+ plymouth-switch-root-initramfs.service && \ -+ $(LN_S) ../plymouth-reboot.service && \ -+ $(LN_S) ../plymouth-switch-root-initramfs.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/kexec.target.wants && \ - rm -f plymouth-kexec.service && \ - $(LN_S) ../plymouth-kexec.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/poweroff.target.wants && \ -- rm -f plymouth-poweroff.service && \ -- $(LN_S) ../plymouth-poweroff.service) -+ rm -f plymouth-poweroff.service \ -+ plymouth-switch-root-initramfs.service && \ -+ $(LN_S) ../plymouth-poweroff.service && \ -+ $(LN_S) ../plymouth-switch-root-initramfs.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/halt.target.wants && \ -- rm -f plymouth-halt.service && \ -- $(LN_S) ../plymouth-halt.service) -+ rm -f plymouth-halt.service \ -+ plymouth-switch-root-initramfs.service && \ -+ $(LN_S) ../plymouth-halt.service && \ -+ $(LN_S) ../plymouth-switch-root-initramfs.service) - - uninstall-hook: - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/initrd-switch-root.target.wants && \ - rm -f plymouth-start.service plymouth-switch-root.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysinit.target.wants && \ - rm -f plymouth-start.service plymouth-read-write.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/multi-user.target.wants && \ - rm -f plymouth-quit.service plymouth-quit-wait.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/reboot.target.wants && \ -- rm -f plymouth-reboot.service) -+ rm -f plymouth-reboot.service \ -+ plymouth-switch-root-initramfs.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/kexec.target.wants && \ - rm -f plymouth-kexec.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/poweroff.target.wants && \ -- rm -f plymouth-poweroff.service) -+ rm -f plymouth-poweroff.service \ -+ plymouth-switch-root-initramfs.service) - (cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/halt.target.wants && \ -- rm -f plymouth-halt.service) -+ rm -f plymouth-halt.service \ -+ plymouth-switch-root-initramfs.service) - rmdir --ignore-fail-on-non-empty \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysinit.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/multi-user.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/reboot.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/kexec.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/poweroff.target.wants \ - $(DESTDIR)$(SYSTEMD_UNIT_DIR)/halt.target.wants - - endif - - EXTRA_DIST = $(systemd_unit_templates) $(systemdunit_DATA) - DISTCLEANFILES=$(systemdunit_DATA) -diff --git a/systemd-units/plymouth-halt.service.in b/systemd-units/plymouth-halt.service.in -index cb87c1f..00f7eed 100644 ---- a/systemd-units/plymouth-halt.service.in -+++ b/systemd-units/plymouth-halt.service.in -@@ -1,13 +1,14 @@ - [Unit] - Description=Show Plymouth Halt Screen - After=getty@tty1.service display-manager.service plymouth-start.service - Before=systemd-halt.service - DefaultDependencies=no - ConditionKernelCommandLine=!plymouth.enable=0 - ConditionVirtualization=!container - - [Service] - ExecStart=@PLYMOUTH_DAEMON_DIR@/plymouthd --mode=shutdown --attach-to-session - ExecStartPost=-@PLYMOUTH_CLIENT_DIR@/plymouth show-splash -+KillMode=none - Type=forking - RemainAfterExit=yes -diff --git a/systemd-units/plymouth-poweroff.service.in b/systemd-units/plymouth-poweroff.service.in -index cf05e47..a1f78eb 100644 ---- a/systemd-units/plymouth-poweroff.service.in -+++ b/systemd-units/plymouth-poweroff.service.in -@@ -1,13 +1,14 @@ - [Unit] - Description=Show Plymouth Power Off Screen - After=getty@tty1.service display-manager.service plymouth-start.service - Before=systemd-poweroff.service - DefaultDependencies=no - ConditionKernelCommandLine=!plymouth.enable=0 - ConditionVirtualization=!container - - [Service] - ExecStart=@PLYMOUTH_DAEMON_DIR@/plymouthd --mode=shutdown --attach-to-session - ExecStartPost=-@PLYMOUTH_CLIENT_DIR@/plymouth show-splash -+KillMode=none - Type=forking - RemainAfterExit=yes -diff --git a/systemd-units/plymouth-reboot.service.in b/systemd-units/plymouth-reboot.service.in -index 3624550..8fff576 100644 ---- a/systemd-units/plymouth-reboot.service.in -+++ b/systemd-units/plymouth-reboot.service.in -@@ -1,13 +1,14 @@ - [Unit] - Description=Show Plymouth Reboot Screen - After=getty@tty1.service display-manager.service plymouth-start.service - Before=systemd-reboot.service - DefaultDependencies=no - ConditionKernelCommandLine=!plymouth.enable=0 - ConditionVirtualization=!container - - [Service] - ExecStart=@PLYMOUTH_DAEMON_DIR@/plymouthd --mode=reboot --attach-to-session - ExecStartPost=-@PLYMOUTH_CLIENT_DIR@/plymouth show-splash -+KillMode=none - Type=forking - RemainAfterExit=yes -diff --git a/systemd-units/plymouth-switch-root-initramfs.service.in b/systemd-units/plymouth-switch-root-initramfs.service.in -new file mode 100644 -index 0000000..cb20459 ---- /dev/null -+++ b/systemd-units/plymouth-switch-root-initramfs.service.in -@@ -0,0 +1,12 @@ -+[Unit] -+Description=Tell Plymouth To Jump To initramfs -+DefaultDependencies=no -+After=plymouth-halt.service plymouth-reboot.service plymouth-poweroff.service dracut-shutdown.service -+ConditionPathExists=/run/initramfs/bin/sh -+ -+[Service] -+Type=oneshot -+RemainAfterExit=yes -+ExecStart=-@PLYMOUTH_CLIENT_DIR@/plymouth update-root-fs --new-root-dir=/run/initramfs -+Type=oneshot -+RemainAfterExit=yes --- -2.26.0 - diff --git a/SOURCES/0002-throbgress-update-for-api-change.patch b/SOURCES/0002-throbgress-update-for-api-change.patch deleted file mode 100644 index da67de1..0000000 --- a/SOURCES/0002-throbgress-update-for-api-change.patch +++ /dev/null @@ -1,142 +0,0 @@ -From b9faf90fe5939fedfd710e1e8385f4d5c12e1df7 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 15 Jun 2020 10:35:45 -0400 -Subject: [PATCH 2/2] throbgress: update for api change - ---- - src/plugins/splash/throbgress/plugin.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/plugins/splash/throbgress/plugin.c b/src/plugins/splash/throbgress/plugin.c -index 86be064..68cca70 100644 ---- a/src/plugins/splash/throbgress/plugin.c -+++ b/src/plugins/splash/throbgress/plugin.c -@@ -715,61 +715,61 @@ update_status (ply_boot_splash_plugin_t *plugin, - } - - static void - on_boot_progress (ply_boot_splash_plugin_t *plugin, - double duration, - double percent_done) - { - ply_list_node_t *node; - double total_duration; - - if (plugin->mode == PLY_BOOT_SPLASH_MODE_UPDATES || - plugin->mode == PLY_BOOT_SPLASH_MODE_SYSTEM_UPGRADE || - plugin->mode == PLY_BOOT_SPLASH_MODE_FIRMWARE_UPGRADE) - return; - - total_duration = duration / percent_done; - - /* Fun made-up smoothing function to make the growth asymptotic: - * fraction(time,estimate)=1-2^(-(time^1.45)/estimate) */ - percent_done = 1.0 - pow (2.0, -pow (duration, 1.45) / total_duration) * (1.0 - percent_done); - - node = ply_list_get_first_node (plugin->views); - - while (node != NULL) { - ply_list_node_t *next_node; - view_t *view; - - view = ply_list_node_get_data (node); - next_node = ply_list_get_next_node (plugin->views, node); - -- ply_progress_bar_set_percent_done (view->progress_bar, percent_done); -+ ply_progress_bar_set_fraction_done (view->progress_bar, percent_done); - - node = next_node; - } - } - - static void - hide_splash_screen (ply_boot_splash_plugin_t *plugin, - ply_event_loop_t *loop) - { - assert (plugin != NULL); - - ply_trace ("hiding splash"); - if (plugin->loop != NULL) { - stop_animation (plugin, NULL); - - ply_event_loop_stop_watching_for_exit (plugin->loop, (ply_event_loop_exit_handler_t) - detach_from_event_loop, - plugin); - detach_from_event_loop (plugin); - } - - plugin->is_visible = false; - } - - static void - show_password_prompt (ply_boot_splash_plugin_t *plugin, - const char *text, - int number_of_bullets) - { - ply_list_node_t *node; -@@ -920,61 +920,61 @@ display_question (ply_boot_splash_plugin_t *plugin, - show_prompt (plugin, prompt, entry_text); - redraw_views (plugin); - unpause_views (plugin); - } - - static void - display_message (ply_boot_splash_plugin_t *plugin, - const char *message) - { - show_message (plugin, message); - } - - static void - system_update (ply_boot_splash_plugin_t *plugin, - int progress) - { - ply_list_node_t *node; - - if (plugin->mode != PLY_BOOT_SPLASH_MODE_UPDATES && - plugin->mode != PLY_BOOT_SPLASH_MODE_SYSTEM_UPGRADE && - plugin->mode != PLY_BOOT_SPLASH_MODE_FIRMWARE_UPGRADE) - return; - - node = ply_list_get_first_node (plugin->views); - while (node != NULL) { - ply_list_node_t *next_node; - view_t *view; - - view = ply_list_node_get_data (node); - next_node = ply_list_get_next_node (plugin->views, node); -- ply_progress_bar_set_percent_done (view->progress_bar, (double) progress / 100.f); -+ ply_progress_bar_set_fraction_done (view->progress_bar, (double) progress / 100.f); - node = next_node; - } - } - - ply_boot_splash_plugin_interface_t * - ply_boot_splash_plugin_get_interface (void) - { - static ply_boot_splash_plugin_interface_t plugin_interface = - { - .create_plugin = create_plugin, - .destroy_plugin = destroy_plugin, - .add_pixel_display = add_pixel_display, - .remove_pixel_display = remove_pixel_display, - .show_splash_screen = show_splash_screen, - .update_status = update_status, - .on_boot_progress = on_boot_progress, - .hide_splash_screen = hide_splash_screen, - .on_root_mounted = on_root_mounted, - .become_idle = become_idle, - .display_normal = display_normal, - .display_password = display_password, - .display_question = display_question, - .display_message = display_message, - .system_update = system_update, - }; - - return &plugin_interface; - } - - /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ --- -2.21.0 - diff --git a/SOURCES/boot-duration b/SOURCES/boot-duration deleted file mode 100644 index 7fe728c..0000000 --- a/SOURCES/boot-duration +++ /dev/null @@ -1,39 +0,0 @@ -0.222:RCkernelparam -0.223:RChostname -0.238:RCmountfs -0.275:RCswap -0.330:microcode_ctl -0.357:cpuspeed -0.365:ip6tables -0.380:iptables -0.385:isdn -0.504:auditd -0.508:restorecond -0.523:rsyslog -0.530:irqbalance -0.533:rpcbind -0.549:nfslock -0.561:mdmonitor -0.563:rpcidmapd -0.578:rpcgssd -0.579:messagebus -0.580:fuse -0.594:netfs -0.600:acpid -0.611:haldaemon -0.660:pcscd -0.691:udev-post -0.703:portreserve -0.712:setroubleshoot -0.749:bluetooth -0.738:sshd -0.763:ntpd -0.807:sendmail -0.876:crond -0.902:kerneloops -0.907:smolt -0.915:atd -0.927:avahi-daemon -0.941:cups -0.983:anacron -0.992:local diff --git a/SOURCES/bootlog b/SOURCES/bootlog deleted file mode 100644 index 9be1a64..0000000 --- a/SOURCES/bootlog +++ /dev/null @@ -1,8 +0,0 @@ -/var/log/boot.log -{ - missingok - daily - copytruncate - rotate 7 - notifempty -} diff --git a/SOURCES/plymouth-update-initrd b/SOURCES/plymouth-update-initrd deleted file mode 100644 index 4ed5709..0000000 --- a/SOURCES/plymouth-update-initrd +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -dracut -f diff --git a/SOURCES/ship-label-plugin-in-initrd.patch b/SOURCES/ship-label-plugin-in-initrd.patch deleted file mode 100644 index 55581ed..0000000 --- a/SOURCES/ship-label-plugin-in-initrd.patch +++ /dev/null @@ -1,154 +0,0 @@ -From f72cdd6969c483d7811e5684fa3143deff55a0c7 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 17 Jun 2019 13:54:42 -0400 -Subject: [PATCH] populate-initrd: ship label plugin - -This gives us font rendering at early boot. ---- - scripts/plymouth-populate-initrd.in | 23 +++++++++++++++++++++-- - 1 file changed, 21 insertions(+), 2 deletions(-) - -diff --git a/scripts/plymouth-populate-initrd.in b/scripts/plymouth-populate-initrd.in -index 616ecc4..60fd063 100755 ---- a/scripts/plymouth-populate-initrd.in -+++ b/scripts/plymouth-populate-initrd.in -@@ -1,55 +1,56 @@ - #!/bin/bash - # - # inst bits ruthlessly and viciously stolen from dracut - - [ -z "$DESTDIR" ] || exit 0 - - # For running on a (cross-compiled) sysroot, the following - # settings are needed: - # PLYMOUTH_SYSROOT - the sysroot directory - # PLYMOUTH_LDD - an optional ldd command that works on foreign binaries - # PLYMOUTH_LDD_PATH - optional PATH ldd is run with - - [ -z "$PLYMOUTH_LDD" ] && PLYMOUTH_LDD="ldd" - [ -z "$PLYMOUTH_LDD_PATH" ] && PLYMOUTH_LDD_PATH="$PATH" - [ -z "$PLYMOUTH_LIBEXECDIR" ] && PLYMOUTH_LIBEXECDIR="@PLYMOUTH_LIBEXECDIR@" - [ -z "$PLYMOUTH_DATADIR" ] && PLYMOUTH_DATADIR="@PLYMOUTH_DATADIR@" - [ -z "$PLYMOUTH_PLUGIN_PATH" ] && PLYMOUTH_PLUGIN_PATH="$(plymouth --get-splash-plugin-path)" - [ -z "$PLYMOUTH_LOGO_FILE" ] && PLYMOUTH_LOGO_FILE="@PLYMOUTH_LOGO_FILE@" - [ -n "$PLYMOUTH_THEME_NAME" ] && THEME_OVERRIDE=1 - [ -z "$PLYMOUTH_THEME_NAME" ] && PLYMOUTH_THEME_NAME=$(plymouth-set-default-theme) - [ -z "$PLYMOUTH_CONFDIR" ] && PLYMOUTH_CONFDIR="@PLYMOUTH_CONF_DIR@" - [ -z "$PLYMOUTH_POLICYDIR" ] && PLYMOUTH_POLICYDIR="@PLYMOUTH_POLICY_DIR@" - [ -z "$PLYMOUTH_DAEMON_PATH" ] && PLYMOUTH_DAEMON_PATH="@PLYMOUTH_DAEMON_DIR@/plymouthd" - [ -z "$PLYMOUTH_CLIENT_PATH" ] && PLYMOUTH_CLIENT_PATH="@PLYMOUTH_CLIENT_DIR@/plymouth" - [ -z "$SYSTEMD_UNIT_DIR" ] && SYSTEMD_UNIT_DIR="@SYSTEMD_UNIT_DIR@" -+[ -z "$SUPPORTED_LANGUAGES" ] && SUPPORTED_LANGUAGES="pt fr de it ru es en zh ja ko zh as bn gu hi kn ml mr or pa ta te" - - # Generic substring function. If $2 is in $1, return 0. - strstr() { [ "${1#*$2*}" != "$1" ]; } - - ddebug() { - [ "$verbose" = "true" ] && echo "$@" - } - - # normalize_path - # Prints the normalized path, where it removes any duplicated - # and trailing slashes. - # Example: - # $ normalize_path ///test/test// - # /test/test - normalize_path() { - shopt -q -s extglob - set -- "${1//+(\/)//}" - shopt -q -u extglob - echo "${1%/}" - } - - # convert_abs_rel - # Prints the relative path, when creating a symlink to from . - # Example: - # $ convert_abs_rel /usr/bin/test /bin/test-2 - # ../../bin/test-2 - # $ ln -s $(convert_abs_rel /usr/bin/test /bin/test-2) /usr/bin/test - convert_abs_rel() { - local __current __absolute __abssize __cursize __newpath - local -i __i __level -@@ -434,59 +435,77 @@ if [ $THEME_OVERRIDE ]; then - conf=$INITRDDIR/${PLYMOUTH_CONFDIR}/plymouthd.conf - echo "modifying plymouthd.conf: Theme=$PLYMOUTH_THEME_NAME" >&2 - # make sure the section and key exist so we can modify them - grep -q "^ *\[Daemon\]" $conf || echo "[Daemon]" >> $conf - grep -q "^ *Theme *=" $conf || echo "Theme=fade-in" >> $conf - sed -i "s/^ *Theme *=.*/# theme modified by plymouth-populate-initrd\nTheme=$PLYMOUTH_THEME_NAME/" $conf - fi - - PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//') - PLYMOUTH_THEME_DIR="${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}" - PLYMOUTH_IMAGE_DIR=$(grep "ImageDir *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_THEME_DIR}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ImageDir *= *//') - - if [ ! -f ${PLYMOUTH_SYSROOT}${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then - echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" >&2 - exit 1 - fi - - inst ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so $INITRDDIR - - [ -f "${PLYMOUTH_SYSROOT}${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so" ] && inst ${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so $INITRDDIR - inst ${PLYMOUTH_PLUGIN_PATH}/renderers/frame-buffer.so $INITRDDIR - - if [ -d "${PLYMOUTH_SYSROOT}${PLYMOUTH_THEME_DIR}" ]; then - inst_recur "${PLYMOUTH_THEME_DIR}" - fi - - if [ "${PLYMOUTH_IMAGE_DIR}" != "${PLYMOUTH_THEME_DIR}" -a -d "${PLYMOUTH_SYSROOT}${PLYMOUTH_IMAGE_DIR}" ]; then - inst_recur "${PLYMOUTH_IMAGE_DIR}" - fi - --if [ -L ${PLYMOUTH_SYSROOT}${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth ]; then -- cp -a ${PLYMOUTH_SYSROOT}${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth $INITRDDIR${PLYMOUTH_DATADIR}/plymouth/themes -+fonts="" -+needs_graphics="$(find ${INITRDDIR} -name 'libply-splash-graphics.so*' -print -quit | grep -q libply-splash-graphics.so && echo -n 1)" -+ -+if [ -n "$needs_graphics" ]; then -+ for lang in $SUPPORTED_LANGUAGES; do -+ font=$(fc-match "":lang="$lang" file | awk -F= '{ print $2}') -+ echo $fonts | grep -q "$font" && continue -+ fonts="$fonts $font" -+ done -+ -+ if [ -n "$fonts" ]; then -+ inst ${PLYMOUTH_PLUGIN_PATH}/label.so $INITRDDIR -+ for font in $fonts; do -+ inst $font $INITRDDIR -+ done -+ fi -+fi -+ -+if [ -L ${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth ]; then -+ cp -a ${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth $INITRDDIR${PLYMOUTH_DATADIR}/plymouth/themes - fi - - if [ -n "$SYSTEMD_UNIT_DIR" -a -d "${PLYMOUTH_SYSROOT}$SYSTEMD_UNIT_DIR" ]; then - inst $SYSTEMD_UNIT_DIR/systemd-ask-password-plymouth.path $INITRDDIR - inst $SYSTEMD_UNIT_DIR/systemd-ask-password-plymouth.service $INITRDDIR - - inst $SYSTEMD_UNIT_DIR/plymouth-switch-root.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/plymouth-start.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/plymouth-quit.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/plymouth-quit-wait.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/plymouth-reboot.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/plymouth-kexec.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/plymouth-poweroff.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/plymouth-halt.service $INITRDDIR - - inst $SYSTEMD_UNIT_DIR/initrd-switch-root.target.wants/plymouth-switch-root.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/initrd-switch-root.target.wants/plymouth-start.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/sysinit.target.wants/plymouth-start.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/multi-user.target.wants/plymouth-quit.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/multi-user.target.wants/plymouth-quit-wait.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/reboot.target.wants/plymouth-reboot.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/kexec.target.wants/plymouth-kexec.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/poweroff.target.wants/plymouth-poweroff.service $INITRDDIR - inst $SYSTEMD_UNIT_DIR/halt.target.wants/plymouth-halt.service $INITRDDIR - fi - - # vim:ts=8:sw=4:sts=4:et --- -2.21.0 - diff --git a/SPECS/plymouth.spec b/SPECS/plymouth.spec deleted file mode 100644 index ef10f09..0000000 --- a/SPECS/plymouth.spec +++ /dev/null @@ -1,1298 +0,0 @@ -%global plymouthdaemon_execdir %{_sbindir} -%global plymouthclient_execdir %{_bindir} -%global plymouth_libdir %{_libdir} -%global plymouth_initrd_file /boot/initrd-plymouth.img - -%global commit 1e36e303e08ba425fecbcff4dde22c8ee936638c -%global commitdate 20200615 -%global shortcommit %(c=%{commit}; echo ${c:0:7}) - -Summary: Graphical Boot Animation and Logger -Name: plymouth -Version: 0.9.4 -Release: 12.%{commitdate}git%{shortcommit}%{?dist} -License: GPLv2+ -URL: http://www.freedesktop.org/wiki/Software/Plymouth -Group: System Environment/Base - -Source0: https://gitlab.freedesktop.org/plymouth/plymouth/-/archive/%{commit}/%{name}-%{commit}.tar.bz2 -Source1: boot-duration -Source2: charge.plymouth -Source3: plymouth-update-initrd -Source4: bootlog - -Patch10001: 0001-Revert-throbgress-Remove-the-throbgress-plugin.patch -Patch10002: 0002-throbgress-update-for-api-change.patch - -# https://bugzilla.redhat.com/show_bug.cgi?id=1702764 -Patch20001: ship-label-plugin-in-initrd.patch - -# https://bugzilla.redhat.com/show_bug.cgi?id=1626342 -Patch30001: 0001-src-die-during-shutdown-with-everything-else.patch - -BuildRequires: pkgconfig(libdrm) -BuildRequires: pkgconfig(libudev) -BuildRequires: kernel-headers -BuildRequires: libpng-devel -BuildRequires: libxslt, docbook-style-xsl -BuildRequires: pkgconfig(gtk+-3.0) -BuildRequires: pango-devel >= 1.21.0 -BuildRequires: cairo-devel -BuildRequires: gcc libtool git -BuildRequires: gettext-devel -BuildRequires: intltool - -Requires(post): plymouth-scripts -Suggests: logrotate - -%description -Plymouth provides an attractive graphical boot animation in -place of the text messages that normally get shown. Text -messages are instead redirected to a log file for viewing -after boot. - -%package system-theme -Summary: Plymouth default theme -Group: System Environment/Base -Requires: plymouth(system-theme) = %{version}-%{release} - -%description system-theme -This metapackage tracks the current distribution default theme. - -%package core-libs -Summary: Plymouth core libraries -Group: Development/Libraries - -%description core-libs -This package contains the libply and libply-splash-core libraries -used by Plymouth. - -%package graphics-libs -Summary: Plymouth graphics libraries -Group: Development/Libraries -Requires: %{name}-core-libs = %{version}-%{release} -Requires: system-logos - -%description graphics-libs -This package contains the libply-splash-graphics library -used by graphical Plymouth splashes. - -%package devel -Summary: Libraries and headers for writing Plymouth splash plugins -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} -Requires: pkgconfig - -%description devel -This package contains the libply and libplybootsplash libraries -and headers needed to develop 3rd party splash plugins for Plymouth. - -%package scripts -Summary: Plymouth related scripts -Group: Applications/System -Requires: findutils, coreutils, gzip, cpio, dracut, plymouth - -%description scripts -This package contains scripts that help integrate Plymouth with -the system. - -%package plugin-label -Summary: Plymouth label plugin -Group: System Environment/Base -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} - -%description plugin-label -This package contains the label control plugin for -Plymouth. It provides the ability to render text on -graphical boot splashes using pango and cairo. - -%package plugin-fade-throbber -Summary: Plymouth "Fade-Throbber" plugin -Group: System Environment/Base -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} - -%description plugin-fade-throbber -This package contains the "Fade-In" boot splash plugin for -Plymouth. It features a centered image that fades in and out -while other images pulsate around during system boot up. - -%package theme-fade-in -Summary: Plymouth "Fade-In" theme -Group: System Environment/Base -Requires: %{name}-plugin-fade-throbber = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-fade-in -This package contains the "Fade-In" boot splash theme for -Plymouth. It features a centered logo that fades in and out -while stars twinkle around the logo during system boot up. - -%package plugin-throbgress -Summary: Plymouth "Throbgress" plugin -Group: System Environment/Base -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} -Requires: plymouth-plugin-label - -%description plugin-throbgress -This package contains the "throbgress" boot splash plugin for -Plymouth. It features a centered logo and animated spinner that -spins repeatedly while a progress bar advances at the bottom of -the screen. - -%package theme-spinfinity -Summary: Plymouth "Spinfinity" theme -Group: System Environment/Base -Requires: %{name}-plugin-throbgress = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-spinfinity -This package contains the "Spinfinity" boot splash theme for -Plymouth. It features a centered logo and animated spinner that -spins in the shape of an infinity sign. - -%package plugin-space-flares -Summary: Plymouth "space-flares" plugin -Group: System Environment/Base -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} -Requires: plymouth-plugin-label - -%description plugin-space-flares -This package contains the "space-flares" boot splash plugin for -Plymouth. It features a corner image with animated flares. - -%package theme-solar -Summary: Plymouth "Solar" theme -Group: System Environment/Base -Requires: %{name}-plugin-space-flares = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-solar -This package contains the "Solar" boot splash theme for -Plymouth. It features a blue flamed sun with animated solar flares. - -%package plugin-two-step -Summary: Plymouth "two-step" plugin -Group: System Environment/Base -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} -Requires: plymouth-plugin-label - -%description plugin-two-step -This package contains the "two-step" boot splash plugin for -Plymouth. It features a two phased boot process that starts with -a progressing animation synced to boot time and finishes with a -short, fast one-shot animation. - -%package theme-charge -Summary: Plymouth "Charge" plugin -Group: System Environment/Base -Requires: %{name}-plugin-two-step = %{version}-%{release} -Requires(post): plymouth-scripts -Provides: plymouth(system-theme) = %{version}-%{release} -# This is our new default theme, so pull it in from the old default theme -Recommends: %{name}-theme-spinner - -%description theme-charge -This package contains the "charge" boot splash theme for -Plymouth. It was the default theme for Red Hat Enterprise Linux. - -%package plugin-script -Summary: Plymouth "script" plugin -Group: System Environment/Base -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} - -%description plugin-script -This package contains the "script" boot splash plugin for -Plymouth. It features an extensible, scriptable boot splash -language that simplifies the process of designing custom -boot splash themes. - -%package theme-script -Summary: Plymouth "Script" plugin -Group: System Environment/Base -Requires: %{name}-plugin-script = %{version}-%{release} -Requires(post): %{_sbindir}/plymouth-set-default-theme - -%description theme-script -This package contains the "script" boot splash theme for -Plymouth. It it is a simple example theme the uses the "script" -plugin. - -%package theme-spinner -Summary: Plymouth "Spinner" theme -Group: System Environment/Base -Requires: %{name}-plugin-two-step = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-spinner -This package contains the "spinner" boot splash theme for -Plymouth. It features a small spinner on a dark background. - -%prep -%autosetup -S git -p1 -n %{name}-%{commit} -autoreconf --force --install --symlink -Wno-portability - -# Change the default theme -sed -i -e 's/spinner/bgrt/g' src/plymouthd.defaults - -%build -%configure --enable-tracing --disable-tests \ - --with-logo=%{_datadir}/pixmaps/system-logo-white.png \ - --with-background-start-color-stop=0x0073B3 \ - --with-background-end-color-stop=0x00457E \ - --with-background-color=0x3391cd \ - --with-runtimedir=/run \ - --disable-gdm-transition \ - --enable-systemd-integration \ - --without-system-root-install \ - --without-rhgb-compat-link -%make_build - -%install -%make_install -%find_lang %{name} -find $RPM_BUILD_ROOT -name '*.la' -delete - -mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/plymouth - -mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/plymouth -cp $RPM_SOURCE_DIR/boot-duration $RPM_BUILD_ROOT%{_datadir}/plymouth/default-boot-duration -cp -f $RPM_SOURCE_DIR/plymouth-update-initrd $RPM_BUILD_ROOT%{_libexecdir}/plymouth - -# Add charge, our old default -mkdir -p $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge -cp %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge -cp $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow/{box,bullet,entry,lock}.png $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge - -# Drop glow, it's not very Fedora-y -rm -rf $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow - -# add in the watermark to spinner and bgrt -(cd $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/spinner; ln -sf ../../../pixmaps/fedora-gdm-logo.png watermark.png) - -install -d -m 755 $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d -install -p -m 644 $RPM_SOURCE_DIR/bootlog $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/bootlog - -%postun -if [ $1 -eq 0 ]; then - rm -f %{_libdir}/plymouth/default.so - rm -f /boot/initrd-plymouth.img -fi - -%post core-libs -p /sbin/ldconfig -%postun core-libs -p /sbin/ldconfig - -%post graphics-libs -p /sbin/ldconfig -%postun graphics-libs -p /sbin/ldconfig - -%postun theme-spinfinity -export LIB=%{_lib} -if [ $1 -eq 0 ]; then - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinfinity" ]; then - %{_sbindir}/plymouth-set-default-theme text - fi -fi - -%postun theme-fade-in -export LIB=%{_lib} -if [ $1 -eq 0 ]; then - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "fade-in" ]; then - %{_sbindir}/plymouth-set-default-theme --reset - fi -fi - -%triggerin -n %{name}-theme-spinner -- %{name}-theme-charge > 0.9.4-5 -export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ -# On upgrades replace charge with the new bgrt default -if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "charge" ]; then - %{_sbindir}/plymouth-set-default-theme bgrt -fi - -%postun theme-spinner -export LIB=%{_lib} -if [ $1 -eq 0 ]; then - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinner" ]; then - %{_sbindir}/plymouth-set-default-theme --reset - fi -fi - -%postun theme-solar -export LIB=%{_lib} -if [ $1 -eq 0 ]; then - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "solar" ]; then - %{_sbindir}/plymouth-set-default-theme --reset - fi -fi - -%postun theme-charge -export LIB=%{_lib} -if [ $1 -eq 0 ]; then - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "charge" ]; then - %{_sbindir}/plymouth-set-default-theme --reset - fi -fi - -%files -f %{name}.lang -%license COPYING -%doc AUTHORS README -%dir %{_datadir}/plymouth -%dir %{_datadir}/plymouth/themes -%dir %{_datadir}/plymouth/themes/details -%dir %{_datadir}/plymouth/themes/text -%dir %{_libexecdir}/plymouth -%dir %{_localstatedir}/lib/plymouth -%dir %{_libdir}/plymouth/renderers -%dir %{_sysconfdir}/plymouth -%config(noreplace) %{_sysconfdir}/plymouth/plymouthd.conf -%config(noreplace) %{_sysconfdir}/logrotate.d/bootlog -%{plymouthdaemon_execdir}/plymouthd -%{plymouthclient_execdir}/plymouth -%{_bindir}/plymouth -%{_libdir}/plymouth/details.so -%{_libdir}/plymouth/text.so -%{_libdir}/plymouth/tribar.so -%{_datadir}/plymouth/default-boot-duration -%{_datadir}/plymouth/themes/details/details.plymouth -%{_datadir}/plymouth/themes/text/text.plymouth -%{_datadir}/plymouth/themes/tribar/tribar.plymouth -%{_datadir}/plymouth/plymouthd.defaults -%{_localstatedir}/spool/plymouth -%{_mandir}/man?/* -%ghost %{_localstatedir}/lib/plymouth/boot-duration -%{_prefix}/lib/systemd/system/* -%{_prefix}/lib/systemd/system/ - -%files devel -%{plymouth_libdir}/libply.so -%{plymouth_libdir}/libply-splash-core.so -%{_libdir}/libply-boot-client.so -%{_libdir}/libply-splash-graphics.so -%{_libdir}/pkgconfig/ply-splash-core.pc -%{_libdir}/pkgconfig/ply-splash-graphics.pc -%{_libdir}/pkgconfig/ply-boot-client.pc -%{_libdir}/plymouth/renderers/x11* -%{_includedir}/plymouth-1 - -%files core-libs -%{plymouth_libdir}/libply.so.* -%{plymouth_libdir}/libply-splash-core.so.* -%{_libdir}/libply-boot-client.so.* -%dir %{_libdir}/plymouth - -%files graphics-libs -%{_libdir}/plymouth/renderers/drm* -%{_libdir}/plymouth/renderers/frame-buffer* -%{_libdir}/libply-splash-graphics.so.* -%{_libexecdir}/plymouth/plymouthd-drm-escrow - -%files scripts -%{_sbindir}/plymouth-set-default-theme -%{_libexecdir}/plymouth/plymouth-update-initrd -%{_libexecdir}/plymouth/plymouth-generate-initrd -%{_libexecdir}/plymouth/plymouth-populate-initrd - -%files plugin-label -%{_libdir}/plymouth/label.so - -%files plugin-fade-throbber -%{_libdir}/plymouth/fade-throbber.so - -%files theme-fade-in -%dir %{_datadir}/plymouth/themes/fade-in -%{_datadir}/plymouth/themes/fade-in/bullet.png -%{_datadir}/plymouth/themes/fade-in/entry.png -%{_datadir}/plymouth/themes/fade-in/lock.png -%{_datadir}/plymouth/themes/fade-in/star.png -%{_datadir}/plymouth/themes/fade-in/fade-in.plymouth - -%files theme-spinner -# bgrt is a variant of spinner with different settings in its .plymouth file -%{_datadir}/plymouth/themes/bgrt -%{_datadir}/plymouth/themes/spinner - -%files plugin-throbgress -%{_libdir}/plymouth/throbgress.so - -%files theme-spinfinity -%dir %{_datadir}/plymouth/themes/spinfinity -%{_datadir}/plymouth/themes/spinfinity/* - -%files plugin-space-flares -%{_libdir}/plymouth/space-flares.so - -%files theme-solar -%dir %{_datadir}/plymouth/themes/solar -%{_datadir}/plymouth/themes/solar/*.png -%{_datadir}/plymouth/themes/solar/solar.plymouth - -%files plugin-two-step -%{_libdir}/plymouth/two-step.so - -%files theme-charge -%dir %{_datadir}/plymouth/themes/charge -%{_datadir}/plymouth/themes/charge/*.png -%{_datadir}/plymouth/themes/charge/charge.plymouth - -%files plugin-script -%{_libdir}/plymouth/script.so - -%files theme-script -%dir %{_datadir}/plymouth/themes/script -%{_datadir}/plymouth/themes/script/*.png -%{_datadir}/plymouth/themes/script/script.script -%{_datadir}/plymouth/themes/script/script.plymouth - -%files system-theme - -%changelog -* Mon Oct 13 2025 Tomas Popela - 0.9.4-12.git1688935 -- Ship plymouth-devel in AppStream - Resolves: RHEL-120195 - -* Tue Feb 22 2022 Ray Strode - 0.9.4-11.git1688935 -- Fix typo in --with-runtimedir argument to actually stop using - /var/run and instead use /run instead - Resolves: #2056473 - -* Wed Aug 18 2021 Ray Strode - 0.9.4-10.git1688935 -- Stop using /var/run, just use /run instead - Resolves: #1977446 - -* Thu Jan 28 2021 Ray Strode - 0.9.4-9.git1688935 -- Fix watermark - Resolves: #1914930 - -* Thu Jan 07 2021 Ray Strode - 0.9.4-8.git1688935 -- Add Recommends to pull in plymouth-theme-spinner - Resolves: #1907422 - -* Mon Aug 24 2020 Ray Strode - 0.9.4-5.git1688935 -- Fix typo in poweroff path - Resolves: #1871817 - Related: #1626342 - -* Mon Jul 20 2020 Ray Strode - 0.9.4-4.git1688935 -- Fix one last bit of flicker in the shutdown path - Related: #1626342 - -* Fri Jul 17 2020 Ray Strode - 0.9.4-3.git1688935 -- Die at shutdown with everything else - Resolves: #1626342 - -* Mon Jun 15 2020 Ray Strode - 0.9.4-1.git1688935 -- Rebase to git snapshot - Resolves: #1688935 - -* Tue Dec 10 2019 Ray Strode - 0.9.3-16 -- ship fonts in initrd - Resolves: #1702764 -- fix unapplied patch - -* Fri Sep 06 2019 Ray Strode - 0.9.3-15 -- Fix udev activation race - Resolves: #1661880 - -* Fri Feb 08 2019 Ray Strode - 0.9.3-12 -- Make /var/log/boot.log more modular - Resolves: #1658026 - -* Mon Oct 15 2018 Ray Strode - 0.9.3-11 -- Update description of charge theme (found by rpmdiff - when building previous fix) - Related: #1607020 - -* Mon Oct 15 2018 Ray Strode - 0.9.3-10 -- Coverity leak fixes - Resolves: #1607020 - -* Thu Aug 30 2018 Ray Strode - 0.9.3-9 -- Fix placement of spinner to patch rhel 8 design - Resolves: #1623525 - -* Wed Aug 15 2018 Ray Strode - 0.9.3-8 -- drop initscripts requirement - Resolves: #1610282 - -* Thu Jul 12 2018 Ray Strode - 0.9.3-7 -- Add backports to avoid loading renderers on non-rhgb boot - and to handle 'rhgb' when no renderers available -- Move framebuffer plugin to graphics subpackage - Related: #1600634 - -* Sun Apr 15 2018 Hans de Goede - 0.9.3-6 -- Add patches from upstream git for devices with non upright mounted LCD panels - https://bugs.freedesktop.org/show_bug.cgi?id=104714 - -* Thu Mar 29 2018 Colin Walters - 0.9.3-5 -- Drop default boot duration: https://src.fedoraproject.org/rpms/plymouth/pull-request/1 - -* Fri Feb 09 2018 Igor Gnatenko - 0.9.3-4 -- Escape macros in %%changelog - -* Fri Feb 09 2018 Fedora Release Engineering - 0.9.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Tue Nov 28 2017 Ray Strode - 0.9.3-2 -- Bump ShowDelay back up to 5 - Related: #1518037 - -* Tue Nov 28 2017 Björn Esser - 0.9.3-1 -- Update to 0.9.3 release -- Reduce ShowDelay to 0 (rhbz#1518037) -- Change %%define to %%global - -* Thu Aug 03 2017 Fedora Release Engineering - 0.9.3-0.9.20160620git0e65b86c -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 0.9.3-0.8.20160620git0e65b86c -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 0.9.3-0.7.20160620git0e65b86c -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Mon Jun 20 2016 Ray Strode - 0.9.3-0.6.git -- Fix color palette issue -- Fix splash at shutdown (if shutdown takes longer than 5 secs) -- Make sure text based splashes update terminal size when fbcon loads - -* Thu Jun 16 2016 Ray Strode - 0.9.3-0.5.git -- really (?) fix password prompt on text plugin - Resolves: #1344141 - -* Tue Jun 14 2016 Ray Strode - 0.9.3-0.4.git -- fix password prompt on text plugin - Resolves: #1344141 - -* Wed Jun 08 2016 Ray Strode - 0.9.3-0.3.git -- new release versioning scheme to be more guideliney - -* Tue Jun 07 2016 Ray Strode - 0.9.3-0.1. -- Update to latest git snapshot -- Fixes use after free - Related: #1342673 - -* Tue May 24 2016 Ray Strode - 0.9.3-0.1.20160524 -- Update to latest git snapshot -- Drop plymouth-generate-initrd scriptlets - -* Thu Feb 04 2016 Fedora Release Engineering - 0.8.9-17.2013.08.14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Sun Nov 15 2015 Ray Strode 0.8.9-16.2013.08.14 -- Fix plymouth-update-initrd script - -* Mon Oct 26 2015 Ray Strode 0.8.9-15.2013.08.15 -- Fix updates with script and spinner themes - Resolves: #1267949 - -* Mon Aug 24 2015 Kalev Lember 0.8.9-13.2013.08.14 -- Fix a typo in Requires - -* Mon Aug 24 2015 Peter Robinson 0.8.9-12.2013.08.14 -- Fix Requires for various libs subpackages - -* Sun Aug 23 2015 Peter Robinson 0.8.9-11.2013.08.14 -- Use %%license -- Cleanup spec -- Move drm render driver to graphics-libs sub package - -* Thu Jun 18 2015 Fedora Release Engineering - 0.8.9-10.2013.08.14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Wed May 20 2015 Will Woods 0.8.9-9.2013.08.14 -- Fix theme override using PLYMOUTH_THEME_NAME (#1223344) - -* Sat Feb 21 2015 Till Maas - 0.8.9-8.2013.08.14 -- Rebuilt for Fedora 23 Change - https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code - -* Sun Aug 17 2014 Fedora Release Engineering - 0.8.9-7.2013.08.14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sat Jun 07 2014 Fedora Release Engineering - 0.8.9-6.2013.08.14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sat May 31 2014 Peter Robinson 0.8.9-4.2013.08.15 -- Move system-logos dep to graphics-libs (no use on text/serial console minimal installs) - -* Thu Feb 20 2014 Ray Strode 0.8.9-4.2013.08.14 -- Fix splash after change in /sys/class/tty/console/active - -* Thu Oct 31 2013 Ray Strode 0.8.9-3.2013.08.14 -- Don't timeout plymouth quit waiting - Related: #967521 - -* Wed Oct 16 2013 Ray Strode 0.8.9-2.2013.08.14 -- Drop rhgb-client compat link - -* Sun Oct 06 2013 Kalev Lember - 0.8.9-1.2013.08.14 -- Make sure the release number compares higher than the previous builds - -* Wed Aug 14 2013 Ray Strode 0.8.9-0.1.2013.08.14.0 -- Update to snapshot to fix system units - -* Sun Aug 04 2013 Fedora Release Engineering - 0.8.9-0.2014.03.26.0 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Tue Mar 26 2013 Ray Strode 0.8.9-0.2013.03.26.0 -- Update to snapshot to fix systemd vconsole issue - -* Thu Feb 21 2013 Peter Robinson 0.8.8-6 -- Merge newer F18 release into rawhide - -* Thu Dec 13 2012 Ray Strode 0.8.8-5 -- Ensure fedup gets right splash screen - Related: #879295 - -* Thu Nov 15 2012 Ray Strode 0.8.8-4 -- Drop set-default-plugin compat script -- Just use upstream update-initrd - -* Fri Nov 02 2012 Ray Strode 0.8.8-3 -- More boot blocking fixes - Related: #870695 - -* Thu Nov 01 2012 Ray Strode 0.8.8-2 -- Fix crash when deactivating multiple times - Related: #870695 - -* Fri Oct 26 2012 Ray Strode 0.8.8-1 -- Latest upstream release -- includes systemd fixes and system update fixes - -* Tue Aug 21 2012 Ray Strode 0.8.7-1 -- Latest upstream release -- includes systemd fixes - -* Tue Aug 21 2012 Dave Airlie 0.8.6.2-1.2012.07.23 -- fix plymouth race at bootup breaking efi/vesa handoff. -- fix version number - its against fedora package policy to have 0.year - -* Mon Jul 23 2012 Ray Strode 0.8.6.2-0.2012.07.23 -- One more crack at #830482 (will probably need additional fixes tomorrow) - -* Mon Jul 23 2012 Tom Callaway - 0.8.6.1-3 -- fix bz704658 (thanks to Ian Pilcher for the patch), resolves issue where spinfinity theme - never goes idle and thus, never exits to gdm - -* Sat Jul 21 2012 Fedora Release Engineering - 0.8.6.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Tue Jul 10 2012 Ray Strode 0.8.6.1-1 -- Update to 0.8.6.1 since I mucked up 0.8.6 - Resolves: #830482 - -* Mon Jul 09 2012 Ray Strode 0.8.6-1 -- Update to 0.8.6 -- Fixes encrypted fs bug - Resolves: #830482 -- Adds support for offline package updates - -* Mon Jun 25 2012 Adam Jackson 0.8.5.1-3 -- Rebuild without libkms - -* Wed Jun 06 2012 Ray Strode 0.8.5.1-2 -- Add %%{_prefix} to systemd service path - -* Wed Jun 06 2012 Ray Strode 0.8.5.1-1 -- Update to latest release -- Ship systemd service files -- Conflict with old systemd - -* Tue Apr 24 2012 Richard Hughes 0.8.4-0.20120319.3 -- Disable the nouveau driver as I've broken it with the new libdrm ABI - -* Tue Mar 20 2012 Daniel Drake 0.8.4-0.20120319.1 -- Don't try to build against libdrm_intel on non-intel architectures - -* Mon Mar 19 2012 Ray Strode 0.8.4-0.20120319.1 -- Update to latest snapshot - -* Mon Mar 12 2012 Ray Strode 0.8.4-0.20110810.6 -- Don't require libdrm_intel on non intel arches - -* Mon Feb 20 2012 Adam Williamson 0.8.4-0.20110810.5 -- make plymouth-scripts require plymouth (RH #794894) - -* Wed Jan 25 2012 Harald Hoyer 0.8.4-0.20110810.4 -- install everything in /usr - https://fedoraproject.org/wiki/Features/UsrMove - -* Sat Jan 14 2012 Fedora Release Engineering - 0.8.4-0.20110810.3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Thu Dec 15 2011 Ray Strode 0.8.4-0.20110809.3 -- Change spec based on suggestion from Nicolas Chauvet - to fix scriptlet error during livecd creation - Resolves: #666419 - -* Tue Nov 08 2011 Adam Jackson 0.8.4-0.20110822.3 -- Rebuild for libpng 1.5 - -* Fri Sep 02 2011 Ray Strode 0.8.4-0.20110822.2 -- Make plymouth background dark gray at the request of Mo / design - team. - -* Mon Aug 22 2011 Ray Strode 0.8.4-0.20110822.1 -- Update to latest git snapshot -- Reintroduce accidentally dropped spinner theme and systemd integration - -* Tue Aug 09 2011 Ray Strode 0.8.4-0.20110809.1 -- Rebuild - -* Fri Mar 04 2011 Ray Strode 0.8.4-0.1.20110304.1 -- retry reopening tty if we get EIO - Hopefully Resolves: #681167 - -* Fri Feb 18 2011 Ray Strode 0.8.4-0.20110419.1 -- unlock tty when reopening in case it spontaenously goes bonkers - and we need to fix it up - Resolves: #655538 - -* Wed Feb 09 2011 Christopher Aillon 0.8.4-0.20110209.2 -- Fix up obsoletes typo - -* Wed Feb 09 2011 Ray Strode 0.8.4-0.20110209.1 -- Update to latest snapshot - -* Wed Feb 09 2011 Fedora Release Engineering - 0.8.4-0.20101120.4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Fri Feb 04 2011 Ray Strode 0.8.4-0.20101119.4 -- Drop log viewer - -* Sat Jan 29 2011 Ville Skyttä - 0.8.4-0.20101119.3 -- Dir ownership fixes (#645044). - -* Fri Nov 19 2010 Ray Strode 0.8.4-0.20101119.2 -- Fix serial console issue eparis was seeing - -* Fri Nov 19 2010 Ray Strode 0.8.4-0.20101119.1 -- Update to recent snapshot - -* Tue Nov 02 2010 Ray Strode 0.8.4-0.20101002.1 -- Update to recent snapshot - -* Wed Sep 01 2010 Ray Strode 0.8.4-0.20100823.4 -- Add more Requirse - -* Thu Aug 26 2010 Ray Strode 0.8.4-0.20100823.3 -- Add more Requires - -* Thu Aug 26 2010 Ray Strode 0.8.4-0.20100823.2 -- Fix plymouth-update-initrd - It's regressed to the pre-dracut version. This commit fixes that. - -* Mon Aug 23 2010 Ray Strode 0.8.4-0.20100823.1 -- Update to newer pre-release snapshot of 0.8.4 -- Generate separate initrd in /boot - -* Sat Aug 21 2010 Ray Strode 0.8.4-0.20100821.1 -- Update to newer pre-release snapshot of 0.8.4 -- Fix bizarre-o animation during boot up. - -* Fri Jul 23 2010 Ray Strode 0.8.4-0.20100723.1 -- Update to pre-release snapshot of 0.8.4 - -* Thu Jan 14 2010 Ray Strode 0.8.0-0.20100114.2 -- Don't link plymouthd against libpng either - -* Thu Jan 14 2010 Ray Strode 0.8.0-0.20100114.1 -- Make it possible to do a basic plymouth installations without - libpng - -* Thu Jan 07 2010 Ray Strode 0.8.0-0.2009129.2 -- Drop nash dep - -* Tue Dec 22 2009 Dave Airlie 0.8.0-0.2009129.1 -- rebuild for API bump in libdrm - -* Wed Dec 09 2009 Ray Strode 0.8.0-0.2009129 -- Update to latest snapshot - -* Tue Sep 29 2009 Ray Strode 0.8.0-0.2009.10.05 -- Add new x11-renderer plugin from Charlie Brej for debugging - -* Tue Sep 29 2009 Ray Strode 0.8.0-0.2009.29.09 -- Fix escape and ask-for-password - -* Mon Sep 28 2009 Ray Strode 0.8.0-0.2009.28.09 -- Add prerelease of 0.8.0 for multihead support - -* Fri Sep 11 2009 Ray Strode 0.7.1-7 -- Go back to blue charge background (bug 522460) - -* Fri Sep 11 2009 Ray Strode 0.7.1-6 -- Remove duplicate Provides: plymouth(system-theme) - -* Thu Sep 10 2009 Ray Strode 0.7.1-5 -- Fix set_verbose error reported by yaneti. - -* Wed Sep 9 2009 Ray Strode 0.7.1-4 -- Look for inst() in dracut as well as mkinitrd bash source file -- Drop plymouth initrd for now. - -* Fri Aug 28 2009 Ray Strode 0.7.1-3 -- Create plymouth supplementary initrd in post (bug 515589) - -* Tue Aug 25 2009 Ray Strode 0.7.1-2 -- Get plugin path from plymouth instead of trying - to guess. Should fix bug 502667 - -* Tue Aug 25 2009 Ray Strode 0.7.1-1 -- Update to 0.7.1 - -* Mon Aug 24 2009 Adam Jackson 0.7.0-2 -- Set charge bgcolor to black. (#519052) - -* Tue Aug 11 2009 Ray Strode 0.7.0-1 -- Update to 0.7.0 - -* Sun Jul 26 2009 Fedora Release Engineering - 0.7.0-0.2010.05.15.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Fri May 15 2009 Ray Strode 0.7.0-0.2009.05.15.1 -- Fix spinfinity theme to point to the right image directory - (bug 500994) - -* Thu May 14 2009 Ray Strode 0.7.0-0.2009.05.14.1 -- Update to new snapshot that renames plugins to fix upgrades - somewhat (bug 499940) - -* Fri May 08 2009 Ray Strode 0.7.0-0.2009.05.08.1 -- Add some fixes for shutdown - -* Fri May 08 2009 Ray Strode 0.7.0-0.2009.05.06.4 -- Don't slow down progress updating at the end of boot - -* Thu May 07 2009 Ray Strode 0.7.0-0.2009.05.06.3 -- Change colors to transition better to gdm - -* Wed May 06 2009 Ray Strode 0.7.0-0.2009.05.06.2 -- Make "charge" theme require two-step plugin instead of solar (oops) - -* Wed May 06 2009 Ray Strode 0.7.0-0.2009.05.06.1 -- Update to "plugin-rework" branch from git - -* Wed Apr 08 2009 Jesse Keating - 0.7.0-0.2009.03.10.3 -- Drop the version on system-logos requires for now, causing hell with - other -logos providers not having the same version. - -* Wed Mar 18 2009 Ray Strode 0.7.0-0.2009.03.10.2 -- Destroy terminal on detach (may help with bug 490965) - -* Tue Mar 10 2009 Ray Strode 0.7.0-0.2009.03.10.1 -- Address one more issue with password handling. It wasn't working - well for secondary devices when using the "details" plugin. - -* Mon Mar 9 2009 Ray Strode 0.7.0-0.2009.03.09.1 -- Attempt to address some problems with password handling in the - 0.7.0 snapshots - -* Fri Mar 6 2009 Ray Strode 0.7.0-0.2009.03.06.2 -- Fix set default script - -* Fri Mar 6 2009 Ray Strode 0.7.0-0.2009.03.06.1 -- more scriptlet changes to move from solar to spinfinity - -* Fri Mar 6 2009 Ray Strode 0.7.0-0.2009.03.06 -- Updated to development snapshot -- Guess progress better on second boot of persistent live images -- Drop upstream patches -- swap "solar" and "spinfinity" scriptlet behavior - -* Tue Feb 24 2009 Ray Strode 0.6.0-3 -- Add fix-heap-corruptor patch from master. Problem - spotted by Mr. McCann. - -* Wed Dec 17 2008 Ray Strode 0.6.0-2 -- Add patch from drop-nash branch for jeremy - -* Wed Dec 3 2008 Ray Strode 0.6.0-1 -- Update to 0.6.0 - -* Sat Nov 22 2008 Matthias Clasen 0.6.0-0.2008.11.17.3.1 -- Strip %%name from %%summary - -* Mon Nov 17 2008 Ray Strode 0.6.0-0.2008.11.17.3 -- don't give error about missing default.so -- rework packaging of boot-duration to prevent .rpmnew droppings - (bug 469752) - -* Mon Nov 17 2008 Ray Strode 0.6.0-0.2008.11.17.2 -- Don't tell gdm to transition unless booting into runlevel 3 - (bug 471785) - -* Mon Nov 17 2008 Ray Strode 0.6.0-0.2008.11.17.1 -- Crawl progress bar if boot is way off course (Charlie, bug 471089) - -* Fri Nov 14 2008 Ray Strode 0.6.0-0.2008.11.14.2 -- Don't loop forever when tty returns NUL byte (bug 471498) - -* Fri Nov 14 2008 Ray Strode 0.6.0-0.2008.11.14.1 -- Generate solar background dynamically to reduce ondisk size, and - look better at various resolutions (Charlie, bug 471227) - -* Thu Nov 13 2008 Ray Strode 0.6.0-0.2008.11.12.4 -- Move Obsoletes: plymouth-text-and-details-only to base package - so people who had it installed don't end up solar on upgrade - -* Wed Nov 12 2008 Ray Strode 0.6.0-0.2008.11.12.3 -- Redo packaging to work better with minimal installs - (bug 471314) - -* Wed Nov 12 2008 Ray Strode 0.6.0-0.2008.11.12.2 -- Fix plymouth-set-default-plugin to allow external $LIB - -* Wed Nov 12 2008 Ray Strode 0.6.0-0.2008.11.12.1 -- Fix star image (Charlie, bug 471113) - -* Tue Nov 11 2008 Ray Strode 0.6.0-0.2008.11.11.2 -- Improve solar flares (Charlie) -- redirect tty again on --show-splash -- ignore subsequent --hide-splash calls after the first one -- turn off kernel printks during boot up - -* Tue Nov 11 2008 Ray Strode 0.6.0-0.2008.11.11.1 -- Disconnect from tty when init=/bin/bash (bug 471007) - -* Mon Nov 10 2008 Ray Strode 0.6.0-0.2008.11.10.5 -- Force the right arch when calling plymouth-set-default-plugin - (bug 470732) - -* Mon Nov 10 2008 Ray Strode 0.6.0-0.2008.11.10.4 -- Drop comet (bug 468705) -- make boot-duration config(noreplace) - -* Mon Nov 10 2008 Ray Strode 0.6.0-0.2008.11.10.3 -- Don't abort if no splash when root is mounted -- Actually move patches upstream - -* Mon Nov 10 2008 Ray Strode 0.6.0-0.2008.11.10.1 -- Fix feedback loop with plymouth:debug -- Move patches upstream -- Improve comet animation - -* Sun Nov 9 2008 Ray Strode 0.6.0-0.2008.11.06.4 -- Fix up more-debug patch to not assert with plymouth:nolog - (bug 470569) - -* Fri Nov 7 2008 Ray Strode 0.6.0-0.2008.11.06.3 -- add some more debug spew to help debug a problem jlaska is having - -* Thu Nov 6 2008 Ray Strode 0.6.0-0.2008.11.06.2 -- show details plugin on --hide-splash so people can see why the splash - got hidden. - -* Thu Nov 6 2008 Ray Strode 0.6.0-0.2008.11.06.1 -- Don't exit on plymouth --show-splash after sulogin -- Properly retake console after that --show-splash - -* Wed Nov 5 2008 Ray Strode 0.6.0-0.2008.11.05.1 -- reset colors on quit --retain-splash -- fix off by one in damage calculation for label - -* Tue Nov 4 2008 Ray Strode 0.6.0-0.2008.10.30.5 -- Add a sample boot-duration for livecds and first time boots - (bug 469752) - -* Mon Nov 3 2008 Jeremy Katz - 0.6.0-0.2008.10.30.4 -- Allow pre-setting the default plugin when calling plymouth-populate-initrd - -* Fri Oct 31 2008 Ray Strode 0.6.0-0.2008.10.30.3 -- Add pango minimum version to buildrequires - -* Thu Oct 30 2008 Ray Strode 0.6.0-0.2008.10.30.2 -- Update prompt text colors to be legible on new artwork - -* Thu Oct 30 2008 Ray Strode 0.6.0-0.2008.10.30.1 -- Drop upstreamed patches -- Patch from Charlie to update artwork -- Patch from Charlie to make password screen match animation better - (bug 468899) - -* Thu Oct 30 2008 Ray Strode 0.6.0-0.2008.10.27.8 -- Fix escape at password prompt (bug 467533) - -* Tue Oct 28 2008 Ray Strode 0.6.0-0.2008.10.27.7 -- Don't require /bin/plymouth before it's installed (bug 468925) - -* Tue Oct 28 2008 Ray Strode 0.6.0-0.2008.10.27.6 -- Force raw mode for keyboard input with solar and fade-in - (bug 468880) -- make sure windows get closed on exit - -* Mon Oct 27 2008 Ray Strode 0.6.0-0.2008.10.27.5 -- Make "Solar" lock icon the same as the "Spinfinity" one. - -* Mon Oct 27 2008 Ray Strode 0.6.0-0.2008.10.27.4 -- Make plymouth-libs own /usr/lib/plymouth (bug 458071) - -* Mon Oct 27 2008 Ray Strode 0.6.0-0.2008.10.27.3 -- Default to "Solar" instead of "Spinfinity" - -* Mon Oct 27 2008 Ray Strode 0.6.0-0.2008.10.27.2 -- Don't set plymouth default plugin to text in %%post - -* Mon Oct 27 2008 Ray Strode 0.6.0-0.2008.10.27.1 -- Add Charlie patch to dither in lower color modes (bug 468276) - -* Sun Oct 26 2008 Jeremy Katz - 0.6.0-0.2008.10.24.2 -- More requires changing to avoid loops (#467356) - -* Fri Oct 24 2008 Ray Strode 0.6.0-0.2008.10.24.1 -- Add updated progress bar for solar plugin from Charlie -- Log plymouth:debug output to boot log -- Ignore sigpipe signals in daemon - -* Thu Oct 23 2008 Ray Strode 0.6.0-0.2008.10.23.2 -- Bump so name of libply to hopefully force plymouth to get installed - before kernel (or at least make plymouth-libs and plymouth get installed - on the same side of kernel in the transaction). - -* Thu Oct 23 2008 Ray Strode 0.6.0-0.2008.10.23.1 -- Add patch from Charlie to align progress bar to milestones during boot up -- force tty to be sane on exit (bug 467207) - -* Thu Oct 23 2008 Ray Strode 0.6.0-0.2008.10.21.3 -- add empty files section for text-and-details-only so the subpackage - shows up. - -* Wed Oct 22 2008 Ray Strode 0.6.0-0.2008.10.21.2 -- add text-and-details-only subpackage so davej can uninstall - spinfinity, pango, cairo etc from his router. - -* Tue Oct 21 2008 Ray Strode 0.6.0-0.2008.10.21.1 -- Minor event loop changes -- drop upstream patches -- Charlie Brej fix for progress bar resetting when escape gets pressed - -* Tue Oct 21 2008 Ray Strode 0.6.0-0.2008.10.17.4 -- Don't make plymouth-libs require plymouth (more fun with 467356) - -* Mon Oct 20 2008 Ray Strode 0.6.0-0.2008.10.17.3 -- Add initscripts requires (bug 461322) - -* Mon Oct 20 2008 Ray Strode 0.6.0-0.2008.10.17.2 -- Put tty1 back in "cooked" mode when going into runlevel 3 - (bug 467207) - -* Fri Oct 17 2008 Ray Strode 0.6.0-0.2008.10.17.1 -- Clear screen in details plugin when it's done -- Make plymouth-update-initrd a small wrapper around mkinitrd instead - of the broken monstrosity it was before. - -* Fri Oct 17 2008 Ray Strode 0.6.0-0.2008.10.15.3 -- Move plymouth-set-default-plugin, plymouth-update-initrd, and - plymouth-populate-initrd to plymouth-scripts subpackage - (the last fix didn't actually help with bug 467356) - -* Fri Oct 17 2008 Ray Strode 0.6.0-0.2008.10.15.2 -- Move plymouth-set-default-plugin to -libs (might help with bug 467356) -- Fix up requires, provides and postun scripts - -* Wed Oct 15 2008 Ray Strode 0.6.0-0.2008.10.15.1 -- Don't free windows on --hide-splash (fix from Jeremy) - -* Tue Oct 14 2008 Ray Strode 0.6.0-0.2008.10.14.1 -- Solar fixes from Charlie Brej -- Better cpu usage from Charlie - -* Fri Oct 10 2008 Ray Strode 0.6.0-0.2008.10.08.2 -- Add Requires(post): nash (bug 466500) - -* Wed Oct 08 2008 Ray Strode 0.6.0-0.2008.10.08.1 -- Rework how "console=" args done again, to hopefully fix - bug 460565 - -* Mon Oct 06 2008 Ray Strode 0.6.0-0.2008.10.06.1 -- Add "Solar" plugin from Charles Brej -- Move things around so computers with separate /usr boot - (hopefully this won't break things, but it probably will) -- Make GDM show up on vt1 for all plugins - -* Tue Sep 30 2008 Jeremy Katz 0.6.0-0.2008.09.25.2 -- Remove mkinitrd requires to break the dep loop and ensure things - get installed in the right order - -* Thu Sep 25 2008 Ray Strode 0.6.0-0.2008.09.25.1 -- Add new snapshot to fold in Will Woods progress bar, and - move ajax's splash upstream, putting the old text splash - in a "pulser" subpackage - -* Tue Sep 23 2008 Ray Strode 0.6.0-0.2008.09.23.1 -- Last snapshot was broken - -* Mon Sep 22 2008 Ray Strode 0.6.0-0.2008.09.22.1 -- Update to latest snapshot to get better transition support - -* Fri Sep 19 2008 Ray Strode 0.6.0-0.2008.09.15.2 -- Turn on gdm trigger for transition - -* Mon Sep 15 2008 Ray Strode 0.6.0-0.2008.09.15.1 -- add quit command with --retain-splash option to client - -* Wed Sep 10 2008 Ray Strode 0.6.0-0.2008.09.10.1 -- Fix text rendering for certain machines - -* Mon Sep 8 2008 Ray Strode 0.6.0-0.2008.09.05.4 -- More serial console fixes (bug 460565 again) - -* Fri Sep 5 2008 Bill Nottingham 0.6.0-0.2008.09.05.3 -- make the text plugin use the system release info rather than a hardcoded 'Fedora 10' - -* Fri Sep 5 2008 Ray Strode 0.6.0-0.2008.09.05.2 -- Try to support multiple serial consoles better - (bug 460565) - -* Fri Sep 5 2008 Ray Strode 0.6.0-0.2008.09.05.1 -- Fix some confusion with password handling in details plugin - -* Wed Aug 27 2008 Ray Strode 0.6.0-0.2008.08.27.1 -- Fix another crasher for users with encrypted disks (this time in - the text plugin, not the client) - -* Wed Aug 27 2008 Ray Strode 0.6.0-0.2008.08.27 -- Update to latest snapshot -- Add the ability to show text prompts in graphical plugin -- Fix crasher for users with encrypted disks - -* Fri Aug 22 2008 Ray Strode 0.6.0-0.2008.08.22 -- Update to latest snapshot - -* Wed Aug 13 2008 Ray Strode 0.5.0-20.2008.08.13 -- Update previous patch to remove some assertions - -* Wed Aug 13 2008 Ray Strode 0.5.0-19.2008.08.13 -- add a patch that may help serial console users - -* Wed Aug 13 2008 Ray Strode 0.5.0-18.2008.08.13 -- add spool directory to file list - -* Wed Aug 13 2008 Ray Strode 0.5.0-17.2008.08.13 -- Make plymouth-gdm-hooks require plymouth-utils - -* Wed Aug 13 2008 Ray Strode 0.5.0-16.2008.08.13 -- Add a boot failure viewer to login screen (written by Matthias) - -* Tue Aug 12 2008 Adam Jackson 0.5.0-15.2008.08.08 -- plymouth-0.5.0-textbar-hotness.patch: Change the text plugin to a slightly - more traditional progress bar, to maintain the illusion of progress better - than the eternally oscillating cylon. Note: still incomplete. - -* Fri Aug 8 2008 Ray Strode - 0.5.0-14.2008.08.08 -- Don't require a modifiable text color map (may fix serial consoles) - -* Thu Aug 7 2008 Ray Strode - 0.5.0-13.2008.08.07 -- Update to new snapshot which when combined with a new mkinitrd should - make unlocking encrypted root partitions work again - -* Wed Aug 6 2008 Ray Strode - 0.5.0-12.2008.08.06 -- Update to new snapshot which fixes some assertion failures in the - client code - -* Wed Aug 6 2008 Ray Strode - 0.5.0-11.2008.08.01 -- Add Requires(post): plymouth to plugins so they get plymouth-set-default-plugin (bug 458071) - -* Tue Aug 5 2008 Ray Strode - 0.5.0-10.2008.08.01 -- Add plymouth dirs to file list (bug 457871) - -* Fri Aug 1 2008 Ray Strode - 0.5.0-9.2008.08.01 -- new plymout-populate-initrd features don't work with the set -e at the - top of it. - -* Thu Jul 31 2008 Ray Strode - 0.5.0-8.2008.08.01 -- Update to another snapshot to actually get new - plymouth-populate-initrd features - -* Thu Jul 31 2008 Ray Strode - 0.5.0-8.2008.07.31 -- Update to snapshot to get new plymouth-populate-initrd features -- Make removing rhgb use details plugin instead of exiting - -* Thu Jul 31 2008 Peter Jones - 0.5.0-7 -- Make it a mkinitrd requires instead of a nash requires (that will - still pull in nash, but we need mkinitrd for newer plymouth-populate-initrd) - -* Wed Jul 30 2008 Ray Strode - 0.5.0-6 -- Add nash requires - -* Wed Jul 9 2008 Ray Strode - 0.5.0-5 -- Use a new heuristic for finding libdir, since the old - one falls over on ia64 - -* Wed Jul 9 2008 Ray Strode - 0.5.0-4 -- add ctrl-r to rotate text color palette back to stock values - -* Tue Jul 8 2008 Ray Strode - 0.5.0-3 -- Fix populate script on ppc (bug 454353) - -* Tue Jul 1 2008 Ray Strode - 0.5.0-2 -- Pull in spinfinity by default. This whole "figure out - which plugin to use" set of scripts and scriptlets - needs work. We need to separate distro default from - user choice. - -* Tue Jul 1 2008 Ray Strode - 0.5.0-1 -- Add new client "ask-for-password" command which feeds - the user input to a program instead of standard output, - and loops when the program returns non-zero exit status. - -* Thu Jun 26 2008 Ray Strode - 0.4.5-1 -- Update to version 0.4.5 -- Make text plugin blue and less 80s - -* Wed Jun 25 2008 Ray Strode - 0.4.0-4 -- Make "Password: " show up correctly in text plugin - -* Wed Jun 25 2008 Ray Strode - 0.4.0-3 -- Require elfutils (bug 452797) - -* Sun Jun 22 2008 Ray Strode - 0.4.0-2 -- Make plymouth-set-default-plugin --reset choose the latest - installed plugin, not the earliest - -* Sun Jun 22 2008 Ray Strode - 0.4.0-1 -- Update to version 0.4.0 -- Only run if rhgb is on kernel command line -- Make text plugin more animated - -* Mon Jun 16 2008 Ray Strode - 0.3.2-2 -- dont go back to text mode on exit - -* Mon Jun 16 2008 Ray Strode - 0.3.2-1 -- Update to version 0.3.2 -- show gradient in spinfinity plugin -- Drop fade out in spinfinity plugin -- fix throbber placement -- rename graphical.so to default.so - -* Thu Jun 12 2008 Ray Strode - 0.3.1-3 -- scriplet should be preun, not postun - -* Thu Jun 12 2008 Ray Strode - 0.3.1-2 -- Fix postun scriptlet - -* Thu Jun 12 2008 Ray Strode - 0.3.1-1 -- Update to version 0.3.1 -- Don't ship generated initrd scripts in tarball - -* Thu Jun 12 2008 Ray Strode - 0.3.0-1 -- Update to version 0.3.0 -- Better plugin handling -- Better integration with mkinitrd (pending mkinitrd changes) -- random bug fixes - -* Mon Jun 9 2008 Ray Strode - 0.2.0-1 -- Update to version 0.2.0 -- Integrate more tightly with nash (pending nash changes) -- ship libs for out of tree splash plugins -- gradient support -- random bug fixes - -* Fri May 30 2008 Ray Strode - 0.1.0-1 -- Initial import, version 0.1.0 diff --git a/SOURCES/charge.plymouth b/charge.plymouth similarity index 61% rename from SOURCES/charge.plymouth rename to charge.plymouth index f53413f..f499c0f 100644 --- a/SOURCES/charge.plymouth +++ b/charge.plymouth @@ -1,12 +1,12 @@ [Plymouth Theme] Name=Charge -Description=A theme that features a stylized 8 and spinner +Description=A theme that features the shadowy hull of a Fedora logo charge up and and finally burst into into full form. ModuleName=two-step [two-step] ImageDir=/usr/share/plymouth/themes/charge HorizontalAlignment=.5 -VerticalAlignment=.75 +VerticalAlignment=.5 Transition=none TransitionDuration=0.0 BackgroundStartColor=0x202020 diff --git a/plymouth-24.004.60-immediately-probe-simpledrm.patch b/plymouth-24.004.60-immediately-probe-simpledrm.patch new file mode 100644 index 0000000..b022a7e --- /dev/null +++ b/plymouth-24.004.60-immediately-probe-simpledrm.patch @@ -0,0 +1,556 @@ +From 64379c1100a0177f52e130601d44a7ffe0fdedf1 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 4 Jun 2024 21:09:00 +0200 +Subject: [PATCH 1/9] ply-utils: Add ply_string_has_suffix () helper function + +Add a ply_string_has_suffix () helper function to match the existing +ply_string_has_prefix () helper function. +--- + src/libply/ply-utils.c | 18 ++++++++++++++++++ + src/libply/ply-utils.h | 2 ++ + 2 files changed, 20 insertions(+) + +diff --git a/src/libply/ply-utils.c b/src/libply/ply-utils.c +index 0e317b67..d6d127f1 100644 +--- a/src/libply/ply-utils.c ++++ b/src/libply/ply-utils.c +@@ -473,6 +473,24 @@ ply_string_has_prefix (const char *str, + return strncmp (str, prefix, strlen (prefix)) == 0; + } + ++bool ++ply_string_has_suffix (const char *str, ++ const char *suffix) ++{ ++ size_t str_len, suffix_len; ++ ++ if (str == NULL || suffix == NULL) ++ return false; ++ ++ str_len = strlen (str); ++ suffix_len = strlen (suffix); ++ ++ if (suffix_len > str_len) ++ return false; ++ ++ return strcmp (str + (str_len - suffix_len), suffix) == 0; ++} ++ + double + ply_get_timestamp (void) + { +diff --git a/src/libply/ply-utils.h b/src/libply/ply-utils.h +index 7cbbb2f4..86d66384 100644 +--- a/src/libply/ply-utils.h ++++ b/src/libply/ply-utils.h +@@ -109,6 +109,8 @@ char **ply_copy_string_array (const char *const *array); + void ply_free_string_array (char **array); + bool ply_string_has_prefix (const char *str, + const char *prefix); ++bool ply_string_has_suffix (const char *str, ++ const char *suffix); + double ply_get_timestamp (void); + + void ply_save_errno (void); +-- +2.45.1 + +From 1c3ff0338c80a831b2f0ea63a57e20c9013ddb52 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 4 Jun 2024 21:16:31 +0200 +Subject: [PATCH 2/9] ply-device-manager: Add syspath_is_simpledrm () helper + +Add a helper to determine if a udev syspath is a simpledrm device. +This is a preparation patch to for making simpledrm devices their +own renderer-type. +--- + src/libply-splash-core/ply-device-manager.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index d75ac6c5..4c48f606 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -339,11 +339,15 @@ remove_input_device_from_renderers (ply_device_manager_t *manager, + ply_hashtable_foreach (manager->renderers, (ply_hashtable_foreach_func_t *) on_each_input_device_remove_from_renderer, input_device); + } + ++static bool ++syspath_is_simpledrm (const char *syspath) ++{ ++ return ply_string_has_suffix (syspath, "simple-framebuffer.0/drm/card0"); ++} ++ + static bool + verify_drm_device (struct udev_device *device) + { +- const char *id_path; +- + /* + * Simple-framebuffer devices driven by simpledrm lack information + * like panel-rotation info and physical size, causing the splash +@@ -352,8 +356,7 @@ verify_drm_device (struct udev_device *device) + * To avoid this treat simpledrm devices as fbdev devices and only + * use them after the timeout. + */ +- id_path = udev_device_get_property_value (device, "ID_PATH"); +- if (!ply_string_has_prefix (id_path, "platform-simple-framebuffer")) ++ if (!syspath_is_simpledrm (udev_device_get_syspath (device))) + return true; /* Not a SimpleDRM device */ + + /* +-- +2.45.1 + +From 19d49a42fcc3cf9d3ee62a572eec24e8b73f9799 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 4 Jun 2024 21:24:22 +0200 +Subject: [PATCH 3/9] ply-renderer: Add new PLY_RENDERER_TYPE_SIMPLEDRM + renderer-type + +Add a new PLY_RENDERER_TYPE_SIMPLEDRM renderer-type to help differentiate +the simpledrm case from the regular drm device case. + +simpledrm devices require some special handling in the device-manager, +this is a preparation patch for improving the simpledrm handling +in ply-device-manager. +--- + src/libply-splash-core/ply-device-manager.c | 11 ++++++++--- + src/libply-splash-core/ply-renderer.c | 1 + + src/libply-splash-core/ply-renderer.h | 1 + + 3 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 4c48f606..256b38d0 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -380,7 +380,7 @@ static bool + create_devices_for_udev_device (ply_device_manager_t *manager, + struct udev_device *device) + { +- const char *device_path, *device_sysname; ++ const char *device_path, *device_sysname, *device_syspath; + bool created = false; + bool force_fb = false; + +@@ -389,6 +389,7 @@ create_devices_for_udev_device (ply_device_manager_t *manager, + + device_path = udev_device_get_devnode (device); + device_sysname = udev_device_get_sysname (device); ++ device_syspath = udev_device_get_syspath (device); + + if (device_path != NULL) { + const char *subsystem; +@@ -403,7 +404,10 @@ create_devices_for_udev_device (ply_device_manager_t *manager, + return false; + } + ply_trace ("found DRM device %s", device_path); +- renderer_type = PLY_RENDERER_TYPE_DRM; ++ if (syspath_is_simpledrm (device_syspath)) ++ renderer_type = PLY_RENDERER_TYPE_SIMPLEDRM; ++ else ++ renderer_type = PLY_RENDERER_TYPE_DRM; + } else if (strcmp (subsystem, SUBSYSTEM_FRAME_BUFFER) == 0) { + ply_trace ("found frame buffer device %s", device_path); + if (!fb_device_has_drm_device (manager, device)) +@@ -446,7 +450,8 @@ create_devices_for_udev_device (ply_device_manager_t *manager, + terminal, + renderer_type); + if (created) { +- if (renderer_type == PLY_RENDERER_TYPE_DRM) ++ if (renderer_type == PLY_RENDERER_TYPE_DRM || ++ renderer_type == PLY_RENDERER_TYPE_SIMPLEDRM) + manager->found_drm_device = 1; + if (renderer_type == PLY_RENDERER_TYPE_FRAME_BUFFER) + manager->found_fb_device = 1; +diff --git a/src/libply-splash-core/ply-renderer.c b/src/libply-splash-core/ply-renderer.c +index 40a2c813..6a7aff96 100644 +--- a/src/libply-splash-core/ply-renderer.c ++++ b/src/libply-splash-core/ply-renderer.c +@@ -269,6 +269,7 @@ ply_renderer_open (ply_renderer_t *renderer) + { + { PLY_RENDERER_TYPE_X11, PLYMOUTH_PLUGIN_PATH "renderers/x11.so" }, + { PLY_RENDERER_TYPE_DRM, PLYMOUTH_PLUGIN_PATH "renderers/drm.so" }, ++ { PLY_RENDERER_TYPE_SIMPLEDRM, PLYMOUTH_PLUGIN_PATH "renderers/drm.so" }, + { PLY_RENDERER_TYPE_FRAME_BUFFER, PLYMOUTH_PLUGIN_PATH "renderers/frame-buffer.so" }, + { PLY_RENDERER_TYPE_NONE, NULL } + }; +diff --git a/src/libply-splash-core/ply-renderer.h b/src/libply-splash-core/ply-renderer.h +index 5fbf819d..34ff5886 100644 +--- a/src/libply-splash-core/ply-renderer.h ++++ b/src/libply-splash-core/ply-renderer.h +@@ -41,6 +41,7 @@ typedef enum + PLY_RENDERER_TYPE_NONE = -1, + PLY_RENDERER_TYPE_AUTO, + PLY_RENDERER_TYPE_DRM, ++ PLY_RENDERER_TYPE_SIMPLEDRM, + PLY_RENDERER_TYPE_FRAME_BUFFER, + PLY_RENDERER_TYPE_X11 + } ply_renderer_type_t; +-- +2.45.1 + +From 188a4393b11fdb25f1fcc7e1ca763d62374b3d70 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 4 Jun 2024 22:05:20 +0200 +Subject: [PATCH 4/9] ply-renderer: Add ply_renderer_get_type () + +Add a ply_renderer_get_type () helper function to get the type of +a renderer. +--- + src/libply-splash-core/ply-renderer.c | 6 ++++++ + src/libply-splash-core/ply-renderer.h | 1 + + 2 files changed, 7 insertions(+) + +diff --git a/src/libply-splash-core/ply-renderer.c b/src/libply-splash-core/ply-renderer.c +index 6a7aff96..61c59ccc 100644 +--- a/src/libply-splash-core/ply-renderer.c ++++ b/src/libply-splash-core/ply-renderer.c +@@ -102,6 +102,12 @@ ply_renderer_get_device_name (ply_renderer_t *renderer) + return renderer->device_name; + } + ++ply_renderer_type_t ++ply_renderer_get_type (ply_renderer_t *renderer) ++{ ++ return renderer->type; ++} ++ + static bool + ply_renderer_load_plugin (ply_renderer_t *renderer, + const char *module_path) +diff --git a/src/libply-splash-core/ply-renderer.h b/src/libply-splash-core/ply-renderer.h +index 34ff5886..cfd4f2dd 100644 +--- a/src/libply-splash-core/ply-renderer.h ++++ b/src/libply-splash-core/ply-renderer.h +@@ -63,6 +63,7 @@ void ply_renderer_activate (ply_renderer_t *renderer); + void ply_renderer_deactivate (ply_renderer_t *renderer); + bool ply_renderer_is_active (ply_renderer_t *renderer); + const char *ply_renderer_get_device_name (ply_renderer_t *renderer); ++ply_renderer_type_t ply_renderer_get_type (ply_renderer_t *renderer); + ply_list_t *ply_renderer_get_heads (ply_renderer_t *renderer); + ply_pixel_buffer_t *ply_renderer_get_buffer_for_head (ply_renderer_t *renderer, + ply_renderer_head_t *head); +-- +2.45.1 + +From 9096b304f6bec090ed53aa280f234c2b4fd18828 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 5 Jun 2024 21:31:55 +0200 +Subject: [PATCH 5/9] ply-device-manager: Skip /dev/dri/render nodes + +DRM render nodes do not support KMS and trying to probe them just +slows things down, so skip them. +--- + src/libply-splash-core/ply-device-manager.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 256b38d0..51990b7c 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -403,6 +403,10 @@ create_devices_for_udev_device (ply_device_manager_t *manager, + ply_trace ("ignoring since we only handle SimpleDRM devices after timeout"); + return false; + } ++ if (ply_string_has_prefix (device_path, "/dev/dri/render")) { ++ ply_trace ("ignoring since it is a render node"); ++ return false; ++ } + ply_trace ("found DRM device %s", device_path); + if (syspath_is_simpledrm (device_syspath)) + renderer_type = PLY_RENDERER_TYPE_SIMPLEDRM; +-- +2.45.1 + +From eb5abda0c2fbcd88892f2fbd346a1ac2413cc8ad Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 5 Jun 2024 21:38:43 +0200 +Subject: [PATCH 6/9] ply-device-manager: Move local_console_terminal handling + for DRM/FB renderers + +create_devices_for_terminal_and_renderer_type () only ever gets called with +a NULL terminal parameter when create_devices_for_udev_device () is calling +it to create a DRM or FB renderer. + +Move the use of local_console_terminal as terminal for the first DRM / FB +renderer created from create_devices_for_udev_device () to +create_devices_for_terminal_and_renderer_type () with an extra !terminal +check. + +This is a preparation patch for fixing an issue where the local_console +is managed by a simpledrm renderer and the remove event for that gets +processed after the add event of the normal drm device which leaves +the local_console unmanaged breaking legacy input support. +--- + src/libply-splash-core/ply-device-manager.c | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 51990b7c..65504e93 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -441,17 +441,9 @@ create_devices_for_udev_device (ply_device_manager_t *manager, + } + + if (renderer_type != PLY_RENDERER_TYPE_NONE) { +- ply_terminal_t *terminal = NULL; +- +- if (!manager->local_console_managed && +- manager->local_console_terminal != NULL && +- ply_terminal_is_vt (manager->local_console_terminal)) { +- terminal = manager->local_console_terminal; +- } +- + created = create_devices_for_terminal_and_renderer_type (manager, + device_path, +- terminal, ++ NULL, + renderer_type); + if (created) { + if (renderer_type == PLY_RENDERER_TYPE_DRM || +@@ -1105,6 +1097,11 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager, + return true; + } + ++ if (!terminal && !manager->local_console_managed && ++ manager->local_console_terminal != NULL && ++ ply_terminal_is_vt (manager->local_console_terminal)) ++ terminal = manager->local_console_terminal; ++ + ply_trace ("creating devices for %s (renderer type: %u) (terminal: %s)", + device_path ? : "", renderer_type, terminal ? ply_terminal_get_name (terminal) : "none"); + +-- +2.45.1 + +From 8c0d5965030aae11249cbe1e42decc0654005c39 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 5 Jun 2024 21:52:19 +0200 +Subject: [PATCH 7/9] ply-device-manager: Remove simpledrm renderers before + adding normal drm renderers + +udev remove events for simpledrm udev devices may arrive after the udev add +event for a normal drm udev device which is replacing the simpledrm device. + +When the local_console is managed by a simpledrm renderer and the remove +event for the simpledrm renderer is received after the add event of +the normal drm device, the local_console is left unmanaged breaking legacy +input support. + +When this scenario gets hit it breaks entering disk unlock passwords. + +Add code to remove simpledrm renderers before adding normal drm renderers +to avoid this. +--- + src/libply-splash-core/ply-device-manager.c | 24 +++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 65504e93..1c9560d7 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -1080,6 +1080,18 @@ create_text_displays_for_terminal (ply_device_manager_t *manager, + manager->text_display_added_handler (manager->event_handler_data, display); + } + ++static void ++free_simpledrm_renderer (char *device_path, ++ ply_renderer_t *renderer, ++ ply_device_manager_t *manager) ++{ ++ if (ply_renderer_get_type (renderer) != PLY_RENDERER_TYPE_SIMPLEDRM) ++ return; ++ ++ ply_trace ("removing simpledrm renderer %s", device_path); ++ free_devices_from_device_path (manager, device_path, true); ++} ++ + static bool + create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager, + const char *device_path, +@@ -1097,6 +1109,18 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager, + return true; + } + ++ /* ++ * simpledrm udev remove events may arrive after normal drm device add ++ * events, leaving the local_console unmanaged breaking legacy input. ++ * Remove simpledrm renderers before adding drm renderers to avoid this. ++ */ ++ if (renderer_type == PLY_RENDERER_TYPE_DRM) { ++ ply_hashtable_foreach (manager->renderers, ++ (ply_hashtable_foreach_func_t *) ++ free_simpledrm_renderer, ++ manager); ++ } ++ + if (!terminal && !manager->local_console_managed && + manager->local_console_terminal != NULL && + ply_terminal_is_vt (manager->local_console_terminal)) +-- +2.45.1 + +From 2f8b64ea4c6cefca6569ab94dc37d436a3fbf048 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 4 Jun 2024 23:07:19 +0200 +Subject: [PATCH 8/9] ply-device-manager: Create renderer for simpledrm devices + right away + +Often when plymouth starts and enumerates udev devices which are already +present at start (coldplug detection), udev is still initializing all +the devices and it reports 0 for udev_device_get_is_initialized (). + +It may take a long time for the state of the simpledrm udev device +to change to initialized and for a udev add event to be send. + +Especially when the amdgpu kernel module is involved which is very +large for a kernel module and can take op to 7 seconds to load. + +In this case it is even possible for plymouth's default DeviceTimeout +of 8 seconds to trigger before the simpledrm device is considered +initialized. See for example these lines extracted from the plymouth-debug +log attached to: https://bugzilla.redhat.com/show_bug.cgi?id=2183743 + + 00:00:02.909 ../src/libply-splash-core/ply-device-manager.c:498:create_devi: found device /sys/devices/pci0000:00/0000:00:01.0/simple-framebuffer.0/drm/card0 + 00:00:02.910 ../src/libply-splash-core/ply-device-manager.c:513:create_devi: it's not initialized + 00:00:10.917 ../src/libply-splash-core/ply-device-manager.c:1237:create_dev: Timeout elapsed, looking for devices from udev + 00:00:10.918 ../src/libply-splash-core/ply-device-manager.c:498:create_devi: found device /sys/devices/pci0000:00/0000:00:01.0/simple-framebuffer.0/drm/card0 + 00:00:10.918 ../src/libply-splash-core/ply-device-manager.c:513:create_devi: it's not initialized + +This leads to plymouth falling back to the text splash even when +plymouth.use-simpledrm is passed on the kernel commandline. + +Add a special case for simpledrm devices and add these during coldboot +even if they are not initialized yet. +--- + src/libply-splash-core/ply-device-manager.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 1c9560d7..90a60661 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -490,6 +490,7 @@ create_devices_for_subsystem (ply_device_manager_t *manager, + udev_list_entry_foreach (entry, udev_enumerate_get_list_entry (matches)){ + struct udev_device *device = NULL; + const char *path, *node; ++ int initialized; + + path = udev_list_entry_get_name (entry); + +@@ -502,10 +503,11 @@ create_devices_for_subsystem (ply_device_manager_t *manager, + + device = udev_device_new_from_syspath (manager->udev_context, path); + +- /* if device isn't fully initialized, we'll get an add event later +- */ +- if (udev_device_get_is_initialized (device)) { +- ply_trace ("device is initialized"); ++ /* If device isn't fully initialized, we'll get an add event later */ ++ initialized = udev_device_get_is_initialized (device); ++ /* Simpledrm can be handled uninitialized and this shows the splash sooner */ ++ if (initialized || syspath_is_simpledrm (path)) { ++ ply_trace ("device is initialized %d", initialized); + + node = udev_device_get_devnode (device); + if (node != NULL) { +-- +2.45.1 + +From 12fdedb4efb0b7e04c74f43917a180a20e54ea24 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 5 Jun 2024 22:07:32 +0200 +Subject: [PATCH 9/9] ply-device-manager: Make create_devices_for_subsystem () + return void + +Make create_devices_for_subsystem () return void. Its callers do not care +about the return value and currently the return value is not always correct +since if a device is found, found may later become false again if +a subsequent create_devices_for_udev_device () call fails. +--- + src/libply-splash-core/ply-device-manager.c | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 90a60661..1f41e1b2 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -458,23 +458,22 @@ create_devices_for_udev_device (ply_device_manager_t *manager, + return created; + } + +-static bool ++static void + create_devices_for_subsystem (ply_device_manager_t *manager, + const char *subsystem) + { + struct udev_enumerate *matches; + struct udev_list_entry *entry; +- bool found_device = false; + + if (strcmp (subsystem, SUBSYSTEM_INPUT) == 0) { + if (ply_kernel_command_line_has_argument ("plymouth.use-legacy-input")) { + ply_trace ("Not creating devices for subsystem " SUBSYSTEM_INPUT " because plymouth.use-legacy-input on command line"); +- return false; ++ return; + } + + if (manager->xkb_keymap == NULL) { + ply_trace ("Not creating devices for subsystem " SUBSYSTEM_INPUT " because there is no configure XKB layout"); +- return false; ++ return; + } + } + +@@ -512,7 +511,7 @@ create_devices_for_subsystem (ply_device_manager_t *manager, + node = udev_device_get_devnode (device); + if (node != NULL) { + ply_trace ("found node %s", node); +- found_device = create_devices_for_udev_device (manager, device); ++ create_devices_for_udev_device (manager, device); + } + } else { + ply_trace ("it's not initialized"); +@@ -522,8 +521,6 @@ create_devices_for_subsystem (ply_device_manager_t *manager, + } + + udev_enumerate_unref (matches); +- +- return found_device; + } + + static void +-- +2.45.1 + +From f8043095b8a2eb69b18947d925b30cee95e4c1fe Mon Sep 17 00:00:00 2001 +From: Adrian Vovk +Date: Tue, 29 Apr 2025 14:44:48 -0400 +Subject: [PATCH] Fix ABI incompatibility + +A previous commit in this patch series accidentally introduced an ABI +incompatiblity: PLY_RENRERER_TYPE_{FRAME_BUFFER,X11} changed their values. +Let's undo that. +--- + src/libply-splash-core/ply-renderer.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libply-splash-core/ply-renderer.h b/src/libply-splash-core/ply-renderer.h +index cfd4f2dd..b667ff6d 100644 +--- a/src/libply-splash-core/ply-renderer.h ++++ b/src/libply-splash-core/ply-renderer.h +@@ -41,9 +41,9 @@ typedef enum + PLY_RENDERER_TYPE_NONE = -1, + PLY_RENDERER_TYPE_AUTO, + PLY_RENDERER_TYPE_DRM, +- PLY_RENDERER_TYPE_SIMPLEDRM, + PLY_RENDERER_TYPE_FRAME_BUFFER, +- PLY_RENDERER_TYPE_X11 ++ PLY_RENDERER_TYPE_X11, ++ PLY_RENDERER_TYPE_SIMPLEDRM + } ply_renderer_type_t; + + typedef void (*ply_renderer_input_source_handler_t) (void *user_data, +-- +2.47.1 diff --git a/plymouth.spec b/plymouth.spec new file mode 100644 index 0000000..a4f035e --- /dev/null +++ b/plymouth.spec @@ -0,0 +1,849 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.6.5) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 17; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + +Summary: Graphical Boot Animation and Logger +Name: plymouth +Version: 24.004.60 +Release: %autorelease +License: GPL-2.0-or-later +URL: http://www.freedesktop.org/wiki/Software/Plymouth + +Source0: https://gitlab.freedesktop.org/plymouth/plymouth/-/archive/%{version}/%{name}-%{version}.tar.bz2 +Source2: charge.plymouth + +# Revert https://gitlab.freedesktop.org/plymouth/plymouth/-/commit/48881ba +# to fix console display on minimal installs +# https://bugzilla.redhat.com/show_bug.cgi?id=2269385 +Patch: 0001-Revert-src-Hide-console-text-when-splash-is-requeste.patch + +# https://gitlab.freedesktop.org/plymouth/plymouth/-/commit/10ac8d2dc927b112ce6aeb06bc73d9c46550954c +# Fix encryption passphrase appearing in plain text in text mode +# https://bugzilla.redhat.com/show_bug.cgi?id=2271337 +Patch: 0001-ply-boot-splash-Set-unbuffered-input-when-creating-a.patch + +# Revert patch to immediately switch to text mode on first renderer plugin error +# Fixes unwanted text mode when drm-plugin init races with simpledrm unregistration +# https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/319 +# https://bugzilla.redhat.com/show_bug.cgi?id=2270030 +Patch: 0001-ply-device-manager-Revert-Fall-back-to-text-plugin-i.patch + +# Probe simpledrm immediately instead of waiting for udev_device_get_is_initialized () +# to return true. This fixes users getting the text splash on laptops with somewhat +# slower CPUs combined with loading the amdgpu module which may take 7+ seconds +# https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/323/ +# https://bugzilla.redhat.com/show_bug.cgi?id=2183743 +# https://bugzilla.redhat.com/show_bug.cgi?id=2274770 +Patch: plymouth-24.004.60-immediately-probe-simpledrm.patch + +# Backport of upstream commit 709f21e80199ee51badff2d9b5dc6bae8af2a1a1 +# "renderers: Do not assume all keyboards have LEDs" +# This fixes: +# https://bugzilla.redhat.com/show_bug.cgi?id=2282384 +Patch: 0001-renderers-Do-not-assume-all-keyboards-have-LEDs.patch + +Patch: 0001-details-dont-duplicate-output-on-console.patch + +BuildRequires: meson +BuildRequires: system-logos +BuildRequires: gcc libtool git +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libevdev) +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(xkeyboard-config) +BuildRequires: kernel-headers +BuildRequires: libpng-devel +BuildRequires: libxslt, docbook-style-xsl +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pango-devel >= 1.21.0 +BuildRequires: cairo-devel +BuildRequires: gettext-devel +BuildRequires: intltool +# for /usr/bin/systemd-tty-ask-password-agent +BuildRequires: systemd +# for _unitdir macro +BuildRequires: systemd-rpm-macros + +Requires: %{name}-core-libs = %{version}-%{release} +Requires: %{name}-scripts = %{version}-%{release} +# For keyboard layouts +Requires: xkeyboard-config +Suggests: logrotate + +%description +Plymouth provides an attractive graphical boot animation in +place of the text messages that normally get shown. Text +messages are instead redirected to a log file for viewing +after boot. + + +%package system-theme +Summary: Plymouth default theme +Requires: plymouth(system-theme) = %{version}-%{release} + +%description system-theme +This meta-package tracks the current distribution default theme. + + +%package core-libs +Summary: Plymouth core libraries + +%description core-libs +This package contains the core libraries used by Plymouth. + + +%package graphics-libs +Summary: Plymouth graphics libraries +Requires: %{name}-core-libs = %{version}-%{release} +Requires: system-logos + +%description graphics-libs +This package contains the libraries used by graphical Plymouth splashes. + + +%package devel +Summary: Libraries and headers for writing Plymouth splash plugins +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} +Requires: pkgconfig + +%description devel +This package contains the libraries and headers needed to develop +3rd party splash plugins for Plymouth. + + +%package scripts +Summary: Plymouth related scripts +Requires: findutils, coreutils, gzip, cpio, dracut +Requires: xkeyboard-config +Requires: %{name} = %{version}-%{release} + +%description scripts +This package contains scripts that help integrate Plymouth with +the system. + + +%package plugin-label +Summary: Plymouth label plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} + +%description plugin-label +This package contains the label control plugin for Plymouth. +It provides the ability to render text on graphical boot splashes. + + +%package plugin-script +Summary: Plymouth "script" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} + +%description plugin-script +This package contains the "script" boot splash plugin for +Plymouth. It features an extensible boot splash language that +allows writing new plugins as scripts, simplifying the process +of designing custom boot splash themes. + + +%package plugin-fade-throbber +Summary: Plymouth "Fade-Throbber" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} + +%description plugin-fade-throbber +This package contains the "Fade-In" boot splash plugin for +Plymouth. It features a centered image that fades in and out +while other images pulsate around during system boot up. + + +%package plugin-space-flares +Summary: Plymouth "space-flares" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} +Requires: plymouth-plugin-label = %{version}-%{release} + +%description plugin-space-flares +This package contains the "space-flares" boot splash plugin for +Plymouth. It features a corner image with animated flares. + + +%package plugin-two-step +Summary: Plymouth "two-step" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} +Requires: plymouth-plugin-label = %{version}-%{release} +# Spinifinity like themes should now use two-step instead of throbgress +# No provides, the throbgress plugin has been removed upstream +Obsoletes: %{name}-plugin-throbgress < %{version}-%{release} + +%description plugin-two-step +This package contains the "two-step" boot splash plugin for +Plymouth. It features a two phased boot process that starts with +a progressing animation synced to boot time and finishes with a +short, fast one-shot animation. + +# Don't build charge theme in ELN/RHEL as it's Fedora specific +%if ! 0%{?rhel} +%package theme-charge +Summary: Plymouth "Charge" plugin +Requires: %{name}-plugin-two-step = %{version}-%{release} +Requires: fedora-logos-classic +Requires(post): plymouth-scripts + +%description theme-charge +This package contains the "charge" boot splash theme for +Plymouth. It features the shadowy hull of a Fedora logo charge up and +and finally burst into full form. +%endif + +%package theme-fade-in +Summary: Plymouth "Fade-In" theme +Requires: %{name}-plugin-fade-throbber = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-fade-in +This package contains the "Fade-In" boot splash theme for +Plymouth. It features a centered logo that fades in and out +while stars twinkle around the logo during system boot up. + + +%package theme-script +Summary: Plymouth "Script" plugin +Requires: %{name}-plugin-script = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-script +This package contains the "script" boot splash theme for +Plymouth. It it is a simple example theme the uses the "script" +plugin. + + +%package theme-solar +Summary: Plymouth "Solar" theme +Requires: %{name}-plugin-space-flares = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-solar +This package contains the "Solar" boot splash theme for +Plymouth. It features a blue flamed sun with animated solar flares. + + +%package theme-spinfinity +Summary: Plymouth "Spinfinity" theme +Requires: %{name}-plugin-two-step = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-spinfinity +This package contains the "Spinfinity" boot splash theme for +Plymouth. It features a centered logo and animated spinner that +spins in the shape of an infinity sign. + + +%package theme-spinner +Summary: Plymouth "Spinner" theme +Requires: %{name}-plugin-two-step = %{version}-%{release} +%if 0%{?rhel} > 9 +Requires: redhat-mono-vf-fonts +Requires: redhat-text-vf-fonts +%else +Requires: font(cantarell) font(cantarelllight) +%endif +Requires(post): plymouth-scripts +Provides: plymouth(system-theme) = %{version}-%{release} + +%description theme-spinner +This package contains the "spinner" boot splash theme for +Plymouth. It features a small spinner on a dark background. + + +%prep +%autosetup -p1 +# Change the default theme +sed -i -e 's/spinner/bgrt/g' src/plymouthd.defaults + +%if 0%{?rhel} > 9 +find -type f -exec sed -i -e 's/Cantarell/Red Hat Text/g' {} \; +%endif + +%build +%meson -Dtracing=true \ + -Dlogo=%{_datadir}/pixmaps/system-logo-white.png \ + -Dbackground-start-color-stop=0x0073B3 \ + -Dbackground-end-color-stop=0x00457E \ + -Dbackground-color=0x3391cd +%meson_build + +%install +%meson_install + +%find_lang %{name} +find $RPM_BUILD_ROOT -name '*.la' -delete + +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/plymouth + +%if ! 0%{?rhel} +# Add charge, our old default +mkdir -p $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge +cp %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge +cp $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow/{box,bullet,entry,lock}.png $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge +%endif + +# Drop glow, it's not very Fedora-y +rm -rf $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow + + +%ldconfig_scriptlets core-libs + +%ldconfig_scriptlets graphics-libs + +%if ! 0%{?rhel} +%postun theme-charge +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +if [ $1 -eq 0 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "charge" ]; then + %{_sbindir}/plymouth-set-default-theme --reset + fi +fi +%endif + +%postun theme-fade-in +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +if [ $1 -eq 0 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "fade-in" ]; then + %{_sbindir}/plymouth-set-default-theme --reset + fi +fi + +%postun theme-solar +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +if [ $1 -eq 0 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "solar" ]; then + %{_sbindir}/plymouth-set-default-theme --reset + fi +fi + +%postun theme-spinfinity +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +if [ $1 -eq 0 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinfinity" ]; then + %{_sbindir}/plymouth-set-default-theme --reset + fi +fi + +%post theme-spinner +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +# On upgrades replace charge with the new bgrt default +if [ $1 -eq 2 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "charge" ]; then + %{_sbindir}/plymouth-set-default-theme bgrt + fi +fi + +%postun theme-spinner +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +if [ $1 -eq 0 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "bgrt" -o \ + "$(%{_sbindir}/plymouth-set-default-theme)" == "spinner" ]; then + %{_sbindir}/plymouth-set-default-theme --reset + fi +fi + + +%files -f %{name}.lang +%license COPYING +%doc AUTHORS README.md +%dir %{_datadir}/plymouth +%dir %{_datadir}/plymouth/themes +%dir %{_datadir}/plymouth/themes/details +%dir %{_datadir}/plymouth/themes/text +%dir %{_libexecdir}/plymouth +%dir %{_localstatedir}/lib/plymouth +%dir %{_libdir}/plymouth/renderers +%dir %{_sysconfdir}/plymouth +%config(noreplace) %{_sysconfdir}/plymouth/plymouthd.conf +%config(noreplace) %{_sysconfdir}/logrotate.d/bootlog +%{_sbindir}/plymouthd +%{_libexecdir}/plymouth/plymouthd-fd-escrow +%{_bindir}/plymouth +%{_libdir}/plymouth/details.so +%{_libdir}/plymouth/text.so +%{_libdir}/plymouth/tribar.so +%{_datadir}/plymouth/themes/details/details.plymouth +%{_datadir}/plymouth/themes/text/text.plymouth +%{_datadir}/plymouth/themes/tribar/tribar.plymouth +%{_datadir}/plymouth/plymouthd.defaults +%{_localstatedir}/spool/plymouth +%{_mandir}/man?/* +%ghost %verify(not mode) %{_localstatedir}/lib/plymouth/boot-duration +%{_unitdir}/ + +%files devel +%{_libdir}/libply.so +%{_libdir}/libply-splash-core.so +%{_libdir}/libply-boot-client.so +%{_libdir}/libply-splash-graphics.so +%{_libdir}/pkgconfig/ply-splash-core.pc +%{_libdir}/pkgconfig/ply-splash-graphics.pc +%{_libdir}/pkgconfig/ply-boot-client.pc +%{_libdir}/plymouth/renderers/x11* +%{_includedir}/plymouth-1 + +%files core-libs +%{_libdir}/libply.so.* +%{_libdir}/libply-splash-core.so.* +%{_libdir}/libply-boot-client.so.* +%dir %{_libdir}/plymouth + +%files graphics-libs +%{_libdir}/libply-splash-graphics.so.* +%{_libdir}/plymouth/renderers/drm* +%{_libdir}/plymouth/renderers/frame-buffer* + +%files scripts +%{_sbindir}/plymouth-set-default-theme +%{_libexecdir}/plymouth/plymouth-update-initrd +%{_libexecdir}/plymouth/plymouth-generate-initrd +%{_libexecdir}/plymouth/plymouth-populate-initrd + +%files plugin-label +%{_libdir}/plymouth/label-freetype.so +%{_libdir}/plymouth/label-pango.so + +%files plugin-script +%{_libdir}/plymouth/script.so + +%files plugin-fade-throbber +%{_libdir}/plymouth/fade-throbber.so + +%files plugin-space-flares +%{_libdir}/plymouth/space-flares.so + +%files plugin-two-step +%{_libdir}/plymouth/two-step.so + +%if ! 0%{?rhel} +%files theme-charge +%{_datadir}/plymouth/themes/charge +%endif + +%files theme-fade-in +%{_datadir}/plymouth/themes/fade-in + +%files theme-script +%{_datadir}/plymouth/themes/script + +%files theme-solar +%{_datadir}/plymouth/themes/solar + +%files theme-spinfinity +%{_datadir}/plymouth/themes/spinfinity + +%files theme-spinner +# bgrt is a variant of spinner with different settings in its .plymouth file +%{_datadir}/plymouth/themes/bgrt +%{_datadir}/plymouth/themes/spinner + +%files system-theme + +%changelog +## START: Generated by rpmautospec +* Sat Jun 14 2025 Adrian Vovk - 24.004.60-17 +- Fix duplicated dmesg output on boot and shutdown + +* Tue Apr 29 2025 Anisse Astier - 24.004.60-16 +- Backport upstream crash fix (rhbz#2282384) + +* Tue Apr 29 2025 Hans de Goede - 24.004.60-15 +- Probe simpledrm immediately (rhbz#2183743, rhbz#2274770) + +* Fri Apr 18 2025 Yaakov Selkowitz - 24.004.60-14 +- Fix redhat-fonts dependencies + +* Tue Oct 29 2024 Troy Dawson - 24.004.60-13 +- Bump release for October 2024 mass rebuild: + +* Mon Jun 24 2024 Troy Dawson - 24.004.60-12 +- Bump release for June 2024 mass rebuild + +* Tue May 21 2024 Ray Strode - 24.004.60-11 +- Add dep on graphics libs to -devel + +* Tue May 21 2024 Tomas Pelka - 24.004.60-10 +- adding gating + +* Wed May 15 2024 Ray Strode - 24.004.60-9 +- Move font substitution to %%prep where it belongs + +* Wed May 15 2024 Ray Strode - 24.004.60-8 +- Use Red Hat Text font in RHEL + +* Wed May 15 2024 Hans de Goede - 24.004.60-7 +- Revert patch to immediately switch to text mode on first renderer plugin + error (#2270030) + +* Wed May 15 2024 Adam Williamson - 24.004.60-6 +- Backport upstream 10ac8d2 to fix passphrase appearing in text mode + (#2271337) + +* Wed May 15 2024 Adam Williamson - 24.004.60-5 +- Revert upstream 48881ba to fix minimal installs (#2269385) + +* Fri Feb 16 2024 Yaakov Selkowitz - 24.004.60-4 +- Generalize system-logos build dependency + +* Thu Jan 25 2024 Fedora Release Engineering - 24.004.60-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 24.004.60-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jan 04 2024 Ray Strode - 24.004.60-1 +- Update to 24.004.60 + +* Tue Jan 02 2024 Miroslav Suchý - 23.360.11-2 +- Migrate to SPDX license + +* Tue Dec 26 2023 Ray Strode - 23.360.11-1 +- Update to 23.360.11 + +* Tue Dec 26 2023 Ray Strode - 23.358.4-6 +- Various fixes for more minimal installs + +* Mon Dec 25 2023 Ray Strode - 23.358.4-5 +- Fix systemd integration + +* Mon Dec 25 2023 Ray Strode - 23.358.4-4 +- Add xkeyboard-config requires for plymouth-scripts too + +* Mon Dec 25 2023 Ray Strode - 23.358.4-3 +- Add xkeyboard-config requires + +* Sun Dec 24 2023 Ray Strode - 23.358.4-2 +- New sources + +* Sun Dec 24 2023 Ray Strode - 23.358.4-1 +- Update to 23.358.4 (fixes initramfs crashers) + +* Fri Dec 22 2023 Ray Strode - 23.356.9-4 +- Add new build requires + +* Fri Dec 22 2023 Ray Strode - 23.356.9-3 +- Upload new sources + +* Fri Dec 22 2023 Ray Strode - 23.356.9-2 +- Add fedora-logos buildrequires + +* Fri Dec 22 2023 Ray Strode - 23.356.9-1 +- Update to 23.356.9 + +* Tue Nov 21 2023 Tomas Popela - 22.02.122-7 +- Disable charge theme in ELN/RHEL 10 + +* Fri Jul 21 2023 Fedora Release Engineering - 22.02.122-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Fri Jan 20 2023 Fedora Release Engineering - 22.02.122-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Sep 28 2022 Hans de Goede - 22.02.122-4 +- Fix build now that systemd-devel no longer brings in ystemd + +* Wed Sep 28 2022 Hans de Goede - 22.02.122-3 +- Fix SimpleDRM sometimes not being ignored (rhbz#2127663) + +* Fri Jul 22 2022 Fedora Release Engineering - 22.02.122-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Mar 07 2022 Hans de Goede - 22.02.122-1 +- New upstream release 22.02.122 (#2039427) + +* Fri Jan 21 2022 Fedora Release Engineering - 0.9.5-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Dec 06 2021 Hans de Goede - 0.9.5-4 +- Add "Requires: fedora-logos-classic" to the plymouth-theme-charge package + +* Fri Jul 23 2021 Fedora Release Engineering - 0.9.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Mar 31 2021 Hans de Goede - 0.9.5-2 +- New git snapshot Fixes 1933378 - Bootsplash doesn't always fully clear on + boot to console Fixes 1941329 - Flickering plymouth on shutdown/reboot + Prune spec-file changelog a bit + +* Tue Mar 23 2021 Hans de Goede - 0.9.5-1 +- Update to 0.9.5 + a bunch of extra fixes from git (new upstream git + snapshot) Fixes 1896929 - systemd complains about Unit configured to use + KillMode=none + +* Wed Jan 27 2021 Fedora Release Engineering - 0.9.4-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jan 08 2021 Tom Stellard - 0.9.4-18 +- Add BuildRequires: make + +* Sat Aug 01 2020 Fedora Release Engineering - 0.9.4-17 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 0.9.4-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Mar 25 2020 Hans de Goede - 0.9.4-15 +- New upstream git snapshot Add RemainAfterExit=yes to plymouth's systemd + service files (rhbz#1807771) Fix the spinner / animation missing on + shutdown and reboot + +* Mon Mar 09 2020 Hans de Goede - 0.9.4-14 +- Add patches fixing crash on monitor hot(un)plug (rhbz#1809681) Add + patches fixing delay between gdm telling us to deactivate and us telling + gdm it is ok to continue Drop plymouth-plugin-throbgress sub-package, the + spinfinity theme now uses the two-step plugin + +* Thu Jan 30 2020 Fedora Release Engineering - 0.9.4-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Oct 22 2019 Hans de Goede - 0.9.4-12 +- Drop our private plymouth-update-initrd copy, it is identical to upstream + New upstream git snapshot, with the following fixes: Tweaks to the + spinner/bgrt themes to match the gdm/gnome-shell lock screen password + entry style tweaks done in GNOME 3.34 Move the keyboard layout and + capslock indicator closer to the text field Fix flickering below spinner + on hidpi displays: + https://gitlab.freedesktop.org/plymouth/plymouth/issues/83 Add logrotate + file for /var/log/boot.log so that it does not grow endlessly: + https://gitlab.freedesktop.org/plymouth/plymouth/issues/31 Some bgrt + fixes for devices with non-upright mounted LCD panels + +* Tue Oct 01 2019 Hans de Goede - 0.9.4-11 +- We are carrying so much patches from upstream that we are practically + following upstream master, switch to a git snapshot Add keyboard layout + and capslock state indicator support (rhbz#825406) Fix "Installing + Updates..." text being rendered all garbled on devices where the panel is + mounted 90 degrees rotated (rhbz#1753418) + +* Sat Sep 07 2019 Hans de Goede - 0.9.4-10 +- Add a patch fixing issues when using cards which default to the radeon + kms driver with the amdgpu kms driver (rhbz#1490490) Extend default + DeviceTimeout to 8 seconds (rhbz#1737221) + +* Fri Jul 26 2019 Fedora Release Engineering - 0.9.4-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Jul 19 2019 Hans de Goede - 0.9.4-8 +- One more patch for dealing with some devices with a non-upright mounted + LCD-panel (rhbz#1730783) + +* Wed Jun 12 2019 Hans de Goede - 0.9.4-7 +- Add patches from upstream for: Fix failing to pick the native monitor + mode starting with kernel 5.2 Fix firmware bootsplash support for devices + which use the new (in ACPI 6.2) rotation bits in the BGRT header Add + support for firmware-upgrade mode + +* Mon Mar 25 2019 Hans de Goede - 0.9.4-6 +- Update bgrt/spinner background to solid black to make the experience on + systems where we do not show the firmware boot-splash consistent with + systems where we do show the firmware boot-splash Update translations + +* Mon Mar 04 2019 Hans de Goede - 0.9.4-5 +- Add translations for the new spinner/bgrt offline-updates splash + +* Wed Feb 13 2019 Hans de Goede - 0.9.4-4 +- Add patches from upstream for: Monitor hotplug support, this fixes issues + with monitors on DP-MST docs sometimes not lighting up (rhbz#1652279) + Adding support for using the firmware's bootsplash as theme background + New bgrt theme which implements the boot-theme design from: + https://wiki.gnome.org/Design/OS/BootProgress Including the new theming + for offline-updates shown there Make the bgrt theme the new default and + upgrade systems which are using the charge theme, which is the old + default to use the new bgrt theme Cleanup the spec-file a bit: Remove + unused / unnecessary %%global variables Sort the sections for the various + plugins and themes alphabetically Simplify theme filelists + +* Sat Feb 02 2019 Fedora Release Engineering - 0.9.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jan 22 2019 Igor Gnatenko - 0.9.4-2 +- Remove obsolete ldconfig scriptlets + +* Mon Nov 05 2018 Ray Strode - 0.9.4-1 +- Update to 0.9.4 + +* Thu Oct 04 2018 Hans de Goede - 0.9.3-28 +- Add patches from upstream to fix the disk unlock screen sometimes having + a very low resolution on UEFI machines: + https://gitlab.freedesktop.org/plymouth/plymouth/issues/68 + +* Mon Aug 06 2018 Hans de Goede - 0.9.3-27 +- Update patches for CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER + interaction to the latest patches from master, this fixes the transition + from plymouth to gdm being non smooth Drop unused default-boot-duration + file (rhbz#1456010) + +* Thu Aug 02 2018 Peter Robinson - 0.9.3-26 +- Drop groups in spec, Drop requires on initscripts (rhbz 1592383) long + migrated to systemd and original bug where it was added (461322) no + longer relevant + +* Fri Jul 13 2018 Fedora Release Engineering - 0.9.3-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jul 09 2018 Igor Gnatenko - 0.9.3-24 +- add BuildRequires: gcc + +* Mon Jul 02 2018 Hans de Goede - 0.9.3-23 +- Add patches from upstream fixing details view on kernels build with + CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER + +* Thu Jun 07 2018 Adam Williamson - 0.9.3-22 +- Move frame-buffer back to subpackage, patch bugs + +* Mon Jun 04 2018 Adam Williamson - 0.9.3-21 +- Move frame-buffer and drm renderers back to main package + +* Fri Jun 01 2018 Adam Williamson - 0.9.3-19 +- Move frame-buffer renderer to graphics-libs (#1518464) + +* Tue Apr 17 2018 Hans de Goede - 0.9.3-18 +- Merge with F28 branch, fix FTBFS +- Sync in changes which were only added to the F28 branch +- Add a patch from upstream git to fix FTBFS + +* Tue Apr 17 2018 Hans de Goede - 0.9.3-17 +- Add patches from upstream git for devices with non upright mounted LCD + panels https://bugs.freedesktop.org/show_bug.cgi?id=104714 + +* Tue Mar 27 2018 Colin Walters - 0.9.3-16 +- Drop default boot-duration + +* Fri Feb 09 2018 Igor Gnatenko - 0.9.3-15 +- Escape macros in %%changelog + +* Fri Feb 09 2018 Fedora Release Engineering - 0.9.3-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Nov 28 2017 Ray Strode - 0.9.3-13 +- Bump ShowDelay back up to 5 + +* Tue Nov 28 2017 Björn Esser - 0.9.3-12 +- Fix invalid date in %%%%changelog + +* Tue Nov 28 2017 Björn Esser - 0.9.3-11 +- Update to 0.9.3 release Reduce ShowDelay to 0 (rhbz#1518037) Change + %%%%define to %%%%global + +* Thu Aug 03 2017 Fedora Release Engineering - 0.9.3-10 +- Rebuilt for + https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 0.9.3-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 0.9.3-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Jun 20 2016 Ray Strode - 0.9.3-7 +- misc fixes +- Fix color palette issue +- Fix splash at shutdown (if shutdown takes longer than 5 secs) +- Make sure text based splashes update terminal size when fbcon loads + +* Thu Jun 16 2016 Ray Strode - 0.9.3-6 +- really (?) fix password prompt on text plugin + +* Tue Jun 14 2016 Ray Strode - 0.9.3-5 +- fix password prompt on text plugin + +* Wed Jun 08 2016 Ray Strode - 0.9.3-4 +- new release versioning scheme to be more guideliney + +* Tue Jun 07 2016 Ray Strode - 0.9.3-3 +- Update to latest git snapshot +- Fixes use after free Related: #1342673 + +* Tue May 24 2016 Ray Strode - 0.9.3-2 +- update build requires + +* Tue May 24 2016 Ray Strode - 0.9.3-1 +- Update to latest git snapshot + +* Thu Feb 04 2016 Fedora Release Engineering - 0.8.9-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Nov 16 2015 Ray Strode - 0.8.9-22 +- fix plymouth-update-initrd + +* Mon Nov 02 2015 Ray Strode - 0.8.9-21 +- Fix updates with script and spinner themes + +* Mon Aug 24 2015 Kalev Lember - 0.8.9-20 +- Fix a typo in Requires + +* Mon Aug 24 2015 Peter Robinson - 0.8.9-19 +- fix confusion between scripts and plugin-scripts sub package + +* Mon Aug 24 2015 Peter Robinson - 0.8.9-18 +- Fix Requires for various libs subpackages + +* Sun Aug 23 2015 Peter Robinson - 0.8.9-17 +- Use %%%%license, Cleanup spec, Move drm render driver to graphics-libs + sub package + +* Thu Jun 18 2015 Dennis Gilmore - 0.8.9-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed May 20 2015 Will Woods - 0.8.9-15 +- add patch for #1223344 + +* Sat Feb 21 2015 Till Maas - 0.8.9-14 +- Rebuilt for Fedora 23 Change + +* Sun Aug 17 2014 Peter Robinson - 0.8.9-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jun 13 2014 Adam Jackson - 0.8.9-12 +- fix changelog date warnings + +* Sat Jun 07 2014 Dennis Gilmore - 0.8.9-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat May 31 2014 Peter Robinson - 0.8.9-10 +- Move system-logos dep to graphics-libs (no use on text/serial console + minimal installs) + +* Thu Feb 20 2014 Ray Strode - 0.8.9-9 +- Include patch + +* Thu Feb 20 2014 Ray Strode - 0.8.9-8 +- Fix splash after change in /sys/class/tty/console/active + +* Thu Oct 31 2013 Ray Strode - 0.8.9-7 +- Don't timeout plymouth quit waiting + +* Wed Oct 16 2013 Ray Strode - 0.8.9-6 +- need an explicit --without-rhgb-compat-link + +* Wed Oct 16 2013 Ray Strode - 0.8.9-5 +- drop rhgb-client compat link + +* Sun Oct 06 2013 Kalev Lember - 0.8.9-4 +- Make sure the release number compares higher than the previous builds + +* Wed Aug 14 2013 Ray Strode - 0.8.9-3 +- Update to snapshot to fix system units + +* Sun Aug 04 2013 Dennis Gilmore - 0.8.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Mar 26 2013 Ray Strode - 0.8.9-1 +- Update to snapshot to fix systemd vconsole issue + +* Thu Feb 21 2013 Peter Robinson - 0.8.8-6 +- RPMAUTOSPEC: unresolvable merge +## END: Generated by rpmautospec diff --git a/sources b/sources new file mode 100644 index 0000000..d1914a7 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (plymouth-24.004.60.tar.bz2) = c6787ae5705d6954a73ef7f3f65cecf3d36af1bb6b6fbfc68871062cace71245a569b1b5fe8b8014418c2657739a413bf9eb65f0bc3e6e293505d1052c9a5352