forked from pool/systemd
62682e6e22
- Fix patch patch handle-numlock-value-in-etc-sysconfig-keyboard.patch that is do not close a file descriptor twice (boo#973907) - Add two patches which address logind/networkd disappearing from dbus (and busctl) even while the units and processes continue running. 0001-core-fix-bus-name-synchronization-after-daemon-reloa.patch 0001-core-re-sync-bus-name-list-after-deserializing-durin.patch - drop all compiler/linker option customizations: - -pipe option is used by default since day 0 - get rid of cflags() function which is not needed - --hash-size has no impact specially in runtime IOW, use the default options for the compiler and the linker, there's no point in making systemd different from other package in this regards. - use %make_build instead of 'make %{?_smp_mflags}' - be more strict on own lib version requirements - systemd should require udev with the exact same version - Modify patch handle-numlock-value-in-etc-sysconfig-keyboard.patch to allow that open, seek, and read of /dev/mem may fail e.g. on XEN based virtual guests (bsc#961120) - require curl and bzip2 to build importd - curl also causes building of journal-upload. That one has rather unusal certificate usage, set it's ca root to /etc/pki/systemd OBS-URL: https://build.opensuse.org/request/show/384339 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/systemd?expand=0&rev=232
85 lines
3.3 KiB
Diff
85 lines
3.3 KiB
Diff
From: Werner Fink <werner@suse.de>
|
|
Date: Wed Sep 23 12:37:23 UTC 2015
|
|
Subject: Do not bother vistual console to much with GIO/PIO
|
|
|
|
This avoids broken virtual console mapping due stressed ioctl API
|
|
for the virtual consoles (boo#904214)
|
|
|
|
---
|
|
src/vconsole/vconsole-setup.c | 39 +++++++++++++++++++++++++--------------
|
|
1 file changed, 25 insertions(+), 14 deletions(-)
|
|
|
|
--- a/src/vconsole/vconsole-setup.c
|
|
+++ b/src/vconsole/vconsole-setup.c 2015-09-23 12:34:33.854018750 +0000
|
|
@@ -202,8 +202,13 @@ static void font_copy_to_all_vcs(int fd)
|
|
unsigned short map16[E_TABSZ];
|
|
struct unimapdesc unimapd;
|
|
struct unipair unipairs[USHRT_MAX];
|
|
+ struct console_font_op cfo = {};
|
|
int i, r;
|
|
|
|
+ bool hasmap8;
|
|
+ bool hasmap16;
|
|
+ bool hasunimap;
|
|
+
|
|
/* get active, and 16 bit mask of used VT numbers */
|
|
r = ioctl(fd, VT_GETSTATE, &vcs);
|
|
if (r < 0) {
|
|
@@ -211,10 +216,22 @@ static void font_copy_to_all_vcs(int fd)
|
|
return;
|
|
}
|
|
|
|
+ /* copy font from active VT, where the font was uploaded to */
|
|
+ cfo.op = KD_FONT_OP_COPY;
|
|
+ cfo.height = vcs.v_active-1; /* tty1 == index 0 */
|
|
+
|
|
+ hasmap8 = (ioctl(fd, GIO_SCRNMAP, map8) >= 0);
|
|
+ hasmap16 = (ioctl(fd, GIO_UNISCRNMAP, map16) >= 0);
|
|
+
|
|
+ /* unimapd is a ushort count and a pointer to an
|
|
+ * array of struct unipair { ushort, ushort } */
|
|
+ unimapd.entries = unipairs;
|
|
+ unimapd.entry_ct = USHRT_MAX;
|
|
+ hasunimap = (ioctl(fd, GIO_UNIMAP, &unimapd) >= 0);
|
|
+
|
|
for (i = 1; i <= 15; i++) {
|
|
char vcname[strlen("/dev/vcs") + DECIMAL_STR_MAX(int)];
|
|
_cleanup_close_ int vcfd = -1;
|
|
- struct console_font_op cfo = {};
|
|
|
|
if (i == vcs.v_active)
|
|
continue;
|
|
@@ -229,25 +246,19 @@ static void font_copy_to_all_vcs(int fd)
|
|
if (vcfd < 0)
|
|
continue;
|
|
|
|
- /* copy font from active VT, where the font was uploaded to */
|
|
- cfo.op = KD_FONT_OP_COPY;
|
|
- cfo.height = vcs.v_active-1; /* tty1 == index 0 */
|
|
+ /* copy font from active VT to vcs */
|
|
(void) ioctl(vcfd, KDFONTOP, &cfo);
|
|
|
|
- /* copy map of 8bit chars */
|
|
- if (ioctl(fd, GIO_SCRNMAP, map8) >= 0)
|
|
+ /* copy map of 8bit chars to vcs */
|
|
+ if (hasmap8)
|
|
(void) ioctl(vcfd, PIO_SCRNMAP, map8);
|
|
|
|
- /* copy map of 8bit chars -> 16bit Unicode values */
|
|
- if (ioctl(fd, GIO_UNISCRNMAP, map16) >= 0)
|
|
+ /* copy map of 8bit chars -> 16bit Unicode values to vcs */
|
|
+ if (hasmap16)
|
|
(void) ioctl(vcfd, PIO_UNISCRNMAP, map16);
|
|
|
|
- /* copy unicode translation table */
|
|
- /* unimapd is a ushort count and a pointer to an
|
|
- array of struct unipair { ushort, ushort } */
|
|
- unimapd.entries = unipairs;
|
|
- unimapd.entry_ct = USHRT_MAX;
|
|
- if (ioctl(fd, GIO_UNIMAP, &unimapd) >= 0) {
|
|
+ /* copy unicode translation table to vcs */
|
|
+ if (hasunimap) {
|
|
struct unimapinit adv = { 0, 0, 0 };
|
|
|
|
(void) ioctl(vcfd, PIO_UNIMAPCLR, &adv);
|