Merge pull request #109894 from pjjw/sysklogd-musl-patch

sysklogd: fix building against musl
This commit is contained in:
Guillaume Girol 2021-01-20 20:15:14 +00:00 committed by GitHub
commit 0adfe8ca75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 122 additions and 2 deletions

View file

@ -8,7 +8,7 @@ stdenv.mkDerivation {
sha256 = "00f2wy6f0qng7qzga4iicyzl9j8b7mp6mrpfky5jxj93ms2w2rji";
};
patches = [ ./systemd.patch ./union-wait.patch ];
patches = [ ./systemd.patch ./union-wait.patch ./fix-includes-for-musl.patch ];
NIX_CFLAGS_COMPILE = "-DSYSV";

View file

@ -0,0 +1,120 @@
# this patch both fixes some include paths as well as removes glibc
# gates around defines that musl-libc also depends on.
diff -u sysklogd-1.5.1.orig/klogd.c sysklogd-1.5.1/klogd.c
--- sysklogd-1.5.1.orig/klogd.c 2014-10-04 15:47:18.000000000 -0400
+++ sysklogd-1.5.1/klogd.c 2021-01-18 23:09:23.000000000 -0500
@@ -260,11 +260,8 @@
#include <unistd.h>
#include <signal.h>
#include <errno.h>
-#include <sys/fcntl.h>
+#include <fcntl.h>
#include <sys/stat.h>
-#if !defined(__GLIBC__)
-#include <linux/time.h>
-#endif /* __GLIBC__ */
#include <stdarg.h>
#include <paths.h>
#include <stdlib.h>
@@ -277,13 +274,8 @@
#define __LIBRARY__
#include <linux/unistd.h>
-#if !defined(__GLIBC__)
-# define __NR_ksyslog __NR_syslog
-_syscall3(int,ksyslog,int, type, char *, buf, int, len);
-#else
#include <sys/klog.h>
#define ksyslog klogctl
-#endif
#define LOG_BUFFER_SIZE 4096
#define LOG_LINE_LENGTH 1000
diff -u sysklogd-1.5.1.orig/ksym_mod.c sysklogd-1.5.1/ksym_mod.c
--- sysklogd-1.5.1.orig/ksym_mod.c 2014-10-04 15:47:18.000000000 -0400
+++ sysklogd-1.5.1/ksym_mod.c 2021-01-18 23:09:57.000000000 -0500
@@ -113,12 +113,9 @@
#include <unistd.h>
#include <signal.h>
#include <errno.h>
-#include <sys/fcntl.h>
+#include <fcntl.h>
#include <sys/stat.h>
#include "module.h"
-#if !defined(__GLIBC__)
-#include <linux/time.h>
-#endif /* __GLIBC__ */
#include <stdarg.h>
#include <paths.h>
#include <linux/version.h>
diff -u sysklogd-1.5.1.orig/pidfile.c sysklogd-1.5.1/pidfile.c
--- sysklogd-1.5.1.orig/pidfile.c 2014-10-04 15:47:18.000000000 -0400
+++ sysklogd-1.5.1/pidfile.c 2021-01-18 23:23:55.000000000 -0500
@@ -25,6 +25,7 @@
*/
#include <stdio.h>
+#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/file.h>
diff -u sysklogd-1.5.1.orig/syslog.c sysklogd-1.5.1/syslog.c
--- sysklogd-1.5.1.orig/syslog.c 2014-10-04 15:47:18.000000000 -0400
+++ sysklogd-1.5.1/syslog.c 2021-01-18 23:11:45.000000000 -0500
@@ -55,7 +55,6 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/file.h>
-#include <sys/signal.h>
#include <sys/syslog.h>
#if 0
#include "syslog.h"
@@ -64,6 +63,8 @@
#include <sys/uio.h>
#include <sys/wait.h>
+#include <signal.h>
+#include <fcntl.h>
#include <netdb.h>
#include <string.h>
#include <time.h>
diff -u sysklogd-1.5.1.orig/syslogd.c sysklogd-1.5.1/syslogd.c
--- sysklogd-1.5.1.orig/syslogd.c 2014-10-04 15:47:18.000000000 -0400
+++ sysklogd-1.5.1/syslogd.c 2021-01-18 23:13:25.000000000 -0500
@@ -519,9 +519,9 @@
#include <time.h>
#define SYSLOG_NAMES
+#include <errno.h>
#include <sys/syslog.h>
#include <sys/param.h>
-#include <sys/errno.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/wait.h>
@@ -818,9 +818,7 @@
void init();
void cfline(char *line, register struct filed *f);
int decode(char *name, struct code *codetab);
-#if defined(__GLIBC__)
#define dprintf mydprintf
-#endif /* __GLIBC__ */
static void dprintf(char *, ...);
static void allocate_log(void);
void sighup_handler();
@@ -840,15 +838,9 @@
register char *p;
#ifndef TESTING
ssize_t msglen;
-#endif
-#if !defined(__GLIBC__)
- int len, num_fds;
-#else /* __GLIBC__ */
-#ifndef TESTING
socklen_t len;
#endif
int num_fds;
-#endif /* __GLIBC__ */
/*
* It took me quite some time to figure out how this is
* supposed to work so I guess I should better write it down.

View file

@ -71,9 +71,9 @@ diff -ruN -x '*~' sysklogd-1.5-old/sd-daemon.c sysklogd-1.5/sd-daemon.c
+#include <sys/stat.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <sys/fcntl.h>
+#include <netinet/in.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>