Ver Fonte

gpm: fix source url, link against libncurses5w, fix gcc 15.x issues

Waldemar Brodkorb há 3 meses atrás
pai
commit
02c12ae82a

+ 2 - 1
package/gpm/Makefile

@@ -9,7 +9,7 @@ PKG_RELEASE:=		2
 PKG_HASH:=		c7e4661c24e05ae13547176b649bac8e3a0db2575f7dd57559f9e0b509f90f49
 PKG_DESCR:=		console mouse support
 PKG_SECTION:=		sys/hw
-PKG_URL:=		http://launchpad.net/gpm
+PKG_URL:=		https://www.nico.schottelius.org/software/gpm/
 PKG_SITES:=		http://www.nico.schottelius.org/software/gpm/archives/
 PKG_NOPARALLEL:=	1
 PKG_OPTS:=		dev
@@ -22,6 +22,7 @@ $(eval $(call PKG_template,GPM,gpm,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},
 
 AUTOTOOL_STYLE:=	autogen
 TARGET_CPPFLAGS+=	-I${WRKSRC}/src/headers
+TARGET_LDFLAGS+=	-lncursesw
 
 gpm-install:
 	${INSTALL_DIR} ${IDIR_GPM}/usr/sbin ${IDIR_GPM}/usr/lib

+ 10 - 0
package/gpm/patches/patch-src_daemon_old_main_c

@@ -0,0 +1,10 @@
+--- gpm-1.20.7.orig/src/daemon/old_main.c	2012-10-26 23:21:38.000000000 +0200
++++ gpm-1.20.7/src/daemon/old_main.c	2026-05-13 18:43:13.466675802 +0200
+@@ -25,6 +25,7 @@
+ #include <signal.h>                 /* guess again       */
+ #include <errno.h>                  /* guess again       */
+ #include <unistd.h>                 /* unlink            */
++#include <string.h>                 /* strcpy, bzero     */
+ #include <sys/stat.h>               /* chmod             */
+ 
+ #include <linux/kd.h>               /* linux hd*         */

+ 13 - 0
package/gpm/patches/patch-src_headers_gpm_h

@@ -0,0 +1,13 @@
+--- gpm-1.20.7.orig/src/headers/gpm.h	2012-10-26 23:21:38.000000000 +0200
++++ gpm-1.20.7/src/headers/gpm.h	2026-05-13 18:39:35.317416886 +0200
+@@ -268,7 +268,9 @@ Gpm_Roi * Gpm_LowerRoi(Gpm_Roi *which, G
+ /* libcurses.c */
+ /* #include <curses.h>  Hmm... seems risky */
+ 
+-extern int Gpm_Wgetch();
++struct _win_st;
++	
++extern int Gpm_Wgetch(struct _win_st *);
+ #define Gpm_Getch() (Gpm_Wgetch(NULL))
+ 
+ /* libxtra.c */

+ 109 - 1
package/gpm/patches/patch-src_prog_gpm-root_y

@@ -1,5 +1,5 @@
 --- gpm-1.20.7.orig/src/prog/gpm-root.y	2012-10-26 23:21:38.000000000 +0200
-+++ gpm-1.20.7/src/prog/gpm-root.y	2013-12-22 13:06:09.000000000 +0100
++++ gpm-1.20.7/src/prog/gpm-root.y	2026-05-13 18:43:02.522813736 +0200
 @@ -56,6 +56,9 @@
  #define minor(dev) ((dev)&0xff)
  #endif
@@ -10,6 +10,114 @@
  
  #define GPM_NULL_DEV "/dev/null"
  
+@@ -128,7 +131,7 @@ typedef struct DrawItem {
+    char *name;
+    char *arg;   /* a cmd string */
+    void *clientdata;  /* a (Draw *) for menus or whatever   */
+-   int (*fun)();
++   int (*fun)(int, struct DrawItem *, int);
+    struct DrawItem *next;
+ } DrawItem;
+ 
+@@ -159,7 +162,7 @@ int yyerror(char *s);
+ int yylex(void);
+ 
+ DrawItem *cfg_cat(DrawItem *, DrawItem *);
+-DrawItem *cfg_makeitem(int mode, char *msg, int(*fun)(), void *detail);
++DrawItem *cfg_makeitem(int mode, char *msg, int(*fun)(int,  DrawItem *, int), void *detail);
+ 
+ 
+ /*===================================================================*
+@@ -195,7 +198,7 @@ int f_pipe(int mode, DrawItem *self, int
+       char *string;
+       Draw *draw;
+       DrawItem *item;
+-      int (*fun)();
++      int (*fun)(int,  DrawItem *, int);
+       }
+ 
+ %token <string> T_STRING
+@@ -284,7 +287,7 @@ struct tokenName tokenList[] = {
+ struct funcName {
+    char *name;
+    int token;
+-   int (*fun)();
++   int (*fun)(int,  DrawItem *, int);
+    };
+ struct funcName funcList[] = {
+    {"f.debug",T_FUNC,f_debug},
+@@ -390,7 +393,7 @@ Draw *cfg_alloc(void)
+ 
+ /*---------------------------------------------------------------------*/
+ /* malloc an empty DrawItem and fill it */
+-DrawItem *cfg_makeitem(int mode, char *msg, int(*fun)(), void *detail)
++DrawItem *cfg_makeitem(int mode, char *msg, int(*fun)(int,  DrawItem *, int), void *detail)
+ {
+    DrawItem *new=calloc(1,sizeof(DrawItem));
+ 
+@@ -405,7 +408,7 @@ DrawItem *cfg_makeitem(int mode, char *m
+ 
+       case 'F': /* a function without args */
+          new->fun=fun;
+-         if (fun) fun(F_CREATE,new);
++         if (fun) fun(F_CREATE,new,0);
+          break;
+ 
+       case 'M':
+@@ -939,7 +942,7 @@ static unsigned short clear_sel_args[6]=
+ static unsigned char *clear_sel_arg= (unsigned char *)clear_sel_args+1;
+ 
+ /*------------*/
+-static inline void scr_dump(int fd, FILE *f, unsigned char *buffer, int vc)
++static inline void gpm_scr_dump(int fd, FILE *f, unsigned char *buffer, int vc)
+ {
+    int dumpfd;
+    char dumpname[20];
+@@ -958,7 +961,7 @@ static inline void scr_dump(int fd, FILE
+ }
+ 
+ /*------------*/
+-static inline void scr_restore(int fd, FILE *f, unsigned char *buffer, int vc)
++static inline void gpm_scr_restore(int fd, FILE *f, unsigned char *buffer, int vc)
+ {
+    int x,y, dumpfd;
+    char dumpname[20];
+@@ -1002,7 +1005,7 @@ Posted *postmenu(int fd, FILE *f, Draw *
+    if (!new) return NULL;
+    new->draw=draw;
+    new->dump=dump=malloc(opt_buf);
+-   scr_dump(fd,f,dump,console);
++   gpm_scr_dump(fd,f,dump,console);
+    lines=dump[0]; columns=dump[1];
+    i=(columns*dump[3]+dump[2])*2+1; /* where to get it */
+    if (i<0) i=1;
+@@ -1047,7 +1050,7 @@ Posted *postmenu(int fd, FILE *f, Draw *
+    }
+    /* sides and items */
+    for (item=draw->menu; y++, item; item=item->next) {
+-         if (item->fun) (*(item->fun))(F_POST,item);
++         if (item->fun) (*(item->fun))(F_POST,item,0);
+          GOTO(x,y); PUTC(VERLINE,draw->bord,draw->back);
+          for (i=0;i<item->pad;i++) PUTC(' ',draw->fore,draw->back);
+          PUTS(item->name,draw->fore,draw->back); i+=strlen(item->name);
+@@ -1060,7 +1063,7 @@ Posted *postmenu(int fd, FILE *f, Draw *
+    for (i=0; i<draw->width; i++) PUTC(HORLINE,draw->bord,draw->back);
+    PUTC(LRCORNER,draw->bord,draw->back);
+ 
+-   scr_restore(fd,f,dump,console);
++   gpm_scr_restore(fd,f,dump,console);
+    free(dump);
+ 
+ #undef PUTC
+@@ -1077,7 +1080,7 @@ Posted *unpostmenu(int fd, FILE *f, Post
+ {
+    Posted *prev=which->prev;
+ 
+-   scr_restore(fd,f,which->dump, vc);
++   gpm_scr_restore(fd,f,which->dump, vc);
+    ioctl(fd,TCXONC,TCOON); /* activate the console */  
+    free(which->dump);
+    free(which);
 @@ -1196,11 +1199,7 @@ int main(int argc, char **argv)
                                                          LOG_DAEMON : LOG_USER);
     /* reap your zombies */

+ 54 - 0
package/gpm/patches/patch-src_prog_hltest_c

@@ -0,0 +1,54 @@
+--- gpm-1.20.7.orig/src/prog/hltest.c	2012-10-26 23:21:38.000000000 +0200
++++ gpm-1.20.7/src/prog/hltest.c	2026-05-13 18:43:02.522813736 +0200
+@@ -80,7 +80,6 @@ int wid,hei,vcsize;
+ unsigned short clear_sel_args[6]={0, 0,0, 0,0, 4};
+ unsigned char *clear_sel_arg= (unsigned char *)clear_sel_args+1;
+ 
+-
+ static inline int scrdump(char *buf)
+ {
+    clear_sel_arg[0]=2;  /* clear_selection */
+@@ -99,7 +98,7 @@ static inline int scrrestore(char *buf)
+ 
+ 
+ /* I don't like curses, so I'm doing low level stuff here */
+-static void raw(void)
++static void gpm_raw(void)
+ {
+ struct termios it;
+ 
+@@ -115,7 +114,7 @@ tcsetattr(fileno(stdin),TCSANOW,&it);
+ 
+ }
+ 
+-static void noraw(void)
++static void gpm_noraw(void)
+ {
+ struct termios it;
+ 
+@@ -136,7 +135,7 @@ void killed(int signo)
+ {
+    CLEAR;
+    fprintf(stderr,"hltest: killed by signal %i\r\n",signo);
+-   noraw();
++   gpm_noraw();
+    exit(0);
+ }
+ 
+@@ -525,7 +524,7 @@ int main(int argc, char **argv)
+    gpm_roi_handler=xhandler;
+    gpm_roi_data=NULL;
+ 
+-   raw();
++   gpm_raw();
+    newmsg(0,NULL); /* init data structures */
+    while((c=Gpm_Getchar())!=EOF) {
+       char s[32];
+@@ -538,6 +537,6 @@ int main(int argc, char **argv)
+    newmsg(roi ? ((WinInfo *)roi->clientdata)->number : 0,s);
+    }
+ 
+-   noraw();
++   gpm_noraw();
+    exit(0);
+ }

+ 110 - 0
package/gpm/patches/patch-src_prog_mouse-test_c

@@ -0,0 +1,110 @@
+--- gpm-1.20.7.orig/src/prog/mouse-test.c	2012-10-26 23:21:38.000000000 +0200
++++ gpm-1.20.7/src/prog/mouse-test.c	2026-05-13 18:43:02.522813736 +0200
+@@ -106,7 +106,7 @@ return 0;
+ /*----------------------------------------------------------------------------- 
+    Place the description here.
+  -----------------------------------------------------------------------------*/
+-static void raw(void)
++static void gpm_raw(void)
+ {
+    struct termios it;
+ 
+@@ -125,7 +125,7 @@ static void raw(void)
+ /*----------------------------------------------------------------------------- 
+    Place the description here.
+  -----------------------------------------------------------------------------*/
+-static void noraw(void)
++static void gpm_noraw(void)
+ {
+    struct termios it;
+ 
+@@ -144,7 +144,7 @@ static void noraw(void)
+ void killed(int signo)
+ {
+    fprintf(stderr,"mouse-test: killed by signal %i\r\n",signo);
+-   noraw();
++   gpm_noraw();
+    exit(0);
+ }
+ 
+@@ -196,7 +196,7 @@ int mousereopen(int oldfd, char *name, G
+ 
+ int noneofthem(void)
+ {
+-   noraw();
++   gpm_noraw();
+    printf("\n\nSomething went wrong, I didn't manage to detect your"
+ 	 "protocol\n\nFeel free to report your problems to the author\n");
+    exit(1);
+@@ -336,7 +336,7 @@ int main(int argc, char **argv)
+    I_serial=mice->init; /* the first one has I_serial */
+ 
+    signal(SIGINT,killed);   /* control-C kills us */
+-   raw();
++   gpm_raw();
+ 
+ /*====================================== First of all, detect the device */
+ 
+@@ -568,7 +568,7 @@ int main(int argc, char **argv)
+    /* why checking and not using return value ??? */
+    CHECKFAIL(typecount);
+    if (typecount==1) {
+-      noraw();
++      gpm_noraw();
+       printf("\n\n\nWell, it seems like your mouse is already detected:\n"
+       "it is on the device \"%s\", and speaks the protocol \"%s\"\n",
+       mousename,list->this->name);
+@@ -587,7 +587,7 @@ int main(int argc, char **argv)
+    } while(i!='y' && i!='n');
+ 
+    if (i=='n') {
+-      noraw();
++      gpm_noraw();
+       printf("\nThen, you should use the \"bare\" protocol on \"%s\"\n",
+ 	   mousename);
+       exit(0);
+@@ -634,7 +634,7 @@ int main(int argc, char **argv)
+    for (pending=0,i=0;i<got-16;i++)
+       if(!memcmp(buf+i,buf+i+8,8)) pending++;
+    if (pending > 3) {
+-      noraw();
++      gpm_noraw();
+       printf("\nYour mouse seems to be a 'mman' one  on \"%s\" (%i matches)\n",
+ 	   mousename,pending);
+       exit(0);
+@@ -660,7 +660,7 @@ int main(int argc, char **argv)
+          continue;
+       }
+ 	   if (pending>3) {
+-	      noraw();
++	      gpm_noraw();
+ 	      printf("\nYour mouse seems to be a '%s' one on \"%s\" (%i matches)\n",
+ 		   cur->this->name,mousename,pending);
+ 	      exit(0);
+@@ -695,7 +695,7 @@ int main(int argc, char **argv)
+          for (pending=0,i=0;i<got-20;i++)
+             if(!memcmp(buf+i,buf+i+10,10)) pending++;
+          if (pending>3) {
+-            noraw();
++            gpm_noraw();
+             printf("\nYour mouse becomes a 3-buttons ('-t msc') one when\n"
+ 	         "gpm gets '-o %s' on it command line, and X gets\n"
+ 	         "%s in XF86Config\nThe device is \"%s\"",
+@@ -726,7 +726,7 @@ int main(int argc, char **argv)
+    for (pending=0,i=0;i<got-20;i++)
+       if(!memcmp(buf+i,buf+i+10,10)) pending++;
+    if (pending>3) {
+-      noraw();
++      gpm_noraw();
+       printf("\nWorked. You should keep the button pressed every time the\n"
+ 	   "computer boots, and run gpm in '-R' mode in order to ignore\n"
+ 	   "such hassle when starting X\n\nStill better, but a better mouse\n"
+@@ -734,7 +734,7 @@ int main(int argc, char **argv)
+ 
+       exit(0);
+    }
+-   noraw();
++   gpm_noraw();
+    printf("\nI'm lost. Can't tell you how to use your middle button\n");
+    return 0;
+ }