[libvirt] [PATCH 1/2] build: avoid journald on rhel 5

Eric Blake eblake at redhat.com
Mon Oct 1 23:07:50 UTC 2012


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




More information about the libvir-list mailing list