mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-04 14:39:54 +00:00
gpm: Update to use git src uri
Additional patches are upstream to fix build with gcc6 and clang Add systemd unit file Create missing symlink for dev shared object Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
@@ -1,12 +0,0 @@
|
||||
Upstream-Status: pending
|
||||
|
||||
--- gpm-1.99.7.orig/src/daemon/open_console.c 2008-07-24 12:33:05.000000000 +0200
|
||||
+++ gpm-1.99.7/src/daemon/open_console.c 2013-01-10 12:39:47.975461947 +0100
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <fcntl.h> /* open and co. */
|
||||
#include <sys/stat.h> /* stat() */
|
||||
#include <sys/ioctl.h> /* ioctl() */
|
||||
+#include <sys/types.h> /* major() */
|
||||
|
||||
/* Linux specific (to be outsourced in gpm2 */
|
||||
#include <linux/serial.h> /* for serial console check */
|
||||
@@ -1,326 +0,0 @@
|
||||
Remove nested functions, they are not available in all compilers
|
||||
e.g. clang will not support them.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Index: gpm-1.99.7/src/drivers/summa/i.c
|
||||
===================================================================
|
||||
--- gpm-1.99.7.orig/src/drivers/summa/i.c
|
||||
+++ gpm-1.99.7/src/drivers/summa/i.c
|
||||
@@ -36,6 +36,28 @@ extern int summamaxy;
|
||||
|
||||
extern signed char summaid;
|
||||
|
||||
+static void resetsumma(int fd)
|
||||
+{
|
||||
+ write(fd, 0, 1); /* Reset */
|
||||
+ usleep(400000); /* wait */
|
||||
+}
|
||||
+
|
||||
+static int waitsumma(int fd)
|
||||
+{
|
||||
+ struct timeval timeout;
|
||||
+
|
||||
+ fd_set readfds;
|
||||
+
|
||||
+ int err;
|
||||
+
|
||||
+ FD_ZERO(&readfds);
|
||||
+ FD_SET(fd, &readfds);
|
||||
+ timeout.tv_sec = 0;
|
||||
+ timeout.tv_usec = 200000;
|
||||
+ err = select(FD_SETSIZE, &readfds, NULL, NULL, &timeout);
|
||||
+ return (err);
|
||||
+}
|
||||
+
|
||||
Gpm_Type *I_summa(int fd, unsigned short flags, struct Gpm_Type *type, int argc,
|
||||
char **argv)
|
||||
{
|
||||
@@ -43,24 +65,6 @@ Gpm_Type *I_summa(int fd, unsigned short
|
||||
flags = argc = 0; /* FIXME: 1.99.13 */
|
||||
argv = NULL;
|
||||
|
||||
- void resetsumma() {
|
||||
- write(fd, 0, 1); /* Reset */
|
||||
- usleep(400000); /* wait */
|
||||
- }
|
||||
- int waitsumma() {
|
||||
- struct timeval timeout;
|
||||
-
|
||||
- fd_set readfds;
|
||||
-
|
||||
- int err;
|
||||
-
|
||||
- FD_ZERO(&readfds);
|
||||
- FD_SET(fd, &readfds);
|
||||
- timeout.tv_sec = 0;
|
||||
- timeout.tv_usec = 200000;
|
||||
- err = select(FD_SETSIZE, &readfds, NULL, NULL, &timeout);
|
||||
- return (err);
|
||||
- }
|
||||
int err;
|
||||
|
||||
char buffer[255];
|
||||
@@ -91,7 +95,7 @@ Gpm_Type *I_summa(int fd, unsigned short
|
||||
*/
|
||||
setspeed(fd, 1200, 9600, 1,
|
||||
B9600 | CS8 | CREAD | CLOCAL | HUPCL | PARENB | PARODD);
|
||||
- resetsumma();
|
||||
+ resetsumma(fd);
|
||||
|
||||
write(fd, SS_PROMPT_MODE, strlen(SS_PROMPT_MODE));
|
||||
|
||||
@@ -103,7 +107,7 @@ Gpm_Type *I_summa(int fd, unsigned short
|
||||
* read the Summa Firm-ID
|
||||
*/
|
||||
write(fd, SS_FIRMID, strlen(SS_FIRMID));
|
||||
- err = waitsumma();
|
||||
+ err = waitsumma(fd);
|
||||
if(!((err == -1) || (!err))) {
|
||||
summaid = 10; /* Original Summagraphics */
|
||||
read(fd, buffer, 255); /* Read Firm-ID */
|
||||
@@ -111,14 +115,14 @@ Gpm_Type *I_summa(int fd, unsigned short
|
||||
}
|
||||
|
||||
if(summaid < 0) { /* Genius-test */
|
||||
- resetsumma();
|
||||
+ resetsumma(fd);
|
||||
write(fd, GEN_MMSERIES, 1);
|
||||
write(fd, &GEN_MODELL, 1); /* Read modell */
|
||||
- err = waitsumma();
|
||||
+ err = waitsumma(fd);
|
||||
if(!((err == -1) || (!err))) { /* read Genius-ID */
|
||||
- err = waitsumma();
|
||||
+ err = waitsumma(fd);
|
||||
if(!((err == -1) || (!err))) {
|
||||
- err = waitsumma();
|
||||
+ err = waitsumma(fd);
|
||||
if(!((err == -1) || (!err))) {
|
||||
read(fd, &config, 1);
|
||||
summaid = (config[0] & 224) >> 5; /* genius tablet-id
|
||||
@@ -135,14 +139,14 @@ Gpm_Type *I_summa(int fd, unsigned short
|
||||
* unknown tablet ?
|
||||
*/
|
||||
if((summaid < 0) || (summaid == 11)) {
|
||||
- resetsumma();
|
||||
+ resetsumma(fd);
|
||||
write(fd, SS_BINARY_FMT SS_PROMPT_MODE, 3);
|
||||
}
|
||||
|
||||
/*
|
||||
* read tablet size
|
||||
*/
|
||||
- err = waitsumma();
|
||||
+ err = waitsumma(fd);
|
||||
if(!((err == -1) || (!err)))
|
||||
read(fd, buffer, sizeof(buffer));
|
||||
write(fd, SS_READCONFIG, 1);
|
||||
Index: gpm-1.99.7/src/drivers/wacom/i.c
|
||||
===================================================================
|
||||
--- gpm-1.99.7.orig/src/drivers/wacom/i.c
|
||||
+++ gpm-1.99.7/src/drivers/wacom/i.c
|
||||
@@ -30,10 +30,6 @@
|
||||
#include "message.h" /* gpm_report */
|
||||
#include "wacom.h" /* wacom */
|
||||
|
||||
-Gpm_Type *I_wacom(int fd, unsigned short flags, struct Gpm_Type *type, int argc,
|
||||
- char **argv)
|
||||
-{
|
||||
-
|
||||
/* wacom graphire tablet */
|
||||
#define UD_RESETBAUD "\r$" /* reset baud rate to default (wacom V) */
|
||||
/*
|
||||
@@ -45,83 +41,91 @@ Gpm_Type *I_wacom(int fd, unsigned short
|
||||
#define UD_COORD "~C\r" /* Request max coordinates */
|
||||
#define UD_STOP "\nSP\r" /* stop sending coordinates */
|
||||
|
||||
- flags = 0; /* FIXME: 1.99.13 */
|
||||
|
||||
- void reset_wacom() {
|
||||
- /*
|
||||
- * Init Wacom communication; this is modified from xf86Wacom.so module
|
||||
- */
|
||||
- /*
|
||||
- * Set speed to 19200
|
||||
- */
|
||||
- setspeed(fd, 1200, 19200, 0, B19200 | CS8 | CREAD | CLOCAL | HUPCL);
|
||||
- /*
|
||||
- * Send Reset Baudrate Command
|
||||
- */
|
||||
- write(fd, UD_RESETBAUD, strlen(UD_RESETBAUD));
|
||||
- usleep(250000);
|
||||
- /*
|
||||
- * Send Reset Command
|
||||
- */
|
||||
- write(fd, UD_RESET, strlen(UD_RESET));
|
||||
- usleep(75000);
|
||||
- /*
|
||||
- * Set speed to 9600bps
|
||||
- */
|
||||
- setspeed(fd, 1200, 9600, 0, B9600 | CS8 | CREAD | CLOCAL | HUPCL);
|
||||
- /*
|
||||
- * Send Reset Command
|
||||
- */
|
||||
- write(fd, UD_RESET, strlen(UD_RESET));
|
||||
- usleep(250000);
|
||||
- write(fd, UD_STOP, strlen(UD_STOP));
|
||||
- usleep(100000);
|
||||
- }
|
||||
+static void reset_wacom(int fd)
|
||||
+{
|
||||
+ /*
|
||||
+ * Init Wacom communication; this is modified from xf86Wacom.so module
|
||||
+ */
|
||||
+ /*
|
||||
+ * Set speed to 19200
|
||||
+ */
|
||||
+ setspeed(fd, 1200, 19200, 0, B19200 | CS8 | CREAD | CLOCAL | HUPCL);
|
||||
+ /*
|
||||
+ * Send Reset Baudrate Command
|
||||
+ */
|
||||
+ write(fd, UD_RESETBAUD, strlen(UD_RESETBAUD));
|
||||
+ usleep(250000);
|
||||
+ /*
|
||||
+ * Send Reset Command
|
||||
+ */
|
||||
+ write(fd, UD_RESET, strlen(UD_RESET));
|
||||
+ usleep(75000);
|
||||
+ /*
|
||||
+ * Set speed to 9600bps
|
||||
+ */
|
||||
+ setspeed(fd, 1200, 9600, 0, B9600 | CS8 | CREAD | CLOCAL | HUPCL);
|
||||
+ /*
|
||||
+ * Send Reset Command
|
||||
+ */
|
||||
+ write(fd, UD_RESET, strlen(UD_RESET));
|
||||
+ usleep(250000);
|
||||
+ write(fd, UD_STOP, strlen(UD_STOP));
|
||||
+ usleep(100000);
|
||||
+}
|
||||
|
||||
- int wait_wacom() {
|
||||
- /*
|
||||
- * Wait up to 200 ms for Data from Tablet.
|
||||
- * Do not read that data.
|
||||
- * Give back 0 on timeout condition, -1 on error and 1 for DataPresent
|
||||
- */
|
||||
- struct timeval timeout;
|
||||
-
|
||||
- fd_set readfds;
|
||||
-
|
||||
- int err;
|
||||
-
|
||||
- FD_ZERO(&readfds);
|
||||
- FD_SET(fd, &readfds);
|
||||
- timeout.tv_sec = 0;
|
||||
- timeout.tv_usec = 200000;
|
||||
- err = select(FD_SETSIZE, &readfds, NULL, NULL, &timeout);
|
||||
- return ((err > 0) ? 1 : err);
|
||||
- }
|
||||
+static int wait_wacom(int fd)
|
||||
+{
|
||||
+ /*
|
||||
+ * Wait up to 200 ms for Data from Tablet.
|
||||
+ * Do not read that data.
|
||||
+ * Give back 0 on timeout condition, -1 on error and 1 for DataPresent
|
||||
+ */
|
||||
+ struct timeval timeout;
|
||||
|
||||
- char buffer[50], *p;
|
||||
+ fd_set readfds;
|
||||
|
||||
- int RequestData(char *cmd) {
|
||||
- int err;
|
||||
+ int err;
|
||||
|
||||
- /*
|
||||
- * Send cmd if not null, and get back answer from tablet.
|
||||
- * Get Data to buffer until full or timeout.
|
||||
- * Give back 0 for timeout and !0 for buffer full
|
||||
- */
|
||||
- if(cmd)
|
||||
- write(fd, cmd, strlen(cmd));
|
||||
- memset(buffer, 0, sizeof(buffer));
|
||||
- p = buffer;
|
||||
- err = wait_wacom();
|
||||
- while(err != -1 && err && (p - buffer) < (int) (sizeof(buffer) - 1)) {
|
||||
- p += read(fd, p, (sizeof(buffer) - 1) - (p - buffer));
|
||||
- err = wait_wacom();
|
||||
- }
|
||||
- /*
|
||||
- * return 1 for buffer full
|
||||
- */
|
||||
- return ((strlen(buffer) >= (sizeof(buffer) - 1)) ? !0 : 0);
|
||||
+ FD_ZERO(&readfds);
|
||||
+ FD_SET(fd, &readfds);
|
||||
+ timeout.tv_sec = 0;
|
||||
+ timeout.tv_usec = 200000;
|
||||
+ err = select(FD_SETSIZE, &readfds, NULL, NULL, &timeout);
|
||||
+ return ((err > 0) ? 1 : err);
|
||||
+}
|
||||
+
|
||||
+static int RequestData(int fd, char *cmd, char *buffer)
|
||||
+{
|
||||
+ int err;
|
||||
+ char *p;
|
||||
+ /*
|
||||
+ * Send cmd if not null, and get back answer from tablet.
|
||||
+ * Get Data to buffer until full or timeout.
|
||||
+ * Give back 0 for timeout and !0 for buffer full
|
||||
+ */
|
||||
+ if(cmd)
|
||||
+ write(fd, cmd, strlen(cmd));
|
||||
+ memset(buffer, 0, sizeof(buffer));
|
||||
+ p = buffer;
|
||||
+ err = wait_wacom(fd);
|
||||
+ while(err != -1 && err && (p - buffer) < (int) (sizeof(buffer) - 1)) {
|
||||
+ p += read(fd, p, (sizeof(buffer) - 1) - (p - buffer));
|
||||
+ err = wait_wacom(fd);
|
||||
}
|
||||
+ /*
|
||||
+ * return 1 for buffer full
|
||||
+ */
|
||||
+ return ((strlen(buffer) >= (sizeof(buffer) - 1)) ? !0 : 0);
|
||||
+}
|
||||
+
|
||||
+Gpm_Type *I_wacom(int fd, unsigned short flags, struct Gpm_Type *type, int argc,
|
||||
+ char **argv)
|
||||
+{
|
||||
+
|
||||
+ flags = 0; /* FIXME: 1.99.13 */
|
||||
+
|
||||
+ char buffer[50];
|
||||
|
||||
/*
|
||||
* We do both modes, relative and absolute, with the same function.
|
||||
@@ -143,17 +147,17 @@ Gpm_Type *I_wacom(int fd, unsigned short
|
||||
};
|
||||
parse_argv(optioninfo, argc, argv);
|
||||
type->absolute = WacomAbsoluteWanted;
|
||||
- reset_wacom();
|
||||
+ reset_wacom(fd);
|
||||
|
||||
/*
|
||||
* "Flush" input queque
|
||||
*/
|
||||
- while(RequestData(NULL)) ;
|
||||
+ while(RequestData(fd, NULL, buffer)) ;
|
||||
|
||||
/*
|
||||
* read WACOM-ID
|
||||
*/
|
||||
- RequestData(UD_FIRMID);
|
||||
+ RequestData(fd, UD_FIRMID, buffer);
|
||||
|
||||
/*
|
||||
* Search for matching modell
|
||||
@@ -180,7 +184,7 @@ Gpm_Type *I_wacom(int fd, unsigned short
|
||||
* read Wacom max size
|
||||
*/
|
||||
if(WacomModell != (-1) && (!wcmodell[WacomModell].maxX)) {
|
||||
- RequestData(UD_COORD);
|
||||
+ RequestData(fd, UD_COORD, buffer);
|
||||
sscanf(buffer + 2, "%d,%d", &wmaxx, &wmaxy);
|
||||
wmaxx = (wmaxx - wcmodell[WacomModell].border);
|
||||
wmaxy = (wmaxy - wcmodell[WacomModell].border);
|
||||
@@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=Virtual console mouse server
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
ExecStart=@bindir@/gpm -m /dev/input/mice -t imps2
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
+1
-1
@@ -11,7 +11,7 @@ Index: gpm-1.99.7/Makefile.in
|
||||
# user-overridable flags, but it's also all the implicit rule looks at.
|
||||
# missing ?
|
||||
|
||||
-SUBDIRS = src doc contrib gpm2
|
||||
-SUBDIRS = src doc contrib
|
||||
+SUBDIRS = src
|
||||
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
DESCRIPTION = "GPM (General Purpose Mouse) is a mouse server \
|
||||
for the console and xterm, with sample clients included \
|
||||
(emacs, etc)."
|
||||
SECTION = "console/utils"
|
||||
LICENSE = "GPLv2+"
|
||||
LIC_FILES_CHKSUM = "file://gpm2/core/main.c;endline=19;md5=66d3c205c4e7ee5704b2ee351dfed72f"
|
||||
|
||||
PR = "r2"
|
||||
|
||||
DEPENDS = "ncurses"
|
||||
|
||||
SRC_URI = "ftp://arcana.linux.it/pub/gpm/gpm-${PV}.tar.bz2 \
|
||||
file://no-docs.patch \
|
||||
file://processcreds.patch \
|
||||
file://eglibc-2.17.patch \
|
||||
file://remove_nested_functions.patch \
|
||||
file://init"
|
||||
|
||||
inherit autotools-brokensep update-rc.d
|
||||
|
||||
INITSCRIPT_NAME = "gpm"
|
||||
INITSCRIPT_PARAMS = "defaults"
|
||||
|
||||
#export LIBS = "-lm"
|
||||
|
||||
# all fields are /* FIXME: gpm 1.99.13 */
|
||||
# gpm-1.99.7/src/lib/libhigh.c:171:43: error: parameter 'clientdata' set but not used [-Werror=unused-but-set-parameter]
|
||||
# gpm-1.99.7/src/lib/report-lib.c:28:21: error: parameter 'line' set but not used [-Werror=unused-but-set-parameter]
|
||||
# gpm-1.99.7/src/lib/report-lib.c:28:33: error: parameter 'file' set but not used [-Werror=unused-but-set-parameter]
|
||||
# gpm-1.99.7/src/drivers/empty/i.c:26:23: error: parameter 'fd' set but not used [-Werror=unused-but-set-parameter]
|
||||
# gpm-1.99.7/src/drivers/empty/i.c:26:42: error: parameter 'flags' set but not used [-Werror=unused-but-set-parameter]
|
||||
# gpm-1.99.7/src/drivers/etouch/i.c:34:43: error: parameter 'flags' set but not used [-Werror=unused-but-set-parameter]
|
||||
# gpm-1.99.7/src/drivers/msc/r.c:32:12: error: variable 'dy' set but not used [-Werror=unused-but-set-variable]
|
||||
# gpm-1.99.7/src/drivers/msc/r.c:32:8: error: variable 'dx' set but not used [-Werror=unused-but-set-variable]
|
||||
# cc1: all warnings being treated as errors
|
||||
CFLAGS += "-Wno-extra -Wno-error=unused-but-set-parameter -Wno-error=unused-but-set-variable"
|
||||
|
||||
# twiddler is WIP in 1.99.7 and probably not worth fixing (a lot of changes in gpm-2-dev after 1.99.7
|
||||
# gpm-1.99.7/src/drivers/twid/twiddler.c:503:14: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
|
||||
# /gpm-1.99.7/src/mice.c:221:5: error: (near initialization for 'mice[32].init') [-Werror]
|
||||
CFLAGS += "-Wno-error=int-to-pointer-cast -Wno-error"
|
||||
|
||||
do_install () {
|
||||
oe_runmake 'DESTDIR=${D}' install
|
||||
install -m 0644 src/headers/gpm.h ${D}${includedir}
|
||||
install -d ${D}/${sysconfdir}/init.d
|
||||
install -m 0755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/gpm
|
||||
cd ${D}${libdir} && ln -sf libgpm.so.1.19.0 libgpm.so.1
|
||||
}
|
||||
SRC_URI[md5sum] = "9fdddf5f53cb11d40bb2bb671d3ac544"
|
||||
SRC_URI[sha256sum] = "6071378b24494e36ca3ef6377606e7e565040413c86704753a162d2180af32ee"
|
||||
|
||||
FILES_${PN} += "${datadir}/emacs"
|
||||
@@ -0,0 +1,45 @@
|
||||
DESCRIPTION = "GPM (General Purpose Mouse) is a mouse server \
|
||||
for the console and xterm, with sample clients included \
|
||||
(emacs, etc)."
|
||||
SECTION = "console/utils"
|
||||
LICENSE = "GPLv2+"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760"
|
||||
|
||||
PV = "1.99.7+git${SRCREV}"
|
||||
PR = "r2"
|
||||
SRCREV = "1fd19417b8a4dd9945347e98dfa97e4cfd798d77"
|
||||
|
||||
DEPENDS = "ncurses"
|
||||
|
||||
SRC_URI = "git://github.com/telmich/gpm;protocol=git \
|
||||
file://no-docs.patch \
|
||||
file://processcreds.patch \
|
||||
file://gpm.service.in \
|
||||
file://init"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
inherit autotools-brokensep update-rc.d systemd
|
||||
|
||||
INITSCRIPT_NAME = "gpm"
|
||||
INITSCRIPT_PARAMS = "defaults"
|
||||
|
||||
do_configure_prepend() {
|
||||
(cd ${S};./autogen.sh;cd -)
|
||||
}
|
||||
|
||||
do_install_append () {
|
||||
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
|
||||
install -d ${D}${systemd_system_unitdir}
|
||||
sed 's:@bindir@:${bindir}:' < ${WORKDIR}/gpm.service.in >${D}${systemd_system_unitdir}/gpm.service
|
||||
fi
|
||||
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
|
||||
install -D -m 0755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/gpm
|
||||
fi
|
||||
install -D -m 0644 ${S}/src/headers/gpm.h ${D}${includedir}/gpm.h
|
||||
ln -s libgpm.so.2 ${D}${libdir}/libgpm.so
|
||||
}
|
||||
|
||||
SYSTEMD_SERVICE_${PN} = "gpm.service"
|
||||
|
||||
FILES_${PN} += "${datadir}/emacs"
|
||||
Reference in New Issue
Block a user