Hello community,

here is the log from the commit of package dbus-1 for openSUSE:Factory checked 
in at 2013-03-04 17:26:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dbus-1 (Old)
 and      /work/SRC/openSUSE:Factory/.dbus-1.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "dbus-1", Maintainer is "thoe...@suse.com"

Changes:
--------
--- /work/SRC/openSUSE:Factory/dbus-1/dbus-1.changes    2013-02-20 
09:26:35.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.dbus-1.new/dbus-1.changes       2013-03-04 
17:27:35.000000000 +0100
@@ -1,0 +2,8 @@
+Fri Feb 22 17:13:02 CET 2013 - h...@suse.com
+
+- Spec file changes moving files from /var/run to /run.
+- Add dbus-move-everything-to-run-directory.patch by rmilasan. This
+  moves everything (pid files, lock files, etc.) to /run.
+- Add dbus-fall-back-to-old-run-directory.patch (bnc#802525).
+
+-------------------------------------------------------------------

New:
----
  dbus-fall-back-to-old-run-directory.patch
  dbus-move-everything-to-run-directory.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ dbus-1.spec ++++++
--- /var/tmp/diff_new_pack.Pslj5t/_old  2013-03-04 17:27:37.000000000 +0100
+++ /var/tmp/diff_new_pack.Pslj5t/_new  2013-03-04 17:27:37.000000000 +0100
@@ -60,6 +60,10 @@
 Patch0:         dbus-log-deny.patch
 # PATCH-FIX-OPENSUSE co...@suse.de -- force a feature configure won't accept 
without x11 in buildrequires
 Patch1:         dbus-do-autolaunch.patch
+# PATCH-FIX-OPENSUSE rmila...@suse.com - move pid and any temp files to /run
+Patch2:         dbus-move-everything-to-run-directory.patch
+# PATCH-FIX-OPENSUSE h...@suse.com bnc#802525 - Avoid clients hanging after 
move to /run
+Patch3:         dbus-fall-back-to-old-run-directory.patch
 %if 0%{?suse_version} > 1100
 %bcond_without selinux
 %else
@@ -135,6 +139,8 @@
 %setup -n %{_name}-%{version} -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
+%patch3 -p1
 
 %build
 autoreconf -fi
@@ -164,7 +170,7 @@
     --enable-systemd                                                   \
 %endif
     --enable-libaudit                                                  \
-    --with-console-auth-dir=/var/run/dbus/at_console/                  \
+    --with-console-auth-dir=/run/dbus/at_console/                      \
     --with-systemdsystemunitdir=%{_unitdir}                     
 make %{?_smp_mflags}
 doxygen -u && doxygen
@@ -177,7 +183,7 @@
 mkdir -p %{buildroot}/usr/sbin
 install -m 755 %{SOURCE1} %{buildroot}/%{_sysconfdir}/init.d/dbus
 ln -sf %{_sysconfdir}/init.d/dbus %{buildroot}/%{_sbindir}/rcdbus
-install -d %{buildroot}/var/run/dbus
+install -d %{buildroot}/run/dbus
 mkdir -p %{buildroot}/%{_datadir}/susehelp/meta/Development/Libraries/
 install -m 0644 %SOURCE2 \
     %{buildroot}/%{_datadir}/susehelp/meta/Development/Libraries/dbus-1.desktop
@@ -211,13 +217,17 @@
 
 %pre
 /usr/sbin/groupadd -r messagebus 2> /dev/null || :
-/usr/sbin/useradd -r -s /bin/false -c "User for D-Bus" -d /var/run/dbus -g 
messagebus messagebus 2> /dev/null || :
+/usr/sbin/useradd -r -s /bin/false -c "User for D-Bus" -d /run/dbus -g 
messagebus messagebus 2> /dev/null || :
 %if 0%{?suse_version:1}
 
 %preun
 %{stop_on_removal dbus}
 
 %post
+# Temporarily override the socket path systemd sees, so the running D-Bus 
process won't be clobbered.
+mkdir -p /run/systemd/system
+/usr/bin/sed 
's#ListenStream=/run/dbus/system_bus_socket#ListenStream=/var/run/dbus/system_bus_socket#'
 < /usr/lib/systemd/system/dbus.socket > /run/systemd/system/dbus.socket
+
 /bin/dbus-uuidgen --ensure
 %{insserv_force_if_yast dbus}
 /sbin/ldconfig
@@ -257,7 +267,7 @@
 # See doc/system-activation.txt in source tarball for the rationale
 # behind these permissions
 %attr(4750,root,messagebus) %verify(not mode) 
/lib/%{name}/dbus-daemon-launch-helper
-%ghost /var/run/dbus
+%ghost /run/dbus
 %ghost %{_localstatedir}/lib/dbus/machine-id
 %if ! %{with_systemd}
 %if 0%{?suse_version} < 1230

++++++ dbus-fall-back-to-old-run-directory.patch ++++++
diff --git a/dbus/dbus-bus.c b/dbus/dbus-bus.c
index fadc3a8..2c71cdb 100644
--- a/dbus/dbus-bus.c
+++ b/dbus/dbus-bus.c
@@ -421,6 +421,153 @@ _dbus_bus_notify_shared_connection_disconnected_unlocked 
(DBusConnection *connec
   _DBUS_UNLOCK (bus);
 }
 
+static dbus_bool_t
+internal_register (DBusConnection *connection,
+                   int             timeout_milliseconds,
+                   DBusError      *error)
+{
+  DBusMessage *message, *reply;
+  char *name;
+  BusData *bd;
+  dbus_bool_t retval;
+
+  _dbus_return_val_if_fail (connection != NULL, FALSE);
+  _dbus_return_val_if_error_is_set (error, FALSE);
+
+  retval = FALSE;
+  message = NULL;
+  reply = NULL;
+
+  _DBUS_LOCK (bus_datas);
+
+  bd = ensure_bus_data (connection);
+  if (bd == NULL)
+    {
+      _DBUS_SET_OOM (error);
+      goto out;
+    }
+
+  if (bd->unique_name != NULL)
+    {
+      _dbus_verbose ("Ignoring attempt to register the same DBusConnection %s 
with the message bus a second time.\n",
+                     bd->unique_name);
+      /* Success! */
+      retval = TRUE;
+      goto out;
+    }
+  
+  message = dbus_message_new_method_call (DBUS_SERVICE_DBUS,
+                                          DBUS_PATH_DBUS,
+                                          DBUS_INTERFACE_DBUS,
+                                          "Hello"); 
+
+  if (!message)
+    {
+      _DBUS_SET_OOM (error);
+      goto out;
+    }
+  
+  reply = dbus_connection_send_with_reply_and_block (connection, message, 
timeout_milliseconds, error);
+
+  if (reply == NULL)
+    goto out;
+  else if (dbus_set_error_from_message (error, reply))
+    goto out;
+  else if (!dbus_message_get_args (reply, error,
+                                   DBUS_TYPE_STRING, &name,
+                                   DBUS_TYPE_INVALID))
+    goto out;
+  
+  bd->unique_name = _dbus_strdup (name);
+  if (bd->unique_name == NULL)
+    {
+      _DBUS_SET_OOM (error);
+      goto out;
+    }
+  
+  retval = TRUE;
+  
+ out:
+  _DBUS_UNLOCK (bus_datas);
+
+  if (message)
+    dbus_message_unref (message);
+
+  if (reply)
+    dbus_message_unref (reply);
+
+  return retval;
+}
+
+static DBusConnection *
+internal_open_and_register (const char *address, dbus_bool_t private, int 
timeout_milliseconds, DBusError *error)
+{
+  DBusConnection *connection;
+
+  if (private)
+    connection = dbus_connection_open_private (address, error);
+  else
+    connection = dbus_connection_open (address, error);
+
+  if (!connection)
+    {
+      goto out;
+    }
+
+  if (!internal_register (connection, timeout_milliseconds, error))
+    {
+      _dbus_connection_close_possibly_shared (connection);
+      dbus_connection_unref (connection);
+      connection = NULL;
+      goto out;
+    }
+
+out:
+  return connection;
+}
+
+/* When the D-Bus upgrade that moves /var/run/dbus/ to /run/dbus/ is applied,
+ * D-Bus cannot be restarted with the new socket in /run/, because the session
+ * wouldn't be able to cope with it. We end up with a daemon listening on
+ * /var/run/dbus/system_bus_socket, but clients will now try to register
+ * with it on /run/dbus/system_bus_socket, causing the upgrade, and eventually
+ * critical parts of the user's session, to hang.
+ *
+ * The workaround is inelegant, but probably good enough: We allow the initial
+ * attempt to time out quickly and fall back to trying the old default address.
+ * If that fails too, we go back to blocking on the initial address. */
+
+#define OLD_SYSTEM_BUS_DEFAULT_ADDRESS 
"unix:path=/var/run/dbus/system_bus_socket"
+#define INITIAL_TIMEOUT_MILLISECONDS 250
+#define INCREMENT_TIMEOUT_MILLISECONDS 250
+#define MAX_TIMEOUT_MILLISECONDS 10000
+
+static DBusConnection *
+internal_open_and_register_with_fallback (const char *address, dbus_bool_t 
private, DBusError *error)
+{
+  DBusConnection *connection = NULL;
+  int timeout_milliseconds;
+
+  for (timeout_milliseconds = INITIAL_TIMEOUT_MILLISECONDS;
+       connection == NULL && timeout_milliseconds < MAX_TIMEOUT_MILLISECONDS;
+       timeout_milliseconds += INCREMENT_TIMEOUT_MILLISECONDS)
+    {
+      connection = internal_open_and_register (address, private, 
timeout_milliseconds, NULL);
+
+      if (!connection && !strcmp (address, DBUS_SYSTEM_BUS_DEFAULT_ADDRESS))
+          connection = internal_open_and_register 
(OLD_SYSTEM_BUS_DEFAULT_ADDRESS, private, timeout_milliseconds, NULL);
+    }
+
+  if (!connection)
+    {
+      /* We couldn't register with any of the sockets; fall back to original 
behavior, blocking
+       * forever or returning an error. */
+      connection = internal_open_and_register (address, private, -1, error);
+    }
+
+  return connection;
+}
+
 static DBusConnection *
 internal_bus_get (DBusBusType  type,
                   dbus_bool_t  private,
@@ -474,21 +621,10 @@ internal_bus_get (DBusBusType  type,
       goto out;
     }
 
-  if (private)
-    connection = dbus_connection_open_private (address, error);
-  else
-    connection = dbus_connection_open (address, error);
-  
-  if (!connection)
-    {
-      goto out;
-    }
+  connection = internal_open_and_register_with_fallback (address, private, 
error);
 
-  if (!dbus_bus_register (connection, error))
+  if (!connection)
     {
-      _dbus_connection_close_possibly_shared (connection);
-      dbus_connection_unref (connection);
-      connection = NULL;
       goto out;
     }
 
diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c
index ee33b6c..b87c6f7 100644
--- a/dbus/dbus-connection.c
+++ b/dbus/dbus-connection.c
@@ -348,7 +348,7 @@ static void               
_dbus_connection_update_dispatch_status_and_unlock (DB
 static void               _dbus_connection_last_unref                        
(DBusConnection     *connection);
 static void               _dbus_connection_acquire_dispatch                  
(DBusConnection     *connection);
 static void               _dbus_connection_release_dispatch                  
(DBusConnection     *connection);
-static DBusDispatchStatus _dbus_connection_flush_unlocked                    
(DBusConnection     *connection);
+static DBusDispatchStatus _dbus_connection_flush_unlocked                    
(DBusConnection     *connection, int timeout_milliseconds);
 static void               _dbus_connection_close_possibly_shared_and_unlock  
(DBusConnection     *connection);
 static dbus_bool_t        _dbus_connection_get_is_connected_unlocked         
(DBusConnection     *connection);
 static dbus_bool_t        _dbus_connection_peek_for_reply_unlocked           
(DBusConnection     *connection,
@@ -2367,7 +2367,7 @@ _dbus_connection_block_pending_call (DBusPendingCall 
*pending)
   DBusConnection *connection;
   dbus_uint32_t client_serial;
   DBusTimeout *timeout;
-  int timeout_milliseconds, elapsed_milliseconds;
+  int timeout_milliseconds = -1, elapsed_milliseconds;
 
   _dbus_assert (pending != NULL);
 
@@ -2379,7 +2379,12 @@ _dbus_connection_block_pending_call (DBusPendingCall 
*pending)
   connection = _dbus_pending_call_get_connection_and_lock (pending);
   
   /* Flush message queue - note, can affect dispatch status */
-  _dbus_connection_flush_unlocked (connection);
+
+  timeout = _dbus_pending_call_get_timeout_unlocked (pending);
+  if (timeout)
+    timeout_milliseconds = dbus_timeout_get_interval (timeout);
+
+  _dbus_connection_flush_unlocked (connection, timeout_milliseconds);
 
   client_serial = _dbus_pending_call_get_reply_serial_unlocked (pending);
 
@@ -3555,7 +3560,7 @@ dbus_connection_send_with_reply_and_block (DBusConnection 
    *connection,
  * @param connection the connection.
  */
 static DBusDispatchStatus
-_dbus_connection_flush_unlocked (DBusConnection *connection)
+_dbus_connection_flush_unlocked (DBusConnection *connection, int 
timeout_milliseconds)
 {
   /* We have to specify DBUS_ITERATION_DO_READING here because
    * otherwise we could have two apps deadlock if they are both doing
@@ -3563,20 +3568,36 @@ _dbus_connection_flush_unlocked (DBusConnection 
*connection)
    * dispatch status.
    */
   DBusDispatchStatus status;
+  long start_tv_sec, start_tv_usec;
+  long tv_sec, tv_usec;
+  int elapsed_milliseconds = 0;
 
   HAVE_LOCK_CHECK (connection);
+
+  _dbus_get_monotonic_time (&start_tv_sec, &start_tv_usec);
   
   while (connection->n_outgoing > 0 &&
          _dbus_connection_get_is_connected_unlocked (connection))
     {
       _dbus_verbose ("doing iteration in\n");
+
+      if (timeout_milliseconds >= 0)
+        {
+          _dbus_get_monotonic_time (&tv_sec, &tv_usec);
+          elapsed_milliseconds = (tv_sec - start_tv_sec) * 1000 +
+            (tv_usec - start_tv_usec) / 1000;
+
+          if (elapsed_milliseconds >= timeout_milliseconds)
+            break;
+        }
+
       HAVE_LOCK_CHECK (connection);
       _dbus_connection_do_iteration_unlocked (connection,
                                               NULL,
                                               DBUS_ITERATION_DO_READING |
                                               DBUS_ITERATION_DO_WRITING |
                                               DBUS_ITERATION_BLOCK,
-                                              -1);
+                                              timeout_milliseconds - 
elapsed_milliseconds);
     }
 
   HAVE_LOCK_CHECK (connection);
@@ -3606,7 +3627,7 @@ dbus_connection_flush (DBusConnection *connection)
   
   CONNECTION_LOCK (connection);
 
-  status = _dbus_connection_flush_unlocked (connection);
+  status = _dbus_connection_flush_unlocked (connection, -1);
   
   HAVE_LOCK_CHECK (connection);
   /* Unlocks and calls out to user code */
++++++ dbus-move-everything-to-run-directory.patch ++++++
Index: dbus-1.6.8/configure
===================================================================
--- dbus-1.6.8.orig/configure
+++ dbus-1.6.8/configure
@@ -22254,7 +22254,7 @@ fi
 if ! test -z "$with_system_socket"; then
    DBUS_SYSTEM_SOCKET=$with_system_socket
 else
-   DBUS_SYSTEM_SOCKET=${EXPANDED_LOCALSTATEDIR}/run/dbus/system_bus_socket
+   DBUS_SYSTEM_SOCKET=/run/dbus/system_bus_socket
 fi
 
 
@@ -22278,9 +22278,9 @@ _ACEOF
 if ! test -z "$with_system_pid_file"; then
    DBUS_SYSTEM_PID_FILE=$with_system_pid_file
 elif test x$with_init_scripts = xredhat ; then
-   DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/messagebus.pid
+   DBUS_SYSTEM_PID_FILE=/run/messagebus.pid
 else
-   DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/dbus/pid
+   DBUS_SYSTEM_PID_FILE=/run/dbus/pid
 fi
 
 
@@ -22289,7 +22289,7 @@ fi
 if ! test -z "$with_console_auth_dir"; then
    DBUS_CONSOLE_AUTH_DIR=$with_console_auth_dir
 else
-   DBUS_CONSOLE_AUTH_DIR=/var/run/console/
+   DBUS_CONSOLE_AUTH_DIR=/run/console/
 fi
 
 
Index: dbus-1.6.8/configure.ac
===================================================================
--- dbus-1.6.8.orig/configure.ac
+++ dbus-1.6.8/configure.ac
@@ -1517,7 +1517,7 @@ AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$
 if ! test -z "$with_system_socket"; then
    DBUS_SYSTEM_SOCKET=$with_system_socket
 else
-   DBUS_SYSTEM_SOCKET=${EXPANDED_LOCALSTATEDIR}/run/dbus/system_bus_socket
+   DBUS_SYSTEM_SOCKET=/run/dbus/system_bus_socket
 fi
 
 AC_SUBST(DBUS_SYSTEM_SOCKET)
@@ -1533,9 +1533,9 @@ AC_DEFINE_UNQUOTED(DBUS_SYSTEM_BUS_DEFAU
 if ! test -z "$with_system_pid_file"; then
    DBUS_SYSTEM_PID_FILE=$with_system_pid_file
 elif test x$with_init_scripts = xredhat ; then
-   DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/messagebus.pid
+   DBUS_SYSTEM_PID_FILE=/run/messagebus.pid
 else
-   DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/dbus/pid
+   DBUS_SYSTEM_PID_FILE=/run/dbus/pid
 fi
 
 AC_SUBST(DBUS_SYSTEM_PID_FILE)
@@ -1544,7 +1544,7 @@ AC_SUBST(DBUS_SYSTEM_PID_FILE)
 if ! test -z "$with_console_auth_dir"; then
    DBUS_CONSOLE_AUTH_DIR=$with_console_auth_dir
 else
-   DBUS_CONSOLE_AUTH_DIR=/var/run/console/
+   DBUS_CONSOLE_AUTH_DIR=/run/console/
 fi
 
 AC_SUBST(DBUS_CONSOLE_AUTH_DIR)
Index: dbus-1.6.8/doc/dbus-specification.html
===================================================================
--- dbus-1.6.8.orig/doc/dbus-specification.html
+++ dbus-1.6.8/doc/dbus-specification.html
@@ -2599,7 +2599,7 @@
           in the <code class="literal">DBUS_SYSTEM_BUS_ADDRESS</code> 
environment 
           variable. If that variable is not set, applications should try 
           to connect to the well-known address
-          <code 
class="literal">unix:path=/var/run/dbus/system_bus_socket</code>.
+          <code class="literal">unix:path=/run/dbus/system_bus_socket</code>.
           <sup>[<a name="idp5733888" href="#ftn.idp5733888" 
class="footnote">2</a>]</sup>
         </p><p>
           On Unix systems, the system bus should default to searching
Index: dbus-1.6.8/doc/dbus-specification.xml
===================================================================
--- dbus-1.6.8.orig/doc/dbus-specification.xml
+++ dbus-1.6.8/doc/dbus-specification.xml
@@ -4717,7 +4717,7 @@
           in the <literal>DBUS_SYSTEM_BUS_ADDRESS</literal> environment 
           variable. If that variable is not set, applications should try 
           to connect to the well-known address
-          <literal>unix:path=/var/run/dbus/system_bus_socket</literal>.
+          <literal>unix:path=/run/dbus/system_bus_socket</literal>.
           <footnote>
             <para>
               The D-Bus reference implementation actually honors the 
Index: dbus-1.6.8/cmake/CMakeLists.txt
===================================================================
--- dbus-1.6.8.orig/cmake/CMakeLists.txt
+++ dbus-1.6.8/cmake/CMakeLists.txt
@@ -414,7 +414,7 @@ if (WIN32)
   # bus-test expects a non empty string
        set (DBUS_SYSTEM_PID_FILE "/dbus-pid")
 else (WIN32)
-       set (DBUS_SYSTEM_PID_FILE ${EXPANDED_LOCALSTATEDIR}/run/dbus/pid)
+       set (DBUS_SYSTEM_PID_FILE "/run/dbus/pid")
 endif (WIN32)
 
 #AC_ARG_WITH(system-socket, 
AS_HELP_STRING([--with-system-socket=[filename]],[UNIX domain socket for 
systemwide daemon]))
@@ -424,7 +424,7 @@ endif (WIN32)
 if (WIN32)
        set (DBUS_CONSOLE_AUTH_DIR "")
 else (WIN32)
-       set (DBUS_CONSOLE_AUTH_DIR "/var/run/console/")
+       set (DBUS_CONSOLE_AUTH_DIR "/run/console/")
 endif (WIN32)
 
 #AC_ARG_WITH(dbus_user, AS_HELP_STRING([--with-dbus-user=<user>],[User for 
running the DBUS daemon (messagebus)]))
Index: dbus-1.6.8/dbus/dbus-sysdeps-win.h
===================================================================
--- dbus-1.6.8.orig/dbus/dbus-sysdeps-win.h
+++ dbus-1.6.8/dbus/dbus-sysdeps-win.h
@@ -36,7 +36,7 @@ extern void *_dbus_win_get_dll_hmodule (
 #include <windows.h>
 #undef interface
 
-#define DBUS_CONSOLE_DIR "/var/run/console/"
+#define DBUS_CONSOLE_DIR "/run/console/"
 
 
 void _dbus_win_set_errno (int err);
-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to