rpms/plymouth/F-12 fix-hvc0-console.patch, NONE, 1.1 plymouth.spec, 1.162, 1.163

Ray Strode rstrode at fedoraproject.org
Thu Oct 29 22:00:24 UTC 2009


Author: rstrode

Update of /cvs/pkgs/rpms/plymouth/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv7777

Modified Files:
	plymouth.spec 
Added Files:
	fix-hvc0-console.patch 
Log Message:
- Fix plymouth over ppc hyperviser console (bug 531581)


fix-hvc0-console.patch:
 b/src/libplybootsplash/ply-console.c |    8 ++++++--
 b/src/main.c                         |    4 ----
 src/main.c                           |   29 ++++++++++++++++++++++-------
 3 files changed, 28 insertions(+), 13 deletions(-)

--- NEW FILE fix-hvc0-console.patch ---
>From ee7588b9d43c18330cd975914a3ec6b996058de5 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode at redhat.com>
Date: Thu, 29 Oct 2009 17:11:00 -0400
Subject: [PATCH 1/2] [console] Function in degraded mode when closed

Not all machines will have /dev/tty0.  Those that
don't should still work.
---
 src/libplybootsplash/ply-console.c |    8 ++++++--
 src/main.c                         |    3 ---
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/libplybootsplash/ply-console.c b/src/libplybootsplash/ply-console.c
index fb5a86d..10e8ce4 100644
--- a/src/libplybootsplash/ply-console.c
+++ b/src/libplybootsplash/ply-console.c
@@ -190,10 +190,12 @@ static void
 ply_console_watch_for_vt_changes (ply_console_t *console)
 {
   assert (console != NULL);
-  assert (console->fd >= 0);
 
   struct vt_mode mode = { 0 };
 
+  if (console->fd < 0);
+    return;
+
   if (console->is_watching_for_vt_changes)
     return;
 
@@ -349,7 +351,9 @@ ply_console_set_active_vt (ply_console_t *console,
                            int            vt_number)
 {
   assert (console != NULL);
-  assert (vt_number > 0);
+
+  if (vt_number <= 0)
+    return false;
 
   if (vt_number == console->active_vt)
     return true;
diff --git a/src/main.c b/src/main.c
index abfd430..548e1f7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1293,9 +1293,6 @@ check_for_consoles (state_t    *state,
       !ply_console_open (state->console))
     {
       ply_trace ("could not open /dev/tty0");
-      ply_console_free (state->console);
-      state->console = NULL;
-      return;
     }
 
   remaining_command_line = state->kernel_command_line;
-- 
1.6.5.1


>From 5b53999611604fb575519f87c8369c8cb351aa26 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode at redhat.com>
Date: Thu, 29 Oct 2009 17:12:28 -0400
Subject: [PATCH 2/2] [main] Don't add duplicate text display

Before we were adding the same text display once at start up
and once on show splash.
---
 src/main.c |   28 ++++++++++++++++++++++------
 1 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/main.c b/src/main.c
index 548e1f7..daef780 100644
--- a/src/main.c
+++ b/src/main.c
@@ -133,7 +133,8 @@ static void on_error_message (ply_buffer_t *debug_buffer,
 static ply_buffer_t *debug_buffer;
 static char *debug_buffer_path = NULL;
 static void check_for_consoles (state_t    *state,
-                                const char *default_tty);
+                                const char *default_tty,
+                                bool        should_add_displays);
 
 static void
 on_session_output (state_t    *state,
@@ -568,7 +569,7 @@ on_show_splash (state_t *state)
       return;
     }
 
-  check_for_consoles (state, state->default_tty);
+  check_for_consoles (state, state->default_tty, true);
 
   has_display = ply_list_get_length (state->pixel_displays) > 0 ||
                 ply_list_get_length (state->text_displays) > 0;
@@ -1279,7 +1280,8 @@ check_logging (state_t *state)
 
 static void
 check_for_consoles (state_t    *state,
-                    const char *default_tty)
+                    const char *default_tty,
+                    bool        should_add_displays)
 {
   char *console_key;
   char *remaining_command_line;
@@ -1320,10 +1322,11 @@ check_for_consoles (state_t    *state,
           state->kernel_console_tty = strdup (default_tty);
         }
 
-      add_display_and_keyboard_for_terminal (state, state->kernel_console_tty);
+      if (should_add_displays)
+        add_display_and_keyboard_for_terminal (state, state->kernel_console_tty);
     }
 
-    if (ply_list_get_length (state->text_displays) == 0)
+    if (should_add_displays && ply_list_get_length (state->text_displays) == 0)
       add_default_displays_and_keyboard (state);
 }
 
@@ -1379,7 +1382,7 @@ initialize_environment (state_t *state)
   else
     state->default_tty = "tty1";
 
-  check_for_consoles (state, state->default_tty);
+  check_for_consoles (state, state->default_tty, false);
 
   if (state->kernel_console_tty != NULL)
     redirect_standard_io_to_device (state->kernel_console_tty);
@@ -1417,15 +1420,27 @@ dump_debug_buffer_to_file (void)
   close (fd);
 }
 
+ #include <termios.h>
+ #include <unistd.h>
 static void
 on_crash (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 |= IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON;
+    term_attributes.c_oflag |= OPOST;
+    term_attributes.c_lflag |= ECHO | ECHONL | ICANON | ISIG | IEXTEN;
+
+    tcsetattr (fd, TCSAFLUSH, &term_attributes);
+
     close (fd);
 
     if (debug_buffer != NULL)
@@ -1500,6 +1515,7 @@ main (int    argc,
       return 0;
     }
 
+  debug = 1;
   if (debug && !ply_is_tracing ())
     ply_toggle_tracing ();
 
-- 
1.6.5.1



Index: plymouth.spec
===================================================================
RCS file: /cvs/pkgs/rpms/plymouth/F-12/plymouth.spec,v
retrieving revision 1.162
retrieving revision 1.163
diff -u -p -r1.162 -r1.163
--- plymouth.spec	29 Oct 2009 14:10:59 -0000	1.162
+++ plymouth.spec	29 Oct 2009 22:00:23 -0000	1.163
@@ -6,7 +6,7 @@
 Summary: Graphical Boot Animation and Logger
 Name: plymouth
 Version: 0.8.0
-Release: 0.2009.29.09.14%{?dist}
+Release: 0.2009.29.09.15%{?dist}
 License: GPLv2+
 Group: System Environment/Base
 Source0: http://freedesktop.org/software/plymouth/releases/%{name}-%{version}.tar.bz2
@@ -40,6 +40,7 @@ Patch6: fix-details-clear-screen.patch
 Patch7: fix-text-shutdown-crash.patch
 Patch8: fix-text-ask-for-password.patch
 Patch9: dont-unlink-devnull.patch
+Patch10: fix-hvc0-console.patch
 
 %description
 Plymouth provides an attractive graphical boot animation in
@@ -256,6 +257,7 @@ plugin.
 %patch7 -p1 -b .fix-text-shutdown-crash
 %patch8 -p1 -b .fix-text-ask-for-password
 %patch9 -p1 -b .dont-unlink-devnull
+%patch10 -p1 -b .fix-hvc0-console
 
 %build
 %configure --enable-tracing --disable-tests --without-boot-entry \
@@ -473,6 +475,9 @@ fi
 %defattr(-, root, root)
 
 %changelog
+* Thu Oct 29 2009 Ray Strode <rstrode at redhat.com> 0.8.0-0.2009.29.09.15
+- Fix plymouth over ppc hyperviser console (bug 531581)
+
 * Thu Oct 29 2009 Ray Strode <rstrode at redhat.com> 0.8.0-0.2009.29.09.14
 - Don't unlink /dev/null (bug 531740)
 




More information about the fedora-extras-commits mailing list