From 4f2d7949f03e1c198bc888f2d05f421d35c57e21 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 9 Oct 2017 18:53:29 +0100 Subject: reinit the tree, so we can have metadata --- media-gfx/splashutils/Manifest | 17 + .../files/splashutils-1.5.4.4-freetype-bz2.patch | 15 + .../files/splashutils-1.5.4.4-ft25.patch | 42 +++ .../splashutils-1.5.4.4-gentoo-typo-fix.patch | 19 + .../files/splashutils-1.5.4.4-multi-keyboard.patch | 381 +++++++++++++++++++++ .../files/splashutils-1.5.4.4-no-la.patch | 12 + .../files/splashutils-1.5.4.4-sys-queue.patch | 8 + media-gfx/splashutils/metadata.xml | 19 + .../splashutils/splashutils-1.5.4.4-r7.ebuild | 239 +++++++++++++ 9 files changed, 752 insertions(+) create mode 100644 media-gfx/splashutils/Manifest 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/files/splashutils-1.5.4.4-no-la.patch create mode 100644 media-gfx/splashutils/files/splashutils-1.5.4.4-sys-queue.patch create mode 100644 media-gfx/splashutils/metadata.xml create mode 100644 media-gfx/splashutils/splashutils-1.5.4.4-r7.ebuild (limited to 'media-gfx/splashutils') diff --git a/media-gfx/splashutils/Manifest b/media-gfx/splashutils/Manifest new file mode 100644 index 000000000000..2264ae5838ef --- /dev/null +++ b/media-gfx/splashutils/Manifest @@ -0,0 +1,17 @@ +AUX splashutils-1.5.4.4-freetype-bz2.patch 515 SHA256 06a9f6d9d9206d09115abf3d8c86692908530f11168a51d99dd43a465e7092c0 SHA512 880cc0703de76c3c145680f1e85e461473df3dd41817757878bd18dc4c0d10484d1f93f995e6818ddcf3309e6b9febc1447ce7880006df8e08626bac5aae2e5c WHIRLPOOL 50c58afaacfd2594c1bc402c07680d742809e2af694b98acb3656f7dbc50cc85a537bec4b362c443f9dbe1054307c397cdba9613392ef6c508760d2487095265 +AUX splashutils-1.5.4.4-ft25.patch 1221 SHA256 6468265cffb4595703a83c01f5b54d7d3d389f93b395636010564db49c4e843b SHA512 5a6d80ed51c7c57ff9ab5930bdbb50d8c594076c0a8a5e72d2d1014f32d2413a2c5b366a777da2cd4292d4e8246caa05c69892930a7a17719e989edd7b749051 WHIRLPOOL 8415e49f13fd80a6beebc14d0cbb4f3a209a104f123695b34e5f746f442085f43f287b85caffb6a3ba0f0e6ce905986a62f19610b8a7c4fa356e23cbbc5434c2 +AUX splashutils-1.5.4.4-gentoo-typo-fix.patch 567 SHA256 92ee0727bfd9fe6f9565d09546ea63079467f67c2d57385713a62d0b617bb1bf SHA512 f5d5fd222b5dea9906e5a7541ad2ab1ff161061c6bb5e013929767d3f6aa9fe245092e201b8d42a086938be3320b77384301c22bc307cf7872daac33184127f2 WHIRLPOOL f971453383c1abf28c912a49c426c7da92ba6d44580981e89bedd4ef7df9940236e53842bd31ecb85c44c2ff31230569a33e7233498269aefc8caeacb84b9caa +AUX splashutils-1.5.4.4-multi-keyboard.patch 10158 SHA256 95a0de0a666c29c7d80fe653659191770d359f62d1edac00dc3ad97ac14d6dac SHA512 71056d599f4465ef424444d717ce1597295e0228f548c69cb36ef617075af430b1ac50f5be27bca65a50ed9e7d0169ceb256dbc66cf4b635fd9f8310d32baeae WHIRLPOOL ce782d0a6a21350fd9b00792f0eb247907b3bcf900c0e5aa8f6304d4d3c05ee59f1b036d623f25262484bd8d48ddd95a5ef086644d369c6190570be8db432112 +AUX splashutils-1.5.4.4-no-la.patch 504 SHA256 acb6971f60b3029291869226d6a5f5ac89f7e8b9f4c9e5de50d457e20272a8ac SHA512 e513e0440fa3383dd368c777ac96717ffe94b8dd2b87c36d0dc0daf890b0f7082234ff5086b4c34144c0589a2c45137ec43158605ce50e58879646cd2a68e1c0 WHIRLPOOL bf33f1130826bfdf05abc7333bc78570397cc3a3b7399c9e89a9f315c4ed283b437799bb4ad80580b7acbc89af85b6164dd22a3e692760aae72b9ad18feeddae +AUX splashutils-1.5.4.4-sys-queue.patch 233 SHA256 a3425703473d21050a142d901ee1d6114967ce91da4a2540fa6d262de191bea0 SHA512 27181754bffb312360cc5834587a6cb68154cdac3a771956f3d4165db0cd079e884a7af5ee1910003882ad7b8835f8947ba9fc7dcc14800635206ac8bd7ada76 WHIRLPOOL 3b04bc2cae8e89489204bbdd58ba87e654e54dd0c5c56afb3fb6ee7a20feaac8188176a116ec70390ede4e5faf22b25945de4a2d524b39eee821ac749d1e5ed6 +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 +EBUILD splashutils-1.5.4.4-r7.ebuild 6878 SHA256 0232c68a43dd0d962a27717126a5febd904a900b3d263cb8b6c1274324dd0a26 SHA512 1b1e328e9b9b06b53d5e676c8dd79d339095194345f94fd135297bccde2afa5044c2a8c16b4ebdef523dce52b8a9075dceabdecc70765312b8baf959c9dd7713 WHIRLPOOL 48b46cb9d2ea5c765442a3b4ae365457093a8a21595731d95e45647ecec7b23e5c8ca9893a5df1abdfdfb1f3097907e97d01f36fbbeab0b6997b1947a7ae24dd +MISC ChangeLog 4599 SHA256 d55ab577a099dcabafe7898a5bca7896ab0fa647fa972c8e2957b8788ae52059 SHA512 5e4109858f757431427f4f2f254067d18653d49f2cf172d547e12cd2c3016ba2f6868b2803af7efa8a3fd0b8b2abb4c47abf397139b65833dbf6c1a80df0c4e4 WHIRLPOOL 604d31a7183ee5d54e243ff62fd378433078b6b8bc8fa1f9b70596f72dd5ff9cdde8bf912050c126916ec968780d0505832dcac3bbaf36c093cea9eb8038c80a +MISC ChangeLog-2015 41786 SHA256 9e3f486d6b536f4d3a131820e70068af371e3c9ce88b352c91be0236048f3c80 SHA512 fd5523005e869fb92978d5967faee9c477adbb9503c847d5edb5e60cf7547fefafad2360b0b1d35ee9230997ed7379816569ffbdc9255086260f18306a218171 WHIRLPOOL 607436ef9bd5896ead465273c78ab9e295bf54939c2f524c9ca77090510ce6a5a133b97ad11ac965ba899807b74ea48919567378418a2aba8ab305868a5dadef +MISC metadata.xml 508 SHA256 1c52dae633774af39a0260d9e42f7b9bcf31922ffb223ee2a34f7077ee0d2198 SHA512 6ad59793cd6d2c3542f447cf7d9557740758d276405c48a0cedd9c8258f8f7b88d110f8339c91ab57c1140c3a4fd96a7fb02ebebd84613f7b18c672b9bc6f194 WHIRLPOOL 9088561f1b04ef0e3e1a00f785ce5bb4a4831092ff26248eace25cfe3d8ba6ca9c5be2f21ead5887fa8950e6ecce3723c3f09e5d4bf52309811adb7a3b06c5b1 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 000000000000..3438fd523b2a --- /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 000000000000..b5194d5499a8 --- /dev/null +++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-ft25.patch @@ -0,0 +1,42 @@ +Gentoo-bug: https://bugs.gentoo.org/506124 +Signed-off-by: Lars Wendler (Polynomial-C) +Modified-by: Sergey Popov (Pinkbyte) +--- 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.c 2015-02-01 11:35:04.330595381 +0300 ++++ splashutils-1.5.4.4/src/ttf.c 2015-02-01 11:35:24.287596342 +0300 +@@ -25,8 +25,8 @@ + #include + + #include +-#include +-#include ++#include FT_OUTLINE_H ++#include FT_TRUETYPE_IDS_H + + #include "common.h" + #include "render.h" +--- splashutils-1.5.4.4/src/ttf.h 2015-02-01 11:38:33.852605470 +0300 ++++ splashutils-1.5.4.4/src/ttf.h 2015-02-01 11:38:52.504606368 +0300 +@@ -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 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 000000000000..4b8d51375e71 --- /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 000000000000..23f15fd8f9c5 --- /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/files/splashutils-1.5.4.4-no-la.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-no-la.patch new file mode 100644 index 000000000000..0dae2589b7fb --- /dev/null +++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-no-la.patch @@ -0,0 +1,12 @@ +--- splashutils-1.5.4.4/src/Makefile.am.orig 2011-06-13 01:43:39.000000000 +0400 ++++ splashutils-1.5.4.4/src/Makefile.am 2015-08-09 23:37:23.191078543 +0300 +@@ -119,7 +119,7 @@ + fbsplash.h + libfbsplashrender_la_CFLAGS = $(AM_CFLAGS) + libfbsplashrender_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(libfbsplashrender_version) +-libfbsplashrender_la_LIBADD = libfbsplash.la ++libfbsplashrender_la_LIBADD = + + libfbsplashrender_la_CFLAGS += $(JPEG_CFLAGS) + libfbsplashrender_la_LIBADD += $(JPEG_LIBS) + diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-sys-queue.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-sys-queue.patch new file mode 100644 index 000000000000..8ede7322c0d1 --- /dev/null +++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-sys-queue.patch @@ -0,0 +1,8 @@ +--- splash.c 2011-06-13 04:45:59.000000000 +0700 ++++ splash.c 2014-11-14 20:04:43.000000000 +0700 +@@ -21,4 +21,5 @@ + #include + #include ++#include + #include + #include diff --git a/media-gfx/splashutils/metadata.xml b/media-gfx/splashutils/metadata.xml new file mode 100644 index 000000000000..384553ab7506 --- /dev/null +++ b/media-gfx/splashutils/metadata.xml @@ -0,0 +1,19 @@ + + + + + asaf.gery@gmail.com + + + proxy-maint@gentoo.org + Proxy Maintainers + + + + Support for the fbcondecor kernel patch. + + + + freetype + + diff --git a/media-gfx/splashutils/splashutils-1.5.4.4-r7.ebuild b/media-gfx/splashutils/splashutils-1.5.4.4-r7.ebuild new file mode 100644 index 000000000000..06730c581400 --- /dev/null +++ b/media-gfx/splashutils/splashutils-1.5.4.4-r7.ebuild @@ -0,0 +1,239 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +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="https://sourceforge.net/projects/fbsplash.berlios/" +SRC_URI=" + mirror://sourceforge/fbsplash.berlios/${PN}-lite-${PV}.tar.bz2 + mirror://sourceforge/fbsplash.berlios/${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 + sys-apps/openrc" + +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" + epatch "${FILESDIR}/splashutils-1.5.4.4-sys-queue.patch" + + if use truetype ; then + cd "${SM}" + epatch "${FILESDIR}/splashutils-1.5.4.4-freetype-bz2.patch" + cd "${WORKDIR}" + epatch "${FILESDIR}/splashutils-1.5.4.4-ft25.patch" + fi + + cd "${S}" + ln -sf "${S}/src" "${WORKDIR}/core" + + #epatch "${FILESDIR}/${P}-bzip2.patch" + epatch "${FILESDIR}/${P}-multi-keyboard.patch" + # Bug #557126 + epatch "${FILESDIR}/${P}-no-la.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/* + epatch_user + export PKG_CONFIG="pkg-config --static" + 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 + prune_libtool_files + + 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 " https://wiki.gentoo.org/wiki/Udev" + 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 +} -- cgit v1.2.3