On Tue, Sep 04, 2012 at 10:59:05AM -0600, Eric Blake wrote:
On 09/04/2012 09:26 AM, Eric Blake wrote:
> On 09/04/2012 09:04 AM, Jasper Lievisse Adriaanse wrote:
>> >From bdf3bce37531ec346474bc5c4f37a5d2985d1d35 Mon Sep 17 00:00:00 2001
>> From: Jasper Lievisse Adriaanse <jasper(a)humppa.nl>
>> Date: Tue, 4 Sep 2012 17:03:43 +0200
>> Subject: [PATCH] Don't link with -lrt on OpenBSD
>>
>> ---
>> configure.ac | 8 +++++++-
>> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> I'd much rather write this as a probe to see if linking with -rt makes a
> difference, and only add it when it matters, than trying to blindly add
> it (the pre-patch version) or to blindly exclude it for some platforms
> (the post-patch version). I also wonder if gnulib has some help on this
> front. NACK to this version while I investigate.
In fact, gnulib already provides the LGPLv2+ clock-time module for
clock_gettime and clock_settime, with an appropriate link library
$(LIB_CLOCK_GETTIME) that is set to -lrt when necessary. Does this
patch work for you?
Yep, this seems to work just fine.
From d74e5a4dfc434d3a1d01856d013a7f50d910fa95 Mon Sep 17 00:00:00
2001
From: Eric Blake <eblake(a)redhat.com>
Date: Tue, 4 Sep 2012 10:57:25 -0600
Subject: [PATCH] build: use correct libraries for clock_gettime
On OpenBSD, clock_gettime() exists in libc rather than librt, and
blindly linking with -lrt made the build fail. Gnulib already
did the work for determining which libraries to use, so we should
reuse that work rather than doing it ourselves.
* bootstrap.conf (gnulib_modules): Pull in clock-time.
* configure.ac (RT_LIBS): Drop.
* src/Makefile.am (libvirt_util_la_LIBADD): Use gnulib variable
instead.
* src/util/virtime.c (includes): Simplify.
---
bootstrap.conf | 1 +
configure.ac | 10 ----------
src/Makefile.am | 2 +-
src/util/virtime.c | 6 ++----
4 files changed, 4 insertions(+), 15 deletions(-)
diff --git a/bootstrap.conf b/bootstrap.conf
index a6cfe24..7fefb69 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -30,6 +30,7 @@ c-strcasestr
calloc-posix
canonicalize-lgpl
chown
+clock-time
close
connect
configmake
diff --git a/configure.ac b/configure.ac
index e0d00d5..cb91e7d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -183,16 +183,6 @@ LIBS="$LIBS $LIB_PTHREAD $LIBMULTITHREAD"
AC_CHECK_FUNCS([pthread_mutexattr_init])
LIBS=$old_libs
-old_LIBS=$LIBS
-RT_LIBS=
-LIBS="$LIBS $LIB_PTHREAD -lrt"
-AC_CHECK_FUNC([clock_gettime],[
- AC_DEFINE([HAVE_CLOCK_GETTIME],[],[Defined if clock_gettime()
exists in librt.so])
- RT_LIBS=-lrt
-])
-LIBS=$old_libs
-AC_SUBST(RT_LIBS)
-
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 \
diff --git a/src/Makefile.am b/src/Makefile.am
index 95e1bea..39adeac 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -668,7 +668,7 @@ libvirt_util_la_CFLAGS = $(CAPNG_CFLAGS)
$(YAJL_CFLAGS) $(LIBNL_CFLAGS) \
$(DBUS_CFLAGS) $(LDEXP_LIBM)
libvirt_util_la_LIBADD = $(CAPNG_LIBS) $(YAJL_LIBS) $(LIBNL_LIBS) \
$(THREAD_LIBS) $(AUDIT_LIBS) $(DEVMAPPER_LIBS) \
- $(RT_LIBS) $(DBUS_LIBS) $(MSCOM_LIBS) $(LIBXML_LIBS)
+ $(LIB_CLOCK_GETTIME) $(DBUS_LIBS) $(MSCOM_LIBS) $(LIBXML_LIBS)
noinst_LTLIBRARIES += libvirt_conf.la
diff --git a/src/util/virtime.c b/src/util/virtime.c
index 926bb50..d34e8ab 100644
--- a/src/util/virtime.c
+++ b/src/util/virtime.c
@@ -1,7 +1,7 @@
/*
* virtime.c: Time handling functions
*
- * Copyright (C) 2006-2011 Red Hat, Inc.
+ * Copyright (C) 2006-2012 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -34,9 +34,7 @@
#include <config.h>
#include <stdio.h>
-#ifndef HAVE_CLOCK_GETTIME
-# include <sys/time.h>
-#endif
+#include <sys/time.h>
#include "virtime.h"
#include "util.h"
--
1.7.11.4
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org
--
Cheers,
Jasper
"Stay Hungry. Stay Foolish"