diff --git a/ChangeLog b/ChangeLog index fc66b146a8..18d0f0fcf9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +Tue Nov 27 15:29:01 CET 2007 Daniel Veillard + + * configure.in: 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 + * src/xs_internal.c: avoid error message when non-root cannot open + xenstore + * src/xend_internal.c: avoid error message when non-root cannot + directly access xend, in those 2 cases the proxy (or remote code) + should implement the access so there is no need to raise the error + there. + Mon Nov 26 15:06:19 CET 2007 Daniel Veillard * doc/*: modified the python page into a bindings page, diff --git a/configure.in b/configure.in index 6247d9c7d9..6dc98adba9 100644 --- a/configure.in +++ b/configure.in @@ -89,6 +89,18 @@ AC_ARG_WITH(html-subdir, AC_HELP_STRING([--with-html-subdir=path], [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]) diff --git a/src/xend_internal.c b/src/xend_internal.c index 7dc1ae4103..4cddb09b3d 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -232,8 +232,15 @@ do_connect(virConnectPtr xend) 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; diff --git a/src/xs_internal.c b/src/xs_internal.c index 5086434c4e..d735079a8c 100644 --- a/src/xs_internal.c +++ b/src/xs_internal.c @@ -341,8 +341,15 @@ xenStoreOpen(virConnectPtr conn, #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);