[Libvir] [PATCH] fix compilation if readline lib is not available

Daniel Veillard veillard at redhat.com
Thu Dec 6 10:05:33 UTC 2007


  The current CVS code doesn't compile on RHEL5/F6 because readline lib
there require ncurses, and we removed that check earlier. Sor we find
the readline headers but the lib is not found. Unfortunately virsh.c
tests the availablility of the header to use readline, and link time failures
follow. The patch below:
   - exports a READLINE_CFLAGS from configure if used
   - use the READLINE_CFLAGS when compiling virsh.c
   - change virsh.c to rely on this instead of the header test
   - adds a message about readline usage at the end of configure

    configure: Miscellaneous
    configure: 
    configure:   Debug: no
    configure:   Readline: yes
    configure: 

Another patch available soon should fix the readline library detection itself,

Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard at redhat.com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/
-------------- next part --------------
Index: configure.in
===================================================================
RCS file: /data/cvs/libxen/configure.in,v
retrieving revision 1.108
diff -u -r1.108 configure.in
--- configure.in	5 Dec 2007 23:02:13 -0000	1.108
+++ configure.in	6 Dec 2007 09:51:39 -0000
@@ -448,11 +448,20 @@
 AC_SUBST(AVAHI_LIBS)
 
 dnl virsh libraries
+USE_READLINE=
+READLINE_CFLAGS=
 AC_CHECK_HEADERS([readline/readline.h])
 AC_CHECK_LIB(readline, main,
-	[VIRSH_LIBS="$VIRSH_LIBS -lreadline"],
-	[AC_MSG_WARN([readline library not found])],
+	[USE_READLINE=yes],
+	[USE_READLINE=no],
 	[$VIRSH_LIBS])
+if test "$USE_READLINE" = "yes" ; then
+    AC_DEFINE_UNQUOTED(USE_READLINE, 1, [whether virsh use readline])
+    READLINE_CFLAGS="-DUSE_READLINE"
+else
+    AC_MSG_WARN([readline library not found])
+fi
+AC_SUBST(READLINE_CFLAGS)
 AC_SUBST(VIRSH_LIBS)
 
 # end of if with_depends
@@ -687,4 +696,5 @@
 AC_MSG_NOTICE([Miscellaneous])
 AC_MSG_NOTICE([])
 AC_MSG_NOTICE([  Debug: $enable_debug])
+AC_MSG_NOTICE([  Readline: $USE_READLINE])
 AC_MSG_NOTICE([])
Index: src/Makefile.am
===================================================================
RCS file: /data/cvs/libxen/src/Makefile.am,v
retrieving revision 1.59
diff -u -r1.59 Makefile.am
--- src/Makefile.am	5 Dec 2007 21:31:07 -0000	1.59
+++ src/Makefile.am	6 Dec 2007 09:51:39 -0000
@@ -76,7 +76,7 @@
 virsh_LDFLAGS = $(WARN_CFLAGS) $(COVERAGE_LDFLAGS)
 virsh_DEPENDENCIES = $(DEPS)
 virsh_LDADD = $(LDADDS) $(VIRSH_LIBS)
-virsh_CFLAGS = $(COVERAGE_CFLAGS)
+virsh_CFLAGS = $(COVERAGE_CFLAGS) $(READLINE_CFLAGS)
 
 #
 # target to ease building test programs
Index: src/virsh.c
===================================================================
RCS file: /data/cvs/libxen/src/virsh.c,v
retrieving revision 1.116
diff -u -r1.116 virsh.c
--- src/virsh.c	5 Dec 2007 18:55:04 -0000	1.116
+++ src/virsh.c	6 Dec 2007 09:51:40 -0000
@@ -4661,7 +4661,7 @@
     }
 }
 
-#ifdef HAVE_READLINE_READLINE_H
+#ifdef USE_READLINE
 
 /* -----------------
  * Readline stuff
@@ -4786,7 +4786,7 @@
     return readline (prompt);
 }
 
-#else /* !HAVE_READLINE_READLINE_H */
+#else /* !USE_READLINE */
 
 static void
 vshReadlineInit (void)
@@ -4813,7 +4813,7 @@
     return vshStrdup (ctl, r);
 }
 
-#endif /* !HAVE_READLINE_READLINE_H */
+#endif /* !USE_READLINE */
 
 /*
  * Deinitliaze virsh
@@ -5059,7 +5059,7 @@
             if (ctl->cmdstr == NULL)
                 break;          /* EOF */
             if (*ctl->cmdstr) {
-#if HAVE_READLINE_READLINE_H
+#if USE_READLINE
                 add_history(ctl->cmdstr);
 #endif
                 if (vshCommandParse(ctl, ctl->cmdstr))


More information about the libvir-list mailing list