From 169d560b436ca2c5e538b2bda94528a33e787dbb Mon Sep 17 00:00:00 2001 From: Dustin Polke Date: Wed, 31 Dec 2014 15:33:10 +0100 Subject: [media-gfx/splashutils] Copy splashutils-1.5.4.4.ebuild from main tree and fix freetype patch. --- media-gfx/splashutils/ChangeLog | 14 + media-gfx/splashutils/Manifest | 7 + .../files/splashutils-1.5.4.4-bzip2.patch | 43 +++ .../files/splashutils-1.5.4.4-freetype-bz2.patch | 15 + .../files/splashutils-1.5.4.4-ft25.patch | 40 +++ .../splashutils-1.5.4.4-gentoo-typo-fix.patch | 19 + .../files/splashutils-1.5.4.4-multi-keyboard.patch | 381 +++++++++++++++++++++ media-gfx/splashutils/metadata.xml | 13 + .../splashutils/splashutils-1.5.4.4-r4.ebuild | 233 +++++++++++++ profiles/categories | 1 + 10 files changed, 766 insertions(+) create mode 100644 media-gfx/splashutils/ChangeLog create mode 100644 media-gfx/splashutils/Manifest create mode 100644 media-gfx/splashutils/files/splashutils-1.5.4.4-bzip2.patch create mode 100644 media-gfx/splashutils/files/splashutils-1.5.4.4-freetype-bz2.patch create mode 100644 media-gfx/splashutils/files/splashutils-1.5.4.4-ft25.patch create mode 100644 media-gfx/splashutils/files/splashutils-1.5.4.4-gentoo-typo-fix.patch create mode 100644 media-gfx/splashutils/files/splashutils-1.5.4.4-multi-keyboard.patch create mode 100644 media-gfx/splashutils/metadata.xml create mode 100644 media-gfx/splashutils/splashutils-1.5.4.4-r4.ebuild diff --git a/media-gfx/splashutils/ChangeLog b/media-gfx/splashutils/ChangeLog new file mode 100644 index 0000000..0afedc4 --- /dev/null +++ b/media-gfx/splashutils/ChangeLog @@ -0,0 +1,14 @@ +# ChangeLog for media-gfx/splashutils +# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 +# $Header: $ + +*splashutils-1.5.4.4-r4 (31 Dec 2014) + + 31 Dec 2014; Dustin Polke +splashutils-1.5.4.4-r4.ebuild, + +files/splashutils-1.5.4.4-bzip2.patch, + +files/splashutils-1.5.4.4-freetype-bz2.patch, + +files/splashutils-1.5.4.4-ft25.patch, + +files/splashutils-1.5.4.4-gentoo-typo-fix.patch, + +files/splashutils-1.5.4.4-multi-keyboard.patch, +metadata.xml: + Copy splashutils-1.5.4.4 v1.3 from main tree and fix freetype patch. + diff --git a/media-gfx/splashutils/Manifest b/media-gfx/splashutils/Manifest new file mode 100644 index 0000000..ac1a36e --- /dev/null +++ b/media-gfx/splashutils/Manifest @@ -0,0 +1,7 @@ +DIST freetype-2.3.12.tar.bz2 1453034 SHA256 3b96438f016a62b676c1d2089c00ca777f710d19f6aefa66ccf068d360db3e92 SHA512 becb0f138ee13181513d3f03b943f0a474e492cab151992fa78d0c84127819dc91ec6d2bd1528af7e111ab150b3a29104f2f7ab79650cebc35ce4d966b19f34b WHIRLPOOL 1a7363b8e1cc1b4597077e6cdf7e978b80cc76e1428124312d139ee81fe5247eed5ec0243352b721c28a25a179bceb901700d0766c1a5110b19f8fe53c303a89 +DIST jpegsrc.v8a.tar.gz 962018 SHA256 bf86a5eaafa79b5d60feb27bee08df2db4c9ca2fb40d453e7a2080f7663a713b SHA512 4020e82e16b99189b1a50bad18b09616775559740b94a988692aa33f9302d4b5abe3ccaa30895b49e6950fb3d9a830deeb7df750d128ec5c7e1844583db4524d WHIRLPOOL 46e0c98f30c8d975b85b8e86b69e9c5c64632f579502b1b3c54902706d7e08b86582a85b49a0d3bfffd03cd90946fbd20171324504a5ff521eb89e6ce11d568b +DIST libpng-1.4.3.tar.bz2 658335 SHA256 2b022f39f4788505ad62a4b1f4a33286228d544719680da40f3626393ecde4a2 SHA512 aaa137ebc2312805d58caf19702d24a34ee81593d4250c4e807ce66ba7edb829926919cd0a2b0e5975421451c8eb6674798c06dbaf745175b16c9d3c92b63f61 WHIRLPOOL d383e01e6080166816991650183b47d15938aa269c0a85e234846b9c5a7ec04a1ba7620779b4ddae639ca64440772ce8dd1b3a596f6eb32124c4d6c55592fb0a +DIST miscsplashutils-0.1.8.tar.bz2 91997 SHA256 38e8434c7266126477237c4d9e6cbeca152089ab33c14a7761089b7970f8d336 SHA512 fa017e264249feda45839030728e90c82f775354c3f2c29a88362938c4a31b19e6d61f967512305642f8b96575f4d756ba197e672a361760e40080c23ec0442a WHIRLPOOL c418ee425bf323fc0e00388be4547232207fd6cac10a2e8cafeef8c8aabcd014052307533bd015e61dc483ab45edd9fbd59a3005549b7bee4a4b90bf3297394a +DIST splashutils-gentoo-1.0.17.tar.bz2 15814 SHA256 6877263d0b6f5a3532db0d6a531cd4d41fbc6c45a16c5d10050e9048ecc1af81 SHA512 75f1fbfdf165f571b0bf09235235827f370e1b940f1717c4faf5b223caba0b80f853a910ba492c776512aecfafa6e74fd964239bbc6cf412620143d5ffc74167 WHIRLPOOL de9e1ca86a87c169f0a2f7844ab9a68b29cc46c208daca4d13cf7d552b35c05b6e266d66724078cf1f6eea3d41496fdf4fd7b3219697b2032520ad2b9a5ec5c9 +DIST splashutils-lite-1.5.4.4.tar.bz2 441340 SHA256 bc0e22293d4550281d2289672da3acb42594c18a75b9d00ba75526e05162ec6b SHA512 1a78216a1de1fdccff514494d7301640e447c65466e1fe02428e5114485507f67fe4394094880d927d074a8ab2d9c786ba03f9fb0371eb7ab6ef4e3b01aa4613 WHIRLPOOL f861a1673fd9e1fe32e417da48be8c472c5c3cc06844eb0886a66b498ca38cb04a6e51708821eefe3e15f66004bb6a4ef76df7242643b34090035bffdf1f87d7 +DIST zlib-1.2.3.tar.bz2 425209 SHA256 e3b9950851a19904d642c4dec518623382cf4d2ac24f70a76510c944330d28ca SHA512 edae735960279d92acf58e1f4095c6392a7c2059b8f1d2c46648fc608a0fb06b392db2d073f4973f5762c034ea66596e769b95b3d26ad963a086b9b2d09825f2 WHIRLPOOL e874b123296f5d77daf60617501b30f4beebccb64b3910c2539f75f6c194a2cf4885dc7a3904bf790e1651120ec33b55c48e95970dd6bfd6c4d0a2ea48d7d0f4 diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-bzip2.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-bzip2.patch new file mode 100644 index 0000000..e821c16 --- /dev/null +++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-bzip2.patch @@ -0,0 +1,43 @@ + core/configure.ac | 6 ++++++ + core/src/Makefile.am | 2 +- + 2 files changed, 7 insertions(+), 1 deletions(-) + +diff --git a/core/configure.ac b/core/configure.ac +index c5fbb84..ae9e235 100644 +--- a/core/configure.ac ++++ b/core/configure.ac +@@ -616,6 +616,7 @@ AS_IF( + AC_SUBST([PNG_CFLAGS]) + AC_SUBST([PNG_LIBS]) + ++BZ2_LIBS= + AS_IF( + [test "x${config_ttf}" = "xyes"], + [ +@@ -625,8 +626,13 @@ AS_IF( + , + [AC_MSG_ERROR([freetype was not found.])] + ) ++ AC_CHECK_LIB([bz2], [BZ2_bzDecompress], ++ [BZ2_LIBS="${BZ2_LIBS} -lbz2"], ++ [AC_MSG_ERROR(['libbz2' library was not found.])] ++ ) + ] + ) ++AC_SUBST([BZ2_LIBS]) + + AH_TOP([#ifndef __SPLASH_CONFIG_H + #define __SPLASH_CONFIG_H]) +diff --git a/core/src/Makefile.am b/core/src/Makefile.am +index d6ce315..349b5e7 100644 +--- a/core/src/Makefile.am ++++ b/core/src/Makefile.am +@@ -190,7 +190,7 @@ fbsplashctl_SOURCES = $(fbsplashd_SOURCES) $(splash_util_SOURCES) fbspla + fbsplashctl_CFLAGS = $(AM_CFLAGS) $(PTHREAD_STATIC_CFLAGS) $(RT_CFLAGS) $(libfbsplashrender_la_CFLAGS) -DUNIFIED_BUILD + fbsplashctl_CPPFLAGS = $(fbsplashd_CPPFLAGS) $(splash_util_CPPFLAGS) + fbsplashctl_LDFLAGS = $(AM_LDFLAGS) -all-static +-fbsplashctl_LDADD = libfbsplashrender.la libfbsplash.la $(PTHREAD_STATIC_LIBS) $(RT_LIBS) $(GPM_LIBS) ++fbsplashctl_LDADD = libfbsplashrender.la libfbsplash.la $(PTHREAD_STATIC_LIBS) $(RT_LIBS) $(GPM_LIBS) $(BZ2_LIBS) + + if CONFIG_FBCON_DECOR + fbsplashctl_SOURCES += $(fbcondecor_ctl_SOURCES) diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-freetype-bz2.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-freetype-bz2.patch new file mode 100644 index 0000000..3438fd5 --- /dev/null +++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-freetype-bz2.patch @@ -0,0 +1,15 @@ +=== modified file 'fbtruetype/Makefile' +--- fbtruetype/Makefile 2011-10-01 14:10:17 +0000 ++++ fbtruetype/Makefile 2011-10-01 14:15:02 +0000 +@@ -23,8 +23,8 @@ + OBJECTS = fbtruetype.o messages.o console.o ttf.o luxisri.o + + LDFLAGS += -L$(LIBDIR) +-LIBSS = $(LIBDIR)/libfreetype.a $(LIBDIR)/libz.a -lm +-LIBSD = -lfreetype -lm ++LIBSS = $(shell pkg-config freetype2 --libs --static) -lm ++LIBSD = $(shell pkg-config freetype2 --libs) -lm + + CFLAGS += -I/usr/include/freetype2 + COMPILE = $(CC) $(CFLAGS) + diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-ft25.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-ft25.patch new file mode 100644 index 0000000..1a97551 --- /dev/null +++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-ft25.patch @@ -0,0 +1,40 @@ +Gentoo-bug: https://bugs.gentoo.org/506124 +--- miscsplashutils-0.1.8/fbtruetype/ttf.c ++++ miscsplashutils-0.1.8/fbtruetype/ttf.c +@@ -13,8 +13,8 @@ + #include + #include FT_FREETYPE_H + /* #include */ +-#include +-#include ++#include FT_OUTLINE_H ++#include FT_TRUETYPE_IDS_H + + #include "ttf.h" + +--- splashutils-1.5.4.4/src/ttf.h ++++ splashutils-1.5.4.4/src/ttf.h +@@ -1,8 +1,8 @@ + #ifndef _TTF_H + #define _TTF_H + #include +-#include +-#include ++#include FT_OUTLINE_H ++#include FT_TRUETYPE_IDS_H + + #define CACHED_METRICS 0x10 + #define CACHED_BITMAP 0x01 +--- splashutils-1.5.4.4/src/ttf.c ++++ splashutils-1.5.4.4/src/ttf.c +@@ -25,8 +25,8 @@ + #include + + #include +-#include +-#include ++#include FT_OUTLINE_H ++#include FT_TRUETYPE_IDS_H + + #include "common.h" + #include "render.h" diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-gentoo-typo-fix.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-gentoo-typo-fix.patch new file mode 100644 index 0000000..4b8d513 --- /dev/null +++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-gentoo-typo-fix.patch @@ -0,0 +1,19 @@ +commit 74dda8291efae78f00bb781148c8fd4fccaeb764 +Author: MichaƂ Januszewski +Date: Tue Jun 14 23:23:33 2011 +0200 + + Fix typo in the Gentoo initscript. + +diff --git a/gentoo/init-fbcondecor b/gentoo/init-fbcondecor +index b66f40a..ce921b6 100755 +--- a/gentoo/init-fbcondecor ++++ b/gentoo/init-fbcondecor +@@ -12,7 +12,7 @@ start() { + splash_setup + + if [ -z "${FBCONDECOR_TTYS}" ]; then +- FBCONDECOR_TTYS=$(seq 1 "${rc_tty_number:-${RC_TTY_NUMBER}:-12}") ++ FBCONDECOR_TTYS=$(seq 1 "${rc_tty_number:-${RC_TTY_NUMBER:-12}}") + fi + + local err=0 diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-multi-keyboard.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-multi-keyboard.patch new file mode 100644 index 0000000..23f15fd --- /dev/null +++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-multi-keyboard.patch @@ -0,0 +1,381 @@ +diff -ru a/core/src/common.h b/core/src/common.h +--- a/core/src/common.h 2013-01-11 06:35:35.000000000 +0200 ++++ b/core/src/common.h 2013-01-11 06:34:08.000000000 +0200 +@@ -34,6 +34,10 @@ + #define PATH_PROC FBSPLASH_DIR"/proc" + #endif + ++/* Maximum number of keyboard connected to a machine. ++ * The number is big (8) to be on the safe side */ ++#define MAX_KBDS 8 ++ + /* Useful short-named types */ + typedef u_int8_t u8; + typedef u_int16_t u16; +diff -ru a/core/src/daemon.c b/core/src/daemon.c +--- a/core/src/daemon.c 2013-01-11 06:35:35.000000000 +0200 ++++ b/core/src/daemon.c 2013-01-11 06:34:08.000000000 +0200 +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -29,6 +30,8 @@ + #include "common.h" + #include "daemon.h" + ++#define EV_BUF_SIZE 8 ++ + /* Threading structures */ + pthread_mutex_t mtx_tty = PTHREAD_MUTEX_INITIALIZER; + pthread_mutex_t mtx_paint = PTHREAD_MUTEX_INITIALIZER; +@@ -41,7 +44,8 @@ + int ctty = CTTY_VERBOSE; + + /* File descriptors */ +-int fd_evdev = -1; ++int fd_evdevs[MAX_KBDS]; ++int evdev_count = 0; + #ifdef CONFIG_GPM + int fd_gpm = -1; + #endif +@@ -51,7 +55,6 @@ + + /* Misc settings */ + char *notify[2]; +-char *evdev = NULL; + + /* Service list */ + list svcs = { NULL, NULL }; +@@ -400,56 +403,83 @@ + } + } + ++__u16 get_ev_key_pressed(int fd_evdev, int ev_buf_size, ++ struct input_event *ev_buf) { ++ size_t rb; ++ int i; ++ rb = read(fd_evdev, ev_buf, sizeof(struct input_event) * ev_buf_size); ++ if (rb < (int) sizeof(struct input_event)) ++ return 0; ++ ++ for (i = 0; i < (int) (rb / sizeof(struct input_event)); i++) { ++ if (ev_buf[i].type != EV_KEY || ev_buf[i].value != 0) ++ continue; ++ return ev_buf[i].code; ++ } ++} ++ + /* + * Event device monitor thread. + */ + void* thf_switch_evdev(void *unused) + { +- int i, h, oldstate; +- size_t rb; +- struct input_event ev[8]; ++ int i, h, oldstate, nfds, retval, fd_evdev; ++ fd_set rfds; ++ struct input_event ev_buf[EV_BUF_SIZE]; ++ __u16 key_pressed = 0; + + while (1) { +- rb = read(fd_evdev, ev, sizeof(struct input_event)*8); +- if (rb < (int) sizeof(struct input_event)) +- continue; ++ nfds = 0, fd_evdev = -1; ++ FD_ZERO(&rfds); ++ for (i = 0;i < evdev_count;i++) { ++ FD_SET(fd_evdevs[i], &rfds); ++ nfds = max(nfds, fd_evdevs[i]); ++ } + +- for (i = 0; i < (int) (rb / sizeof(struct input_event)); i++) { +- if (ev[i].type != EV_KEY || ev[i].value != 0) +- continue; ++ nfds++; + +- switch (ev[i].code) { +- case KEY_F2: +- pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldstate); +- pthread_mutex_lock(&mtx_paint); +- if (ctty == CTTY_SILENT) { +- h = config.tty_v; +- } else { +- h = config.tty_s; ++ retval = select(nfds, &rfds, NULL, NULL, NULL); ++ if (retval == -1) ++ perror("select()"); ++ else if (retval) { ++ for (i = 0;i < evdev_count;i++) { ++ if (FD_ISSET(fd_evdevs[i], &rfds)) { ++ fd_evdev = fd_evdevs[i]; ++ break; + } +- pthread_mutex_unlock(&mtx_paint); +- pthread_setcancelstate(oldstate, NULL); ++ } ++ key_pressed = get_ev_key_pressed(fd_evdev, EV_BUF_SIZE, ev_buf); ++ if (key_pressed == -1) ++ continue; ++ switch (key_pressed) { ++ case KEY_F2: ++ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldstate); ++ pthread_mutex_lock(&mtx_paint); ++ h = (ctty == CTTY_SILENT) ? config.tty_v : config.tty_s; ++ pthread_mutex_unlock(&mtx_paint); ++ pthread_setcancelstate(oldstate, NULL); ++ ++ /* Switch to the new tty. This ioctl has to be done on ++ * the silent tty. Sometimes init will mess with the ++ * settings of the verbose console which will prevent ++ * console switching from working properly. ++ * ++ * Don't worry about fd_tty[config.tty_s] ++ * not being protected by a mutex -- ++ * this thread is always killed before any changes ++ * are made to fd_tty[config.tty_s]. ++ */ ++ ioctl(fd_tty[config.tty_s], VT_ACTIVATE, h); ++ break; + +- /* Switch to the new tty. This ioctl has to be done on +- * the silent tty. Sometimes init will mess with the +- * settings of the verbose console which will prevent +- * console switching from working properly. +- * +- * Don't worry about fd_tty[config.tty_s] not being protected by a +- * mutex -- this thread is always killed before any changes +- * are made to fd_tty[config.tty_s]. +- */ +- ioctl(fd_tty[config.tty_s], VT_ACTIVATE, h); +- break; +- +- case KEY_F3: +- config.textbox_visible = !config.textbox_visible; +- invalidate_textbox(theme, config.textbox_visible); +- cmd_paint(NULL); +- break; ++ case KEY_F3: ++ config.textbox_visible = !config.textbox_visible; ++ invalidate_textbox(theme, config.textbox_visible); ++ cmd_paint(NULL); ++ break; + } +- } +- } ++ } /* end of else if (retval) */ ++ } /* end of while(1) */ + + pthread_exit(NULL); + } +@@ -519,7 +549,7 @@ + + /* Do we have to start a monitor thread? */ + if (update & UPD_MON) { +- if (fd_evdev != -1) { ++ if (evdev_count >= 0) { + if (pthread_create(&th_switchmon, NULL, &thf_switch_evdev, NULL)) { + iprint(MSG_ERROR, "Evdev monitor thread creation failed.\n"); + exit(3); +diff -ru a/core/src/daemon.h b/core/src/daemon.h +--- a/core/src/daemon.h 2013-01-11 06:35:35.000000000 +0200 ++++ b/core/src/daemon.h 2013-01-11 06:34:08.000000000 +0200 +@@ -40,13 +40,13 @@ + extern int fd_tty_s, fd_tty1, fd_tty0; + + /* +- * Event device on which the daemon listens for F2 keypresses. +- * The proper device has to be detected by an external program and ++ * Event devices on which the daemon listens for F2 keypresses. ++ * The proper devices have to be detected by an external program and + * then enabled by sending an appropriate command to the splash + * daemon. + */ +-extern int fd_evdev; +-extern char *evdev; ++extern int fd_evdevs[]; ++extern int evdev_count; + + #ifdef CONFIG_GPM + #include +diff -ru a/core/src/daemon_cmd.c b/core/src/daemon_cmd.c +--- a/core/src/daemon_cmd.c 2013-01-11 06:35:35.000000000 +0200 ++++ b/core/src/daemon_cmd.c 2013-01-11 06:34:08.000000000 +0200 +@@ -239,18 +239,35 @@ + */ + int cmd_set_event_dev(void **args) + { +- if (evdev) +- free(evdev); +- +- evdev = strdup(args[0]); ++ char *evdevs; ++ char *evdev; ++ int i, j, fd_evdev = -1; + + pthread_cancel(th_switchmon); ++ for (i = 0;i < evdev_count;i++) { ++ close(fd_evdevs[i]); ++ } ++ evdevs = strdup(args[1]); ++ evdev_count = *(int*)args[0]; ++ j = 0; ++ for (i = 0;i < evdev_count;i++, evdevs = NULL) { ++ evdev = strtok(evdevs, ","); ++ fd_evdev = open(evdev, O_RDONLY); ++ if (fd_evdev != -1) { ++ fd_evdevs[j] = fd_evdev; ++ j++; ++ } else { ++ perror("failed to open event device"); ++ } ++ } ++ if (j == 0) { /* all input devices failed to open */ ++ evdev_count = -1; ++ free(evdevs); ++ return -1; ++ } + +- if (fd_evdev != -1) +- close(fd_evdev); +- +- fd_evdev = open(evdev, O_RDONLY); +- ++ evdev_count = j; ++ free(evdevs); + switchmon_start(UPD_MON, config.tty_s); + + return 0; +@@ -524,8 +541,8 @@ + + { .cmd = "set event dev", + .handler = cmd_set_event_dev, +- .args = 1, +- .specs = "s" ++ .args = 2, ++ .specs = "ds" + }, + + { .cmd = "set message", +@@ -628,7 +645,7 @@ + continue; + + for (j = 0; j < known_cmds[i].args; j++) { +- for (; buf[k] == ' '; buf[k] = 0, k++); ++ for (; buf[k] == ' '; buf[k] = '\0', k++); + if (!buf[k]) { + args[j] = NULL; + continue; +diff -ru a/core/src/libfbsplash.c b/core/src/libfbsplash.c +--- a/core/src/libfbsplash.c 2013-01-11 06:35:35.000000000 +0200 ++++ b/core/src/libfbsplash.c 2013-01-11 06:34:08.000000000 +0200 +@@ -588,6 +588,8 @@ + return -1; + } + ++#define EVDV_BUF_LEN 128 ++ + /** + * Try to set the event device for the splash daemon. + * +@@ -595,10 +597,14 @@ + */ + int fbsplash_set_evdev(void) + { +- char buf[128]; ++ char buf[EVDV_BUF_LEN]; ++ char evdev_devs[EVDV_BUF_LEN * MAX_KBDS]; + FILE *fp; + int i, j; +- ++ int kbd_count; ++ int max_chars, chars_left, dev_path_len; ++ char dev_path[] = PATH_DEV "/input/"; ++ dev_path_len = strlen(dev_path); + char *evdev_cmds[] = { + "/bin/grep -Hsi keyboard " PATH_SYS "/class/input/input*/name | /bin/sed -e 's#.*input\\([0-9]*\\)/name.*#event\\1#'", + "/bin/grep -Hsi keyboard " PATH_SYS "/class/input/event*/device/driver/description | /bin/grep -o 'event[0-9]\\+'", +@@ -608,22 +614,43 @@ + + /* Try to activate the event device interface so that F2 can + * be used to switch from verbose to silent. */ +- buf[0] = 0; +- for (i = 0; i < sizeof(evdev_cmds)/sizeof(char*); i++) { ++ buf[0] = '\0'; ++ kbd_count = 0; ++ max_chars = sizeof(evdev_devs) / sizeof(char*); ++ chars_left = max_chars - 1; ++ evdev_devs[0] = '\0'; ++ for (i = 0; i < sizeof(evdev_cmds) / sizeof(char*); i++) { + fp = popen(evdev_cmds[i], "r"); + if (fp) { +- fgets(buf, 128, fp); +- if ((j = strlen(buf)) > 0) { +- if (buf[j-1] == '\n') +- buf[j-1] = 0; +- break; ++ while (fgets(buf, 128, fp) && kbd_count < MAX_KBDS) { ++ if ((j = strlen(buf)) > 0) { ++ if (buf[j-1] == '\n') ++ buf[j-1] = ','; ++ if (chars_left < (j + dev_path_len)) { ++ break; ++ } ++ kbd_count++; ++ strncat(evdev_devs, dev_path, chars_left); ++ chars_left -= dev_path_len; ++ strncat(evdev_devs, buf, chars_left); ++ chars_left -= j; ++ } ++ } ++ /* replace the last ',' with '\n' */ ++ if (chars_left > 0 && evdev_devs[0] != '\0') { ++ j = strlen(evdev_devs); ++ if (j > 2) { ++ evdev_devs[j - 1] = '\n'; ++ } + } + pclose(fp); + } ++ if (kbd_count > 0) ++ break; + } + +- if (buf[0] != 0) { +- fbsplash_send("set event dev " PATH_DEV "/input/%s\n", buf); ++ if (evdev_devs[0] != '\0') { ++ fbsplash_send("set event dev %d %s", kbd_count, evdev_devs); + return 0; + } else { + return -1; +@@ -661,6 +688,8 @@ + return 0; + } + ++#define MAX_CMD 2048 ++ + /** + * Send stuff to the splash daemon using the splash FIFO. + * +@@ -668,7 +697,7 @@ + */ + int fbsplash_send(const char *fmt, ...) + { +- char cmd[256]; ++ char cmd[MAX_CMD]; + va_list ap; + + if (!fp_fifo) { +@@ -690,7 +719,7 @@ + } + + va_start(ap, fmt); +- vsnprintf(cmd, 256, fmt, ap); ++ vsnprintf(cmd, MAX_CMD, fmt, ap); + va_end(ap); + + fprintf(fp_fifo, cmd); diff --git a/media-gfx/splashutils/metadata.xml b/media-gfx/splashutils/metadata.xml new file mode 100644 index 0000000..07123e4 --- /dev/null +++ b/media-gfx/splashutils/metadata.xml @@ -0,0 +1,13 @@ + + + +proxy-maintainers + + asaf.gery@gmail.com + + + + Support for the fbcondecor kernel patch. + + + diff --git a/media-gfx/splashutils/splashutils-1.5.4.4-r4.ebuild b/media-gfx/splashutils/splashutils-1.5.4.4-r4.ebuild new file mode 100644 index 0000000..08e2c92 --- /dev/null +++ b/media-gfx/splashutils/splashutils-1.5.4.4-r4.ebuild @@ -0,0 +1,233 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 +inherit autotools eutils multilib toolchain-funcs + +MISCSPLASH="miscsplashutils-0.1.8" +GENTOOSPLASH="splashutils-gentoo-1.0.17" +V_JPEG="8a" +V_PNG="1.4.3" +V_ZLIB="1.2.3" +V_FT="2.3.12" + +ZLIBSRC="libs/zlib-${V_ZLIB}" +LPNGSRC="libs/libpng-${V_PNG}" +JPEGSRC="libs/jpeg-${V_JPEG}" +FT2SRC="libs/freetype-${V_FT}" + +RESTRICT="test" +IUSE="hardened +png +truetype gpm fbcondecor" + +DESCRIPTION="Framebuffer splash utilities" +HOMEPAGE="http://fbsplash.berlios.de" +SRC_URI=" + mirror://berlios/fbsplash/${PN}-lite-${PV}.tar.bz2 + mirror://berlios/fbsplash/${GENTOOSPLASH}.tar.bz2 + mirror://gentoo/${MISCSPLASH}.tar.bz2 + mirror://sourceforge/libpng/libpng-${V_PNG}.tar.bz2 + ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v${V_JPEG}.tar.gz + mirror://sourceforge/freetype/freetype-${V_FT}.tar.bz2 + http://www.gzip.org/zlib/zlib-${V_ZLIB}.tar.bz2 +" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86" + +RDEPEND=" + gpm? ( sys-libs/gpm[static-libs(+)] ) + truetype? ( + >=media-libs/freetype-2[static-libs] + app-arch/bzip2[static-libs(+)] + sys-libs/zlib[static-libs(+)] + ) + png? ( + >=media-libs/libpng-1.4.3[static-libs] + sys-libs/zlib[static-libs(+)] + ) + virtual/jpeg:0[static-libs] + app-arch/cpio + media-gfx/fbgrab + !sys-apps/lcdsplash" + +DEPEND="${RDEPEND} + >=dev-libs/klibc-1.5 + virtual/pkgconfig +" + +S="${WORKDIR}/${P/_/-}" +SG="${WORKDIR}/${GENTOOSPLASH}" +SM="${WORKDIR}/${MISCSPLASH}" + +pkg_setup() { + if use hardened; then + ewarn "Due to problems with klibc, it is currently impossible to compile splashutils" + ewarn "with 'hardened' GCC flags. As a workaround, the package will be compiled with" + ewarn "-fno-stack-protector. Hardened GCC features will not be used while building" + ewarn "the splash kernel helper." + fi +} + +src_prepare() { + mv "${WORKDIR}"/{libpng-${V_PNG},jpeg-${V_JPEG},zlib-${V_ZLIB},freetype-${V_FT}} "${S}/libs" + + # We need to delete the Makefile and let it be rebuilt when splashutils + # is being configured. Either that, or we end up with a segfaulting kernel + # helper. + rm "${S}/libs/zlib-${V_ZLIB}/Makefile" + + cd "${SG}" + epatch "${FILESDIR}/splashutils-1.5.4.4-gentoo-typo-fix.patch" + + if use truetype ; then + cd "${WORKDIR}" + epatch "${FILESDIR}/splashutils-1.5.4.4-ft25.patch" + cd "${SM}" + epatch "${FILESDIR}/splashutils-1.5.4.4-freetype-bz2.patch" + fi + + cd "${S}" + ln -sf "${S}/src" "${WORKDIR}/core" + + epatch "${FILESDIR}/${P}-bzip2.patch" + epatch "${FILESDIR}/${P}-multi-keyboard.patch" + + if ! tc-is-cross-compiler && \ + has_version "sys-devel/gcc:$(gcc-version)[vanilla]" ; then + ewarn "Your GCC was built with the 'vanilla' flag set. If you can't compile" + ewarn "splashutils, you're on your own, as this configuration is not supported." + else + # This should make splashutils compile on systems with hardened GCC. + sed -e 's@K_CFLAGS =@K_CFLAGS = -fno-stack-protector@' -i "${S}/Makefile.in" + fi + + if ! use truetype ; then + sed -i -e 's/fbtruetype kbd/kbd/' "${SM}/Makefile" + fi + + # Latest version of klibc defined its own version of ferror, so there is + # not need for the hack in klibc_compat.h + if has_version ">=dev-libs/klibc-1.5.20"; then + echo > "libs/klibc_compat.h" + fi + + rm -f m4/* + eautoreconf +} + +src_configure() { + tc-export CC + cd "${SM}" + emake CC="${CC}" LIB=$(get_libdir) STRIP=true + + cd "${S}" + econf \ + $(use_with png) \ + --without-mng \ + $(use_with gpm) \ + $(use_with truetype ttf) \ + $(use_with truetype ttf-kernel) \ + $(use_enable fbcondecor) \ + --docdir=/usr/share/doc/${PF} \ + --with-freetype2-src=${FT2SRC} \ + --with-jpeg-src=${JPEGSRC} \ + --with-lpng-src=${LPNGSRC} \ + --with-zlib-src=${ZLIBSRC} \ + --with-essential-libdir=/$(get_libdir) +} + +src_compile() { + emake CC="${CC}" STRIP="true" + + cd "${SG}" + emake LIB=$(get_libdir) +} + +src_install() { + local LIB=$(get_libdir) + + cd "${SM}" + emake DESTDIR="${D}" LIB=${LIB} install + + cd "${S}" + emake DESTDIR="${D}" STRIP="true" install + + mv "${D}"/usr/${LIB}/libfbsplash.so* "${D}"/${LIB}/ + gen_usr_ldscript libfbsplash.so + + echo 'CONFIG_PROTECT_MASK="/etc/splash"' > 99splash + doenvd 99splash + + if use fbcondecor ; then + newinitd "${SG}"/init-fbcondecor fbcondecor + newconfd "${SG}"/fbcondecor.conf fbcondecor + fi + newconfd "${SG}"/splash.conf splash + + insinto /usr/share/${PN} + doins "${SG}"/initrd.splash + + insinto /etc/splash + doins "${SM}"/fbtruetype/luxisri.ttf + + cd "${SG}" + make DESTDIR="${D}" LIB=${LIB} install + + sed -i -e "s#/lib/splash#/${LIB}/splash#" "${D}"/sbin/splash-functions.sh + keepdir /${LIB}/splash/{tmp,cache,bin,sys} + dosym /${LIB}/splash/bin/fbres /sbin/fbres +} + +pkg_preinst() { + has_version "<${CATEGORY}/${PN}-1.0" + previous_less_than_1_0=$? + + has_version "<${CATEGORY}/${PN}-1.5.3" + previous_less_than_1_5_3=$? +} + +pkg_postinst() { + if has_version sys-fs/devfsd || ! has_version virtual/udev ; then + elog "This package has been designed with udev in mind. Other solutions, such as" + elog "devfs or a static /dev tree might work, but are generally discouraged and" + elog "not supported. If you decide to switch to udev, you might want to have a" + elog "look at 'The Gentoo udev Guide', which can be found at" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog "" + fi + + if [[ $previous_less_than_1_0 = 0 ]] ; then + elog "Since you are upgrading from a pre-1.0 version, please make sure that you" + elog "rebuild your initrds. You can use the splash_geninitramfs script to do that." + elog "" + fi + + if [[ $previous_less_than_1_5_3 = 0 ]] && ! use fbcondecor ; then + elog "Starting with splashutils-1.5.3, support for the fbcondecor kernel patch" + elog "is optional and dependent on the the 'fbcondecor' USE flag. If you wish" + elog "to use fbcondecor, run:" + elog " echo \"media-gfx/splashutils fbcondecor\" >> /etc/portage/package.use" + elog "and re-emerge splashutils." + fi + + if ! test -f /proc/cmdline || + ! egrep -q '(console=tty1|CONSOLE=/dev/tty1)' /proc/cmdline ; then + elog "It is required that you add 'console=tty1' to your kernel" + elog "command line parameters." + elog "" + elog "After these modifications, the relevant part of the kernel command" + elog "line might look like:" + elog " splash=silent,fadein,theme:emergence console=tty1" + elog "" + fi + + if ! has_version 'media-gfx/splash-themes-livecd' && + ! has_version 'media-gfx/splash-themes-gentoo'; then + elog "The sample Gentoo themes (emergence, gentoo) have been removed from the" + elog "core splashutils package. To get some themes you might want to emerge:" + elog " media-gfx/splash-themes-livecd" + elog " media-gfx/splash-themes-gentoo" + fi +} diff --git a/profiles/categories b/profiles/categories index 88130a7..88775b2 100644 --- a/profiles/categories +++ b/profiles/categories @@ -2,6 +2,7 @@ app-crypt app-text dev-scheme dev-tex +media-gfx media-video net-analyzer net-fs -- cgit v1.2.3-65-gdbad