[Libvir] [PATCH] fixes when running as user or in tree tests
Daniel Veillard
veillard at redhat.com
Fri Nov 23 16:03:42 UTC 2007
The following patches does 3 things which correct annoyances when
running as an user or when running from a tree built with --prefix=/usr
- avoid error message when non-root cannot open xenstore
- avoid error message when non-root cannot directly access xend
in those two cases the proxy (or remote code) should implement the access
so there is no need to raise the error there.
- when configuring with --prefix=/usr i.e. the same prefix as the
installed libvirt, use the same localstatedir /var (instead of
/usr/var) and sysconfdir /etc (instead of /usr/etc) to be able to
connect to the system daemon, and use the system local options
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.90
diff -u -r1.90 configure.in
--- configure.in 30 Sep 2007 21:09:29 -0000 1.90
+++ configure.in 23 Nov 2007 15:55:54 -0000
@@ -77,6 +77,18 @@
[HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"])
AC_SUBST(HTML_DIR)
+dnl if --prefix is /usr, don't use /usr/var for localstatedir
+dnl or /usr/etc for sysconfdir
+dnl as this makes a lot of things break in testing situations
+
+if test $prefix = "/usr" -a $localstatedir = '${prefix}/var' ; then
+ localstatedir='/var'
+fi
+if test $prefix = "/usr" -a $sysconfdir = '${prefix}/etc' ; then
+ sysconfdir='/etc'
+fi
+
+
dnl Allow to build without Xen, QEMU/KVM, test or remote driver
AC_ARG_WITH(xen,
[ --with-xen add XEN support (on)],[],[with_xen=yes])
Index: src/xend_internal.c
===================================================================
RCS file: /data/cvs/libxen/src/xend_internal.c,v
retrieving revision 1.154
diff -u -r1.154 xend_internal.c
--- src/xend_internal.c 14 Nov 2007 11:40:57 -0000 1.154
+++ src/xend_internal.c 23 Nov 2007 15:55:54 -0000
@@ -232,8 +232,15 @@
close(s);
errno = serrno;
s = -1;
- virXendError(xend, VIR_ERR_INTERNAL_ERROR,
- "failed to connect to xend");
+ /*
+ * not being able to connect via the socket as a normal user
+ * is rather normal, this should fallback to the proxy (or
+ * remote) mechanism.
+ */
+ if ((getuid() == 0) || (xend->flags & VIR_DRV_OPEN_RO)) {
+ virXendError(xend, VIR_ERR_INTERNAL_ERROR,
+ "failed to connect to xend");
+ }
}
return s;
Index: src/xs_internal.c
===================================================================
RCS file: /data/cvs/libxen/src/xs_internal.c,v
retrieving revision 1.54
diff -u -r1.54 xs_internal.c
--- src/xs_internal.c 20 Nov 2007 18:57:41 -0000 1.54
+++ src/xs_internal.c 23 Nov 2007 15:55:54 -0000
@@ -341,8 +341,15 @@
#endif /* ! PROXY */
if (priv->xshandle == NULL) {
- virXenStoreError(NULL, VIR_ERR_NO_XEN,
- _("failed to connect to Xen Store"));
+ /*
+ * not being able to connect via the socket as a normal user
+ * is rather normal, this should fallback to the proxy (or
+ * remote) mechanism.
+ */
+ if (getuid() == 0) {
+ virXenStoreError(NULL, VIR_ERR_NO_XEN,
+ _("failed to connect to Xen Store"));
+ }
return (-1);
}
return (0);
More information about the libvir-list
mailing list