Hi,

For s6 latest release 2.9.1.0, I fail to build it on GNU/Hurd.

The log is at 
https://buildd.debian.org/status/fetch.php?pkg=s6&arch=hurd-i386&ver=2.9.1.0-1&stamp=1584722395&raw=0

In file included from /usr/include/i386-gnu/skalibs/bytestr.h:13,
                 from src/supervision/s6-notifyoncheck.c:12:
/usr/include/i386-gnu/bits/errno.h:137:3: error: redeclaration of
enumerator ‘EPROTOTYPE’
  137 |   EPROTO                         = 0x40000074, /* Protocol error */
      |   ^~~~~~
In file included from /usr/include/errno.h:28,
                 from /usr/include/i386-gnu/skalibs/ip46.h:8,
                 from src/include/s6/accessrules.h:9,
                 from src/include/s6/s6.h:10,
                 from src/supervision/s6-notifyoncheck.c:20:
/usr/include/i386-gnu/bits/errno.h:76:3: note: previous definition of
‘EPROTOTYPE’ was here
   76 |   EPROTOTYPE                     = 0x40000029, /* Protocol
wrong type for socket */
      |   ^~~~~~~~~~

The errno.h on hurd has an enum[1], and skalibs/posixishard.h
redefines EPROTO to EPROTOTYPE.
One possible workaround is to move the header order.

--- s6-2.9.1.0.orig/src/supervision/s6-notifyoncheck.c
+++ s6-2.9.1.0/src/supervision/s6-notifyoncheck.c
@@ -9,7 +9,6 @@

 #include <skalibs/types.h>
 #include <skalibs/allreadwrite.h>
-#include <skalibs/bytestr.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/strerr2.h>
 #include <skalibs/tai.h>
@@ -19,6 +18,8 @@

 #include <s6/s6.h>

+#include <skalibs/bytestr.h>
+

But I think there could be a better way to fix this.

[1] 
https://github.com/bminor/glibc/blob/master/sysdeps/mach/hurd/bits/errno.h#L26

-- 
Shengjing Zhu

Reply via email to