]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
build: avoid journald on rhel 5
authorEric Blake <eblake@redhat.com>
Mon, 1 Oct 2012 22:38:56 +0000 (16:38 -0600)
committerEric Blake <eblake@redhat.com>
Mon, 1 Oct 2012 23:33:25 +0000 (17:33 -0600)
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_DECLS): Check for htole64.

configure.ac
src/util/logging.c

index 13967e90bb254ae6c3f9b914aac932d238b291e4..6d50985ccafaf632c47721e202ff57e6027cf6df 100644 (file)
@@ -187,6 +187,8 @@ dnl Availability of various common headers (non-fatal if missing).
 AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/un.h \
   sys/poll.h syslog.h mntent.h net/ethernet.h linux/magic.h \
   sys/un.h sys/syscall.h netinet/tcp.h ifaddrs.h libtasn1.h])
+dnl Check whether endian provides handy macros.
+AC_CHECK_DECLS([htole64], [], [], [[#include <endian.h>]])
 
 dnl We need to decide at configure time if libvirt will use real atomic
 dnl operations ("lock free") or emulated ones with a mutex.
index 0ce18f1c18fa8f254f77c5849952b390c3e7d290..246f12cf0b839f0d55342134f3c6da74dd2d9614 100644 (file)
 #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_DECL_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;
         }