Commit f6430390 broke builds on RHEL 5, where glibc (2.5) is too old to support mkostemp (2.7) or htole64 (2.9). While gnulib has mkostemp, it still lacks htole64; and it's not worth dragging in replacements on systems where journald is unlikely to exist in the first place, so we just use an extra configure-time check as our witness of whether to attempt compiling the code. * src/util/logging.c (virLogParseOutputs): Don't attempt to compile journald on older glibc. * configure.ac (AC_CHECK_FUNCS_ONCE): Check for htole64. --- Pushing under the build-breaker rule. configure.ac | 2 +- src/util/logging.c | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 13967e9..c791ed0 100644 --- a/configure.ac +++ b/configure.ac @@ -172,7 +172,7 @@ AC_CHECK_SIZEOF([long]) dnl Availability of various common functions (non-fatal if missing), dnl and various less common threadsafe functions AC_CHECK_FUNCS_ONCE([cfmakeraw geteuid getgid getgrnam_r getmntent_r \ - getpwuid_r getuid initgroups kill mmap newlocale posix_fallocate \ + getpwuid_r getuid htole64 initgroups kill mmap newlocale posix_fallocate \ posix_memalign regexec sched_getaffinity]) dnl Availability of pthread functions (if missing, win32 threading is diff --git a/src/util/logging.c b/src/util/logging.c index 0ce18f1..7a73553 100644 --- a/src/util/logging.c +++ b/src/util/logging.c @@ -50,6 +50,12 @@ #include "virtime.h" #include "intprops.h" +/* Journald output is only supported on Linux new enough to expose + * htole64. */ +#if HAVE_SYSLOG_H && defined(__linux__) && HAVE_HTOLE64 +# define USE_JOURNALD 1 +#endif + #define VIR_FROM_THIS VIR_FROM_NONE VIR_ENUM_DECL(virLogSource) @@ -1029,7 +1035,7 @@ virLogAddOutputToSyslog(virLogPriority priority, } -# ifdef __linux__ +# if USE_JOURNALD # define IOVEC_SET_STRING(iov, str) \ do { \ struct iovec *_i = &(iov); \ @@ -1197,7 +1203,7 @@ static int virLogAddOutputToJournald(int priority) } return 0; } -# endif /* __linux__ */ +# endif /* USE_JOURNALD */ #endif /* HAVE_SYSLOG_H */ #define IS_SPACE(cur) \ @@ -1294,12 +1300,10 @@ virLogParseOutputs(const char *outputs) VIR_FREE(abspath); } else if (STREQLEN(cur, "journald", 8)) { cur += 8; -#if HAVE_SYSLOG_H -# ifdef __linux__ +#if USE_JOURNALD if (virLogAddOutputToJournald(prio) == 0) count++; -# endif /* __linux__ */ -#endif /* HAVE_SYSLOG_H */ +#endif /* USE_JOURNALD */ } else { goto cleanup; } -- 1.7.11.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list