From 547f311b21d1089cfcc8ee63506a348826da10e5 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 28 Apr 2020 04:55:31 -0400 Subject: [PATCH] import plymouth-0.9.3-16.el8 --- ...on-t-watch-for-udev-events-when-deac.patch | 489 ++++++++++++++++++ SOURCES/ship-label-plugin-in-initrd.patch | 143 +++++ SPECS/plymouth.spec | 12 +- 3 files changed, 642 insertions(+), 2 deletions(-) create mode 100644 SOURCES/0001-device-manager-don-t-watch-for-udev-events-when-deac.patch create mode 100644 SOURCES/ship-label-plugin-in-initrd.patch diff --git a/SOURCES/0001-device-manager-don-t-watch-for-udev-events-when-deac.patch b/SOURCES/0001-device-manager-don-t-watch-for-udev-events-when-deac.patch new file mode 100644 index 0000000..5072cf1 --- /dev/null +++ b/SOURCES/0001-device-manager-don-t-watch-for-udev-events-when-deac.patch @@ -0,0 +1,489 @@ +From b5bacf2b5e5d9e58cbe96fda0a56baf5dfa11358 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 10 Oct 2018 20:07:37 +0100 +Subject: [PATCH] device-manager: don't watch for udev events when deactivated + +If a device gets added when we're already deactivated, plymouth shouldn't +process the device, since processing it effectively activates plymouth. + +This commit pulls the udev monitor fd out of the event loop while +plymouth is deactivated so new events are deferred until reactivation. + +Modified by Iain Lane : Also deactivate the +timer that finds all devices known to udev after an interval, when +paused. +--- + src/libply-splash-core/ply-device-manager.c | 74 +++++++++++++++++---- + src/libply-splash-core/ply-device-manager.h | 2 + + src/main.c | 3 + + 3 files changed, 67 insertions(+), 12 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index b637fb8..82f0137 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -36,74 +36,78 @@ + + #include "ply-logger.h" + #include "ply-event-loop.h" + #include "ply-hashtable.h" + #include "ply-list.h" + #include "ply-utils.h" + + #define SUBSYSTEM_DRM "drm" + #define SUBSYSTEM_FRAME_BUFFER "graphics" + + #ifdef HAVE_UDEV + static void create_devices_from_udev (ply_device_manager_t *manager); + #endif + + static bool create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager, + const char *device_path, + ply_terminal_t *terminal, + ply_renderer_type_t renderer_type); + struct _ply_device_manager + { + ply_device_manager_flags_t flags; + ply_event_loop_t *loop; + ply_hashtable_t *terminals; + ply_hashtable_t *renderers; + ply_terminal_t *local_console_terminal; + ply_list_t *keyboards; + ply_list_t *text_displays; + ply_list_t *pixel_displays; + struct udev *udev_context; + struct udev_monitor *udev_monitor; ++ ply_fd_watch_t *fd_watch; + + ply_keyboard_added_handler_t keyboard_added_handler; + ply_keyboard_removed_handler_t keyboard_removed_handler; + ply_pixel_display_added_handler_t pixel_display_added_handler; + ply_pixel_display_removed_handler_t pixel_display_removed_handler; + ply_text_display_added_handler_t text_display_added_handler; + ply_text_display_removed_handler_t text_display_removed_handler; + void *event_handler_data; + + uint32_t local_console_managed : 1; + uint32_t local_console_is_text : 1; + uint32_t serial_consoles_detected : 1; + uint32_t renderers_activated : 1; + uint32_t keyboards_activated : 1; ++ ++ uint32_t paused : 1; ++ uint32_t device_timeout_elapsed : 1; + }; + + static void + detach_from_event_loop (ply_device_manager_t *manager) + { + assert (manager != NULL); + + manager->loop = NULL; + } + + static void + attach_to_event_loop (ply_device_manager_t *manager, + ply_event_loop_t *loop) + { + assert (manager != NULL); + assert (loop != NULL); + assert (manager->loop == NULL); + + manager->loop = loop; + + ply_event_loop_watch_for_exit (loop, (ply_event_loop_exit_handler_t) + detach_from_event_loop, + manager); + } + + static void + free_displays_for_renderer (ply_device_manager_t *manager, + ply_renderer_t *renderer) + { + ply_list_node_t *node; +@@ -348,77 +352,92 @@ on_udev_event (ply_device_manager_t *manager) + return; + + if (strcmp (action, "add") == 0) { + const char *subsystem; + + subsystem = udev_device_get_subsystem (device); + + if (strcmp (subsystem, SUBSYSTEM_DRM) == 0) { + if (manager->local_console_managed && manager->local_console_is_text) + ply_trace ("ignoring since we're already using text splash for local console"); + else + create_devices_for_udev_device (manager, device); + } else { + ply_trace ("ignoring since we only handle subsystem %s devices after timeout", subsystem); + } + } else if (strcmp (action, "remove") == 0) { + free_devices_for_udev_device (manager, device); + } + + udev_device_unref (device); + } + + static void + watch_for_udev_events (ply_device_manager_t *manager) + { + int fd; + + assert (manager != NULL); + assert (manager->udev_monitor == NULL); + ++ if (manager->fd_watch != NULL) ++ return; ++ + ply_trace ("watching for udev graphics device add and remove events"); + +- manager->udev_monitor = udev_monitor_new_from_netlink (manager->udev_context, "udev"); ++ if (manager->udev_monitor == NULL) { ++ manager->udev_monitor = udev_monitor_new_from_netlink (manager->udev_context, "udev"); + +- udev_monitor_filter_add_match_subsystem_devtype (manager->udev_monitor, SUBSYSTEM_DRM, NULL); +- udev_monitor_filter_add_match_subsystem_devtype (manager->udev_monitor, SUBSYSTEM_FRAME_BUFFER, NULL); +- udev_monitor_filter_add_match_tag (manager->udev_monitor, "seat"); +- udev_monitor_enable_receiving (manager->udev_monitor); ++ udev_monitor_filter_add_match_subsystem_devtype (manager->udev_monitor, SUBSYSTEM_DRM, NULL); ++ udev_monitor_filter_add_match_subsystem_devtype (manager->udev_monitor, SUBSYSTEM_FRAME_BUFFER, NULL); ++ udev_monitor_filter_add_match_tag (manager->udev_monitor, "seat"); ++ udev_monitor_enable_receiving (manager->udev_monitor); ++ } + + fd = udev_monitor_get_fd (manager->udev_monitor); +- ply_event_loop_watch_fd (manager->loop, +- fd, +- PLY_EVENT_LOOP_FD_STATUS_HAS_DATA, +- (ply_event_handler_t) +- on_udev_event, +- NULL, +- manager); ++ manager->fd_watch = ply_event_loop_watch_fd (manager->loop, ++ fd, ++ PLY_EVENT_LOOP_FD_STATUS_HAS_DATA, ++ (ply_event_handler_t) ++ on_udev_event, ++ NULL, ++ manager); ++} ++ ++static void ++stop_watching_for_udev_events (ply_device_manager_t *manager) ++{ ++ if (manager->fd_watch == NULL) ++ return; ++ ++ ply_event_loop_stop_watching_fd (manager->loop, manager->fd_watch); ++ manager->fd_watch = NULL; + } + #endif + + static void + free_terminal (char *device, + ply_terminal_t *terminal, + ply_device_manager_t *manager) + { + ply_hashtable_remove (manager->terminals, device); + + ply_terminal_free (terminal); + } + + static void + free_terminals (ply_device_manager_t *manager) + { + ply_hashtable_foreach (manager->terminals, + (ply_hashtable_foreach_func_t *) + free_terminal, + manager); + } + + static ply_terminal_t * + get_terminal (ply_device_manager_t *manager, + const char *device_name) + { + char *full_name = NULL; + ply_terminal_t *terminal; + + if (strncmp (device_name, "/dev/", strlen ("/dev/")) == 0) +@@ -774,60 +793,67 @@ create_devices_from_terminals (ply_device_manager_t *manager) + + if (has_serial_consoles) { + ply_trace ("serial consoles detected, managing them with details forced"); + manager->serial_consoles_detected = true; + + ply_hashtable_foreach (manager->terminals, + (ply_hashtable_foreach_func_t *) + create_devices_for_terminal, + manager); + return true; + } + + return false; + } + + static void + create_non_graphical_devices (ply_device_manager_t *manager) + { + create_devices_for_terminal_and_renderer_type (manager, + NULL, + manager->local_console_terminal, + PLY_RENDERER_TYPE_NONE); + } + + #ifdef HAVE_UDEV + static void + create_devices_from_udev (ply_device_manager_t *manager) + { + bool found_drm_device, found_fb_device; + ++ manager->device_timeout_elapsed = true; ++ ++ if (manager->paused) { ++ ply_trace ("create_devices_from_udev timeout elapsed while paused, deferring execution"); ++ return; ++ } ++ + ply_trace ("Timeout elapsed, looking for devices from udev"); + + found_drm_device = create_devices_for_subsystem (manager, SUBSYSTEM_DRM); + found_fb_device = create_devices_for_subsystem (manager, SUBSYSTEM_FRAME_BUFFER); + + if (found_drm_device || found_fb_device) + return; + + ply_trace ("Creating non-graphical devices, since there's no suitable graphics hardware"); + create_non_graphical_devices (manager); + } + #endif + + static void + create_fallback_devices (ply_device_manager_t *manager) + { + create_devices_for_terminal_and_renderer_type (manager, + NULL, + manager->local_console_terminal, + PLY_RENDERER_TYPE_AUTO); + } + + void + ply_device_manager_watch_devices (ply_device_manager_t *manager, + double device_timeout, + ply_keyboard_added_handler_t keyboard_added_handler, + ply_keyboard_removed_handler_t keyboard_removed_handler, + ply_pixel_display_added_handler_t pixel_display_added_handler, + ply_pixel_display_removed_handler_t pixel_display_removed_handler, + ply_text_display_added_handler_t text_display_added_handler, +@@ -965,30 +991,54 @@ ply_device_manager_activate_keyboards (ply_device_manager_t *manager) + + ply_keyboard_watch_for_input (keyboard); + + node = next_node; + } + + manager->keyboards_activated = true; + } + + void + ply_device_manager_deactivate_keyboards (ply_device_manager_t *manager) + { + ply_list_node_t *node; + + ply_trace ("deactivating keyboards"); + node = ply_list_get_first_node (manager->keyboards); + while (node != NULL) { + ply_keyboard_t *keyboard; + ply_list_node_t *next_node; + + keyboard = ply_list_node_get_data (node); + next_node = ply_list_get_next_node (manager->keyboards, node); + + ply_keyboard_stop_watching_for_input (keyboard); + + node = next_node; + } + + manager->keyboards_activated = false; + } ++ ++void ++ply_device_manager_pause (ply_device_manager_t *manager) ++{ ++ ply_trace ("ply_device_manager_pause() called, stopping watching for udev events"); ++ manager->paused = true; ++#ifdef HAVE_UDEV ++ stop_watching_for_udev_events (manager); ++#endif ++} ++ ++void ++ply_device_manager_unpause (ply_device_manager_t *manager) ++{ ++ ply_trace ("ply_device_manager_unpause() called, resuming watching for udev events"); ++ manager->paused = false; ++#ifdef HAVE_UDEV ++ if (manager->device_timeout_elapsed) { ++ ply_trace ("ply_device_manager_unpause(): timeout elapsed while paused, looking for udev devices"); ++ create_devices_from_udev (manager); ++ } ++ watch_for_udev_events (manager); ++#endif ++} +diff --git a/src/libply-splash-core/ply-device-manager.h b/src/libply-splash-core/ply-device-manager.h +index ad05897..389b636 100644 +--- a/src/libply-splash-core/ply-device-manager.h ++++ b/src/libply-splash-core/ply-device-manager.h +@@ -28,46 +28,48 @@ + #include "ply-text-display.h" + + typedef enum + { + PLY_DEVICE_MANAGER_FLAGS_NONE = 0, + PLY_DEVICE_MANAGER_FLAGS_IGNORE_SERIAL_CONSOLES = 1 << 0, + PLY_DEVICE_MANAGER_FLAGS_IGNORE_UDEV = 1 << 1, + PLY_DEVICE_MANAGER_FLAGS_SKIP_RENDERERS = 1 << 2 + } ply_device_manager_flags_t; + + typedef struct _ply_device_manager ply_device_manager_t; + typedef void (* ply_keyboard_added_handler_t) (void *, ply_keyboard_t *); + typedef void (* ply_keyboard_removed_handler_t) (void *, ply_keyboard_t *); + typedef void (* ply_pixel_display_added_handler_t) (void *, ply_pixel_display_t *); + typedef void (* ply_pixel_display_removed_handler_t) (void *, ply_pixel_display_t *); + typedef void (* ply_text_display_added_handler_t) (void *, ply_text_display_t *); + typedef void (* ply_text_display_removed_handler_t) (void *, ply_text_display_t *); + + #ifndef PLY_HIDE_FUNCTION_DECLARATIONS + ply_device_manager_t *ply_device_manager_new (const char *default_tty, + ply_device_manager_flags_t flags); + void ply_device_manager_watch_devices (ply_device_manager_t *manager, + double device_timeout, + ply_keyboard_added_handler_t keyboard_added_handler, + ply_keyboard_removed_handler_t keyboard_removed_handler, + ply_pixel_display_added_handler_t pixel_display_added_handler, + ply_pixel_display_removed_handler_t pixel_display_removed_handler, + ply_text_display_added_handler_t text_display_added_handler, + ply_text_display_removed_handler_t text_display_removed_handler, + void *data); ++void ply_device_manager_pause (ply_device_manager_t *manager); ++void ply_device_manager_unpause (ply_device_manager_t *manager); + bool ply_device_manager_has_serial_consoles (ply_device_manager_t *manager); + bool ply_device_manager_has_displays (ply_device_manager_t *manager); + ply_list_t *ply_device_manager_get_keyboards (ply_device_manager_t *manager); + ply_list_t *ply_device_manager_get_pixel_displays (ply_device_manager_t *manager); + ply_list_t *ply_device_manager_get_text_displays (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); + void ply_device_manager_deactivate_keyboards (ply_device_manager_t *manager); + 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); + + #endif + + #endif + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +diff --git a/src/main.c b/src/main.c +index e44de7b..3253aa9 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -1305,94 +1305,97 @@ on_boot_splash_idle (state_t *state) + ply_trace ("quitting program"); + quit_program (state); + } else if (state->deactivate_trigger != NULL) { + ply_trace ("deactivating splash"); + deactivate_splash (state); + } + } + + static void + on_deactivate (state_t *state, + ply_trigger_t *deactivate_trigger) + { + if (state->is_inactive) { + ply_trigger_pull (deactivate_trigger, NULL); + return; + } + + if (state->deactivate_trigger != NULL) { + ply_trigger_add_handler (state->deactivate_trigger, + (ply_trigger_handler_t) + ply_trigger_pull, + deactivate_trigger); + return; + } + + state->deactivate_trigger = deactivate_trigger; + + ply_trace ("deactivating"); + cancel_pending_delayed_show (state); + ++ ply_device_manager_pause (state->device_manager); + ply_device_manager_deactivate_keyboards (state->device_manager); + + if (state->boot_splash != NULL) { + ply_boot_splash_become_idle (state->boot_splash, + (ply_boot_splash_on_idle_handler_t) + on_boot_splash_idle, + state); + } else { + ply_trace ("deactivating splash"); + deactivate_splash (state); + } + } + + static void + on_reactivate (state_t *state) + { + if (!state->is_inactive) + return; + + if (state->local_console_terminal != NULL) { + ply_terminal_open (state->local_console_terminal); + ply_terminal_watch_for_vt_changes (state->local_console_terminal); + ply_terminal_set_unbuffered_input (state->local_console_terminal); + ply_terminal_ignore_mode_changes (state->local_console_terminal, false); + } + + if ((state->session != NULL) && state->should_be_attached) { + ply_trace ("reactivating terminal session"); + attach_to_running_session (state); + } + + ply_device_manager_activate_keyboards (state->device_manager); + ply_device_manager_activate_renderers (state->device_manager); + ++ ply_device_manager_unpause (state->device_manager); ++ + state->is_inactive = false; + + update_display (state); + } + + static void + on_quit (state_t *state, + bool retain_splash, + ply_trigger_t *quit_trigger) + { + ply_trace ("quitting (retain splash: %s)", retain_splash ? "true" : "false"); + + if (state->quit_trigger != NULL) { + ply_trace ("quit trigger already pending, so chaining to it"); + ply_trigger_add_handler (state->quit_trigger, + (ply_trigger_handler_t) + ply_trigger_pull, + quit_trigger); + return; + } + + if (state->system_initialized) { + ply_trace ("system initialized so saving boot-duration file"); + ply_create_directory (PLYMOUTH_TIME_DIRECTORY); + ply_progress_save_cache (state->progress, + get_cache_file_for_mode (state->mode)); + } else { + ply_trace ("system not initialized so skipping saving boot-duration file"); + } + state->quit_trigger = quit_trigger; +-- +2.21.0 + diff --git a/SOURCES/ship-label-plugin-in-initrd.patch b/SOURCES/ship-label-plugin-in-initrd.patch new file mode 100644 index 0000000..39368c2 --- /dev/null +++ b/SOURCES/ship-label-plugin-in-initrd.patch @@ -0,0 +1,143 @@ +From aa56c9bab334f6c97204e83e578c000db274a3c0 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 17 Jun 2019 13:54:42 -0400 +Subject: [PATCH] ship-label-plugin-in-initrd.patch + +--- + scripts/plymouth-populate-initrd.in | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/scripts/plymouth-populate-initrd.in b/scripts/plymouth-populate-initrd.in +index 5f3bb85..36600a7 100755 +--- a/scripts/plymouth-populate-initrd.in ++++ b/scripts/plymouth-populate-initrd.in +@@ -1,47 +1,48 @@ + #!/bin/bash + # + # inst bits ruthlessly and viciously stolen from dracut + + [ -z "$DESTDIR" ] || exit 0 + + [ -z "$PLYMOUTH_LIBEXECDIR" ] && PLYMOUTH_LIBEXECDIR="@PLYMOUTH_LIBEXECDIR@" + [ -z "$PLYMOUTH_DATADIR" ] && PLYMOUTH_DATADIR="@PLYMOUTH_DATADIR@" + [ -z "$PLYMOUTH_PLUGIN_PATH" ] && PLYMOUTH_PLUGIN_PATH="$(plymouth --get-splash-plugin-path)" + [ -z "$PLYMOUTH_LOGO_FILE" ] && PLYMOUTH_LOGO_FILE="@PLYMOUTH_LOGO_FILE@" + [ -n "$PLYMOUTH_THEME_NAME" ] && THEME_OVERRIDE=1 + [ -z "$PLYMOUTH_THEME_NAME" ] && PLYMOUTH_THEME_NAME=$(plymouth-set-default-theme) + [ -z "$PLYMOUTH_CONFDIR" ] && PLYMOUTH_CONFDIR="@PLYMOUTH_CONF_DIR@" + [ -z "$PLYMOUTH_POLICYDIR" ] && PLYMOUTH_POLICYDIR="@PLYMOUTH_POLICY_DIR@" + [ -z "$PLYMOUTH_DAEMON_PATH" ] && PLYMOUTH_DAEMON_PATH="@PLYMOUTH_DAEMON_DIR@/plymouthd" + [ -z "$PLYMOUTH_CLIENT_PATH" ] && PLYMOUTH_CLIENT_PATH="@PLYMOUTH_CLIENT_DIR@/plymouth" + [ -z "$SYSTEMD_UNIT_DIR" ] && SYSTEMD_UNIT_DIR="@SYSTEMD_UNIT_DIR@" ++[ -z "$SUPPORTED_LANGUAGES" ] && SUPPORTED_LANGUAGES="pt fr de it ru es en zh ja ko zh as bn gu hi kn ml mr or pa ta te" + + # Generic substring function. If $2 is in $1, return 0. + strstr() { [ "${1#*$2*}" != "$1" ]; } + + ddebug() { + [ "$verbose" = "true" ] && echo "$@" + } + + # normalize_path + # Prints the normalized path, where it removes any duplicated + # and trailing slashes. + # Example: + # $ normalize_path ///test/test// + # /test/test + normalize_path() { + shopt -q -s extglob + set -- "${1//+(\/)//}" + shopt -q -u extglob + echo "${1%/}" + } + + # convert_abs_rel + # Prints the relative path, when creating a symlink to from . + # Example: + # $ convert_abs_rel /usr/bin/test /bin/test-2 + # ../../bin/test-2 + # $ ln -s $(convert_abs_rel /usr/bin/test /bin/test-2) /usr/bin/test + convert_abs_rel() { + local __current __absolute __abssize __cursize __newpath + local -i __i __level +@@ -390,59 +391,77 @@ if [ -z "$PLYMOUTH_THEME_NAME" ]; then + fi + + if [ $THEME_OVERRIDE ]; then + conf=$INITRDDIR/${PLYMOUTH_CONFDIR}/plymouthd.conf + echo "modifying plymouthd.conf: Theme=$PLYMOUTH_THEME_NAME" > /dev/stderr + # 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_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//') + + if [ ! -f ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then + echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" > /dev/stderr + exit 1 + fi + + inst ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so $INITRDDIR + + [ -f "${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_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME} ]; then + for x in ${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/* ; do + [ ! -f "$x" ] && continue + inst $x $INITRDDIR + done + fi + ++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 "$SYSTEMD_UNIT_DIR" ]; then + inst $SYSTEMD_UNIT_DIR/systemd-ask-password-plymouth.path $INITRDDIR + inst $SYSTEMD_UNIT_DIR/systemd-ask-password-plymouth.service $INITRDDIR + + inst $SYSTEMD_UNIT_DIR/plymouth-switch-root.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/plymouth-start.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/plymouth-quit.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/plymouth-quit-wait.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/plymouth-reboot.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/plymouth-kexec.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/plymouth-poweroff.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/plymouth-halt.service $INITRDDIR + + inst $SYSTEMD_UNIT_DIR/initrd-switch-root.target.wants/plymouth-switch-root.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/initrd-switch-root.target.wants/plymouth-start.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/sysinit.target.wants/plymouth-start.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/multi-user.target.wants/plymouth-quit.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/multi-user.target.wants/plymouth-quit-wait.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/reboot.target.wants/plymouth-reboot.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/kexec.target.wants/plymouth-kexec.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/poweroff.target.wants/plymouth-poweroff.service $INITRDDIR + inst $SYSTEMD_UNIT_DIR/halt.target.wants/plymouth-halt.service $INITRDDIR + fi + + # vim:ts=8:sw=4:sts=4:et +-- +2.21.0 + diff --git a/SPECS/plymouth.spec b/SPECS/plymouth.spec index 7c9cece..9f37d6e 100644 --- a/SPECS/plymouth.spec +++ b/SPECS/plymouth.spec @@ -16,7 +16,7 @@ Summary: Graphical Boot Animation and Logger Name: plymouth Version: 0.9.3 -Release: 15%{?snapshot_rel}%{?dist} +Release: 16%{?snapshot_rel}%{?dist} License: GPLv2+ URL: http://www.freedesktop.org/wiki/Software/Plymouth Group: System Environment/Base @@ -54,7 +54,10 @@ Patch26: 0006-boot-server-free-the-argument-and-triggers.patch Patch31: 0001-logger-Add-a-separator-between-different-boot-logs.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1661880 -#Patch41: 0001-device-manager-don-t-watch-for-udev-events-when-deac.patch +Patch41: 0001-device-manager-don-t-watch-for-udev-events-when-deac.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1702764 +Patch51: ship-label-plugin-in-initrd.patch BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libudev) @@ -479,6 +482,11 @@ fi %files system-theme %changelog +* Tue Dec 10 2019 Ray Strode - 0.9.3-16 +- ship fonts in initrd + Resolves: #1702764 +- fix unapplied patch + * Fri Sep 06 2019 Ray Strode - 0.9.3-15 - Fix udev activation race Resolves: #1661880