Compare commits

...

1 Commits
c8 ... c10

Author SHA1 Message Date
5dfe64bd91 import CS plymouth-24.004.60-17.el10 2025-11-11 08:58:16 +00:00
19 changed files with 1873 additions and 3630 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/plymouth-1e36e303e08ba425fecbcff4dde22c8ee936638c.tar.bz2
plymouth-24.004.60.tar.bz2

View File

@ -1 +0,0 @@
7847967f397a536ccf5fb2d43aa561ac5e5dff6c SOURCES/plymouth-1e36e303e08ba425fecbcff4dde22c8ee936638c.tar.bz2

View File

@ -0,0 +1,58 @@
From e6f09b05707be8aec488d757c5abe56cb3060a75 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
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

View File

@ -0,0 +1,209 @@
From 2446472f9ac9246f2ee25a92e8ebb17c54b923bd Mon Sep 17 00:00:00 2001
From: Adrian Vovk <adrianvovk@gmail.com>
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 <adrianvovk@gmail.com>
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 <adrianvovk@gmail.com>
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

View File

@ -0,0 +1,37 @@
From 10ac8d2dc927b112ce6aeb06bc73d9c46550954c Mon Sep 17 00:00:00 2001
From: n3rdopolis <bluescreen_avenger@verizon.net>
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

View File

@ -0,0 +1,52 @@
From 4a8c0a4231d35ac060f41b582596684cfba7c9ae Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
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

View File

@ -0,0 +1,108 @@
From 709f21e80199ee51badff2d9b5dc6bae8af2a1a1 Mon Sep 17 00:00:00 2001
From: n3rdopolis <bluescreen_avenger@verizon.net>
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

View File

@ -1,871 +0,0 @@
From f55051678452647e035853ee94a89cb54ea2aa4a Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
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 <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 <from> <to>
# Prints the relative path, when creating a symlink to <to> from <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 <signal.h>
+#include <unistd.h>
+
+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

View File

@ -1,142 +0,0 @@
From b9faf90fe5939fedfd710e1e8385f4d5c12e1df7 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
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

View File

@ -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

View File

@ -1,8 +0,0 @@
/var/log/boot.log
{
missingok
daily
copytruncate
rotate 7
notifempty
}

View File

@ -1,2 +0,0 @@
#!/bin/bash
dracut -f

View File

@ -1,154 +0,0 @@
From f72cdd6969c483d7811e5684fa3143deff55a0c7 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
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 <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 <from> <to>
# Prints the relative path, when creating a symlink to <to> from <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

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -0,0 +1,556 @@
From 64379c1100a0177f52e130601d44a7ffe0fdedf1 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
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 <adrianvovk@gmail.com>
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

849
plymouth.spec Normal file
View File

@ -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 <adrianvovk@gmail.com> - 24.004.60-17
- Fix duplicated dmesg output on boot and shutdown
* Tue Apr 29 2025 Anisse Astier <anisse@astier.eu> - 24.004.60-16
- Backport upstream crash fix (rhbz#2282384)
* Tue Apr 29 2025 Hans de Goede <hdegoede@redhat.com> - 24.004.60-15
- Probe simpledrm immediately (rhbz#2183743, rhbz#2274770)
* Fri Apr 18 2025 Yaakov Selkowitz <yselkowi@redhat.com> - 24.004.60-14
- Fix redhat-fonts dependencies
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 24.004.60-13
- Bump release for October 2024 mass rebuild:
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 24.004.60-12
- Bump release for June 2024 mass rebuild
* Tue May 21 2024 Ray Strode <rstrode@redhat.com> - 24.004.60-11
- Add dep on graphics libs to -devel
* Tue May 21 2024 Tomas Pelka <tpelka@redhat.com> - 24.004.60-10
- adding gating
* Wed May 15 2024 Ray Strode <rstrode@redhat.com> - 24.004.60-9
- Move font substitution to %%prep where it belongs
* Wed May 15 2024 Ray Strode <rstrode@redhat.com> - 24.004.60-8
- Use Red Hat Text font in RHEL
* Wed May 15 2024 Hans de Goede <hdegoede@redhat.com> - 24.004.60-7
- Revert patch to immediately switch to text mode on first renderer plugin
error (#2270030)
* Wed May 15 2024 Adam Williamson <awilliam@redhat.com> - 24.004.60-6
- Backport upstream 10ac8d2 to fix passphrase appearing in text mode
(#2271337)
* Wed May 15 2024 Adam Williamson <awilliam@redhat.com> - 24.004.60-5
- Revert upstream 48881ba to fix minimal installs (#2269385)
* Fri Feb 16 2024 Yaakov Selkowitz <yselkowi@redhat.com> - 24.004.60-4
- Generalize system-logos build dependency
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 24.004.60-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 24.004.60-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Jan 04 2024 Ray Strode <rstrode@redhat.com> - 24.004.60-1
- Update to 24.004.60
* Tue Jan 02 2024 Miroslav Suchý <msuchy@redhat.com> - 23.360.11-2
- Migrate to SPDX license
* Tue Dec 26 2023 Ray Strode <rstrode@redhat.com> - 23.360.11-1
- Update to 23.360.11
* Tue Dec 26 2023 Ray Strode <rstrode@redhat.com> - 23.358.4-6
- Various fixes for more minimal installs
* Mon Dec 25 2023 Ray Strode <rstrode@redhat.com> - 23.358.4-5
- Fix systemd integration
* Mon Dec 25 2023 Ray Strode <rstrode@redhat.com> - 23.358.4-4
- Add xkeyboard-config requires for plymouth-scripts too
* Mon Dec 25 2023 Ray Strode <rstrode@redhat.com> - 23.358.4-3
- Add xkeyboard-config requires
* Sun Dec 24 2023 Ray Strode <rstrode@redhat.com> - 23.358.4-2
- New sources
* Sun Dec 24 2023 Ray Strode <rstrode@redhat.com> - 23.358.4-1
- Update to 23.358.4 (fixes initramfs crashers)
* Fri Dec 22 2023 Ray Strode <rstrode@redhat.com> - 23.356.9-4
- Add new build requires
* Fri Dec 22 2023 Ray Strode <rstrode@redhat.com> - 23.356.9-3
- Upload new sources
* Fri Dec 22 2023 Ray Strode <rstrode@redhat.com> - 23.356.9-2
- Add fedora-logos buildrequires
* Fri Dec 22 2023 Ray Strode <rstrode@redhat.com> - 23.356.9-1
- Update to 23.356.9
* Tue Nov 21 2023 Tomas Popela <tpopela@redhat.com> - 22.02.122-7
- Disable charge theme in ELN/RHEL 10
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 22.02.122-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 22.02.122-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Sep 28 2022 Hans de Goede <hdegoede@redhat.com> - 22.02.122-4
- Fix build now that systemd-devel no longer brings in ystemd
* Wed Sep 28 2022 Hans de Goede <hdegoede@redhat.com> - 22.02.122-3
- Fix SimpleDRM sometimes not being ignored (rhbz#2127663)
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 22.02.122-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Mar 07 2022 Hans de Goede <hdegoede@redhat.com> - 22.02.122-1
- New upstream release 22.02.122 (#2039427)
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.5-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Dec 06 2021 Hans de Goede <hdegoede@redhat.com> - 0.9.5-4
- Add "Requires: fedora-logos-classic" to the plymouth-theme-charge package
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.5-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Mar 31 2021 Hans de Goede <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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 <releng@fedoraproject.org> - 0.9.4-19
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Jan 08 2021 Tom Stellard <tstellar@redhat.com> - 0.9.4-18
- Add BuildRequires: make
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.4-17
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.4-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Mar 25 2020 Hans de Goede <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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 <releng@fedoraproject.org> - 0.9.4-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Tue Oct 22 2019 Hans de Goede <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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 <releng@fedoraproject.org> - 0.9.4-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Jul 19 2019 Hans de Goede <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 0.9.4-5
- Add translations for the new spinner/bgrt offline-updates splash
* Wed Feb 13 2019 Hans de Goede <hdegoede@redhat.com> - 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 <releng@fedoraproject.org> - 0.9.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Tue Jan 22 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.9.4-2
- Remove obsolete ldconfig scriptlets
* Mon Nov 05 2018 Ray Strode <rstrode@redhat.com> - 0.9.4-1
- Update to 0.9.4
* Thu Oct 04 2018 Hans de Goede <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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 <pbrobinson@gmail.com> - 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 <releng@fedoraproject.org> - 0.9.3-25
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Jul 09 2018 Igor Gnatenko <ignatenko@redhat.com> - 0.9.3-24
- add BuildRequires: gcc
* Mon Jul 02 2018 Hans de Goede <hdegoede@redhat.com> - 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 <awilliam@redhat.com> - 0.9.3-22
- Move frame-buffer back to subpackage, patch bugs
* Mon Jun 04 2018 Adam Williamson <awilliam@redhat.com> - 0.9.3-21
- Move frame-buffer and drm renderers back to main package
* Fri Jun 01 2018 Adam Williamson <awilliam@redhat.com> - 0.9.3-19
- Move frame-buffer renderer to graphics-libs (#1518464)
* Tue Apr 17 2018 Hans de Goede <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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 <walters@verbum.org> - 0.9.3-16
- Drop default boot-duration
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.9.3-15
- Escape macros in %%changelog
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.3-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Tue Nov 28 2017 Ray Strode <rstrode@redhat.com> - 0.9.3-13
- Bump ShowDelay back up to 5
* Tue Nov 28 2017 Björn Esser <besser82@fedoraproject.org> - 0.9.3-12
- Fix invalid date in %%%%changelog
* Tue Nov 28 2017 Björn Esser <besser82@fedoraproject.org> - 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 <releng@fedoraproject.org> - 0.9.3-10
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.3-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.3-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Mon Jun 20 2016 Ray Strode <rstrode@redhat.com> - 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 <rstrode@redhat.com> - 0.9.3-6
- really (?) fix password prompt on text plugin
* Tue Jun 14 2016 Ray Strode <rstrode@redhat.com> - 0.9.3-5
- fix password prompt on text plugin
* Wed Jun 08 2016 Ray Strode <rstrode@redhat.com> - 0.9.3-4
- new release versioning scheme to be more guideliney
* Tue Jun 07 2016 Ray Strode <rstrode@redhat.com> - 0.9.3-3
- Update to latest git snapshot
- Fixes use after free Related: #1342673
* Tue May 24 2016 Ray Strode <rstrode@redhat.com> - 0.9.3-2
- update build requires
* Tue May 24 2016 Ray Strode <rstrode@redhat.com> - 0.9.3-1
- Update to latest git snapshot
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.9-23
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Mon Nov 16 2015 Ray Strode <rstrode@redhat.com> - 0.8.9-22
- fix plymouth-update-initrd
* Mon Nov 02 2015 Ray Strode <rstrode@redhat.com> - 0.8.9-21
- Fix updates with script and spinner themes
* Mon Aug 24 2015 Kalev Lember <klember@redhat.com> - 0.8.9-20
- Fix a typo in Requires
* Mon Aug 24 2015 Peter Robinson <pbrobinson@gmail.com> - 0.8.9-19
- fix confusion between scripts and plugin-scripts sub package
* Mon Aug 24 2015 Peter Robinson <pbrobinson@gmail.com> - 0.8.9-18
- Fix Requires for various libs subpackages
* Sun Aug 23 2015 Peter Robinson <pbrobinson@gmail.com> - 0.8.9-17
- Use %%%%license, Cleanup spec, Move drm render driver to graphics-libs
sub package
* Thu Jun 18 2015 Dennis Gilmore <dennis@ausil.us> - 0.8.9-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Wed May 20 2015 Will Woods <wwoods@redhat.com> - 0.8.9-15
- add patch for #1223344
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 0.8.9-14
- Rebuilt for Fedora 23 Change
* Sun Aug 17 2014 Peter Robinson <pbrobinson@fedoraproject.org> - 0.8.9-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Fri Jun 13 2014 Adam Jackson <ajax@redhat.com> - 0.8.9-12
- fix changelog date warnings
* Sat Jun 07 2014 Dennis Gilmore <dennis@ausil.us> - 0.8.9-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Sat May 31 2014 Peter Robinson <pbrobinson@gmail.com> - 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 <rstrode@redhat.com> - 0.8.9-9
- Include patch
* Thu Feb 20 2014 Ray Strode <rstrode@redhat.com> - 0.8.9-8
- Fix splash after change in /sys/class/tty/console/active
* Thu Oct 31 2013 Ray Strode <rstrode@redhat.com> - 0.8.9-7
- Don't timeout plymouth quit waiting
* Wed Oct 16 2013 Ray Strode <rstrode@redhat.com> - 0.8.9-6
- need an explicit --without-rhgb-compat-link
* Wed Oct 16 2013 Ray Strode <rstrode@redhat.com> - 0.8.9-5
- drop rhgb-client compat link
* Sun Oct 06 2013 Kalev Lember <kalevlember@gmail.com> - 0.8.9-4
- Make sure the release number compares higher than the previous builds
* Wed Aug 14 2013 Ray Strode <rstrode@redhat.com> - 0.8.9-3
- Update to snapshot to fix system units
* Sun Aug 04 2013 Dennis Gilmore <dennis@ausil.us> - 0.8.9-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Tue Mar 26 2013 Ray Strode <rstrode@redhat.com> - 0.8.9-1
- Update to snapshot to fix systemd vconsole issue
* Thu Feb 21 2013 Peter Robinson <pbrobinson@gmail.com> - 0.8.8-6
- RPMAUTOSPEC: unresolvable merge
## END: Generated by rpmautospec

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (plymouth-24.004.60.tar.bz2) = c6787ae5705d6954a73ef7f3f65cecf3d36af1bb6b6fbfc68871062cace71245a569b1b5fe8b8014418c2657739a413bf9eb65f0bc3e6e293505d1052c9a5352