Your message dated Sun, 25 Oct 2009 12:30:04 +0000
with message-id <[email protected]>
and subject line Re: Bug#522100: [Pkg-pulseaudio-devel] Bug#522100: pulseaudio: 
FTBFS on hurd-i386
has caused the Debian Bug report #522100,
regarding pulseaudio: FTBFS on hurd-i386
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
522100: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=522100
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: pulseaudio
Version: 0.9.14-2
Severity: important
Tags: patch

Hello,

Pulseaudio currently FTBFS on hurd-i386 because of unconditional use of
the static PATH_MAX, PIPE_BUF limits, which hurd-i386 doesn't
have since they can vary dynamically or even not exist. Also,
pthread_setaffinity_np() is a linux extension, and the debian/rules
trick for kfreebsd should be done for hurd-i386 as well.

Please see attached patch addressing all these concerns.

Samuel

-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 
'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.29 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages pulseaudio depends on:
ii  adduser                       3.110      add and remove users and groups
ii  consolekit                    0.3.0-2    framework for defining and trackin
ii  libasound2                    1.0.19-1   shared library for ALSA applicatio
ii  libasyncns0                   0.3-1      Asyncronous name service query lib
ii  libc6                         2.9-4      GNU C Library: Shared libraries
ii  libcap2                       2.16-2     support for getting/setting POSIX.
ii  libdbus-1-3                   1.2.12-1   simple interprocess messaging syst
ii  libgdbm3                      1.8.3-4    GNU dbm database routines (runtime
ii  libltdl3                      1.5.26-4   A system independent dlopen wrappe
ii  liboil0.3                     0.3.15-1   Library of Optimized Inner Loops
ii  libpolkit-dbus2               0.9-3      library for accessing PolicyKit vi
ii  libpolkit2                    0.9-3      library for accessing PolicyKit
ii  libpulsecore9                 0.9.14-2   PulseAudio sound server core
ii  libsamplerate0                0.1.7-2    audio rate conversion library
ii  libsndfile1                   1.0.18-2   Library for reading/writing audio 
ii  libspeexdsp1                  1.2~rc1-1  The Speex extended runtime library
ii  libwrap0                      7.6.q-16   Wietse Venema's TCP wrappers libra
ii  lsb-base                      3.2-20     Linux Standard Base 3.2 init scrip

Versions of packages pulseaudio recommends:
ii  gstreamer0.10-pulseaudio      0.10.14-2  GStreamer plugin for PulseAudio
ii  libasound2-plugins            1.0.19-2   ALSA library additional plugins
ii  padevchooser                  0.9.3-2    PulseAudio Device Chooser
ii  paprefs                       0.9.6-2    PulseAudio Preferences
ii  pulseaudio-esound-compat      0.9.14-2   PulseAudio ESD compatibility layer
ii  pulseaudio-module-hal         0.9.14-2   HAL device detection module for Pu
ii  pulseaudio-module-x11         0.9.14-2   X11 module for PulseAudio sound se

Versions of packages pulseaudio suggests:
ii  paman                0.9.4-1             PulseAudio Manager
ii  pavucontrol          0.9.6+svn20080426-1 PulseAudio Volume Control
ii  pavumeter            0.9.3-1             PulseAudio Volume Meter
ii  pulseaudio-utils     0.9.14-2            Command line tools for the PulseAu

-- no debconf information

-- 
Samuel
"2 + 2 = 5 pour d'assez grandes valeurs de 2"
--- src/pulsecore/authkey.c.orig        2009-03-31 01:55:38.450000000 +0100
+++ src/pulsecore/authkey.c     2009-03-31 02:12:17.570000000 +0100
@@ -36,6 +36,7 @@
 #include <sys/stat.h>
 
 #include <pulse/util.h>
+#include <pulse/xmalloc.h>
 #include <pulsecore/core-error.h>
 #include <pulsecore/core-util.h>
 #include <pulsecore/log.h>
@@ -158,16 +159,27 @@
 #else
     if (strlen(fn) < 3 || !isalpha(fn[0]) || fn[1] != ':' || fn[2] != '\\') {
 #endif
-        char homedir[PATH_MAX];
+        char *homedir;
+        size_t allocated = 128;
 
-        if (!pa_get_home_dir(homedir, sizeof(homedir)))
-            return NULL;
+        while (1) {
+            homedir = pa_xmalloc(allocated);
+            if (!pa_get_home_dir(homedir, allocated)) {
+                pa_xfree(homedir);
+                return NULL;
+            }
+            if (strlen(homedir) < allocated - 1)
+                break;
+            pa_xfree(homedir);
+            allocated *= 2;
+        }
 
 #ifndef OS_IS_WIN32
         pa_snprintf(s, l, "%s/%s", homedir, fn);
 #else
         pa_snprintf(s, l, "%s\\%s", homedir, fn);
 #endif
+        pa_xfree(homedir);
         return s;
     }
 
@@ -177,17 +189,35 @@
 /* Load a cookie from a file in the home directory. If the specified
  * path starts with /, use it as absolute path instead. */
 int pa_authkey_load_auto(const char *fn, void *data, size_t length) {
-    char path[PATH_MAX];
+    char *path;
     const char *p;
+    size_t allocated = 128;
+    int key;
 
     pa_assert(fn);
     pa_assert(data);
     pa_assert(length > 0);
 
-    if (!(p = normalize_path(fn, path, sizeof(path))))
-        return -2;
+    while (1) {
+        path = pa_xmalloc(allocated);
+
+        if (!(p = normalize_path(fn, path, allocated))) {
+            pa_xfree(path);
+            return -2;
+        }
+
+        if (p != path || strlen(path) < allocated - 1)
+            break;
+
+        pa_xfree(path);
+        allocated *= 2;
+    }
+
+    key = pa_authkey_load(p, data, length);
 
-    return pa_authkey_load(p, data, length);
+    pa_xfree(path);
+
+    return key;
 }
 
 /* Store the specified cookie in the speicified cookie file */
@@ -195,15 +225,28 @@
     int fd = -1;
     int unlock = 0, ret = -1;
     ssize_t r;
-    char path[PATH_MAX];
+    char *path;
     const char *p;
+    size_t allocated = 128;
 
     pa_assert(fn);
     pa_assert(data);
     pa_assert(length > 0);
 
-    if (!(p = normalize_path(fn, path, sizeof(path))))
-        return -2;
+    while (1) {
+        path = pa_xmalloc(allocated);
+
+        if (!(p = normalize_path(fn, path, allocated))) {
+            pa_xfree(path);
+            return -2;
+        }
+
+        if (p != path || strlen(path) < allocated - 1)
+            break;
+
+        pa_xfree(path);
+        allocated *= 2;
+    }
 
     if ((fd = open(p, O_RDWR|O_CREAT|O_NOCTTY, S_IRUSR|S_IWUSR)) < 0) {
         pa_log_warn("Failed to open cookie file '%s': %s", fn, 
pa_cstrerror(errno));
@@ -232,5 +275,7 @@
         }
     }
 
+    pa_xfree(path);
+
     return ret;
 }
--- src/pulsecore/core-util.c.orig      2009-03-31 02:12:50.960000000 +0100
+++ src/pulsecore/core-util.c   2009-03-31 02:22:25.750000000 +0100
@@ -1265,26 +1265,42 @@
 }
 
 static char *get_pulse_home(void) {
-    char h[PATH_MAX];
+    char *h;
     struct stat st;
+    size_t allocated = 128;
+    char *ret = NULL;
 
-    if (!pa_get_home_dir(h, sizeof(h))) {
-        pa_log_error("Failed to get home directory.");
-        return NULL;
+    while (1) {
+        h = pa_xmalloc(allocated);
+
+        if (!pa_get_home_dir(h, allocated)) {
+            pa_log_error("Failed to get home directory.");
+            goto out;
+        }
+
+        if (strlen(h) < allocated - 1)
+            break;
+
+        pa_xfree(h);
+        allocated *= 2;
     }
 
     if (stat(h, &st) < 0) {
         pa_log_error("Failed to stat home directory %s: %s", h, 
pa_cstrerror(errno));
-        return NULL;
+        goto out;
     }
 
     if (st.st_uid != getuid()) {
         pa_log_error("Home directory %s not ours.", h);
         errno = EACCES;
-        return NULL;
+        goto out;
     }
 
-    return pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse", h);
+    ret = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse", h);
+
+out:
+    pa_xfree(h);
+    return ret;
 }
 
 char *pa_get_state_dir(void) {
@@ -1561,15 +1577,32 @@
     if (local) {
         const char *e;
         char *lfn;
-        char h[PATH_MAX];
         FILE *f;
 
         if ((e = getenv("PULSE_CONFIG_PATH")))
             fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", e, local);
-        else if (pa_get_home_dir(h, sizeof(h)))
+        else {
+            char *h;
+            size_t allocated = 128;
+
+            while (1) {
+                h = pa_xmalloc(allocated);
+
+                if (!pa_get_home_dir(h, allocated)) {
+                    pa_xfree(h);
+                    return NULL;
+                }
+
+                if (strlen(h) < allocated - 1)
+                    break;
+
+                pa_xfree(h);
+                allocated *= 2;
+            }
+
             fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse" PA_PATH_SEP 
"%s", h, local);
-        else
-            return NULL;
+            pa_xfree(h);
+        }
 
 #ifdef OS_IS_WIN32
         if (!ExpandEnvironmentStrings(lfn, buf, PATH_MAX)) {
@@ -1648,14 +1681,31 @@
     if (local) {
         const char *e;
         char *lfn;
-        char h[PATH_MAX];
 
         if ((e = getenv("PULSE_CONFIG_PATH")))
             fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", e, local);
-        else if (pa_get_home_dir(h, sizeof(h)))
+        else {
+            char *h;
+            size_t allocated = 128;
+
+            while (1) {
+                h = pa_xmalloc(allocated);
+
+                if (!pa_get_home_dir(h, allocated)) {
+                    pa_xfree(h);
+                    return NULL;
+                }
+
+                if (strlen(h) < allocated - 1)
+                    break;
+
+                pa_xfree(h);
+                allocated *= 2;
+            }
+
             fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse" PA_PATH_SEP 
"%s", h, local);
-        else
-            return NULL;
+            pa_xfree(h);
+        }
 
 #ifdef OS_IS_WIN32
         if (!ExpandEnvironmentStrings(lfn, buf, PATH_MAX)) {
--- src/pulsecore/proplist-util.c.orig  2009-03-31 02:26:05.500000000 +0100
+++ src/pulsecore/proplist-util.c       2009-03-31 02:32:09.080000000 +0100
@@ -103,17 +103,33 @@
     b = pa_proplist_contains(p, PA_PROP_APPLICATION_NAME);
 
     if (!a || !b) {
-        char t[PATH_MAX];
-        if (pa_get_binary_name(t, sizeof(t))) {
-            char *c = pa_utf8_filter(t);
-
-            if (!a)
-                pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_BINARY, c);
-            if (!b)
-                pa_proplist_sets(p, PA_PROP_APPLICATION_NAME, c);
+        char *t;
+        size_t allocated = 128;
 
-            pa_xfree(c);
+        while (1) {
+            t = pa_xmalloc(allocated);
+
+            if (!pa_get_binary_name(t, allocated))
+                break;
+
+            if (strlen(t) < allocated - 1) {
+                char *c = pa_utf8_filter(t);
+
+                if (!a)
+                    pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_BINARY, c);
+                if (!b)
+                    pa_proplist_sets(p, PA_PROP_APPLICATION_NAME, c);
+
+                pa_xfree(c);
+
+                break;
+            }
+
+            pa_xfree(t);
+            allocated *= 2;
         }
+
+        pa_xfree(t);
     }
 
     if (!pa_proplist_contains(p, PA_PROP_APPLICATION_LANGUAGE)) {
--- ./src/pulsecore/core-scache.c.orig  2009-03-31 02:26:15.740000000 +0100
+++ ./src/pulsecore/core-scache.c       2009-03-31 02:49:59.250000000 +0100
@@ -487,16 +487,25 @@
 #endif
     } else {
         struct dirent *e;
+        size_t allocated = 128;
+        char *p = pa_xmalloc(allocated);
 
         while ((e = readdir(dir))) {
-            char p[PATH_MAX];
-
             if (e->d_name[0] == '.')
                 continue;
 
-            pa_snprintf(p, sizeof(p), "%s/%s", pathname, e->d_name);
-            add_file(c, p);
+            while (1) {
+                if (pa_snprintf(p, allocated, "%s/%s", pathname, e->d_name) < 
allocated - 1) {
+                    add_file(c, p);
+                    break;
+                }
+
+                pa_xfree(p);
+                allocated *= 2;
+                p = pa_xmalloc(allocated);
+            }
         }
+        pa_xfree(p);
 
         closedir(dir);
     }
--- ./src/utils/padsp.c.orig    2009-03-31 02:24:59.120000000 +0100
+++ ./src/utils/padsp.c 2009-03-31 03:14:08.930000000 +0100
@@ -459,16 +459,31 @@
 }
 
 static const char *client_name(char *buf, size_t n) {
-    char p[PATH_MAX];
+    char *p;
     const char *e;
+    size_t allocated = 128;
 
     if ((e = getenv("PADSP_CLIENT_NAME")))
         return e;
 
-    if (pa_get_binary_name(p, sizeof(p)))
-        snprintf(buf, n, "OSS Emulation[%s]", p);
-    else
-        snprintf(buf, n, "OSS");
+    while(1) {
+        p = pa_xmalloc(allocated);
+
+        if (!pa_get_binary_name(p, allocated)) {
+            snprintf(buf, n, "OSS");
+            break;
+        }
+
+        if (strlen(p) < allocated - 1) {
+            snprintf(buf, n, "OSS Emulation[%s]", p);
+            break;
+        }
+
+        pa_xfree(p);
+        allocated *= 2;
+    }
+
+    pa_xfree(p);
 
     return buf;
 }
--- ./src/utils/pactl.c.orig    2009-03-31 02:24:53.220000000 +0100
+++ ./src/utils/pactl.c 2009-03-31 03:17:06.270000000 +0100
@@ -698,7 +698,6 @@
 
 int main(int argc, char *argv[]) {
     pa_mainloop* m = NULL;
-    char tmp[PATH_MAX];
     int ret = 1, r, c;
     char *server = NULL, *client_name = NULL, *bn;
 
@@ -780,9 +779,9 @@
                     f = argv[optind];
 
                 n = strcspn(f, ".");
-                strncpy(tmp, f, n);
-                tmp[n] = 0;
-                sample_name = pa_xstrdup(tmp);
+                sample_name = pa_xmalloc(n + 1);
+                memcpy(sample_name, f, n);
+                sample_name[n] = 0;
             }
 
             memset(&sfinfo, 0, sizeof(sfinfo));
--- ./src/tests/get-binary-name-test.c.orig     2009-03-31 02:25:15.650000000 
+0100
+++ ./src/tests/get-binary-name-test.c  2009-03-31 03:19:26.980000000 +0100
@@ -25,10 +25,24 @@
 #include <stdio.h>
 
 #include <pulse/util.h>
+#include <pulse/xmalloc.h>
 
 int main(int argc, char *argv[]) {
-    char exename[PATH_MAX];
+    char *exename;
+    size_t allocated = 128;
 
-    printf("%s\n", pa_get_binary_name(exename, sizeof(exename)));
+    while (1) {
+        exename = pa_xmalloc(allocated);
+
+        pa_get_binary_name(exename, allocated);
+
+        if (strlen(exename) < allocated - 1) {
+            printf("%s\n", exename);
+            break;
+        }
+
+        pa_xfree(exename);
+        allocated *= 2;
+    }
     return 0;
 }
--- src/modules/module-pipe-sink.c.orig 2009-03-31 04:21:20.180000000 +0100
+++ src/modules/module-pipe-sink.c      2009-03-31 04:22:27.050000000 +0100
@@ -120,7 +120,11 @@
     pa_assert(u);
 
     if (u->memchunk.length <= 0)
+#ifdef PIPE_BUF
         pa_sink_render(u->sink, PIPE_BUF, &u->memchunk);
+#else
+        pa_sink_render(u->sink, SIZE_MAX, &u->memchunk);
+#endif 
 
     pa_assert(u->memchunk.length > 0);
 
--- src/modules/module-pipe-source.c.orig       2009-03-31 04:24:14.940000000 
+0100
+++ src/modules/module-pipe-source.c    2009-03-31 04:25:06.670000000 +0100
@@ -141,7 +141,11 @@
             void *p;
 
             if (!u->memchunk.memblock) {
+#ifdef PIPE_BUF
                 u->memchunk.memblock = pa_memblock_new(u->core->mempool, 
PIPE_BUF);
+#else
+                u->memchunk.memblock = pa_memblock_new(u->core->mempool, -1);
+#endif
                 u->memchunk.index = u->memchunk.length = 0;
             }
 
--- src/tests/rtstutter.c.orig  2009-03-31 04:44:18.670000000 +0100
+++ src/tests/rtstutter.c       2009-03-31 04:44:33.880000000 +0100
@@ -42,7 +42,9 @@
 static void* work(void *p) PA_GCC_NORETURN;
 
 static void* work(void *p) {
+#ifdef __linux__
     cpu_set_t mask;
+#endif
     struct sched_param param;
 
     pa_log_notice("CPU%i: Created thread.", PA_PTR_TO_INT(p));
@@ -51,9 +53,11 @@
     param.sched_priority = 12;
     pa_assert_se(pthread_setschedparam(pthread_self(), SCHED_FIFO, &param) == 
0);
 
+#ifdef __linux__
     CPU_ZERO(&mask);
     CPU_SET((size_t) PA_PTR_TO_INT(p), &mask);
     pa_assert_se(pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) 
== 0);
+#endif
 
     for (;;) {
         struct timespec now, end;
--- debian/rules.orig   2009-03-31 04:51:50.800000000 +0100
+++ debian/rules        2009-03-31 04:52:05.140000000 +0100
@@ -7,6 +7,8 @@
 
 common-build-arch::
        grep -v -e alsa -e evdev debian/pulseaudio.install > \
+           debian/pulseaudio.install.hurd-i386
+       grep -v -e alsa -e evdev debian/pulseaudio.install > \
            debian/pulseaudio.install.kfreebsd-i386
        grep -v -e alsa -e evdev debian/pulseaudio.install > \
            debian/pulseaudio.install.kfreebsd-amd64
@@ -19,6 +21,7 @@
 common-binary-post-install-arch:: list-missing
 
 clean::
+       rm -f debian/pulseaudio.install.hurd-i386
        rm -f debian/pulseaudio.install.kfreebsd-i386
        rm -f debian/pulseaudio.install.kfreebsd-amd64
 

--- End Message ---
--- Begin Message ---
On Sun, Apr 19, 2009 at 06:48:59PM +0100, Sjoerd Simons wrote:
> On Sun, Apr 19, 2009 at 07:14:05PM +0200, Samuel Thibault wrote:
> > Hello,
> > 
> > Here is a fixed patch for 0.9.15.

Fixed upstream and that upstream is in debian, so closing

  Sjoerd
-- 
You should never bet against anything in science at odds of more than
about 10^12 to 1.
                -- Ernest Rutherford


--- End Message ---
_______________________________________________
Pkg-pulseaudio-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/pkg-pulseaudio-devel

Reply via email to