[libvirt] [PATCH] Don't link with -lrt on OpenBSD

Eric Blake eblake at redhat.com
Tue Sep 4 16:59:05 UTC 2012


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 at 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?

From d74e5a4dfc434d3a1d01856d013a7f50d910fa95 Mon Sep 17 00:00:00 2001
From: Eric Blake <eblake at 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 at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 617 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120904/2ce700e6/attachment-0001.sig>


More information about the libvir-list mailing list