Source: pulseaudio
Severity: important
Tags: patch

Hello,

Pulseaudio does not build anymore with  xcb-util 0.3.8. For now, that's not an
issue as xcb-util 0.3.8 has not been already uploaded to Debian yet but I will
do  it  soon.  A  patch   addressing  this  issue  has  already  been  applied
upstream[0][1].

I have attached to this email a patch for the Debian package. Could you please
consider applying it? Thanks.

Cheers,
Arnaud Fontaine

[0] 
http://git.0pointer.de/?p=pulseaudio.git;a=commit;h=88e6078f3b74002c58b69f8b69f6c043d65ef80b
[1] 
http://git.0pointer.de/?p=pulseaudio.git;a=commit;h=adb16f9ff42008c5b8f76133d8879fc15a82533f
diff --git a/debian/control b/debian/control
index dc793f9..f3a7b72 100644
--- a/debian/control
+++ b/debian/control
@@ -16,7 +16,7 @@ Build-Depends: debhelper (>= 5), cdbs, quilt, m4, libltdl-dev (>= 2.2.6a-2),
     libbluetooth-dev (>= 4.40) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386],
     libgdbm-dev, intltool, libgtk2.0-dev, libxtst-dev,
     libssl-dev,
-    libx11-xcb-dev, libice-dev, libxcb-atom1-dev
+    libx11-xcb-dev, libice-dev, libxcb1-dev (>= 1.6)
 Standards-Version: 3.8.1
 Vcs-Git: git://git.debian.org/git/pkg-pulseaudio/pulseaudio.git
 Vcs-Browser: http://git.debian.org/?p=pkg-pulseaudio/pulseaudio.git
diff --git a/debian/patches/0004-Fix-FTBFS-with-xcb-util-0.3.8.patch b/debian/patches/0004-Fix-FTBFS-with-xcb-util-0.3.8.patch
new file mode 100644
index 0000000..8ab3f86
--- /dev/null
+++ b/debian/patches/0004-Fix-FTBFS-with-xcb-util-0.3.8.patch
@@ -0,0 +1,102 @@
+diff --git a/configure.ac b/configure.ac
+index dea8bb9..d31f561 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -516,7 +516,7 @@ AC_ARG_ENABLE([x11],
+         [x11=auto])
+ 
+ if test "x${x11}" != xno ; then
+-    PKG_CHECK_MODULES(X11, [ x11-xcb ice sm xtst xcb-atom ],
++    PKG_CHECK_MODULES(X11, [ x11-xcb xcb >= 1.6 ice sm xtst ],
+         HAVE_X11=1,
+         [
+             HAVE_X11=0
+diff --git a/src/pulsecore/x11prop.c b/src/pulsecore/x11prop.c
+index 4cb21da..1c0d199 100644
+--- a/src/pulsecore/x11prop.c
++++ b/src/pulsecore/x11prop.c
+@@ -30,7 +30,6 @@
+ #include <pulsecore/macro.h>
+ 
+ #include <xcb/xproto.h>
+-#include <xcb/xcb_atom.h>
+ 
+ #define PA_XCB_FORMAT 8
+ 
+@@ -50,28 +49,43 @@ static xcb_screen_t *screen_of_display(xcb_connection_t *xcb, int screen)
+ 
+ void pa_x11_set_prop(xcb_connection_t *xcb, int screen, const char *name, const char *data) {
+     xcb_screen_t *xs;
+-    xcb_atom_t a;
++    xcb_intern_atom_reply_t *reply;
+ 
+     pa_assert(xcb);
+     pa_assert(name);
+     pa_assert(data);
+ 
+     if ((xs = screen_of_display(xcb, screen))) {
+-        a = xcb_atom_get(xcb, name);
+-        xcb_change_property(xcb, XCB_PROP_MODE_REPLACE, xs->root, a, STRING, PA_XCB_FORMAT, (int) strlen(data), (const void*) data);
++        reply = xcb_intern_atom_reply(xcb,
++                                      xcb_intern_atom(xcb, 0, strlen(name), name),
++                                      NULL);
++
++        if (reply) {
++            xcb_change_property(xcb, XCB_PROP_MODE_REPLACE, xs->root, reply->atom,
++                                XCB_ATOM_STRING, PA_XCB_FORMAT,
++                                (int) strlen(data), (const void*) data);
++
++            free(reply);
++        }
+     }
+ }
+ 
+ void pa_x11_del_prop(xcb_connection_t *xcb, int screen, const char *name) {
+     xcb_screen_t *xs;
+-    xcb_atom_t a;
++    xcb_intern_atom_reply_t *reply;
+ 
+     pa_assert(xcb);
+     pa_assert(name);
+ 
+     if ((xs = screen_of_display(xcb, screen))) {
+-        a = xcb_atom_get(xcb, name);
+-        xcb_delete_property(xcb, xs->root, a);
++        reply = xcb_intern_atom_reply(xcb,
++                                      xcb_intern_atom(xcb, 0, strlen(name), name),
++                                      NULL);
++
++        if (reply) {
++        xcb_delete_property(xcb, xs->root, reply->atom);
++            free(reply);
++        }
+     }
+ }
+ 
+@@ -81,7 +95,7 @@ char* pa_x11_get_prop(xcb_connection_t *xcb, int screen, const char *name, char
+     xcb_get_property_cookie_t req;
+     xcb_get_property_reply_t* prop = NULL;
+     xcb_screen_t *xs;
+-    xcb_atom_t a;
++    xcb_intern_atom_reply_t *reply;
+ 
+     pa_assert(xcb);
+     pa_assert(name);
+@@ -99,9 +113,15 @@ char* pa_x11_get_prop(xcb_connection_t *xcb, int screen, const char *name, char
+         xs = screen_of_display(xcb, 0);
+ 
+     if (xs) {
+-        a = xcb_atom_get(xcb, name);
++        reply = xcb_intern_atom_reply(xcb,
++                                      xcb_intern_atom(xcb, 0, strlen(name), name),
++                                      NULL);
++
++        if (!reply)
++            goto finish;
+ 
+-        req = xcb_get_property(xcb, 0, xs->root, a, STRING, 0, (uint32_t)(l-1));
++        req = xcb_get_property(xcb, 0, xs->root, reply->atom, XCB_ATOM_STRING, 0, (uint32_t)(l-1));
++        free(reply);
+         prop = xcb_get_property_reply(xcb, req, NULL);
+ 
+         if (!prop)
diff --git a/debian/patches/series b/debian/patches/series
index 29ff672..592c893 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
 0001-Work-around-some-platforms-not-having-O_CLOEXEC.patch
 0002-In-KDE-only-start-pulseaudio-from-the-KDE-specific-d.patch
 0003-Mention-speex-and-libsamplerate-in-pulse-daemon.conf.patch
+0004-Fix-FTBFS-with-xcb-util-0.3.8.patch

Reply via email to