I get this error on slackware 14.0, glibc headers 2.15
In file included from /usr/include/sys/stat.h:107:0,
from ../subprojects/bestline/bestline.c:149:
/usr/include/bits/stat.h:73:21: error: field ‘st_atim’ has incomplete type
struct timespec st_atim; /* Time of last access. */
^
/usr/include/bits/stat.h:74:21: error: field ‘st_mtim’ has incomplete type
struct timespec st_mtim; /* Time of last modification. */
^
/usr/include/bits/stat.h:75:21: error: field ‘st_ctim’ has incomplete type
struct timespec st_ctim; /* Time of last status change. */
^
In file included from ../subprojects/bestline/bestline.c:149:0:
/usr/include/sys/stat.h:374:56: error: array type has incomplete element type ‘struct timespec’
extern int futimens (int __fd, __const struct timespec __times[2]) __THROW;
^
In file included from ../subprojects/bestline/bestline.c:157:0:
/usr/include/signal.h:155:31: error: unknown type name ‘siginfo_t’
extern void psiginfo (__const siginfo_t *__pinfo, __const char *__s);
^
samu: subcommand failed
This patch fixes the issue for me..
1
is a really bad value for _POSIX_C_SOURCE...200112L
also worksdiff --git a/subprojects/bestline/bestline.c b/subprojects/bestline/bestline.c index 5361f8b4..cda6f101 100644 --- a/subprojects/bestline/bestline.c +++ b/subprojects/bestline/bestline.c @@ -132,7 +132,7 @@ #include "bestline.h" #ifndef __COSMOPOLITAN__ -#define _POSIX_C_SOURCE 1 /* so GCC builds in ANSI mode */ +#define _POSIX_C_SOURCE 200809L /* so GCC builds in ANSI mode */ #define _XOPEN_SOURCE 700 /* so GCC builds in ANSI mode */ #define _DARWIN_C_SOURCE 1 /* so SIGWINCH / IUTF8 on XNU */ #ifdef __sun
That subproject is vendored from https://github.com/jart/bestline so probably it's best to make the fix there and then import a new version into muon.
jart/bestline throws just 1 error:
/usr/include/signal.h:155:31: error: unknown type name ‘siginfo_t’
This is fixed only if _POSIX_C_SOURCE >= 199309L .. I guess
/usr/include/signal.h from GLIBC 2.15
#ifdef __USE_POSIX199309 /* We need `struct timespec' later on. */ # define __need_timespec # include <time.h> /* Get the `siginfo_t' type plus the needed symbols. */ # include <bits/siginfo.h> #endif
This is not a problem with GLIBC 2.27
At some point glibc started to evaluate _POSIX_C_SOURCE.. in glibc 2.27
_POSIX_C_SOURCE
can't be lower than199506L
(undef + define)This can be closed, it's one of issues and patches I can keep to myself, glibc 2.15 is really old by now
I also feel like bestline should be disabled by default... its only use is for the repl, which most people probably don't use at all.