diff --git a/0001-Make-plymouthd-real-daemon-and-save-old-log.patch b/0001-Make-plymouthd-real-daemon-and-save-old-log.patch deleted file mode 100644 index b966f04..0000000 --- a/0001-Make-plymouthd-real-daemon-and-save-old-log.patch +++ /dev/null @@ -1,50 +0,0 @@ -From: Werner Fink -Subject: All daemons should call setsid(2) to become a real daemons - -All daemons should call setsid(2) to become a real daemons without -controlling terminal. Beside this the old boot log will help for -debugging and for support. - ---- - libply/ply-utils.c | 1 + - main.c | 5 +++-- - 2 files changed, 4 insertions(+), 2 deletions(-) - ---- a/src/libply/ply-utils.c -+++ b/src/libply/ply-utils.c 2014-02-12 15:05:49.895141867 +0100 -@@ -815,6 +815,7 @@ ply_create_daemon (void) - - _exit ((int) byte); - } -+ setsid(); - close (receiver_fd); - - handle = calloc (1, sizeof (int)); ---- a/src/main.c -+++ b/src/main.c 2014-02-12 14:43:49.216569414 +0100 -@@ -639,7 +639,7 @@ get_log_file_for_mode (ply_mode_t mode) - break; - case PLY_MODE_SHUTDOWN: - case PLY_MODE_UPDATES: -- filename = _PATH_DEVNULL; -+ filename = PLYMOUTH_LOG_DIRECTORY "/boot.log"; - break; - default: - ply_error ("Unhandled case in %s line %d\n", __FILE__, __LINE__); -@@ -663,7 +663,7 @@ get_log_spool_file_for_mode (ply_mode_t - break; - case PLY_MODE_SHUTDOWN: - case PLY_MODE_UPDATES: -- filename = NULL; -+ filename = PLYMOUTH_SPOOL_DIRECTORY "/boot.log"; - break; - default: - ply_error ("Unhandled case in %s line %d\n", __FILE__, __LINE__); -@@ -715,6 +715,7 @@ prepare_logging (state_t *state) - if (logfile != NULL) - { - ply_trace ("opening log '%s'", logfile); -+ rename(logfile, PLYMOUTH_LOG_DIRECTORY "/boot.olog"); - ply_terminal_session_open_log (state->session, logfile); - - if (state->number_of_errors > 0) diff --git a/0001-Some-greenish-openSUSE-colors.patch b/0001-Some-greenish-openSUSE-colors.patch index 2bc25e9..9670e56 100644 --- a/0001-Some-greenish-openSUSE-colors.patch +++ b/0001-Some-greenish-openSUSE-colors.patch @@ -7,11 +7,32 @@ Subject: [PATCH] Some greenish openSUSE colors src/plugins/splash/text/plugin.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) -diff --git a/src/plugins/splash/text/plugin.c b/src/plugins/splash/text/plugin.c -index 50059be..d9235c5 100644 ---- a/src/plugins/splash/text/plugin.c -+++ b/src/plugins/splash/text/plugin.c -@@ -180,13 +180,13 @@ view_start_animation (view_t *view) +Index: plymouth-0.9.0/src/plugins/splash/text/plugin.c +=================================================================== +--- plymouth-0.9.0.orig/src/plugins/splash/text/plugin.c ++++ plymouth-0.9.0/src/plugins/splash/text/plugin.c +@@ -174,13 +174,13 @@ view_start_animation (view_t *view) + 0x000000); + ply_terminal_set_color_hex_value (terminal, + PLY_TERMINAL_COLOR_WHITE, +- 0xffffff); ++ 0x40ff00); + ply_terminal_set_color_hex_value (terminal, + PLY_TERMINAL_COLOR_BLUE, +- 0x3465a4); ++ 0x20a000); + ply_terminal_set_color_hex_value (terminal, + PLY_TERMINAL_COLOR_BROWN, +- 0x979a9b); ++ 0x106000); + + ply_text_display_set_background_color (view->display, + PLY_TERMINAL_COLOR_BLACK); +Index: plymouth-0.9.0/src/plugins/splash/tribar/plugin.c +=================================================================== +--- plymouth-0.9.0.orig/src/plugins/splash/tribar/plugin.c ++++ plymouth-0.9.0/src/plugins/splash/tribar/plugin.c +@@ -177,13 +177,13 @@ view_start_animation (view_t *view) 0x000000); ply_terminal_set_color_hex_value (terminal, PLY_TERMINAL_COLOR_WHITE, @@ -28,6 +49,3 @@ index 50059be..d9235c5 100644 ply_text_display_set_background_color (view->display, PLY_TERMINAL_COLOR_BLACK); --- -1.7.7 - diff --git a/0001-device-manager-only-call-ply_terminal_free.patch b/0001-device-manager-only-call-ply_terminal_free.patch new file mode 100644 index 0000000..2b46fc5 --- /dev/null +++ b/0001-device-manager-only-call-ply_terminal_free.patch @@ -0,0 +1,26 @@ +From 54951cef0e5ea3caeae1eb0ec33db7ed37d0d4b3 Mon Sep 17 00:00:00 2001 +From: Frederic Crozat +Date: Thu, 12 Jun 2014 13:50:51 +0200 +Subject: [PATCH] device-manager: only call ply_terminal_free + +ply_terminal_free will call ply_terminal_close anyway and is guarded +against NULL terminal (ply_terminal_close is not). +--- + src/libply-splash-core/ply-device-manager.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index dbc203d..aa4d15c 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -442,7 +442,6 @@ free_terminal (char *device, + { + ply_hashtable_remove (manager->terminals, device); + +- ply_terminal_close (terminal); + ply_terminal_free (terminal); + } + +-- +1.8.4.5 + diff --git a/0001-let-it-become-a-real-daemon.patch b/0001-let-it-become-a-real-daemon.patch new file mode 100644 index 0000000..0301e5c --- /dev/null +++ b/0001-let-it-become-a-real-daemon.patch @@ -0,0 +1,191 @@ +Related to bnc#892526 -- let plymouthd become a real daemon that +is it should use its own session with the help of the system call +setsid(2). Also avoid an EBUSY on ioctl TIOCCONS if a former +plymouthd had failed. And a crash or termination may restore not +only the current virtual console but also any serial console as +well restore the system console. + +--- + plymouth-0.9.0/src/libply-splash-core/ply-device-manager.c | 9 ++ + plymouth-0.9.0/src/libply-splash-core/ply-device-manager.h | 1 + plymouth-0.9.0/src/libply/ply-terminal-session.c | 7 ++ + plymouth-0.9.0/src/libply/ply-utils.c | 2 + plymouth-0.9.0/src/main.c | 42 +++++++------ + 5 files changed, 43 insertions(+), 18 deletions(-) + +Index: plymouth-0.9.0/src/libply-splash-core/ply-device-manager.c +=================================================================== +--- plymouth-0.9.0.orig/src/libply-splash-core/ply-device-manager.c ++++ plymouth-0.9.0/src/libply-splash-core/ply-device-manager.c +@@ -933,3 +933,12 @@ ply_device_manager_deactivate_keyboards + node = next_node; + } + } ++ ++void ++ply_close_all_terminals (ply_device_manager_t *manager) ++{ ++ ply_hashtable_foreach (manager->terminals, ++ (ply_hashtable_foreach_func_t *) ++ ply_terminal_close, ++ manager); ++} +Index: plymouth-0.9.0/src/libply-splash-core/ply-device-manager.h +=================================================================== +--- plymouth-0.9.0.orig/src/libply-splash-core/ply-device-manager.h ++++ plymouth-0.9.0/src/libply-splash-core/ply-device-manager.h +@@ -49,6 +49,7 @@ void ply_device_manager_deactivate_keybo + void ply_device_manager_activate_renderers (ply_device_manager_t *manager); + void ply_device_manager_deactivate_renderers (ply_device_manager_t *manager); + ply_terminal_t *ply_device_manager_get_default_terminal (ply_device_manager_t *manager); ++void ply_close_all_terminals (ply_device_manager_t *manager); + + #endif + +Index: plymouth-0.9.0/src/libply/ply-utils.c +=================================================================== +--- plymouth-0.9.0.orig/src/libply/ply-utils.c ++++ plymouth-0.9.0/src/libply/ply-utils.c +@@ -77,6 +77,7 @@ + + static int errno_stack[PLY_ERRNO_STACK_SIZE]; + static int errno_stack_position = 0; ++static bool inChild = false; + + bool + ply_open_unidirectional_pipe (int *sender_fd, +@@ -797,6 +798,7 @@ ply_create_daemon (void) + { + int read_error = errno; + int status; ++ inChild = true; + + if (waitpid (pid, &status, WNOHANG) <= 0) + { +@@ -843,6 +845,9 @@ ply_detach_daemon (ply_daemon_handle_t * + close (sender_fd); + free (handle); + ++ if (inChild) ++ setsid(); ++ + return true; + } + +Index: plymouth-0.9.0/src/libply/ply-terminal-session.c +=================================================================== +--- plymouth-0.9.0.orig/src/libply/ply-terminal-session.c ++++ plymouth-0.9.0/src/libply/ply-terminal-session.c +@@ -187,6 +187,13 @@ ply_terminal_session_redirect_console (p + + assert (terminal_name != NULL); + ++ fd = open ("/dev/console", O_RDWR | O_NOCTTY); ++ if (fd >= 0) ++ { ++ ioctl (fd, TIOCCONS); /* Undo any current map if any */ ++ close (fd); ++ } ++ + fd = open (terminal_name, O_RDWR | O_NOCTTY); + + if (fd < 0) +Index: plymouth-0.9.0/src/main.c +=================================================================== +--- plymouth-0.9.0.orig/src/main.c ++++ plymouth-0.9.0/src/main.c +@@ -1042,6 +1042,7 @@ on_seat_added (state_t *state, + + } + ++static ply_device_manager_t *manager; + static void + load_devices (state_t *state, + ply_device_manager_flags_t flags) +@@ -1049,6 +1050,8 @@ load_devices (state_t + state->device_manager = ply_device_manager_new (state->default_tty, flags); + state->local_console_terminal = ply_device_manager_get_default_terminal (state->device_manager); + ++ manager = state->device_manager; ++ + ply_device_manager_watch_seats (state->device_manager, + (ply_seat_added_handler_t) + on_seat_added, +@@ -1077,6 +1080,7 @@ quit_splash (state_t *state) + ply_trace ("Not retaining splash, so deallocating VT"); + ply_terminal_deactivate_vt (state->local_console_terminal); + ply_terminal_close (state->local_console_terminal); ++ ply_close_all_terminals (state->device_manager); + } + } + +@@ -2075,25 +2079,22 @@ dump_debug_buffer_to_file (void) + #include + #include + static void +-on_crash (int signum) ++dosigaction (int signum) + { +- struct termios term_attributes; + int fd; + +- fd = open ("/dev/tty1", O_RDWR | O_NOCTTY); +- if (fd < 0) fd = open ("/dev/hvc0", O_RDWR | O_NOCTTY); +- +- ioctl (fd, KDSETMODE, KD_TEXT); +- +- tcgetattr (fd, &term_attributes); +- +- term_attributes.c_iflag |= BRKINT | IGNPAR | ICRNL | IXON; +- term_attributes.c_oflag |= OPOST; +- term_attributes.c_lflag |= ECHO | ICANON | ISIG | IEXTEN; +- +- tcsetattr (fd, TCSAFLUSH, &term_attributes); ++ if (manager) ++ { ++ ply_device_manager_deactivate_keyboards (manager); ++ ply_close_all_terminals (manager); ++ } + +- close (fd); ++ fd = open ("/dev/console", O_RDWR | O_NOCTTY); ++ if (fd >= 0) ++ { ++ ioctl (fd, TIOCCONS); /* Undo any current map if any */ ++ close (fd); ++ } + + if (debug_buffer != NULL) + { +@@ -2108,7 +2109,6 @@ on_crash (int signum) + pid_file = NULL; + } + +- signal (signum, SIG_DFL); + raise(signum); + } + +@@ -2145,6 +2145,7 @@ main (int argc, + char *kernel_command_line = NULL; + char *tty = NULL; + ply_device_manager_flags_t device_manager_flags = PLY_DEVICE_MANAGER_FLAGS_NONE; ++ struct sigaction sa; + + state.start_time = ply_get_timestamp (); + state.command_parser = ply_command_parser_new ("plymouthd", "Splash server"); +@@ -2256,8 +2257,13 @@ main (int argc, + if (debug) + debug_buffer = ply_buffer_new (); + +- signal (SIGABRT, on_crash); +- signal (SIGSEGV, on_crash); ++ sigemptyset(&sa.sa_mask); ++ sa.sa_flags = SA_RESETHAND; ++ sa.sa_handler = dosigaction; ++ sigaction (SIGHUP, &sa, NULL); ++ sigaction (SIGTERM, &sa, NULL); ++ sigaction (SIGABRT, &sa, NULL); ++ sigaction (SIGSEGV, &sa, NULL); + + /* before do anything we need to make sure we have a working + * environment. diff --git a/0001-libply-splash-core-also-monitor-for-file-removal-in-.patch b/0001-libply-splash-core-also-monitor-for-file-removal-in-.patch new file mode 100644 index 0000000..dc9aed3 --- /dev/null +++ b/0001-libply-splash-core-also-monitor-for-file-removal-in-.patch @@ -0,0 +1,26 @@ +From 920009efa99204de172332486de5ccff6a3332d5 Mon Sep 17 00:00:00 2001 +From: Frederic Crozat +Date: Thu, 19 Jun 2014 17:58:50 +0200 +Subject: [PATCH] libply-splash-core: also monitor for file removal in udev + directory + +--- + src/libply-splash-core/ply-device-manager.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index aa4d15c..06d751c 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -761,7 +761,7 @@ watch_for_coldplug_completion (ply_device_manager_t *manager) + } + + fd = inotify_init1 (IN_CLOEXEC); +- result = inotify_add_watch (fd, "/run/udev", IN_MOVED_TO); ++ result = inotify_add_watch (fd, "/run/udev", IN_MOVED_TO | IN_DELETE); + + if (result < 0) + { +-- +1.8.4.5 + diff --git a/0001-seat-be-a-little-more-forgiving-in-the-case-there-s-.patch b/0001-seat-be-a-little-more-forgiving-in-the-case-there-s-.patch new file mode 100644 index 0000000..64a5bee --- /dev/null +++ b/0001-seat-be-a-little-more-forgiving-in-the-case-there-s-.patch @@ -0,0 +1,47 @@ +From 84eb4381db85877a9a56b35994e6c10d43e46ebe Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 14 Jul 2014 08:04:54 -0400 +Subject: [PATCH] seat: be a little more forgiving in the case there's no open + terminal + +We can end up in a situation where a seat object doesn't have a terminal +associated with it. In that case we shouldn't crash, but continue on +with no input available for that seat. + +https://bugs.freedesktop.org/show_bug.cgi?id=80553 +--- + src/libply-splash-core/ply-seat.c | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +Index: plymouth-0.9.0/src/libply-splash-core/ply-seat.c +=================================================================== +--- plymouth-0.9.0.orig/src/libply-splash-core/ply-seat.c ++++ plymouth-0.9.0/src/libply-splash-core/ply-seat.c +@@ -154,14 +154,23 @@ ply_seat_open (ply_seat_t *seat + add_pixel_displays (seat); + + } +- else ++ else if (seat->terminal != NULL) + { + seat->keyboard = ply_keyboard_new_for_terminal (seat->terminal); + } +- add_text_displays (seat); + +- ply_keyboard_watch_for_input (seat->keyboard); +- seat->keyboard_active = true; ++ if (seat->terminal != NULL) { ++ add_text_displays (seat); ++ } else { ++ ply_trace ("not adding text display for seat, since seat has no associated terminal"); ++ } ++ ++ if (seat->keyboard != NULL) { ++ ply_keyboard_watch_for_input (seat->keyboard); ++ seat->keyboard_active = true; ++ } else { ++ ply_trace ("not watching seat for input"); ++ } + + return true; + } diff --git a/0001-seats-guard-against-NULL-terminal.patch b/0001-seats-guard-against-NULL-terminal.patch new file mode 100644 index 0000000..5e5ea50 --- /dev/null +++ b/0001-seats-guard-against-NULL-terminal.patch @@ -0,0 +1,94 @@ +From a6eff09852c2eb4d684526b814d2b2df578938d0 Mon Sep 17 00:00:00 2001 +From: Frederic Crozat +Date: Thu, 12 Jun 2014 18:51:24 +0200 +Subject: [PATCH] seats: guard against NULL terminal + +--- + src/libply-splash-core/ply-keyboard.c | 7 +++++-- + src/libply-splash-core/ply-seat.c | 6 +++--- + src/libply-splash-core/ply-terminal.c | 11 +++++++---- + 3 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/src/libply-splash-core/ply-keyboard.c b/src/libply-splash-core/ply-keyboard.c +index 624f906..1bed19f 100644 +--- a/src/libply-splash-core/ply-keyboard.c ++++ b/src/libply-splash-core/ply-keyboard.c +@@ -423,8 +423,11 @@ ply_keyboard_free (ply_keyboard_t *keyboard) + } + else + { +- ply_buffer_free (keyboard->provider.if_terminal->key_buffer); +- free (keyboard->provider.if_terminal); ++ if (keyboard->provider.if_terminal) ++ { ++ ply_buffer_free (keyboard->provider.if_terminal->key_buffer); ++ free (keyboard->provider.if_terminal); ++ } + } + + free (keyboard); +diff --git a/src/libply-splash-core/ply-seat.c b/src/libply-splash-core/ply-seat.c +index 2ac8bf7..29e2dfa 100644 +--- a/src/libply-splash-core/ply-seat.c ++++ b/src/libply-splash-core/ply-seat.c +@@ -102,12 +102,12 @@ add_text_displays (ply_seat_t *seat) + { + ply_text_display_t *display; + +- if (!ply_terminal_is_open (seat->terminal)) ++ if (!seat->terminal || !ply_terminal_is_open (seat->terminal)) + { +- if (!ply_terminal_open (seat->terminal)) ++ if (!seat->terminal || !ply_terminal_open (seat->terminal)) + { + ply_trace ("could not add terminal %s: %m", +- ply_terminal_get_name (seat->terminal)); ++ seat->terminal ? ply_terminal_get_name (seat->terminal) : "none" ); + return; + } + } +diff --git a/src/libply-splash-core/ply-terminal.c b/src/libply-splash-core/ply-terminal.c +index 992dd3f..b52b108 100644 +--- a/src/libply-splash-core/ply-terminal.c ++++ b/src/libply-splash-core/ply-terminal.c +@@ -654,30 +654,33 @@ ply_terminal_open (ply_terminal_t *terminal) + int + ply_terminal_get_fd (ply_terminal_t *terminal) + { +- return terminal->fd; ++ return terminal ? terminal->fd : -1; + } + + bool + ply_terminal_is_vt (ply_terminal_t *terminal) + { +- return terminal->vt_number > 0; ++ return terminal ? terminal->vt_number > 0 : false; + } + + bool + ply_terminal_is_open (ply_terminal_t *terminal) + { +- return terminal->is_open; ++ return terminal ? terminal->is_open : false; + } + + bool + ply_terminal_is_active (ply_terminal_t *terminal) + { +- return terminal->is_active; ++ return terminal ? terminal->is_active : false; + } + + void + ply_terminal_close (ply_terminal_t *terminal) + { ++ if (!terminal) ++ return; ++ + if (!terminal->is_open) + { + ply_trace ("terminal %s is already closed", terminal->name); +-- +1.8.4.5 + diff --git a/0001-splash-do-not-process-display-lists-if-it-is-empty.patch b/0001-splash-do-not-process-display-lists-if-it-is-empty.patch new file mode 100644 index 0000000..eb36c37 --- /dev/null +++ b/0001-splash-do-not-process-display-lists-if-it-is-empty.patch @@ -0,0 +1,56 @@ +From 95b775ea543489c688595e94a96909402b2b56f1 Mon Sep 17 00:00:00 2001 +From: Frederic Crozat +Date: Fri, 20 Jun 2014 16:01:12 +0200 +Subject: [PATCH] splash: do not process display lists if it is empty or NULL + +--- + src/plugins/splash/script/plugin.c | 1 + + src/plugins/splash/script/script-lib-sprite.c | 7 +++++++ + 2 files changed, 8 insertions(+) + +diff --git a/src/plugins/splash/script/plugin.c b/src/plugins/splash/script/plugin.c +index 8e37b37..cd9e052 100644 +--- a/src/plugins/splash/script/plugin.c ++++ b/src/plugins/splash/script/plugin.c +@@ -334,6 +334,7 @@ stop_script_animation (ply_boot_splash_plugin_t *plugin) + + script_state_destroy (plugin->script_state); + script_lib_sprite_destroy (plugin->script_sprite_lib); ++ plugin->script_sprite_lib = NULL; + script_lib_image_destroy (plugin->script_image_lib); + script_lib_plymouth_destroy (plugin->script_plymouth_lib); + script_lib_math_destroy (plugin->script_math_lib); +diff --git a/src/plugins/splash/script/script-lib-sprite.c b/src/plugins/splash/script/script-lib-sprite.c +index 166c7e7..f1cd57f 100644 +--- a/src/plugins/splash/script/script-lib-sprite.c ++++ b/src/plugins/splash/script/script-lib-sprite.c +@@ -704,6 +704,9 @@ void script_lib_sprite_pixel_display_removed (script_lib_sprite_data_t *data, pl + ply_list_node_t *next_node; + script_lib_display_t* display; + ++ if (!data) ++ return; ++ + node = ply_list_get_first_node (data->displays); + while (node) + { +@@ -725,6 +728,9 @@ script_lib_sprite_refresh (script_lib_sprite_data_t *data) + ply_region_t *region = ply_region_new (); + ply_list_t *rectable_list; + ++ if (!data) ++ return; ++ + ply_list_sort_stable (data->sprite_list, &sprite_compare_z); + + node = ply_list_get_first_node (data->sprite_list); +@@ -848,5 +854,6 @@ void script_lib_sprite_destroy (script_lib_sprite_data_t *data) + script_parse_op_free (data->script_main_op); + script_obj_native_class_destroy (data->class); + free (data); ++ data = NULL; + } + +-- +1.8.4.5 + diff --git a/0001-splash-remove-pixel_pixel-in-sprite-lib-when-notifie.patch b/0001-splash-remove-pixel_pixel-in-sprite-lib-when-notifie.patch new file mode 100644 index 0000000..ccc4063 --- /dev/null +++ b/0001-splash-remove-pixel_pixel-in-sprite-lib-when-notifie.patch @@ -0,0 +1,101 @@ +From 61525fba34c724b6e319f6b3b8198c0c0f8aa677 Mon Sep 17 00:00:00 2001 +From: Frederic Crozat +Date: Thu, 19 Jun 2014 16:18:12 +0200 +Subject: [PATCH] splash: remove pixel_pixel in sprite-lib when notified they + are gone + +--- + src/plugins/splash/script/plugin.c | 1 + + src/plugins/splash/script/script-lib-sprite.c | 28 +++++++++++++++++++++++---- + src/plugins/splash/script/script-lib-sprite.h | 1 + + 3 files changed, 26 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/splash/script/plugin.c b/src/plugins/splash/script/plugin.c +index c5c1e16..8e37b37 100644 +--- a/src/plugins/splash/script/plugin.c ++++ b/src/plugins/splash/script/plugin.c +@@ -401,6 +401,7 @@ static void + remove_pixel_display (ply_boot_splash_plugin_t *plugin, + ply_pixel_display_t *display) + { ++ script_lib_sprite_pixel_display_removed (plugin->script_sprite_lib, display); + ply_list_remove_data(plugin->displays, display); + } + +diff --git a/src/plugins/splash/script/script-lib-sprite.c b/src/plugins/splash/script/script-lib-sprite.c +index e0ced7e..166c7e7 100644 +--- a/src/plugins/splash/script/script-lib-sprite.c ++++ b/src/plugins/splash/script/script-lib-sprite.c +@@ -77,7 +77,7 @@ static script_return_t sprite_get_image (script_state_t *state, + { + script_lib_sprite_data_t *data = user_data; + sprite_t *sprite = script_obj_as_native_of_class (state->this, data->class); +- ++ + if (sprite && sprite->image_obj) + { + script_obj_ref (sprite->image_obj); +@@ -481,7 +481,7 @@ static void script_lib_sprite_draw_area (script_lib_display_t *display, + } + } + +-static void ++static void + draw_area (script_lib_sprite_data_t *data, + int x, + int y, +@@ -533,10 +533,10 @@ script_lib_sprite_data_t *script_lib_sprite_setup (script_state_t *state, + ply_pixel_display_t *pixel_display = ply_list_node_get_data (node); + script_lib_display_t *script_display = malloc (sizeof(script_lib_display_t)); + script_display->pixel_display = pixel_display; +- ++ + script_display->x = (max_width - ply_pixel_display_get_width (pixel_display)) / 2; + script_display->y = (max_height - ply_pixel_display_get_height (pixel_display)) / 2; +- ++ + script_display->data = data; + ply_pixel_display_set_draw_handler (pixel_display, + (ply_pixel_display_draw_handler_t) +@@ -698,6 +698,26 @@ region_add_area (ply_region_t *region, + ply_region_add_rectangle (region, &rectangle); + } + ++void script_lib_sprite_pixel_display_removed (script_lib_sprite_data_t *data, ply_pixel_display_t *pixel_display) ++{ ++ ply_list_node_t *node; ++ ply_list_node_t *next_node; ++ script_lib_display_t* display; ++ ++ node = ply_list_get_first_node (data->displays); ++ while (node) ++ { ++ next_node = ply_list_get_next_node (data->displays, node); ++ display = ply_list_node_get_data (node); ++ ++ if (display->pixel_display == pixel_display) ++ { ++ ply_list_remove_node (data->displays, node); ++ } ++ node = next_node; ++ } ++} ++ + void + script_lib_sprite_refresh (script_lib_sprite_data_t *data) + { +diff --git a/src/plugins/splash/script/script-lib-sprite.h b/src/plugins/splash/script/script-lib-sprite.h +index 0cb0681..2404b85 100644 +--- a/src/plugins/splash/script/script-lib-sprite.h ++++ b/src/plugins/splash/script/script-lib-sprite.h +@@ -65,6 +65,7 @@ typedef struct + + script_lib_sprite_data_t *script_lib_sprite_setup (script_state_t *state, + ply_list_t *displays); ++void script_lib_sprite_pixel_display_removed (script_lib_sprite_data_t *data, ply_pixel_display_t *pixel_display); + void script_lib_sprite_refresh (script_lib_sprite_data_t *data); + void script_lib_sprite_destroy (script_lib_sprite_data_t *data); + +-- +1.8.4.5 + diff --git a/0001-text-step-bar-use-correct-utf-8-multibyte-sequence-f.patch b/0001-text-step-bar-use-correct-utf-8-multibyte-sequence-f.patch new file mode 100644 index 0000000..cfdd5e1 --- /dev/null +++ b/0001-text-step-bar-use-correct-utf-8-multibyte-sequence-f.patch @@ -0,0 +1,37 @@ +From 40c2dd36c5da64919f69dd4f37de2ecf19f23058 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 28 Jul 2014 09:58:49 -0400 +Subject: [PATCH] =?UTF-8?q?text-step-bar:=20use=20correct=20utf-8=20multib?= + =?UTF-8?q?yte=20sequence=20for=20=E2=96=A0?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +For some reason in commit 113526408c5706c9efc7f43c3f8258354e762677 +I commited the sequence \x25\x96\xa0 in place of the block character +that was there before. I don't know where I got \x25 from, but it's +not right (and couldn't even be right since the high order bit isn't +set which is a requirement for the first byte in multi-byte utf-8 +sequences). + +This commit uses \xe2 instead which I got from doing: + +$ echo ■ | xxd +0000000: e296 a00a .... +--- + src/libply-splash-core/ply-text-step-bar.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: plymouth-0.9.0/src/libply-splash-core/ply-text-step-bar.c +=================================================================== +--- plymouth-0.9.0.orig/src/libply-splash-core/ply-text-step-bar.c ++++ plymouth-0.9.0/src/libply-splash-core/ply-text-step-bar.c +@@ -96,7 +96,7 @@ ply_text_step_bar_draw (ply_text_step_ba + } + + /* U+25A0 BLACK SQUARE */ +- ply_text_display_write (step_bar->display, "%s", "\x25\x96\xa0"); ++ ply_text_display_write (step_bar->display, "%s", "\xe2\x96\xa0"); + ply_text_display_write (step_bar->display, "%c", ' '); + } + diff --git a/fix-serial-consoles.patch b/fix-serial-consoles.patch new file mode 100644 index 0000000..2066006 --- /dev/null +++ b/fix-serial-consoles.patch @@ -0,0 +1,87 @@ +Index: plymouth-0.8.8_git20140327/src/libply-splash-core/ply-device-manager.c +=================================================================== +--- plymouth-0.8.8_git20140327.orig/src/libply-splash-core/ply-device-manager.c ++++ plymouth-0.8.8_git20140327/src/libply-splash-core/ply-device-manager.c +@@ -58,6 +58,8 @@ struct _ply_device_manager + int udev_queue_fd; + ply_fd_watch_t *udev_queue_fd_watch; + struct udev_monitor *udev_monitor; ++ bool has_serial_consoles; ++ + + ply_seat_added_handler_t seat_added_handler; + ply_seat_removed_handler_t seat_removed_handler; +@@ -501,6 +503,7 @@ ply_device_manager_new (const char + manager->loop = NULL; + manager->terminals = ply_hashtable_new (ply_hashtable_string_hash, ply_hashtable_string_compare); + manager->local_console_terminal = ply_terminal_new (default_tty); ++ manager->has_serial_consoles = false; + ply_hashtable_insert (manager->terminals, + (void *) ply_terminal_get_name (manager->local_console_terminal), + manager->local_console_terminal); +@@ -670,21 +673,19 @@ create_seat_for_terminal (const char + static bool + create_seats_from_terminals (ply_device_manager_t *manager) + { +- bool has_serial_consoles; +- + ply_trace ("checking for consoles"); + + if (manager->flags & PLY_DEVICE_MANAGER_FLAGS_IGNORE_SERIAL_CONSOLES) + { +- has_serial_consoles = false; ++ manager->has_serial_consoles = false; + ply_trace ("ignoring all consoles but default console because explicitly told to."); + } + else + { +- has_serial_consoles = add_consoles_from_file (manager, "/sys/class/tty/console/active"); ++ manager->has_serial_consoles = add_consoles_from_file (manager, "/sys/class/tty/console/active"); + } + +- if (has_serial_consoles) ++ if (manager->has_serial_consoles) + { + ply_trace ("serial consoles detected, managing them with details forced"); + ply_hashtable_foreach (manager->terminals, +@@ -838,6 +839,15 @@ ply_device_manager_has_open_seats (ply_d + return false; + } + ++bool ++ply_device_manager_has_serial_consoles (ply_device_manager_t *manager) ++{ ++ if (manager) ++ return manager->has_serial_consoles; ++ else ++ return false; ++} ++ + ply_list_t * + ply_device_manager_get_seats (ply_device_manager_t *manager) + { +Index: plymouth-0.8.8_git20140327/src/main.c +=================================================================== +--- plymouth-0.8.8_git20140327.orig/src/main.c ++++ plymouth-0.8.8_git20140327/src/main.c +@@ -848,7 +848,7 @@ plymouth_should_show_default_splash (sta + }; + int i; + +- if (state->should_force_details) ++ if (ply_device_manager_has_serial_consoles(state->device_manager) || state->should_force_details) + return false; + + for (i = 0; strings[i] != NULL; i++) +Index: plymouth-0.8.8_git20140327/src/libply-splash-core/ply-device-manager.h +=================================================================== +--- plymouth-0.8.8_git20140327.orig/src/libply-splash-core/ply-device-manager.h ++++ plymouth-0.8.8_git20140327/src/libply-splash-core/ply-device-manager.h +@@ -42,6 +42,7 @@ void ply_device_manager_watch_seats (ply + ply_seat_removed_handler_t seat_removed_handler, + void *data); + bool ply_device_manager_has_open_seats (ply_device_manager_t *manager); ++bool ply_device_manager_has_serial_consoles (ply_device_manager_t *manager); + ply_list_t *ply_device_manager_get_seats (ply_device_manager_t *manager); + void ply_device_manager_free (ply_device_manager_t *manager); + void ply_device_manager_activate_keyboards (ply_device_manager_t *manager); diff --git a/plymouth-0.8.8_git201309032142.tar.xz b/plymouth-0.8.8_git201309032142.tar.xz deleted file mode 100644 index ae5bf6a..0000000 --- a/plymouth-0.8.8_git201309032142.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c1a7c2e8e964c4c650b59910918a878575bda58b6671726a55447bc70f6faa2 -size 789284 diff --git a/plymouth-0.9.0.tar.bz2 b/plymouth-0.9.0.tar.bz2 new file mode 100644 index 0000000..7e6c2b9 --- /dev/null +++ b/plymouth-0.9.0.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3e22e750a8a83de7377e9fa88975f146f875bbd030055411a2faf74c2e6cd4d +size 1159218 diff --git a/plymouth-boot-vga-framebuffer.patch b/plymouth-boot-vga-framebuffer.patch new file mode 100644 index 0000000..045b8fb --- /dev/null +++ b/plymouth-boot-vga-framebuffer.patch @@ -0,0 +1,19 @@ +Index: plymouth-0.9.0/src/libply-splash-core/ply-device-manager.c +=================================================================== +--- plymouth-0.9.0.orig/src/libply-splash-core/ply-device-manager.c ++++ plymouth-0.9.0/src/libply-splash-core/ply-device-manager.c +@@ -101,12 +101,13 @@ device_is_for_local_console (ply_device_ + * card the kernel is using for its console. */ + device_path = udev_device_get_syspath (device); + asprintf (&bus_device_path, "%s/device", device_path); ++ ply_trace ("Testing device path %s\n", bus_device_path); + bus_device = udev_device_new_from_syspath (manager->udev_context, bus_device_path); + + boot_vga = udev_device_get_sysattr_value (bus_device, "boot_vga"); + free (bus_device_path); + +- if (boot_vga != NULL && strcmp (boot_vga, "1") == 0) ++ if (boot_vga == NULL /* framebuffer case */ || strcmp (boot_vga, "1") == 0) + for_local_console = true; + else + for_local_console = false; diff --git a/plymouth-dracut-path.patch b/plymouth-dracut-path.patch index 604ca76..7be318a 100644 --- a/plymouth-dracut-path.patch +++ b/plymouth-dracut-path.patch @@ -4,8 +4,8 @@ [ -z "$INITRDDIR" ] && usage error mkdir -p ${INITRDDIR}${PLYMOUTH_DATADIR}/plymouth/themes --inst ${PLYMOUTH_DAEMON_PATH} $INITRDDIR /sbin/plymouthd --inst ${PLYMOUTH_CLIENT_PATH} $INITRDDIR /bin/plymouth +-inst ${PLYMOUTH_DAEMON_PATH} $INITRDDIR +-inst ${PLYMOUTH_CLIENT_PATH} $INITRDDIR +inst ${PLYMOUTH_DAEMON_PATH} $INITRDDIR /usr/sbin/plymouthd +inst ${PLYMOUTH_CLIENT_PATH} $INITRDDIR /usr/bin/plymouth inst ${PLYMOUTH_DATADIR}/plymouth/themes/text/text.plymouth $INITRDDIR diff --git a/plymouth-ignore-cirrusdrm.patch b/plymouth-ignore-cirrusdrm.patch new file mode 100644 index 0000000..55c6e49 --- /dev/null +++ b/plymouth-ignore-cirrusdrm.patch @@ -0,0 +1,15 @@ +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index a5aa59d..0be2117 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -125,6 +125,10 @@ fb_device_has_drm_device (ply_device_manager_t *manager, + const char *id_path; + bool has_drm_device = false; + ++ const char *card_name = udev_device_get_sysattr_value (fb_device, "name"); ++ if (card_name && strcmp ("cirrusdrmfb", card_name) == 0) ++ return false; ++ + /* We want to see if the framebuffer is associated with a DRM-capable + * graphics card, if it is, we'll use the DRM device */ + card_matches = udev_enumerate_new (manager->udev_context); diff --git a/plymouth-manpages.patch b/plymouth-manpages.patch new file mode 100644 index 0000000..e1b02f6 --- /dev/null +++ b/plymouth-manpages.patch @@ -0,0 +1,22 @@ +Index: plymouth-0.8.8_git20140207/docs/Makefile.am +=================================================================== +--- plymouth-0.8.8_git20140207.orig/docs/Makefile.am ++++ plymouth-0.8.8_git20140207/docs/Makefile.am +@@ -16,12 +16,14 @@ plymouth.1: plymouth1.xml + %.1: %.xml + $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< + +-man_MANS = \ ++man1_MANS = \ + plymouth.1 \ +- plymouth.8 \ +- plymouthd.8 \ + plymouth-set-default-theme.1 + ++man8_MANS = \ ++ plymouth.8 \ ++ plymouthd.8 ++ + EXTRA_DIST = \ + plymouth.xml \ + plymouth1.xml \ diff --git a/plymouth-restore-suspend.patch b/plymouth-restore-suspend.patch deleted file mode 100644 index 8fa4a70..0000000 --- a/plymouth-restore-suspend.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 152304f3fd2ebd04ca6d49c62dce4ddd2269326a Mon Sep 17 00:00:00 2001 -From: Frederic Crozat -Date: Fri, 20 Jul 2012 11:07:29 +0200 -Subject: [PATCH] Revert "libply: remove the unused SPLASH_MODE_SUSPEND and - SPLASH_MODE_RESUME" - -This reverts commit 02c596757753589f7e49d26eab2759d552f24671. - -Conflicts: - src/libply-splash-core/ply-boot-splash-plugin.h - src/plugins/splash/script/script-lib-plymouth.c ---- - src/libply-splash-core/ply-boot-splash-plugin.h | 2 ++ - src/plugins/splash/script/script-lib-plymouth.c | 6 ++++++ - 2 files changed, 8 insertions(+) - -diff --git a/src/libply-splash-core/ply-boot-splash-plugin.h b/src/libply-splash-core/ply-boot-splash-plugin.h -index 2d73d66..1a67526 100644 ---- a/src/libply-splash-core/ply-boot-splash-plugin.h -+++ b/src/libply-splash-core/ply-boot-splash-plugin.h -@@ -38,6 +38,8 @@ typedef enum - { - PLY_BOOT_SPLASH_MODE_BOOT_UP, - PLY_BOOT_SPLASH_MODE_SHUTDOWN, -+ PLY_BOOT_SPLASH_MODE_SUSPEND, -+ PLY_BOOT_SPLASH_MODE_RESUME, - PLY_BOOT_SPLASH_MODE_UPDATES, - PLY_BOOT_SPLASH_MODE_INVALID - } ply_boot_splash_mode_t; -diff --git a/src/plugins/splash/script/script-lib-plymouth.c b/src/plugins/splash/script/script-lib-plymouth.c -index 5c648a6..eb7791e 100644 ---- a/src/plugins/splash/script/script-lib-plymouth.c -+++ b/src/plugins/splash/script/script-lib-plymouth.c -@@ -61,6 +61,12 @@ static script_return_t plymouth_get_mode (script_state_t *state, - case PLY_BOOT_SPLASH_MODE_SHUTDOWN: - obj = script_obj_new_string ("shutdown"); - break; -+ case PLY_BOOT_SPLASH_MODE_SUSPEND: -+ obj = script_obj_new_string ("suspend"); -+ break; -+ case PLY_BOOT_SPLASH_MODE_RESUME: -+ obj = script_obj_new_string ("resume"); -+ break; - case PLY_BOOT_SPLASH_MODE_UPDATES: - obj = script_obj_new_string ("updates"); - break; --- -1.7.10.4 - diff --git a/plymouth.changes b/plymouth.changes index bc8e562..e732230 100644 --- a/plymouth.changes +++ b/plymouth.changes @@ -1,3 +1,168 @@ +------------------------------------------------------------------- +Thu Sep 25 13:19:01 UTC 2014 - idonmez@suse.com + +- Update 0001-let-it-become-a-real-daemon.patch to call setsid + only from the child process. + +------------------------------------------------------------------- +Fri Sep 12 12:50:06 UTC 2014 - idonmez@suse.com + +- Add 0001-let-it-become-a-real-daemon.patch to make plymouth + a real daemon, fixes part of bnc#889757. Patch by Werner. + +------------------------------------------------------------------- +Thu Sep 4 10:34:25 UTC 2014 - idonmez@suse.com + +- Add plymouth-boot-vga-framebuffer.patch to fix boot_vga + problem with framebuffer devices. (bnc#886211) + +------------------------------------------------------------------- +Mon Aug 11 14:23:27 UTC 2014 - idonmez@suse.com + +- Modify plymouth-ignore-cirrusdrm.patch to return as + early as possible. Patch by glin@suse.com + +------------------------------------------------------------------- +Thu Aug 7 09:24:37 UTC 2014 - idonmez@suse.com + +- Invert the logic in plymouth-ignore-cirrusdrm.patch bnc#890516 + +------------------------------------------------------------------- +Mon Jul 28 16:10:49 CEST 2014 - fcrozat@suse.com + +- Add + 0001-text-step-bar-use-correct-utf-8-multibyte-sequence-f.patch: + fix incorrect UTF-8 code used for square [bnc#886148]. + +------------------------------------------------------------------- +Fri Jul 25 14:32:38 CEST 2014 - fcrozat@suse.com + +- Add plymouth-ignore-cirrusdrm.patch: ignore cirrus drm and use fb + instead [bnc#888590] + +------------------------------------------------------------------- +Thu Jul 24 16:30:43 UTC 2014 - fcrozat@suse.com + +- Add + 0001-seat-be-a-little-more-forgiving-in-the-case-there-s-.patch: + Be more forgiving with empty seat. + +------------------------------------------------------------------- +Tue Jul 8 16:04:38 UTC 2014 - fcrozat@suse.com + +- Update 0001-Some-greenish-openSUSE-colors.patch to also use SUSE + colors on tribar [bnc#886148] + +------------------------------------------------------------------- +Fri Jun 27 11:27:02 UTC 2014 - fcrozat@suse.com + +- Add + 0001-libply-splash-core-also-monitor-for-file-removal-in-.patch: + handle new udev behaviour in seqnum removal. + +------------------------------------------------------------------- +Fri Jun 20 14:03:36 UTC 2014 - fcrozat@suse.com + +- Add + 0001-splash-do-not-process-display-lists-if-it-is-empty.patch: + fix crash when calling plymouth quit +- Add 0001-seats-guard-against-NULL-terminal.patch: guard against + NULL terminal. +- Update stop-graphical.patch: add RemainAfterExit=true to + plymouth-start.service, ensuring plymouthd is not restarted when + switching between runlevels. + +------------------------------------------------------------------- +Thu Jun 19 14:22:44 UTC 2014 - fcrozat@suse.com + +- Add + 0001-splash-remove-pixel_pixel-in-sprite-lib-when-notifie.patch: + fix crash when pixel_display is removed. +- Add 0001-device-manager-only-call-ply_terminal_free.patch: fix + crash. +- Add use-mkinitrd.patch: call mkinitrd -B, not dracut for now, + otherwise initramfs is being created by plymouth-update-initrd, + not initrd file. +- Ensure we don't rebuild initrd twice when updating plymouth. +- Ensure default theme is SLE/openSUSE (based on %suse_version) + +------------------------------------------------------------------- +Fri Jun 6 16:16:38 UTC 2014 - fcrozat@suse.com + +- Release 0.9.0 (3 additional fixes compared to previously packaged + git snapshot): + + Use udev for graphics device enumeration + + Add new text plugin to replace the tribar one + + Add background tiling and watermark support to two-step + + Make various plymouth commands that change state be resilient + to being called multiple times + + Support going back to the initrd at shutdown + + Keyfile parser improvements + + Make plymouthd use better defaults when running on top of X11 + + Fixes for systems using QXL + + minor two-step plugin fixes + + Use /sys/class/tty/console/active instead of parsing + /proc/cmdline for consoles. + + Documentation improvements + + Drop driver specific renderers and use generic driver across the + board. + + Better debug message output + + systemd integration fixes + + upstart integration fixes + + initrd scripts fixes + + Misc fixes + +------------------------------------------------------------------- +Thu Jun 5 07:24:10 UTC 2014 - idonmez@suse.com + +- Update fix-serial-consoles.patch to fix a crash in some rare + cases. + +------------------------------------------------------------------- +Wed May 21 12:11:25 UTC 2014 - idonmez@suse.com + +- Add fix-serial-consoles.patch to fix binary garbage on serial + consoles. This is bnc#873859 + +------------------------------------------------------------------- +Mon May 5 12:49:49 UTC 2014 - fcrozat@suse.com + +- Remove plymouth-restore-suspend.patch: suspend package is being + dropped, no longer needs to provide this old API. +- Remove requires on suspend package. + +------------------------------------------------------------------- +Thu Apr 17 12:56:23 UTC 2014 - idonmez@suse.com + +- Update to git snapshot as of 20140327 + * Fixes bnc#872502 and bnc#872428 + +------------------------------------------------------------------- +Wed Apr 16 11:35:30 UTC 2014 - trenn@suse.de + +- Kill all mkinitrd stuff + Remove suse-initrd-support +- Tell zypper to regenerate initrd on installation/update via %post and + %posttrans scripts + +------------------------------------------------------------------- +Thu Apr 10 10:55:03 UTC 2014 - idonmez@suse.com + +- Add plymouth-manpages.patch to fix manpage installation (bnc#871419) + +------------------------------------------------------------------- +Thu Feb 20 12:47:03 UTC 2014 - fcrozat@suse.com + +- Drop plymouth.conf, it is no longer used, plymouthd.conf is + nowadays. + +------------------------------------------------------------------- +Wed Feb 15 10:02:32 UTC 2014 - kigurame@opensuse.org +- Updated from git +- carried over patches +- Dropped 0001-Make-plymouthd-real-daemon-and-save-old-log.patch + Because it is really not necesary + ------------------------------------------------------------------- Wed Feb 12 14:19:48 UTC 2014 - werner@suse.de diff --git a/plymouth.spec b/plymouth.spec index 950464d..473953f 100644 --- a/plymouth.spec +++ b/plymouth.spec @@ -22,32 +22,53 @@ %define plymouth_initrd_file /boot/initrd-plymouth.img Name: plymouth -Version: 0.8.8_git201309032142 +Version: 0.9.0 Release: 0 Summary: Graphical Boot Animation and Logger License: GPL-2.0+ Group: System/Base Url: http://freedesktop.org/software/plymouth/releases -Source0: %{name}-%{version}.tar.xz +Source0: %{name}-%{version}.tar.bz2 Source1: boot-duration -# PATCH-OPENSUSE -- Support the openSUSE initrd -Patch1: suse-initrd-support # PATCH-OPENSUSE -- Handle correctly multiple displays with different sizes Patch3: plymouth-fix-window-size # PATCH-OPENSUSE -- Ensure graphical.target is conflicting with plymouth-wait-quit.service Patch4: stop-graphical.patch -# PATCH-OPENSUSE -- Restore suspend / resume state (needed for suspend package) -Patch5: plymouth-restore-suspend.patch # PATCH-OPENSUSE -- prefix is /usr/sbin and /usr/bin Patch9: plymouth-dracut-path.patch Patch10: 0001-Some-greenish-openSUSE-colors.patch # PATCH-OPENSUSE -- plymouth-correct-runtime-dir.patch tittiatcoke@gmail.com -- make sure the runtime directory is /run and not /var/run Patch16: plymouth-correct-runtime-dir.patch -# PATCH-SUSE -- 0001-Make-plymouthd-real-daemon-and-save-old-log.patch werner@suse.de -- All daemons should call setsid(2) to become a real daemons -Patch17: 0001-Make-plymouthd-real-daemon-and-save-old-log.patch +# PATCH-FIX-UPSTREAM plymouth-manpages.patch idoenmez@suse.de -- Fix man page installation +Patch17: plymouth-manpages.patch +Patch18: fix-serial-consoles.patch +# PATCH-FIX-UPSTREAM 0001-device-manager-only-call-ply_terminal_free.patch fcrozat@suse.com -- Fix crash +Patch19: 0001-device-manager-only-call-ply_terminal_free.patch +# PATCH-FIX-OPENSUSE use-mkinitrd.patch fcrozat@suse.com -- call mkinitrd -B for now +Patch20: use-mkinitrd.patch +# PATCH-FIX-UPSTREAM 0001-seats-guard-against-NULL-terminal.patch fcrozat@suse.com -- guard against null terminal +Patch21: 0001-seats-guard-against-NULL-terminal.patch +# PATCH-FIX-UPSTREAM 0001-splash-remove-pixel_pixel-in-sprite-lib-when-notifie.patch fcrozat@suse.com -- prevent crash if pixel display is removed +Patch22: 0001-splash-remove-pixel_pixel-in-sprite-lib-when-notifie.patch +# PATCH-FIX-UPSTREAM 0001-splash-do-not-process-display-lists-if-it-is-empty.patch fcrozat@suse.com -- do no crash when removing displays +Patch23: 0001-splash-do-not-process-display-lists-if-it-is-empty.patch +# PATCH-FIX-UPSTREAM 0001-libply-splash-core-also-monitor-for-file-removal-in-.patch fcrozat@suse.com -- handle recent udev +Patch24: 0001-libply-splash-core-also-monitor-for-file-removal-in-.patch +# PATCH-FIX-UPSTREAM 0001-seat-be-a-little-more-forgiving-in-the-case-there-s-.patch fcrozat@suse.com -- handle empty seat better +Patch25: 0001-seat-be-a-little-more-forgiving-in-the-case-there-s-.patch +# PATCH-FIX-UPSTREAM plymouth-ignore-cirrusdrm.patch fcrozat@suse.com -- ignore cirrusdrm, use fb instead +Patch26: plymouth-ignore-cirrusdrm.patch +# PATCH-FIX-UPSTREAM 0001-text-step-bar-use-correct-utf-8-multibyte-sequence-f.patch bnc#886148 fcrozat@suse.com -- fix UTF-8 code for square +Patch27: 0001-text-step-bar-use-correct-utf-8-multibyte-sequence-f.patch +Patch28: plymouth-boot-vga-framebuffer.patch +Patch29: 0001-let-it-become-a-real-daemon.patch + BuildRequires: automake +BuildRequires: docbook-xsl-stylesheets BuildRequires: kernel-headers BuildRequires: libtool +BuildRequires: libudev-devel +BuildRequires: libxslt BuildRequires: module-init-tools BuildRequires: update-desktop-files BuildRequires: xz @@ -55,12 +76,9 @@ BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(systemd) >= 186 Requires: %{name}-branding Requires: gnu-unifont-bitmap-fonts -%ifarch %ix86 x86_64 ppc ppc64 ppc64le -Requires: suspend >= 0.80.20100129.1 -%endif Requires: systemd >= 186 Requires(post): plymouth-scripts = %{version} -Requires(post): mkinitrd +BuildRequires: suse-module-tools Suggests: plymouth-plugin-label Provides: bootsplash = 3.4 Obsoletes: bootsplash <= 3.4 @@ -156,7 +174,6 @@ Requires: coreutils Requires: cpio Requires: findutils Requires: pigz -Requires(post): mkinitrd %description scripts This package contains scripts that help integrate Plymouth with @@ -239,6 +256,19 @@ Plymouth. It features an extensible, scriptable boot splash language that simplifies the process of designing custom boot splash themes. +%package plugin-tribar +Summary: Plymouth "script" plugin +Group: System/Base +Requires: libply-splash-core2 = %{version} +Requires: libply-splash-graphics2 = %{version} +Requires: libply2 = %{version} + +%description plugin-tribar +This package contains the "tribar" boot splash plugin for +Plymouth. It features an extensible, scriptable boot splash +language that simplifies the process of designing custom +boot splash themes. + %package theme-fade-in Summary: Plymouth "Fade-In" theme Group: System/Base @@ -287,6 +317,17 @@ BuildArch: noarch This package contains the "Solar" boot splash theme for Plymouth. It features a blue flamed sun with animated solar flares. +%package theme-tribar +Summary: Plymouth "Tribar" theme +Group: System/Base +Requires: %{name}-plugin-tribar = %{version} +Requires(post): %{name}-scripts +BuildArch: noarch + +%description theme-tribar +This package contains the "Tribar" boot splash theme for +Plymouth + %package theme-script Summary: Plymouth "Script" plugin Group: System/Base @@ -301,21 +342,35 @@ plugin. %prep %setup -q -%patch1 -p1 %patch3 -p1 %patch4 -p1 -%ifarch %ix86 x86_64 ppc ppc64 ppc64le -%patch5 -p1 -%endif %patch9 -p0 %patch10 -p1 %patch16 -p1 %patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%patch27 -p1 +%patch28 -p1 +%patch29 -p1 + # replace builddate with patch0date sed -i "s/__DATE__/\"$(stat -c %y %{_sourcedir}/%{name}.changes)\"/" src/main.c # Change the default theme -sed -i -e 's/fade-in/openSUSE/g' src/plymouthd.defaults + +%if %{suse_version} == 1315 +sed -i -e 's/spinner/SLE/g' src/plymouthd.defaults +%else +sed -i -e 's/spinner/openSUSE/g' src/plymouthd.defaults +%endif %build autoreconf -fiv @@ -330,11 +385,10 @@ autoreconf -fiv --with-log-viewer \ --without-rhgb-compat-link \ --with-boot-tty=/dev/tty7 \ - --with-shutdown-tty=/dev/tty7 \ + --with-shutdown-tty=/dev/tty1 \ --without-gdm-autostart-file \ --with-release-file=/etc/os-release -make clean make %{?_smp_mflags} V=1 %install @@ -361,12 +415,12 @@ touch %{buildroot}%{_localstatedir}/log/boot.log touch %{buildroot}%{_localstatedir}/spool/plymouth/boot.log cp $RPM_SOURCE_DIR/boot-duration %{buildroot}%{_datadir}/plymouth/default-boot-duration cp $RPM_SOURCE_DIR/boot-duration %{buildroot}%{_localstatedir}/lib/plymouth -cp %{buildroot}/%{_datadir}/plymouth/plymouthd.defaults %{buildroot}/%{_sysconfdir}/plymouth/plymouth.conf +cp %{buildroot}/%{_datadir}/plymouth/plymouthd.defaults %{buildroot}/%{_sysconfdir}/plymouth/plymouthd.conf %post +%{?regenerate_initrd_post} if [ ! -e /.buildenv ]; then [ -f %{_localstatedir}/lib/plymouth/boot-duration ] || cp -f %{_datadir}/plymouth/default-boot-duration %{_localstatedir}/lib/plymouth/boot-duration - %{_libexecdir}/plymouth/plymouth-update-initrd fi [ -x /bin/systemctl ] && /bin/systemctl daemon-reload >/dev/null 2>&1 || : @@ -377,6 +431,9 @@ if [ $1 -eq 0 ]; then [ -x /bin/systemctl ] && /bin/systemctl daemon-reload >/dev/null 2>&1 || : fi +%posttrans +%{?regenerate_initrd_posttrans} + %post -n libply-boot-client2 -p /sbin/ldconfig %postun -n libply-boot-client2 -p /sbin/ldconfig @@ -471,7 +528,6 @@ fi %dir %{_libdir}/plymouth/renderers %dir %{_sysconfdir}/plymouth %config(noreplace) %{_sysconfdir}/plymouth/plymouthd.conf -%config(noreplace) %{_sysconfdir}/plymouth/plymouth.conf %{plymouthdaemon_execdir}/plymouthd %{plymouthclient_execdir}/plymouth /bin/plymouth @@ -491,6 +547,7 @@ fi %{_unitdir}/* %ghost %{_localstatedir}/log/boot.log %ghost %{_localstatedir}/spool/plymouth/boot.log + %files dracut %defattr(-, root, root) %{_libexecdir}/plymouth/plymouth-populate-initrd @@ -583,10 +640,19 @@ fi %{_datadir}/plymouth/themes/solar/*.png %{_datadir}/plymouth/themes/solar/solar.plymouth +%files theme-tribar +%defattr(-, root, root) +%dir %{_datadir}/plymouth/themes/tribar +%{_datadir}/plymouth/themes/tribar/*.* + %files plugin-two-step %defattr(-, root, root) %{_libdir}/plymouth/two-step.so +%files plugin-tribar +%defattr(-, root, root) +%{_libdir}/plymouth/tribar.so + %files plugin-script %defattr(-, root, root) %{_libdir}/plymouth/script.so diff --git a/stop-graphical.patch b/stop-graphical.patch index e2768b8..99100cc 100644 --- a/stop-graphical.patch +++ b/stop-graphical.patch @@ -1,7 +1,7 @@ -Index: plymouth-0.8.6.1/systemd-units/plymouth-quit-wait.service.in +Index: plymouth-0.9.0/systemd-units/plymouth-quit-wait.service.in =================================================================== ---- plymouth-0.8.6.1.orig/systemd-units/plymouth-quit-wait.service.in -+++ plymouth-0.8.6.1/systemd-units/plymouth-quit-wait.service.in +--- plymouth-0.9.0.orig/systemd-units/plymouth-quit-wait.service.in ++++ plymouth-0.9.0/systemd-units/plymouth-quit-wait.service.in @@ -1,6 +1,7 @@ [Unit] Description=Wait for Plymouth Boot Screen to Quit @@ -10,10 +10,10 @@ Index: plymouth-0.8.6.1/systemd-units/plymouth-quit-wait.service.in [Service] ExecStart=-@PLYMOUTH_CLIENT_DIR@/plymouth --wait -Index: plymouth-0.8.6.1/systemd-units/plymouth-quit.service.in +Index: plymouth-0.9.0/systemd-units/plymouth-quit.service.in =================================================================== ---- plymouth-0.8.6.1.orig/systemd-units/plymouth-quit.service.in -+++ plymouth-0.8.6.1/systemd-units/plymouth-quit.service.in +--- plymouth-0.9.0.orig/systemd-units/plymouth-quit.service.in ++++ plymouth-0.9.0/systemd-units/plymouth-quit.service.in @@ -1,6 +1,7 @@ [Unit] Description=Terminate Plymouth Boot Screen diff --git a/suse-initrd-support b/suse-initrd-support deleted file mode 100644 index 02474d2..0000000 --- a/suse-initrd-support +++ /dev/null @@ -1,140 +0,0 @@ -Index: plymouth-0.8.8_git201309032142/configure.ac -=================================================================== ---- plymouth-0.8.8_git201309032142.orig/configure.ac -+++ plymouth-0.8.8_git201309032142/configure.ac -@@ -302,6 +302,7 @@ AC_CONFIG_FILES([Makefile - themes/spinner/Makefile - themes/script/Makefile - images/Makefile -+ scripts/setup-plymouth.sh - scripts/plymouth-generate-initrd - scripts/plymouth-populate-initrd - scripts/plymouth-set-default-theme -Index: plymouth-0.8.8_git201309032142/scripts/boot-plymouth.chroot.sh -=================================================================== ---- /dev/null -+++ plymouth-0.8.8_git201309032142/scripts/boot-plymouth.chroot.sh -@@ -0,0 +1,23 @@ -+#!/bin/bash -+#%stage: setup -+#%depends: plymouth -+#%programs: /usr/bin/plymouth /usr/sbin/plymouthd /usr/bin/readlink -+#%dontshow -+ -+ply_init_is_systemd() -+{ -+ local d="$init" -+ [ -n "$d" ] || return 1 -+ if [ -L "/root$d" ]; then -+ d=`readlink "/root$d"` -+ fi -+ [ "${d##*/}" = systemd ] || return 1 -+ return 0 -+} -+ -+if ply_init_is_systemd; then -+ plymouth update-root-fs --new-root-dir=/root -+else -+ echo "init $init is not systemd, terminate plymouth" -+ plymouth quit -+fi -Index: plymouth-0.8.8_git201309032142/scripts/boot-plymouth.sh -=================================================================== ---- /dev/null -+++ plymouth-0.8.8_git201309032142/scripts/boot-plymouth.sh -@@ -0,0 +1,23 @@ -+#!/bin/bash -+#%stage: boot -+#%depends: start udev kms -+#%programs: /usr/bin/plymouth /usr/sbin/plymouthd -+#%if: -z "$root_luks" -a -z "$luks" -+ -+enable_plymouth=1 -+for o in $(cat /proc/cmdline) ; do -+ case "$o" in -+ shell*|plymouth.enable=0*|rd.plymouth=0*) -+ enable_plymouth=0 -+ break -+ ;; -+ esac -+done -+if [ "$enable_plymouth" = "1" ]; then -+ mkdir --mode 755 /run/plymouth -+ -+ /usr/sbin/plymouthd --attach-to-session --pid-file /run/plymouth/pid -+ -+ plymouth show-splash -+fi -+ -Index: plymouth-0.8.8_git201309032142/scripts/setup-plymouth.sh.in -=================================================================== ---- /dev/null -+++ plymouth-0.8.8_git201309032142/scripts/setup-plymouth.sh.in -@@ -0,0 +1,59 @@ -+#!/bin/bash -+# -+#%stage: setup -+#%depends: start -+ -+# We don't need to copy the binaries since boot-plymouth.sh does that for us -+ -+[ -z "$tmp_mnt" ] && exit 1 -+ -+THEME=$(plymouth-set-default-theme) -+ -+PLUGIN_PATH=$(plymouth --get-splash-plugin-path) -+ -+MODULE=$(grep "ModuleName *= *" @PLYMOUTH_DATADIR@/plymouth/themes/${THEME}/${THEME}.plymouth | sed 's/ModuleName *= *//') -+ -+if [ ! -f "$PLUGIN_PATH/${MODULE}.so" ]; then -+ echo "The default plymouth plugin ($MODULE) doesn't exist." > /dev/stderr -+ exit 1 -+fi -+ -+FILES="/usr/share/plymouth/themes/text/text.plymouth \ -+ /usr/share/plymouth/themes/details/details.plymouth \ -+ /usr/share/plymouth/plymouthd.defaults \ -+ /usr/share/plymouth/themes/${THEME}/* \ -+ /etc/plymouth/plymouthd.conf \ -+ /usr/share/fonts/uni/unifont.pcf.gz /etc/os-release \ -+ /etc/fonts/fonts.conf \ -+ /etc/fonts/conf.d/69-unifont.conf " -+ -+PLUGINS="${PLUGIN_PATH}/details.so \ -+ ${PLUGIN_PATH}/text.so \ -+ ${PLUGIN_PATH}/label.so \ -+ ${PLUGIN_PATH}/${MODULE}.so \ -+ ${PLUGIN_PATH}/renderers/drm.so \ -+ ${PLUGIN_PATH}/renderers/frame-buffer.so" -+ -+for file in $FILES; do -+ install -D $file $tmp_mnt/$file -+done -+ -+for plugin in $PLUGINS; do -+ mkdir -p $tmp_mnt/$(dirname $plugin) -+ cp_bin $plugin $tmp_mnt/$plugin -+done -+ -+_libdir=`rpm --eval '%{_lib}'` -+mkdir -p $tmp_mnt/etc/pango -+if [ "$_libdir" == "lib64" ]; -+ then -+ _pangodir=`pango-querymodules-64 | grep ModulesPath | awk '{print $4}'` -+ pango-querymodules-64 > $tmp_mnt/etc/pango/pango.modules -+ pangobasicfc="${_pangodir}/pango-basic-fc.so" -+ else -+ _pangodir=`pango-querymodules | grep ModulesPath | awk '{print $4}'` -+ pango-querymodules > $tmp_mnt/etc/pango/pango.modules -+ pangobasicfc="${_pangodir}/pango-basic-fc.so" -+fi -+install -D ${pangobasicfc} $tmp_mnt/${pangobasicfc} -+mkdir -p $tmp_mnt/var/cache/fontconfig -Index: plymouth-0.8.8_git201309032142/scripts/plymouth-update-initrd -=================================================================== ---- plymouth-0.8.8_git201309032142.orig/scripts/plymouth-update-initrd -+++ plymouth-0.8.8_git201309032142/scripts/plymouth-update-initrd -@@ -1,2 +1,2 @@ - #!/bin/bash --mkinitrd -f /boot/initrd-$(uname -r).img $(uname -r) -+/sbin/mkinitrd diff --git a/use-mkinitrd.patch b/use-mkinitrd.patch new file mode 100644 index 0000000..ccb74ba --- /dev/null +++ b/use-mkinitrd.patch @@ -0,0 +1,8 @@ +Index: plymouth-0.9.0/scripts/plymouth-update-initrd +=================================================================== +--- plymouth-0.9.0.orig/scripts/plymouth-update-initrd ++++ plymouth-0.9.0/scripts/plymouth-update-initrd +@@ -1,2 +1,2 @@ + #!/bin/bash +-dracut -f ++mkinitrd -B