Accepting request 452822 from Base:System

- Remove patch which causes breakage with systemd-vconsole-setup (bsc#1020327):
  * 0001-let-it-become-a-real-daemon.patch
- Add upstream patch to fix crash on boot:
  * 0001-device-manager-handle-NULL-renderer-better.patch
- Replace removal of framebuffer driver and plymouth-ignore-cirrusdrm.patch
  with single patch:
  * only_use_fb_for_cirrus_bochs.patch (forwarded request 452722 from favogt)

OBS-URL: https://build.opensuse.org/request/show/452822
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/plymouth?expand=0&rev=53
This commit is contained in:
Dominique Leuenberger 2017-01-28 10:00:55 +00:00 committed by Git OBS Bridge
commit 0941e62024
13 changed files with 227 additions and 425 deletions

View File

@ -0,0 +1,47 @@
From fdda9af2c305ecf57407856b1d061c076ae8fe4a Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 18 Jan 2017 10:07:00 -0500
Subject: [PATCH] device-manager: handle NULL renderer better
Right now we'll pass a NULL device name and crash if the renderer
fails to open.
This commit fixes that.
---
src/libply-splash-core/ply-device-manager.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c
index 4004e11..b4c33d4 100644
--- a/src/libply-splash-core/ply-device-manager.c
+++ b/src/libply-splash-core/ply-device-manager.c
@@ -689,16 +689,18 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
return;
}
- old_renderer = ply_hashtable_lookup (manager->renderers,
- (void *) ply_renderer_get_device_name (renderer));
+ if (renderer != NULL) {
+ old_renderer = ply_hashtable_lookup (manager->renderers,
+ (void *) ply_renderer_get_device_name (renderer));
- if (old_renderer != NULL) {
- ply_trace ("ignoring device %s since it's alerady managed",
- ply_renderer_get_device_name (renderer));
- ply_renderer_free (renderer);
+ if (old_renderer != NULL) {
+ ply_trace ("ignoring device %s since it's alerady managed",
+ ply_renderer_get_device_name (renderer));
+ ply_renderer_free (renderer);
- renderer = NULL;
- return;
+ renderer = NULL;
+ return;
+ }
}
}
--
2.11.0

View File

@ -1,188 +0,0 @@
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.2/src/libply-splash-core/ply-device-manager.c
===================================================================
--- plymouth-0.9.2.orig/src/libply-splash-core/ply-device-manager.c
+++ plymouth-0.9.2/src/libply-splash-core/ply-device-manager.c
@@ -926,3 +926,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.2/src/libply-splash-core/ply-device-manager.h
===================================================================
--- plymouth-0.9.2.orig/src/libply-splash-core/ply-device-manager.h
+++ plymouth-0.9.2/src/libply-splash-core/ply-device-manager.h
@@ -52,6 +52,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.2/src/libply/ply-utils.c
===================================================================
--- plymouth-0.9.2.orig/src/libply/ply-utils.c
+++ plymouth-0.9.2/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,
@@ -771,6 +772,7 @@ ply_create_daemon (void)
if (!ply_read (receiver_fd, &byte, sizeof(uint8_t))) {
int read_error = errno;
int status;
+ inChild = true;
if (waitpid (pid, &status, WNOHANG) <= 0)
ply_error ("failed to read status from child immediately after starting to daemonize: %s", strerror (read_error));
@@ -811,6 +813,9 @@ ply_detach_daemon (ply_daemon_handle_t *
close (sender_fd);
free (handle);
+ if (inChild)
+ setsid();
+
return true;
}
Index: plymouth-0.9.2/src/libply/ply-terminal-session.c
===================================================================
--- plymouth-0.9.2.orig/src/libply/ply-terminal-session.c
+++ plymouth-0.9.2/src/libply/ply-terminal-session.c
@@ -187,6 +187,12 @@ 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.2/src/main.c
===================================================================
--- plymouth-0.9.2.orig/src/main.c
+++ plymouth-0.9.2/src/main.c
@@ -1026,6 +1026,7 @@ on_seat_added (state_t *state,
on_enter, state);
}
+static ply_device_manager_t *manager;
static void
load_devices (state_t *state,
ply_device_manager_flags_t flags)
@@ -1033,6 +1034,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,
@@ -1058,6 +1061,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);
}
}
@@ -1974,25 +1978,20 @@ dump_debug_buffer_to_file (void)
#include <termios.h>
#include <unistd.h>
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) {
dump_debug_buffer_to_file ();
@@ -2005,7 +2004,6 @@ on_crash (int signum)
pid_file = NULL;
}
- signal (signum, SIG_DFL);
raise (signum);
}
@@ -2039,6 +2037,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");
@@ -2141,8 +2140,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.

View File

@ -1,64 +0,0 @@
From a6eff09852c2eb4d684526b814d2b2df578938d0 Mon Sep 17 00:00:00 2001
From: Frederic Crozat <fcrozat@suse.com>
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(-)
Index: plymouth-0.9.2/src/libply-splash-core/ply-seat.c
===================================================================
--- plymouth-0.9.2.orig/src/libply-splash-core/ply-seat.c
+++ plymouth-0.9.2/src/libply-splash-core/ply-seat.c
@@ -101,10 +101,10 @@ add_text_displays (ply_seat_t *seat)
{
ply_text_display_t *display;
- if (!ply_terminal_is_open (seat->terminal)) {
- if (!ply_terminal_open (seat->terminal)) {
+ if (!seat->terminal || !ply_terminal_is_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;
}
}
Index: plymouth-0.9.2/src/libply-splash-core/ply-terminal.c
===================================================================
--- plymouth-0.9.2.orig/src/libply-splash-core/ply-terminal.c
+++ plymouth-0.9.2/src/libply-splash-core/ply-terminal.c
@@ -639,24 +639,27 @@ ply_terminal_get_fd (ply_terminal_t *ter
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);
return;

14
_service Normal file
View File

@ -0,0 +1,14 @@
<services>
<service mode="disabled" name="tar_scm">
<param name="url">git://anongit.freedesktop.org/plymouth</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
<param name="filename">plymouth</param>
<param name="versionformat">0.9.2+git%cd.%h</param>
</service>
<service mode="disabled" name="recompress">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service mode="disabled" name="set_version"/>
</services>

4
_servicedata Normal file
View File

@ -0,0 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">git://anongit.freedesktop.org/plymouth</param>
<param name="changesrevision">18dd75589bbdf0ddc07a61421f05078df88ee768</param></service></servicedata>

View File

@ -1,83 +0,0 @@
Index: plymouth-0.9.2/src/libply-splash-core/ply-device-manager.c
===================================================================
--- plymouth-0.9.2.orig/src/libply-splash-core/ply-device-manager.c
+++ plymouth-0.9.2/src/libply-splash-core/ply-device-manager.c
@@ -62,6 +62,7 @@ struct _ply_device_manager
ply_seat_added_handler_t seat_added_handler;
ply_seat_removed_handler_t seat_removed_handler;
void *seat_event_handler_data;
+ bool has_serial_consoles;
};
static void
@@ -501,6 +502,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);
@@ -663,18 +665,16 @@ 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,
(ply_hashtable_foreach_func_t *)
@@ -821,6 +821,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.9.2/src/main.c
===================================================================
--- plymouth-0.9.2.orig/src/main.c
+++ plymouth-0.9.2/src/main.c
@@ -854,7 +854,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.9.2/src/libply-splash-core/ply-device-manager.h
===================================================================
--- plymouth-0.9.2.orig/src/libply-splash-core/ply-device-manager.h
+++ plymouth-0.9.2/src/libply-splash-core/ply-device-manager.h
@@ -44,6 +44,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);

View File

@ -0,0 +1,47 @@
From: Fabian Vogt <fvogt@suse.com>
Subject: force fb for cirrus and bochs, force drm otherwise
References: bsc#888590, bsc#980750
DRM does not work well with cirrus and bochs (no display) but the framebuffer driver
prevents DRM drivers from loading.
As we need to support cirrus for libvirt and bochs for QEMU, we cannot just remove support for frame-buffer.
Index: plymouth-0.9.2+git20161215.18dd755/src/libply-splash-core/ply-device-manager.c
===================================================================
--- plymouth-0.9.2+git20161215.18dd755.orig/src/libply-splash-core/ply-device-manager.c
+++ plymouth-0.9.2+git20161215.18dd755/src/libply-splash-core/ply-device-manager.c
@@ -227,13 +227,33 @@ create_devices_for_udev_device (ply_devi
subsystem = udev_device_get_subsystem (device);
ply_trace ("device subsystem is %s", subsystem);
+ const char *card_vendor = udev_device_get_sysattr_value (device, "device/vendor");
+ const char *card_device = udev_device_get_sysattr_value (device, "device/device");
+ bool use_fb = false;
+ if (card_vendor) {
+ /* Cirrus */
+ if (strcmp ("0x1013", card_vendor) == 0)
+ use_fb = true;
+ /* "Technical Corp", also used by bochs */
+ else if (strcmp ("0x1234", card_vendor) == 0)
+ use_fb = strcmp("0x1111", card_device) == 0;
+ }
+
if (subsystem != NULL && strcmp (subsystem, SUBSYSTEM_DRM) == 0) {
ply_trace ("found DRM device %s", device_path);
renderer_type = PLY_RENDERER_TYPE_DRM;
+ if (use_fb) {
+ ply_trace ("forcing use of framebuffer for cirrusdrmfb");
+ renderer_type = PLY_RENDERER_TYPE_NONE;
+ }
} 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))
+ if (use_fb) {
renderer_type = PLY_RENDERER_TYPE_FRAME_BUFFER;
+ }
+ else if (!fb_device_has_drm_device (manager, device)) {
+ ply_trace ("avoiding use of framebuffer to not block DRM drivers from working");
+ }
else
ply_trace ("ignoring, since there's a DRM device associated with it");
}

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eb7c15c1b0261fd0079fae5174abd7154cc3786ae3a7367c3544f3b866d7595f
size 871936

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2f0ce82042cf9c7eadd2517a1f74c8a85fa8699781d9f294a06eade29fbed57f
size 1231336

View File

@ -1,19 +0,0 @@
Index: plymouth-0.9.2/src/libply-splash-core/ply-device-manager.c
===================================================================
--- plymouth-0.9.2.orig/src/libply-splash-core/ply-device-manager.c
+++ plymouth-0.9.2/src/libply-splash-core/ply-device-manager.c
@@ -102,12 +102,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;

View File

@ -1,15 +0,0 @@
Index: plymouth-0.9.2/src/libply-splash-core/ply-device-manager.c
===================================================================
--- plymouth-0.9.2.orig/src/libply-splash-core/ply-device-manager.c
+++ plymouth-0.9.2/src/libply-splash-core/ply-device-manager.c
@@ -157,6 +157,10 @@ fb_device_has_drm_device (ply_device_man
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);

View File

@ -1,3 +1,76 @@
-------------------------------------------------------------------
Wed Jan 25 14:38:09 UTC 2017 - fvogt@suse.com
- Remove patch which causes breakage with systemd-vconsole-setup (bsc#1020327):
* 0001-let-it-become-a-real-daemon.patch
- Add upstream patch to fix crash on boot:
* 0001-device-manager-handle-NULL-renderer-better.patch
- Replace removal of framebuffer driver and plymouth-ignore-cirrusdrm.patch
with single patch:
* only_use_fb_for_cirrus_bochs.patch
-------------------------------------------------------------------
Mon Jan 09 17:01:44 UTC 2017 - zaitor@opensuse.org
- Update to version 0.9.2+git20161215.18dd755:
* terminal: refresh geometry after drm device arrives
* logger: stop using carriage returns
* build-goo: don't install systemd units during distcheck
* systemd-units: Fix uninstall script
* configure: switch to tar.xz instead tar.bz2
* libply: fix HiDPI detection
* libply, main: Add device scale setting
* main: support plymouth.force-scale on the kernel command line
* build-goo: make udev support build time optional
* device-manager: dont pass terminal as renderer device
-------------------------------------------------------------------
Tue Sep 06 09:23:50 UTC 2016 - tchvatal@suse.com
- Update to version 0.9.2+git20160823.e4b7e49:
* libply: fix HiDPI detection
* libply, main: Add device scale setting
* main: support plymouth.force-scale on the kernel command line
- Refresh patch:
* 0001-let-it-become-a-real-daemon.patch
-------------------------------------------------------------------
Tue Sep 6 09:22:50 UTC 2016 - tchvatal@suse.com
- Add systemd to buildrequires to properly detect systemd-ask-password
-------------------------------------------------------------------
Thu Aug 4 11:15:47 UTC 2016 - tchvatal@suse.com
- Sort out with spec-cleaner and move all buildrequires to main scope
not to subpkgs, sometimes interpreted wrongly by rpm if it is split
-------------------------------------------------------------------
Thu Aug 4 11:06:30 UTC 2016 - tchvatal@suse.com
- Reduce patches list removing merged upstream (bit differently tho):
* 0001-seats-guard-against-NULL-terminal.patch
* fix-serial-consoles.patch
* plymouth-boot-vga-framebuffer.patch
- Refresh patches:
* 0001-let-it-become-a-real-daemon.patch
- Update to version 0.9.2+git20160620.0e65b86:
* configure: tweak defaults to be more systemd friendly
* text: don't draw if not animating
* terminal: always open terminal in non-blocking mode
* device-manager: probe existing DRM devices at startup
* drm: don't pick up drm master implicitly
* terminal: refresh geometry after drm device arrives
* logger: stop using carriage returns
* build-goo: don't install systemd units during distcheck
* systemd-units: Fix uninstall script
* configure: switch to tar.xz instead tar.bz2
-------------------------------------------------------------------
Wed Jun 1 10:20:05 UTC 2016 - idonmez@suse.com
- Remove framebuffer support bsc#980750 and bsc#982226
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Feb 8 15:00:06 UTC 2016 - fvogt@suse.com Mon Feb 8 15:00:06 UTC 2016 - fvogt@suse.com

View File

@ -1,7 +1,7 @@
# #
# spec file for package plymouth # spec file for package plymouth
# #
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -20,15 +20,15 @@
%define plymouthclient_execdir %{_bindir} %define plymouthclient_execdir %{_bindir}
%define plymouth_libdir %{_libdir} %define plymouth_libdir %{_libdir}
%define plymouth_initrd_file /boot/initrd-plymouth.img %define plymouth_initrd_file /boot/initrd-plymouth.img
Name: plymouth Name: plymouth
Version: 0.9.2 Version: 0.9.2+git20161215.18dd755
Release: 0 Release: 0
Summary: Graphical Boot Animation and Logger Summary: Graphical Boot Animation and Logger
License: GPL-2.0+ License: GPL-2.0+
Group: System/Base Group: System/Base
Url: http://freedesktop.org/software/plymouth/releases Url: http://freedesktop.org/software/plymouth/releases
Source0: http://www.freedesktop.org/software/plymouth/releases/%{name}-%{version}.tar.bz2 # Switched to git snapshot to ease bugfix inclusion
Source0: %{name}-%{version}.tar.xz
Source1: boot-duration Source1: boot-duration
# PATCH-OPENSUSE -- Handle correctly multiple displays with different sizes # PATCH-OPENSUSE -- Handle correctly multiple displays with different sizes
Patch3: plymouth-fix-window-size Patch3: plymouth-fix-window-size
@ -41,44 +41,46 @@ Patch10: 0001-Some-greenish-openSUSE-colors.patch
Patch16: plymouth-correct-runtime-dir.patch Patch16: plymouth-correct-runtime-dir.patch
# PATCH-FIX-UPSTREAM plymouth-manpages.patch idoenmez@suse.de -- Fix man page installation # PATCH-FIX-UPSTREAM plymouth-manpages.patch idoenmez@suse.de -- Fix man page installation
Patch17: plymouth-manpages.patch Patch17: plymouth-manpages.patch
Patch18: fix-serial-consoles.patch # PATCH-FIX-UPSTREAM 0001-device-manager-handle-NULL-renderer-better.patch rstrode@redhat.com -- device-manager: handle NULL renderer better
Patch18: 0001-device-manager-handle-NULL-renderer-better.patch
# PATCH-FIX-OPENSUSE use-mkinitrd.patch fcrozat@suse.com -- call mkinitrd -B for now # PATCH-FIX-OPENSUSE use-mkinitrd.patch fcrozat@suse.com -- call mkinitrd -B for now
Patch20: use-mkinitrd.patch Patch20: use-mkinitrd.patch
# PATCH-FIX-UPSTREAM 0001-seats-guard-against-NULL-terminal.patch fcrozat@suse.com -- guard against null terminal # PATCH-FIX-OPENSUSE only_use_fb_for_cirrus_bochs.patch fvogt@suse.com -- force fb for cirrus and bochs, force drm otherwise
Patch21: 0001-seats-guard-against-NULL-terminal.patch Patch26: only_use_fb_for_cirrus_bochs.patch
# PATCH-FIX-UPSTREAM plymouth-ignore-cirrusdrm.patch fcrozat@suse.com -- ignore cirrusdrm, use fb instead
Patch26: plymouth-ignore-cirrusdrm.patch
Patch28: plymouth-boot-vga-framebuffer.patch
Patch29: 0001-let-it-become-a-real-daemon.patch
# PATCH-FIX-UPSTREAM 0001-Add-label-ft-plugin.patch fvogt@suse.com -- add ability to output text in initrd # PATCH-FIX-UPSTREAM 0001-Add-label-ft-plugin.patch fvogt@suse.com -- add ability to output text in initrd
Patch30: 0001-Add-label-ft-plugin.patch Patch30: 0001-Add-label-ft-plugin.patch
Patch31: 0002-Install-label-ft-plugin-into-initrd-if-available.patch Patch31: 0002-Install-label-ft-plugin-into-initrd-if-available.patch
Patch32: 0003-fix_null_deref.patch Patch32: 0003-fix_null_deref.patch
BuildRequires: automake BuildRequires: automake
BuildRequires: docbook-xsl-stylesheets BuildRequires: docbook-xsl-stylesheets
BuildRequires: kernel-headers BuildRequires: kernel-headers
BuildRequires: libtool BuildRequires: libtool
BuildRequires: libudev-devel
BuildRequires: libxslt BuildRequires: libxslt
BuildRequires: module-init-tools BuildRequires: module-init-tools
BuildRequires: systemd >= 186 BuildRequires: pkgconfig
BuildRequires: suse-module-tools
# needed for systemd-tty-ask-password-agent
BuildRequires: systemd
BuildRequires: update-desktop-files BuildRequires: update-desktop-files
BuildRequires: xz BuildRequires: xz
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(gtk+-3.0) >= 3.14.0 BuildRequires: pkgconfig(gtk+-3.0) >= 3.14.0
BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libsystemd) >= 186
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(pango) >= 1.21.0
BuildRequires: pkgconfig(systemd) >= 186 BuildRequires: pkgconfig(systemd) >= 186
Requires(post): coreutils
Requires(postun): coreutils
Requires: %{name}-branding Requires: %{name}-branding
Requires: gnu-unifont-bitmap-fonts Requires: gnu-unifont-bitmap-fonts
Requires: systemd >= 186 Requires: systemd >= 186
Requires(post): coreutils
Requires(post): plymouth-scripts = %{version} Requires(post): plymouth-scripts = %{version}
BuildRequires: suse-module-tools Requires(postun): coreutils
Suggests: plymouth-plugin-label
Recommends: plymouth-plugin-label-ft Recommends: plymouth-plugin-label-ft
Provides: bootsplash = 3.4 Suggests: plymouth-plugin-label
Obsoletes: bootsplash <= 3.4 Provides: bootsplash = 3.5
Obsoletes: bootsplash < 3.5
Provides: systemd-plymouth = 44-10.2 Provides: systemd-plymouth = 44-10.2
Obsoletes: systemd-plymouth <= 44-10.1 Obsoletes: systemd-plymouth <= 44-10.1
@ -138,8 +140,8 @@ and headers needed to develop 3rd party splash plugins for Plymouth.
%package dracut %package dracut
Summary: Plymouth related utilities for dracut Summary: Plymouth related utilities for dracut
Group: System/Base Group: System/Base
Supplements: packageand(plymouth:dracut)
Requires: %{name} = %{version} Requires: %{name} = %{version}
Supplements: packageand(plymouth:dracut)
%description dracut %description dracut
This package contains utilities that integrate dracut with Plymouth This package contains utilities that integrate dracut with Plymouth
@ -156,11 +158,11 @@ behavior on environments with a valid DISPLAY.
%package scripts %package scripts
Summary: Plymouth related scripts Summary: Plymouth related scripts
Group: System/Base Group: System/Base
Requires(pre): %{name} = %{version}
Requires: coreutils Requires: coreutils
Requires: cpio Requires: cpio
Requires: findutils Requires: findutils
Requires: pigz Requires: pigz
Requires(pre): %{name} = %{version}
%description scripts %description scripts
This package contains scripts that help integrate Plymouth with This package contains scripts that help integrate Plymouth with
@ -169,8 +171,6 @@ the system.
%package plugin-label %package plugin-label
Summary: Plymouth label plugin Summary: Plymouth label plugin
Group: System/Base Group: System/Base
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(pango) >= 1.21.0
Requires: libply-splash-graphics4 = %{version} Requires: libply-splash-graphics4 = %{version}
%description plugin-label %description plugin-label
@ -181,7 +181,6 @@ graphical boot splashes using pango and cairo.
%package plugin-label-ft %package plugin-label-ft
Summary: Plymouth FreeType label plugin Summary: Plymouth FreeType label plugin
Group: System/Base Group: System/Base
BuildRequires: pkgconfig(freetype2)
Requires: fontconfig Requires: fontconfig
Requires: libply-splash-graphics4 = %{version} Requires: libply-splash-graphics4 = %{version}
@ -285,8 +284,8 @@ while stars twinkle around the logo during system boot up.
Summary: Plymouth "Spinfinity" theme Summary: Plymouth "Spinfinity" theme
Group: System/Base Group: System/Base
Requires: %{name}-plugin-throbgress = %{version} Requires: %{name}-plugin-throbgress = %{version}
Requires(pre): %{name}
Requires(post): %{name}-scripts Requires(post): %{name}-scripts
Requires(pre): %{name}
BuildArch: noarch BuildArch: noarch
%description theme-spinfinity %description theme-spinfinity
@ -343,25 +342,21 @@ plugin.
%setup -q %setup -q
%patch3 -p1 %patch3 -p1
%patch4 -p1 %patch4 -p1
%patch9 -p0 %patch9
%patch10 -p1 %patch10 -p1
%patch16 -p1 %patch16 -p1
%patch17 -p1 %patch17 -p1
%patch18 -p1 %patch18 -p1
%patch20 -p1 %patch20 -p1
%patch21 -p1
%patch26 -p1 %patch26 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1 %patch30 -p1
%patch31 -p1 %patch31 -p1
%patch32 -p1 %patch32 -p1
# replace builddate with patch0date # replace builddate with patch0date
sed -i "s/__DATE__/\"$(stat -c %y %{_sourcedir}/%{name}.changes)\"/" src/main.c sed -i "s/__DATE__/\"$(stat -c %%y %{_sourcedir}/%{name}.changes)\"/" src/main.c
# Change the default theme # Change the default theme
%if 0%{?is_opensuse} %if 0%{?is_opensuse}
sed -i -e 's/spinner/openSUSE/g' src/plymouthd.defaults sed -i -e 's/spinner/openSUSE/g' src/plymouthd.defaults
%else %else
@ -370,9 +365,11 @@ sed -i -e 's/spinner/SLE/g' src/plymouthd.defaults
%build %build
autoreconf -fiv autoreconf -fiv
%configure --disable-static \ %configure \
--disable-silent-rules \
--disable-static \
--enable-systemd-integration \ --enable-systemd-integration \
--enable-tracing --disable-tests \ --enable-tracing \
--with-background-start-color-stop=0x1A3D1F \ --with-background-start-color-stop=0x1A3D1F \
--with-background-end-color-stop=0x4EA65C \ --with-background-end-color-stop=0x4EA65C \
--with-background-color=0x3391cd \ --with-background-color=0x3391cd \
@ -381,27 +378,24 @@ autoreconf -fiv
--without-rhgb-compat-link \ --without-rhgb-compat-link \
--with-boot-tty=/dev/tty7 \ --with-boot-tty=/dev/tty7 \
--with-shutdown-tty=/dev/tty1 \ --with-shutdown-tty=/dev/tty1 \
--without-gdm-autostart-file \ --with-release-file=%{_sysconfdir}/os-release
--with-release-file=/etc/os-release
make %{?_smp_mflags} V=1 make %{?_smp_mflags}
%install %install
%make_install %make_install
rm -f %{buildroot}/%{_bindir}/rhgb-client rm -f %{buildroot}/%{_bindir}/rhgb-client
#Link the plymouth client binary also to /bin until the move to /usr is completed #Link the plymouth client binary also to /bin until the move to /usr is completed
mkdir %{buildroot}/bin mkdir %{buildroot}/bin
(cd %{buildroot}/bin; ln -s ../usr/bin/plymouth) (cd %{buildroot}/bin; ln -s ..%{_bindir}/plymouth)
# Glow isn't quite ready for primetime # Glow isn't quite ready for primetime
rm -rf %{buildroot}%{_datadir}/plymouth/glow/ rm -rf %{buildroot}%{_datadir}/plymouth/glow/
rm -rf %{buildroot}%{_datadir}/plymouth/themes/glow/ rm -rf %{buildroot}%{_datadir}/plymouth/themes/glow/
rm -f %{buildroot}%{_libdir}/plymouth/glow.so rm -f %{buildroot}%{_libdir}/plymouth/glow.so
find %{buildroot} -name '*.a' -exec rm -f {} \; find %{buildroot} -type f -name "*.la" -delete -print
find %{buildroot} -name '*.la' -exec rm -f {} \;
mkdir -p %{buildroot}%{_localstatedir}/lib/plymouth mkdir -p %{buildroot}%{_localstatedir}/lib/plymouth
mkdir -p %{buildroot}/run/plymouth mkdir -p %{buildroot}/run/plymouth
@ -414,7 +408,7 @@ cp %{buildroot}/%{_datadir}/plymouth/plymouthd.defaults %{buildroot}/%{_sysconfd
%post %post
%{?regenerate_initrd_post} %{?regenerate_initrd_post}
if [ ! -e /.buildenv ]; then if [ ! -e /.buildenv ]; then
[ -f %{_localstatedir}/lib/plymouth/boot-duration ] || cp -f %{_datadir}/plymouth/default-boot-duration %{_localstatedir}/lib/plymouth/boot-duration [ -f %{_localstatedir}/lib/plymouth/boot-duration ] || cp -f %{_datadir}/plymouth/default-boot-duration %{_localstatedir}/lib/plymouth/boot-duration
fi fi
[ -x /bin/systemctl ] && /bin/systemctl daemon-reload >/dev/null 2>&1 || : [ -x /bin/systemctl ] && /bin/systemctl daemon-reload >/dev/null 2>&1 || :
@ -431,21 +425,13 @@ fi
%{?regenerate_initrd_posttrans} %{?regenerate_initrd_posttrans}
%post -n libply-boot-client4 -p /sbin/ldconfig %post -n libply-boot-client4 -p /sbin/ldconfig
%postun -n libply-boot-client4 -p /sbin/ldconfig %postun -n libply-boot-client4 -p /sbin/ldconfig
%post -n libply-splash-core4 -p /sbin/ldconfig %post -n libply-splash-core4 -p /sbin/ldconfig
%postun -n libply-splash-core4 -p /sbin/ldconfig %postun -n libply-splash-core4 -p /sbin/ldconfig
%post -n libply-splash-graphics4 -p /sbin/ldconfig %post -n libply-splash-graphics4 -p /sbin/ldconfig
%postun -n libply-splash-graphics4 -p /sbin/ldconfig %postun -n libply-splash-graphics4 -p /sbin/ldconfig
%post -n libply4 -p /sbin/ldconfig %post -n libply4 -p /sbin/ldconfig
%postun -n libply4 -p /sbin/ldconfig %postun -n libply4 -p /sbin/ldconfig
%post theme-spinfinity %post theme-spinfinity
if [ $1 -eq 1 ]; then if [ $1 -eq 1 ]; then
set -x set -x
@ -456,7 +442,7 @@ if [ $1 -eq 1 ]; then
%{_sbindir}/plymouth-set-default-theme -R spinfinity %{_sbindir}/plymouth-set-default-theme -R spinfinity
else else
%{_sbindir}/plymouth-set-default-theme spinfinity %{_sbindir}/plymouth-set-default-theme spinfinity
fi fi
fi fi
fi fi
@ -478,7 +464,7 @@ if [ $1 -eq 1 ]; then
%{_sbindir}/plymouth-set-default-theme -R fade-in %{_sbindir}/plymouth-set-default-theme -R fade-in
else else
%{_sbindir}/plymouth-set-default-theme fade-in %{_sbindir}/plymouth-set-default-theme fade-in
fi fi
fi fi
fi fi
@ -500,7 +486,7 @@ if [ $1 -eq 1 ]; then
%{_sbindir}/plymouth-set-default-theme -R solar %{_sbindir}/plymouth-set-default-theme -R solar
else else
%{_sbindir}/plymouth-set-default-theme solar %{_sbindir}/plymouth-set-default-theme solar
fi fi
fi fi
fi fi