sysklogd: fix compile error (#18133)

sysklogd was failing to build because it didn't know the size of the
`union wait` type.

Running `git bisect` showed 9744c7768d,
which bumped glibc from 2.23 to 2.24, as the likely suspect.  This is
corroborated by evidence such as this email:
https://lists.debian.org/debian-glibc/2016/08/msg00069.html

Linux from scratch recommends changing `union wait` to `int`:
http://www.linuxfromscratch.org/lfs/view/development/chapter06/sysklogd.html

Therefore, that's what this commit does.
This commit is contained in:
Philip Potter 2016-08-30 23:05:07 +01:00 committed by Franz Pletz
parent 986e64280e
commit 66726acfae
2 changed files with 12 additions and 1 deletions

View File

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

View File

@ -0,0 +1,11 @@
--- sysklogd-1.5-old/syslogd.c 2016-08-30 22:50:59.812926945 +0100
+++ sysklogd-1.5/syslogd.c 2016-08-30 22:51:12.008842890 +0100
@@ -2094,7 +2094,7 @@
(void) signal(SIGCHLD, reapchild); /* reset signal handler -ASP */
wait ((int *)0);
#else
- union wait status;
+ int status;
while (wait3(&status, WNOHANG, (struct rusage *) NULL) > 0)
;