[pulseaudio-tickets] [PulseAudio] #373: pulseaudio 0.9.12 fails to build on FreeBSD

PulseAudio trac-noreply at tango.0pointer.de
Sun Sep 28 03:18:39 PDT 2008


#373: pulseaudio 0.9.12 fails to build on FreeBSD
--------------------+-------------------------------------------------------
 Reporter:  alexis  |       Owner:  lennart
     Type:  defect  |      Status:  new    
 Priority:  normal  |   Milestone:         
Component:  core    |    Severity:  normal 
 Keywords:          |  
--------------------+-------------------------------------------------------
 First I get:
 {{{
 pulsecore/core-util.c:2337: error: ‘_NSIG’ undeclared (first use in this
 function)
 pulsecore/core-util.c:2337: error: (Each undeclared identifier is reported
 only once
 pulsecore/core-util.c:2337: error: for each function it appears in.)
 }}}

 While NSIG doesn't seem standard according to the single unix
 specification, replacing _NSIG by NSIG here seems to be more portable.
 Maybe this needs some more care as I see in other parts of this file
 '#ifdef NSIG' things.

 Then:
 {{{
 pulsecore/proplist-util.c: In function ‘pa_init_proplist’:
 pulsecore/proplist-util.c:47: error: ‘environ’ undeclared (first use in
 this function)
 pulsecore/proplist-util.c:47: error: (Each undeclared identifier is
 reported only once
 pulsecore/proplist-util.c:47: error: for each function it appears in.)
 }}}

 There is this portion of code:
 {{{
 #ifndef HAVE_DECL_ENVIRON
     extern char **environ;
 #endif
 }}}
 while config.h says:
 {{{
 /* Define to 1 if you have the declaration of `environ', and to 0 if you
    don't. */
 #define HAVE_DECL_ENVIRON 0
 }}}

 Changing it from #ifndef to #if ! appears to work better.

 Then I get:
 {{{
 pulsecore/protocol-native.c:2201: error: dereferencing pointer to
 incomplete type
 }}}

 Offending lines of code:
 {{{
     if (do_shm) {
         /* Only enable SHM if both sides are owned by the same
          * user. This is a security measure because otherwise data
          * private to the user might leak. */

         const pa_creds *creds;
         if (!(creds = pa_pdispatch_creds(pd)) || getuid() != creds->uid)
             do_shm = FALSE;
     }
 }}}

 Adding #ifdef HAVE_CREDS around seems to fix the problem.

 Then I get a linking error:
 {{{
 libtool: link: rm -f ".libs/pulseaudioS.c" ".libs/pulseaudio.nm"
 ".libs/pulseaudio.nmS" ".libs/pulseaudio.nmT"
 libtool: link: i686-gentoo-freebsd7.0-gcc -std=gnu99 -I../src
 -I../src/modules -I../src/modules/rtp -I../src/modules/gconf
 -D_THREAD_SAFE -pthread -D_POSIX_PTHREAD_SEMANTICS
 -DPA_DLSEARCHPATH=\"/usr/lib/pulse-0.9/modules/\"
 -DPA_DEFAULT_CONFIG_DIR=\"/etc/pulse\" -DPA_BINARY=\"/usr/bin/pulseaudio\"
 -DPA_SYSTEM_RUNTIME_PATH=\"/var/run/pulse\"
 -DPA_SYSTEM_CONFIG_PATH=\"/var/lib/pulse\"
 -DPA_SYSTEM_STATE_PATH=\"/var/lib/pulse\" -DAO_REQUIRE_CAS
 -DPULSE_LOCALEDIR=\"/usr/share/locale\" -DPA_MACHINE_ID=\"/var/lib/dbus
 /machine-id\" "-DDEBUG_TRAP=__asm__(\"int \$3\")"
 -I/usr/include/liboil-0.3 -I/usr/include/liboil-0.3
 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -march=athlon-xp -O2
 -pipe -g -ggdb -UNDEBUG -Wall -W -Wextra -pedantic -pipe -Wno-long-long
 -Wno-overlength-strings -Wconversion -Wundef -Wformat -Wpacked -Wformat-
 security -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition
 -Wdeclaration-after-statement -Wfloat-equal -Wmissing-declarations
 -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-
 noreturn -Wshadow -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-
 strings -Wno-unused-parameter -ffast-math -Wl,-no-undefined -Wl,--gc-
 sections .libs/pulseaudioS.o -Wl,--as-needed -o .libs/pulseaudio
 pulseaudio-caps.o pulseaudio-cmdline.o pulseaudio-cpulimit.o pulseaudio-
 daemon-conf.o pulseaudio-dumpmodules.o pulseaudio-ltdl-bind-now.o
 pulseaudio-main.o -Wl,--export-dynamic  ./.libs/libpulsecore.so -L/usr/lib
 /usr/lib/libiconv.so /usr/lib/libltdl.so /usr/lib/libsamplerate.so
 /usr/lib/libspeexdsp.so /usr/lib/libsndfile.so /usr/lib/libFLAC.so
 /usr/lib/libvorbisenc.so /usr/lib/libvorbis.so -logg
 /usr/lib/liboil-0.3.so /usr/lib/libdbus-1.so /usr/lib/libgdbm.so -lrt -lm
 -pthread
 pulseaudio-caps.o: In function `pa_drop_root':
 /var/tmp/portage/media-
 sound/pulseaudio-0.9.12/work/pulseaudio-0.9.12/src/daemon/caps.c:62:
 undefined reference to `libintl_dgettext'
 pulseaudio-cmdline.o: In function `pa_cmdline_parse':
 /var/tmp/portage/media-
 sound/pulseaudio-0.9.12/work/pulseaudio-0.9.12/src/daemon/cmdline.c:338:
 undefined reference to `libintl_dgettext'
 /var/tmp/portage/media-
 sound/pulseaudio-0.9.12/work/pulseaudio-0.9.12/src/daemon/cmdline.c:319:
 undefined reference to `libintl_dgettext'
 /var/tmp/portage/media-
 sound/pulseaudio-0.9.12/work/pulseaudio-0.9.12/src/daemon/cmdline.c:262:
 undefined reference to `libintl_dgettext'
 pulseaudio-cmdline.o: In function `pa_cmdline_help':
 /var/tmp/portage/media-
 sound/pulseaudio-0.9.12/work/pulseaudio-0.9.12/src/daemon/cmdline.c:117:
 undefined reference to `libintl_dgettext'
 pulseaudio-daemon-conf.o:/var/tmp/portage/media-
 sound/pulseaudio-0.9.12/work/pulseaudio-0.9.12/src/daemon/daemon-
 conf.c:567: more undefined references to `libintl_dgettext' follow
 ./.libs/libpulsecore.so: undefined reference to
 `libintl_bind_textdomain_codeset'
 ./.libs/libpulsecore.so: undefined reference to `libintl_bindtextdomain'
 collect2: ld returned 1 exit status
 }}}

 Adding $(INTLLIBS) to AM_LDADD and AM_LIBADD fixes this (there are many
 other failures if I add it only to pulseaudio_LDADD).

 After that some tests fail to build because they contain some linuxisms;
 i'll probably submit a patch later for that too.

-- 
Ticket URL: <http://pulseaudio.org/ticket/373>
PulseAudio <http://pulseaudio.org/>
The PulseAudio Sound Server


More information about the pulseaudio-bugs mailing list