summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
authorahze <ahze@df743ca5-7f9a-e211-a948-0013205c9059>2008-03-19 21:55:58 +0800
committerahze <ahze@df743ca5-7f9a-e211-a948-0013205c9059>2008-03-19 21:55:58 +0800
commit588965935a012afb8951ad6429a3f019ee5569b6 (patch)
tree400af59e51cd2743602784c54a98484a4bc96225 /audio
parent856d693480694c35c5536e7d7ead2954b4aff6bd (diff)
downloadmarcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.gz
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.bz2
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.lz
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.xz
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.zst
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.zip
Chase liboil
git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@10781 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'audio')
-rw-r--r--audio/pulseaudio/Makefile101
-rw-r--r--audio/pulseaudio/distinfo3
-rw-r--r--audio/pulseaudio/files/patch-configure36
-rw-r--r--audio/pulseaudio/files/patch-src_daemon_default.pa.in17
-rw-r--r--audio/pulseaudio/files/patch-src_daemon_main.c10
-rw-r--r--audio/pulseaudio/files/patch-src_modules_oss-util.c37
-rw-r--r--audio/pulseaudio/files/patch-src_pulse_introspect.c11
-rw-r--r--audio/pulseaudio/files/patch-src_pulse_thread-mainloop.c12
-rw-r--r--audio/pulseaudio/files/patch-src_pulse_util.c20
-rw-r--r--audio/pulseaudio/files/patch-src_pulsecore_atomic.h116
-rw-r--r--audio/pulseaudio/files/patch-src_pulsecore_core-util.c49
-rw-r--r--audio/pulseaudio/files/patch-src_pulsecore_pstream.c23
-rw-r--r--audio/pulseaudio/files/patch-src_pulsecore_shm.c11
-rw-r--r--audio/pulseaudio/files/patch-src_tests_rtpoll-test.c18
-rw-r--r--audio/pulseaudio/pkg-descr8
-rw-r--r--audio/pulseaudio/pkg-install63
-rw-r--r--audio/pulseaudio/pkg-plist145
17 files changed, 680 insertions, 0 deletions
diff --git a/audio/pulseaudio/Makefile b/audio/pulseaudio/Makefile
new file mode 100644
index 000000000..03fa74443
--- /dev/null
+++ b/audio/pulseaudio/Makefile
@@ -0,0 +1,101 @@
+# New ports collection makefile for: polypaudio
+# Date created: 29 October 2004
+# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
+#
+# $FreeBSD$
+# $MCom: ports/audio/pulseaudio/Makefile,v 1.7 2007/09/10 05:10:38 mezz Exp $
+#
+
+PORTNAME= pulseaudio
+PORTVERSION= 0.9.9
+PORTREVISION= 1
+CATEGORIES= audio
+MASTER_SITES= http://0pointer.de/lennart/projects/${PORTNAME}/
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= Sound server for UNIX
+
+LIB_DEPENDS= samplerate.1:${PORTSDIR}/audio/libsamplerate \
+ oil-0.3.0:${PORTSDIR}/devel/liboil
+
+CONFLICTS= polypaudio-[1-9]*
+
+USE_GNOME= gnometarget gnomehack glib20 ltverhack
+USE_XLIB= yes
+USE_LDCONFIG= yes
+USE_AUTOTOOLS= libtool:15 libltdl:15
+USE_GMAKE= yes
+USE_GETOPT_LONG=yes
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
+ LDFLAGS="-L${LOCALBASE}/lib" \
+ PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" \
+ PTHREAD_LIBS="${PTHREAD_LIBS}" \
+ LIBS="-lm"
+
+CONFIGURE_ARGS= --localstatedir=/var \
+ --disable-lirc # untested
+
+OPTIONS= JACK "JACK audio support" Off \
+ AVAHI "Enable Avahi mDNS support" On \
+ HAL "Enable HAL support" On \
+ GCONF "Enable GConf support" On
+
+PULSE_VERSION= ${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}
+PLIST_SUB= PULSE_VERSION=${PULSE_VERSION}
+
+MAN1= esdcompat.1 pabrowse.1 pacat.1 pacmd.1 pactl.1 padsp.1 \
+ paplay.1 pasuspender.1 pax11publish.1 pulseaudio.1
+MAN5= default.pa.5 pulse-client.conf.5 pulse-daemon.conf.5
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_JACK)
+LIB_DEPENDS+= jack.0:${PORTSDIR}/audio/jack
+PLIST_SUB+= JACK=""
+.else
+PLIST_SUB+= JACK="@comment "
+CONFIGURE_ARGS+=--disable-jack
+.endif
+
+.if !defined(WITHOUT_AVAHI)
+LIB_DEPENDS+= avahi-core.5:${PORTSDIR}/net/avahi-app
+PLIST_SUB+= AVAHI=""
+.else
+CONFIGURE_ARGS+=--disable-avahi
+PLIST_SUB+= AVAHI="@comment "
+.endif
+
+.if !defined(WITHOUT_HAL)
+LIB_DEPENDS+= hal.1:${PORTSDIR}/sysutils/hal
+PLIST_SUB+= HAL=""
+.else
+CONFIGURE_ARGS+=--disable-hal
+PLIST_SUB+= HAL="@comment "
+.endif
+
+.if !defined(WITHOUT_GCONF)
+USE_GNOME+= gconf2
+PLIST_SUB+= GCONF=""
+.else
+CONFIGURE_ARGS+=--disable-gconf
+PLIST_SUB+= GCONF="@comment "
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+ ${WRKSRC}/src/daemon/default.pa.in
+.if ${OSVERSION} < 700042
+ @${REINPLACE_CMD} -e 's|-Wl,-no-undefined||' \
+ ${WRKSRC}/src/Makefile.in
+.endif
+
+post-install:
+.for ii in default.pa daemon.conf client.conf
+ ${INSTALL_DATA} ${WRKSRC}/src/${ii} \
+ ${PREFIX}/etc/pulse/${ii}-dist
+.endfor
+.if !defined(PACKAGE_BUILDING)
+ @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/audio/pulseaudio/distinfo b/audio/pulseaudio/distinfo
new file mode 100644
index 000000000..aa4f5aff7
--- /dev/null
+++ b/audio/pulseaudio/distinfo
@@ -0,0 +1,3 @@
+MD5 (pulseaudio-0.9.9.tar.gz) = 8fa6f7a9611bb194d94311764022b197
+SHA256 (pulseaudio-0.9.9.tar.gz) = 9caab8f9be8a371aea7cd0241aab7ffd4b1043fbc4a8f62736faea4229f11f7d
+SIZE (pulseaudio-0.9.9.tar.gz) = 1063448
diff --git a/audio/pulseaudio/files/patch-configure b/audio/pulseaudio/files/patch-configure
new file mode 100644
index 000000000..32d08b68d
--- /dev/null
+++ b/audio/pulseaudio/files/patch-configure
@@ -0,0 +1,36 @@
+--- configure.orig Sun Jul 8 18:17:17 2007
++++ configure Sun Jul 8 18:41:18 2007
+@@ -25255,6 +25255,7 @@ echo $ECHO_N "checking whether to check
+ check_inconsistencies=yes
+ case "${host_cpu}-${host_os}" in
+ *-darwin*) check_inconsistencies=no ;;
++ *-freebsd*) check_inconsistencies=no ;;
+ esac
+ if test x"$GCC" != xyes -o "x$check_inconsistencies" != xyes ; then
+ { echo "$as_me:$LINENO: result: no" >&5
+@@ -28924,9 +28925,9 @@ _ACEOF
+
+ else
+
+-{ { echo "$as_me:$LINENO: error: *** libatomic-ops headers not found" >&5
+-echo "$as_me: error: *** libatomic-ops headers not found" >&2;}
+- { (exit 1); exit 1; }; }
++#{ { echo "$as_me:$LINENO: error: *** libatomic-ops headers not found" >&5
++#echo "$as_me: error: *** libatomic-ops headers not found" >&2;}
++# { (exit 1); exit 1; }; }
+
+ fi
+
+@@ -28934,9 +28935,9 @@ done
+
+
+ # Win32 does not need the lib and breaks horribly if we try to include it
+-if test "x$os_is_win32" != "x1" ; then
+- LIBS="$LIBS -latomic_ops"
+-fi
++#if test "x$os_is_win32" != "x1" ; then
++# LIBS="$LIBS -latomic_ops"
++#fi
+
+ #### OSS support (optional) ####
+
diff --git a/audio/pulseaudio/files/patch-src_daemon_default.pa.in b/audio/pulseaudio/files/patch-src_daemon_default.pa.in
new file mode 100644
index 000000000..7abc21071
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_daemon_default.pa.in
@@ -0,0 +1,17 @@
+--- src/daemon/default.pa.in.orig 2007-10-28 13:18:27.000000000 -0400
++++ src/daemon/default.pa.in 2008-01-01 15:59:59.000000000 -0500
+@@ -19,10 +19,10 @@
+ .nofail
+
+ ### Load something into the sample cache
+-#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
+-load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
+-#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
+-#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
++#load-sample-lazy x11-bell %%LOCALBASE%%/sounds/gtk-events/activate.wav
++load-sample-lazy pulse-hotplug %%LOCALBASE%%/share/sounds/startup3.wav
++#load-sample-lazy pulse-coldplug %%LOCALBASE%%/sounds/startup3.wav
++#load-sample-lazy pulse-access %%LOCALBASE%%/sounds/generic.wav
+
+ .fail
+
diff --git a/audio/pulseaudio/files/patch-src_daemon_main.c b/audio/pulseaudio/files/patch-src_daemon_main.c
new file mode 100644
index 000000000..1b96327a8
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_daemon_main.c
@@ -0,0 +1,10 @@
+--- src/daemon/main.c.orig Thu Jul 12 00:04:22 2007
++++ src/daemon/main.c Thu Jul 12 00:04:40 2007
+@@ -40,6 +40,7 @@
+ #include <unistd.h>
+ #include <locale.h>
+ #include <sys/types.h>
++#include <sys/stat.h>
+
+ #include <liboil/liboil.h>
+
diff --git a/audio/pulseaudio/files/patch-src_modules_oss-util.c b/audio/pulseaudio/files/patch-src_modules_oss-util.c
new file mode 100644
index 000000000..bf44d4fdd
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_modules_oss-util.c
@@ -0,0 +1,37 @@
+--- src/modules/oss-util.c.orig 2007-11-08 21:45:25.000000000 -0500
++++ src/modules/oss-util.c 2008-01-09 17:00:45.000000000 -0500
+@@ -44,6 +44,22 @@
+
+ #include "oss-util.h"
+
++#ifndef DSP_CAP_COPROC
++#define DSP_CAP_COPROC 0x00000800
++#endif
++#ifndef DSP_CAP_TRIGGER
++#define DSP_CAP_TRIGGER 0x00001000
++#endif
++#ifndef DSP_CAP_MMAP
++#define DSP_CAP_MMAP 0x00002000
++#endif
++#ifndef DSP_CAP_MULTI
++#define DSP_CAP_MULTI 0x00004000
++#endif
++#ifndef DSP_CAP_BIND
++#define DSP_CAP_BIND 0x00008000
++#endif
++
+ int pa_oss_open(const char *device, int *mode, int* pcaps) {
+ int fd = -1;
+ int caps;
+@@ -300,7 +316,11 @@ static int get_device_number(const char
+ int r;
+
+ if (!(p = rp = pa_readlink(dev))) {
++#ifdef ENOLINK
+ if (errno != EINVAL && errno != ENOLINK) {
++#else
++ if (errno != EINVAL) {
++#endif
+ r = -1;
+ goto finish;
+ }
diff --git a/audio/pulseaudio/files/patch-src_pulse_introspect.c b/audio/pulseaudio/files/patch-src_pulse_introspect.c
new file mode 100644
index 000000000..6681f70ca
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulse_introspect.c
@@ -0,0 +1,11 @@
+--- src/pulse/introspect.c.orig 2008-01-03 20:01:31.000000000 -0500
++++ src/pulse/introspect.c 2008-01-03 20:01:39.000000000 -0500
+@@ -26,6 +26,8 @@
+ #include <config.h>
+ #endif
+
++#include <string.h>
++
+ #include <pulse/context.h>
+
+ #include <pulsecore/gccmacro.h>
diff --git a/audio/pulseaudio/files/patch-src_pulse_thread-mainloop.c b/audio/pulseaudio/files/patch-src_pulse_thread-mainloop.c
new file mode 100644
index 000000000..72a0965dd
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulse_thread-mainloop.c
@@ -0,0 +1,12 @@
+--- src/pulse/thread-mainloop.c.orig 2008-01-01 17:23:28.000000000 -0500
++++ src/pulse/thread-mainloop.c 2008-01-01 17:25:00.000000000 -0500
+@@ -27,6 +27,9 @@
+ #endif
+
+ #include <signal.h>
++#ifndef OS_IS_WIN32
++#include <pthread.h>
++#endif
+ #include <stdio.h>
+
+ #ifdef HAVE_POLL_H
diff --git a/audio/pulseaudio/files/patch-src_pulse_util.c b/audio/pulseaudio/files/patch-src_pulse_util.c
new file mode 100644
index 000000000..2fa4de0bc
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulse_util.c
@@ -0,0 +1,20 @@
+--- src/pulse/util.c.orig 2008-01-01 17:29:31.000000000 -0500
++++ src/pulse/util.c 2008-01-01 17:29:00.000000000 -0500
+@@ -184,6 +184,17 @@ char *pa_get_binary_name(char *s, size_t
+ }
+
+ #endif
++#ifdef __FreeBSD__
++ {
++ char *rp;
++
++ if ((rp = pa_readlink("/proc/curproc/file"))) {
++ pa_strlcpy(s, pa_path_get_filename(rp), l);
++ pa_xfree(rp);
++ return s;
++ }
++ }
++#endif
+
+ #if defined(HAVE_SYS_PRCTL_H) && defined(PR_GET_NAME)
+ {
diff --git a/audio/pulseaudio/files/patch-src_pulsecore_atomic.h b/audio/pulseaudio/files/patch-src_pulsecore_atomic.h
new file mode 100644
index 000000000..06515b9f9
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulsecore_atomic.h
@@ -0,0 +1,116 @@
+--- src/pulsecore/atomic.h.orig 2008-01-23 19:44:20.000000000 -0500
++++ src/pulsecore/atomic.h 2008-03-15 14:48:41.000000000 -0400
+@@ -106,6 +106,113 @@ static inline int pa_atomic_ptr_cmpxchg(
+ return __sync_bool_compare_and_swap(&a->value, (long) old_p, (long) new_p);
+ }
+
++#elif defined(__FreeBSD__)
++
++#include <sys/cdefs.h>
++#include <sys/types.h>
++#include <sys/param.h>
++#include <machine/atomic.h>
++
++#if __FreeBSD_version < 600000
++#if defined(__i386__) || defined(__amd64__)
++#if defined(__amd64__)
++#define atomic_load_acq_64 atomic_load_acq_long
++#endif
++static inline u_int
++atomic_fetchadd_int(volatile u_int *p, u_int v)
++{
++ __asm __volatile(
++ " " __XSTRING(MPLOCKED) " "
++ " xaddl %0, %1 ; "
++ "# atomic_fetchadd_int"
++ : "+r" (v),
++ "=m" (*p)
++ : "m" (*p));
++
++ return (v);
++}
++#elif defined(__sparc64__)
++#define atomic_load_acq_64 atomic_load_acq_long
++#define atomic_fetchadd_int atomic_add_int
++#elif defined(__ia64__)
++#define atomic_load_acq_64 atomic_load_acq_long
++static inline uint32_t
++atomic_fetchadd_int(volatile uint32_t *p, uint32_t v)
++{
++ uint32_t value;
++
++ do {
++ value = *p;
++ } while (!atomic_cmpset_32(p, value, value + v));
++ return (value);
++}
++#endif
++#endif
++
++typedef struct pa_atomic {
++ volatile unsigned long value;
++} pa_atomic_t;
++
++#define PA_ATOMIC_INIT(v) { .value = (v) }
++
++static inline int pa_atomic_load(const pa_atomic_t *a) {
++ return (int) atomic_load_acq_int((unsigned int *) &a->value);
++}
++
++static inline void pa_atomic_store(pa_atomic_t *a, int i) {
++ atomic_store_rel_int((unsigned int *) &a->value, i);
++}
++
++static inline int pa_atomic_add(pa_atomic_t *a, int i) {
++ return atomic_fetchadd_int((unsigned int *) &a->value, i);
++}
++
++static inline int pa_atomic_sub(pa_atomic_t *a, int i) {
++ return atomic_fetchadd_int((unsigned int *) &a->value, -(i));
++}
++
++static inline int pa_atomic_inc(pa_atomic_t *a) {
++ return atomic_fetchadd_int((unsigned int *) &a->value, 1);
++}
++
++static inline int pa_atomic_dec(pa_atomic_t *a) {
++ return atomic_fetchadd_int((unsigned int *) &a->value, -1);
++}
++
++static inline int pa_atomic_cmpxchg(pa_atomic_t *a, int old_i, int new_i) {
++ return atomic_cmpset_int((unsigned int *) &a->value, old_i, new_i);
++}
++
++typedef struct pa_atomic_ptr {
++ volatile unsigned long value;
++} pa_atomic_ptr_t;
++
++#define PA_ATOMIC_PTR_INIT(v) { .value = (unsigned long) (v) }
++
++static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) {
++#ifdef atomic_load_acq_64
++ return (void*) atomic_load_acq_ptr((unsigned long *) &a->value);
++#else
++ return (void*) atomic_load_acq_ptr((unsigned int *) &a->value);
++#endif
++}
++
++static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) {
++#ifdef atomic_load_acq_64
++ atomic_store_rel_ptr(&a->value, (unsigned long) p);
++#else
++ atomic_store_rel_ptr((unsigned int *) &a->value, (unsigned int) p);
++#endif
++}
++
++static inline int pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) {
++#ifdef atomic_load_acq_64
++ return atomic_cmpset_ptr(&a->value, (unsigned long) old_p, (unsigned long) new_p);
++#else
++ return atomic_cmpset_ptr((unsigned int *) &a->value, (unsigned int) old_p, (unsigned int) new_p);
++#endif
++}
++
+ #elif defined(__GNUC__) && (defined(__amd64__) || defined(__x86_64__))
+
+ #error "The native atomic operations implementation for AMD64 has not been tested. libatomic_ops is known to not work properly on AMD64 and your gcc version is too old for the gcc-builtin atomic ops support. You have three options now: make the native atomic operations implementation for AMD64 work, fix libatomic_ops, or upgrade your GCC."
diff --git a/audio/pulseaudio/files/patch-src_pulsecore_core-util.c b/audio/pulseaudio/files/patch-src_pulsecore_core-util.c
new file mode 100644
index 000000000..cb91964ad
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulsecore_core-util.c
@@ -0,0 +1,49 @@
+--- src/pulsecore/core-util.c.orig Sun Jul 8 18:35:21 2007
++++ src/pulsecore/core-util.c Sun Jul 8 18:39:04 2007
+@@ -40,6 +40,7 @@
+ #include <time.h>
+ #include <ctype.h>
+ #include <sys/types.h>
++#include <sys/socket.h>
+ #include <sys/stat.h>
+ #include <sys/time.h>
+
+@@ -544,6 +545,7 @@ fail:
+ cap_free(caps);
+ }
+ #endif
++ ;
+ }
+
+ /* Reset the priority to normal, inverting the changes made by pa_raise_priority() */
+@@ -838,22 +840,22 @@ int pa_check_in_group(gid_t g) {
+ (advisory on UNIX, mandatory on Windows) */
+ int pa_lock_fd(int fd, int b) {
+ #ifdef F_SETLKW
+- struct flock flock;
++ struct flock pa_flock;
+
+ /* Try a R/W lock first */
+
+- flock.l_type = b ? F_WRLCK : F_UNLCK;
+- flock.l_whence = SEEK_SET;
+- flock.l_start = 0;
+- flock.l_len = 0;
++ pa_flock.l_type = b ? F_WRLCK : F_UNLCK;
++ pa_flock.l_whence = SEEK_SET;
++ pa_flock.l_start = 0;
++ pa_flock.l_len = 0;
+
+- if (fcntl(fd, F_SETLKW, &flock) >= 0)
++ if (fcntl(fd, F_SETLKW, &pa_flock) >= 0)
+ return 0;
+
+ /* Perhaps the file descriptor qas opened for read only, than try again with a read lock. */
+ if (b && errno == EBADF) {
+- flock.l_type = F_RDLCK;
+- if (fcntl(fd, F_SETLKW, &flock) >= 0)
++ pa_flock.l_type = F_RDLCK;
++ if (fcntl(fd, F_SETLKW, &pa_flock) >= 0)
+ return 0;
+ }
+
diff --git a/audio/pulseaudio/files/patch-src_pulsecore_pstream.c b/audio/pulseaudio/files/patch-src_pulsecore_pstream.c
new file mode 100644
index 000000000..b242e2e41
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulsecore_pstream.c
@@ -0,0 +1,23 @@
+--- src/pulsecore/pstream.c.orig 2007-10-28 15:13:53.000000000 -0400
++++ src/pulsecore/pstream.c 2008-01-01 16:14:18.000000000 -0500
+@@ -183,14 +183,17 @@ static void do_something(pa_pstream *p)
+ p->mainloop->defer_enable(p->defer_event, 0);
+
+ if (!p->dead && pa_iochannel_is_readable(p->io)) {
+- if (do_read(p) < 0)
++ if (do_read(p) < 0) {
+ goto fail;
+- } else if (!p->dead && pa_iochannel_is_hungup(p->io))
++ }
++ } else if (!p->dead && pa_iochannel_is_hungup(p->io)) {
+ goto fail;
++ }
+
+ if (!p->dead && pa_iochannel_is_writable(p->io)) {
+- if (do_write(p) < 0)
++ if (do_write(p) < 0) {
+ goto fail;
++ }
+ }
+
+ pa_pstream_unref(p);
diff --git a/audio/pulseaudio/files/patch-src_pulsecore_shm.c b/audio/pulseaudio/files/patch-src_pulsecore_shm.c
new file mode 100644
index 000000000..549091ccc
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulsecore_shm.c
@@ -0,0 +1,11 @@
+--- src/pulsecore/shm.c.orig 2007-10-28 15:13:53.000000000 -0400
++++ src/pulsecore/shm.c 2008-01-01 16:19:19.000000000 -0500
+@@ -80,7 +80,7 @@ struct shm_marker {
+ };
+
+ static char *segment_name(char *fn, size_t l, unsigned id) {
+- pa_snprintf(fn, l, "/pulse-shm-%u", id);
++ pa_snprintf(fn, l, "/tmp/pulse-shm-%u", id);
+ return fn;
+ }
+
diff --git a/audio/pulseaudio/files/patch-src_tests_rtpoll-test.c b/audio/pulseaudio/files/patch-src_tests_rtpoll-test.c
new file mode 100644
index 000000000..365ca8d2b
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_tests_rtpoll-test.c
@@ -0,0 +1,18 @@
+--- src/tests/rtpoll-test.c.orig 2008-01-03 20:03:03.000000000 -0500
++++ src/tests/rtpoll-test.c 2008-01-03 20:03:25.000000000 -0500
+@@ -45,6 +45,7 @@ static int worker(pa_rtpoll_item *w) {
+ }
+
+ int main(int argc, char *argv[]) {
++#ifdef SIGRTMIN
+ pa_rtpoll *p;
+ pa_rtpoll_item *i, *w;
+ struct pollfd *pollfd;
+@@ -86,6 +87,7 @@ int main(int argc, char *argv[]) {
+ pa_rtpoll_item_free(w);
+
+ pa_rtpoll_free(p);
++#endif
+
+ return 0;
+ }
diff --git a/audio/pulseaudio/pkg-descr b/audio/pulseaudio/pkg-descr
new file mode 100644
index 000000000..45634a1f7
--- /dev/null
+++ b/audio/pulseaudio/pkg-descr
@@ -0,0 +1,8 @@
+PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+Win32 systems. A sound server is basically a proxy for your sound applications.
+It allows you to do advanced operations on your sound data as it passes between
+your application and your hardware. Things like transferring the audio to a
+different machine, changing the sample format or channel count and mixing
+several sounds into one are easily achieved using a sound server.
+
+WWW: http://pulseaudio.org/
diff --git a/audio/pulseaudio/pkg-install b/audio/pulseaudio/pkg-install
new file mode 100644
index 000000000..2c316a5e6
--- /dev/null
+++ b/audio/pulseaudio/pkg-install
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+case $2 in
+POST-INSTALL)
+ RGROUP=pulse-rt
+ SUSER=pulse
+ SGROUP=${SUSER}
+ AGROUP=pulse-access
+ SUID=563
+ RGID=557
+ SGID=${SUID}
+ AGID=564
+ PW=/usr/sbin/pw
+
+ if ${PW} group show "${RGROUP}" 2>/dev/null; then
+ echo "You already have a group \"${RGROUP}\", so I will use it."
+ else
+ if ${PW} groupadd ${RGROUP} -g ${RGID}; then
+ echo "Added group \"${RGROUP}\"."
+ else
+ echo "Adding group \"${RGROUP}\" failed..."
+ exit 1
+ fi
+ fi
+
+ if ${PW} group show "${SGROUP}" 2>/dev/null; then
+ echo "You already have a group \"${SGROUP}\", so I will use it."
+ else
+ if ${PW} groupadd ${SGROUP} -g ${SGID}; then
+ echo "Added group \"${SGROUP}\"."
+ else
+ echo "Adding group \"${SGROUP}\" failed..."
+ exit 1
+ fi
+ fi
+
+ if ${PW} group show "${AGROUP}" 2>/dev/null; then
+ echo "You already have a group \"${AGROUP}\", so I will use it."
+ else
+ if ${PW} groupadd ${AGROUP} -g ${AGID}; then
+ echo "Added group \"${AGROUP}\"."
+ else
+ echo "Adding group \"${AGROUP}\" failed..."
+ exit 1
+ fi
+ fi
+
+ if ${PW} user show "${SUSER}" 2>/dev/null; then
+ echo "You already have a user \"${SUSER}\", so I will use it."
+ else
+ if ${PW} useradd ${SUSER} -u ${SUID} -g ${SGROUP} -h - \
+ -d "/nonexistent" -s /sbin/nologin -c "PulseAudio System User"
+ then
+ echo "Added user \"${SUSER}\"."
+ else
+ echo "Adding user \"${SUSER}\" failed..."
+ exit 1
+ fi
+ fi
+
+ exit 0
+ ;;
+esac
diff --git a/audio/pulseaudio/pkg-plist b/audio/pulseaudio/pkg-plist
new file mode 100644
index 000000000..2b0c9e9b9
--- /dev/null
+++ b/audio/pulseaudio/pkg-plist
@@ -0,0 +1,145 @@
+bin/esdcompat
+%%AVAHI%%bin/pabrowse
+bin/pacat
+bin/pacmd
+bin/pactl
+bin/padsp
+bin/paplay
+bin/parec
+bin/pasuspender
+bin/pax11publish
+bin/pulseaudio
+@unexec if cmp -s %D/etc/pulse/client.conf %D/etc/pulse/client.conf-dist; then rm -f %D/etc/pulse/client.conf; fi
+etc/pulse/client.conf-dist
+@unexec if cmp -s %D/etc/pulse/daemon.conf %D/etc/pulse/daemon.conf-dist; then rm -f %D/etc/pulse/daemon.conf; fi
+etc/pulse/daemon.conf-dist
+@unexec if cmp -s %D/etc/pulse/default.pa %D/etc/pulse/default.pa-dist; then rm -f %D/etc/pulse/default.pa; fi
+etc/pulse/default.pa-dist
+etc/xdg/autostart/pulseaudio-module-xsmp.desktop
+%%AVAHI%%include/pulse/browser.h
+include/pulse/cdecl.h
+include/pulse/channelmap.h
+include/pulse/context.h
+include/pulse/def.h
+include/pulse/error.h
+include/pulse/glib-mainloop.h
+include/pulse/introspect.h
+include/pulse/mainloop-api.h
+include/pulse/mainloop-signal.h
+include/pulse/mainloop.h
+include/pulse/operation.h
+include/pulse/pulseaudio.h
+include/pulse/sample.h
+include/pulse/scache.h
+include/pulse/simple.h
+include/pulse/stream.h
+include/pulse/subscribe.h
+include/pulse/thread-mainloop.h
+include/pulse/timeval.h
+include/pulse/utf8.h
+include/pulse/util.h
+include/pulse/version.h
+include/pulse/volume.h
+include/pulse/xmalloc.h
+%%AVAHI%%lib/libpulse-browse.a
+%%AVAHI%%lib/libpulse-browse.la
+%%AVAHI%%lib/libpulse-browse.so
+%%AVAHI%%lib/libpulse-browse.so.0
+lib/libpulse-mainloop-glib.a
+lib/libpulse-mainloop-glib.la
+lib/libpulse-mainloop-glib.so
+lib/libpulse-mainloop-glib.so.0
+lib/libpulse-simple.a
+lib/libpulse-simple.la
+lib/libpulse-simple.so
+lib/libpulse-simple.so.0
+lib/libpulse.a
+lib/libpulse.la
+lib/libpulse.so
+lib/libpulse.so.0
+lib/libpulsecore.a
+lib/libpulsecore.la
+lib/libpulsecore.so
+lib/libpulsecore.so.5
+lib/libpulsedsp.so
+lib/pulse-%%PULSE_VERSION%%/modules/libauthkey-prop.so
+lib/pulse-%%PULSE_VERSION%%/modules/libauthkey.so
+%%AVAHI%%lib/pulse-%%PULSE_VERSION%%/modules/libavahi-wrap.so
+lib/pulse-%%PULSE_VERSION%%/modules/libcli.so
+%%HAL%%lib/pulse-%%PULSE_VERSION%%/modules/libdbus-util.so
+lib/pulse-%%PULSE_VERSION%%/modules/libiochannel.so
+lib/pulse-%%PULSE_VERSION%%/modules/libioline.so
+lib/pulse-%%PULSE_VERSION%%/modules/libipacl.so
+lib/pulse-%%PULSE_VERSION%%/modules/liboss-util.so
+lib/pulse-%%PULSE_VERSION%%/modules/libpacket.so
+lib/pulse-%%PULSE_VERSION%%/modules/libparseaddr.so
+lib/pulse-%%PULSE_VERSION%%/modules/libpdispatch.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-cli.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-esound.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-http.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-native.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-simple.so
+lib/pulse-%%PULSE_VERSION%%/modules/libpstream-util.so
+lib/pulse-%%PULSE_VERSION%%/modules/libpstream.so
+lib/pulse-%%PULSE_VERSION%%/modules/librtp.so
+lib/pulse-%%PULSE_VERSION%%/modules/libsocket-client.so
+lib/pulse-%%PULSE_VERSION%%/modules/libsocket-server.so
+lib/pulse-%%PULSE_VERSION%%/modules/libsocket-util.so
+lib/pulse-%%PULSE_VERSION%%/modules/libstrlist.so
+lib/pulse-%%PULSE_VERSION%%/modules/libtagstruct.so
+lib/pulse-%%PULSE_VERSION%%/modules/libx11prop.so
+lib/pulse-%%PULSE_VERSION%%/modules/libx11wrap.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-cli-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-cli-protocol-unix.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-cli.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-combine.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-default-device-restore.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-detect.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-compat-spawnfd.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-compat-spawnpid.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-protocol-unix.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-sink.so
+%%GCONF%%lib/pulse-%%PULSE_VERSION%%/modules/module-gconf.so
+%%HAL%%lib/pulse-%%PULSE_VERSION%%/modules/module-hal-detect.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-http-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-http-protocol-unix.so
+%%JACK%%lib/pulse-%%PULSE_VERSION%%/modules/module-jack-sink.so
+%%JACK%%lib/pulse-%%PULSE_VERSION%%/modules/module-jack-source.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-ladspa-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-match.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-native-protocol-fd.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-native-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-native-protocol-unix.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-null-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-oss.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-pipe-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-pipe-source.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-remap-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-rescue-streams.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-rtp-recv.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-rtp-send.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-simple-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-simple-protocol-unix.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-sine.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-suspend-on-idle.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-tunnel-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-tunnel-source.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-volume-restore.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-x11-bell.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-x11-publish.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-x11-xsmp.so
+%%AVAHI%%lib/pulse-%%PULSE_VERSION%%/modules/module-zeroconf-discover.so
+%%AVAHI%%lib/pulse-%%PULSE_VERSION%%/modules/module-zeroconf-publish.so
+%%AVAHI%%libdata/pkgconfig/libpulse-browse.pc
+libdata/pkgconfig/libpulse-mainloop-glib.pc
+libdata/pkgconfig/libpulse-simple.pc
+libdata/pkgconfig/libpulse.pc
+%%GCONF%%libexec/pulse/gconf-helper
+%%GCONF%%@dirrm libexec/pulse
+@dirrm lib/pulse-%%PULSE_VERSION%%/modules
+@dirrm lib/pulse-%%PULSE_VERSION%%
+@dirrm include/pulse
+@dirrmtry etc/xdg/autostart
+@dirrmtry etc/xdg
+@dirrm etc/pulse