Leo Famulari writes: > * gnu/packages/patches/gpm-glibc-2.26.patch: New file. > * gnu/local.mk (dist_patch_DATA): Add it. > * gnu/packages/linux.scm (gpm)[source]: Use it. [...] > diff --git a/gnu/packages/patches/gpm-glibc-2.26.patch b/gnu/packages/patches/gpm-glibc-2.26.patch > new file mode 100644 > index 000000000..cc2766ce8 > --- /dev/null > +++ b/gnu/packages/patches/gpm-glibc-2.26.patch > @@ -0,0 +1,79 @@ > +Fix building of GPM with glibc 2.26: > + > +------ > +daemon/open_console.o: In function `open_console': > +/tmp/guix-build-gpm-1.20.7.drv-0/gpm-1.20.7/src/daemon/open_console.c:45: undefined reference to `major' > +collect2: error: ld returned 1 exit status > +------ > + > +https://github.com/telmich/gpm/issues/21 > + > +Patch copied from Linux From Scratch: > + > +http://www.linuxfromscratch.org/patches/blfs/svn/gpm-1.20.7-glibc_2.26-1.patch No response from upstream in 6 months, yikes! Gentoo only carries the sysmacros.h hunk, plus a one-liner: https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-libs/gpm/files ...which seems less "brutal" than the LFS patch. Can you try it? I also noticed Arch does not have any patches on gpm, I wonder what they do differently. https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/gpm > + > +Submitted by: Pierre Labastie > +Date: 2017-08-17 > +Initial Package Version: 1.20.7 > +Origin: Nutyx > +Upstream Status: There are PRs, but nothing committed yet > +Description: Fix build failures introduced by glibc-2.26 > + > +diff -Naur gpm-1.20.7-orig/src/daemon/open_console.c gpm-1.20.7/src/daemon/open_console.c > +--- gpm-1.20.7-orig/src/daemon/open_console.c 2012-10-26 21:21:38.000000000 +0000 > ++++ gpm-1.20.7/src/daemon/open_console.c 2017-08-08 17:58:15.176232558 +0000 > +@@ -23,6 +23,10 @@ > + #include /* stat() */ > + #include /* ioctl */ > + > ++#ifdef HAVE_SYS_SYSMACROS_H > ++#include /* major() w/newer glibc */ > ++#endif > ++ > + /* Linux specific (to be outsourced in gpm2 */ > + #include /* for serial console check */ > + #include /* for serial console check */ > +diff -Naur gpm-1.20.7-orig/src/prog/gpm-root.y gpm-1.20.7/src/prog/gpm-root.y > +--- gpm-1.20.7-orig/src/prog/gpm-root.y 2012-10-26 21:21:38.000000000 +0000 > ++++ gpm-1.20.7/src/prog/gpm-root.y 2017-08-08 18:00:36.442898559 +0000 > +@@ -443,6 +443,7 @@ > + } > + > + /*---------------------------------------------------------------------*/ > ++#if 0 > + static int f_debug_one(FILE *f, Draw *draw) > + { > + DrawItem *ip; > +@@ -465,6 +466,7 @@ > + #undef LINE > + return 0; > + } > ++#endif > + > + int f_debug(int mode, DrawItem *self, int uid) > + { > +@@ -960,10 +962,8 @@ > + /*------------*/ > + static inline void scr_restore(int fd, FILE *f, unsigned char *buffer, int vc) > + { > +- int x,y, dumpfd; > ++ int dumpfd; > + char dumpname[20]; > +- > +- x=buffer[2]; y=buffer[3]; > + > + /* WILL NOT WORK WITH DEVFS! FIXME! */ > + sprintf(dumpname,"/dev/vcsa%i",vc); > +@@ -1196,11 +1196,7 @@ > + LOG_DAEMON : LOG_USER); > + /* reap your zombies */ > + childaction.sa_handler=reap_children; > +-#if defined(__GLIBC__) > +- __sigemptyset(&childaction.sa_mask); > +-#else /* __GLIBC__ */ > +- childaction.sa_mask=0; > +-#endif /* __GLIBC__ */ > ++ sigemptyset(&childaction.sa_mask); > + childaction.sa_flags=SA_INTERRUPT; /* need to break the select() call */ > + sigaction(SIGCHLD,&childaction,NULL); > + > -- > 2.15.1