Subject: pkg/33420: audio/portaudio build failures on MacOS X 10.3.9
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <jdbaker@mylinuxisp.com>
List: pkgsrc-bugs
Date: 05/04/2006 02:45:00
>Number:         33420
>Category:       pkg
>Synopsis:       audio/portaudio build failures on MacOS X 10.3.9
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu May 04 02:45:00 +0000 2006
>Originator:     John D. Baker
>Release:        MacOS X 10.3.9 w/pkgsrc-current
>Organization:
>Environment:
Darwin bondi.local 7.9.0 Darwin Kernel Version 7.9.0: Wed Mar 30 20:11:17 PST 2005; root:xnu/xnu-517.12.7.obj~1/RELEASE_PPC  Power Macintosh powerpc

>Description:
Attempting to build audio/portaudio (dependency of audio/audacity) fails
on MacOS X as follows:

[...]
libtool  --mode=compile gcc -pipe -c -O2 -I/usr/include -Ipa_common pa_mac_core/pa_mac_core.c -o pa_mac_core/pa_mac_core.o
mkdir pa_mac_core/.libs
 gcc -pipe -c -O2 -Ipa_common pa_mac_core/pa_mac_core.c  -fno-common -DPIC -o pa_mac_core/.libs/pa_mac_core.o
pa_mac_core/pa_mac_core.c:126:24: ringbuffer.h: No such file or directory
pa_mac_core/pa_mac_core.c:187: error: parse error before "RingBuffer"
pa_mac_core/pa_mac_core.c:187: warning: no semicolon at end of struct or union
pa_mac_core/pa_mac_core.c:193: error: parse error before '}' token
pa_mac_core/pa_mac_core.c:193: warning: data definition has no type or storage class
pa_mac_core/pa_mac_core.c: In function `Pa_StartUsageCalculation':
pa_mac_core/pa_mac_core.c:304: error: `pahsc' undeclared (first use in this function)
pa_mac_core/pa_mac_core.c:304: error: (Each undeclared identifier is reported only once
pa_mac_core/pa_mac_core.c:304: error: for each function it appears in.)
pa_mac_core/pa_mac_core.c:304: error: parse error before ')' token
[...]
pa_mac_core/pa_mac_core.c: In function `Pa_StreamTime':
pa_mac_core/pa_mac_core.c:2164: error: `pahsc' undeclared (first use in this function)
pa_mac_core/pa_mac_core.c:2167: error: parse error before ')' token
gnumake: *** [pa_mac_core/pa_mac_core.o] Error 1
*** Error code 2

Stop.
bmake: stopped in /usr/pkgsrc/audio/portaudio
[...]


After applying the first fix shown below, compilation proceeds until:

[...]
libtool  --mode=link gcc -pipe -o bin/patest_buffer -O2 -I/usr/include -Ipa_common -Ipablio pa_tests/patest_buffer.c lib/libportaudio.la  -L/usr/pkg/lib -L/usr/pkg/lib -framework CoreAudio -lm
mkdir bin/.libs
gcc -pipe -o bin/.libs/patest_buffer -O2 -Ipa_common -Ipablio pa_tests/patest_buffer.c -framework CoreAudio  lib/.libs/libportaudio.dylib -L/Volumes/NetBSD/tmp/pkgsrc/audio/portaudio/work/.buildlink/lib -lm
ld: Undefined symbols:
_AudioConverterDispose
_AudioConverterFillBuffer
_AudioConverterNew
_RingBuffer_AdvanceReadIndex
_RingBuffer_AdvanceWriteIndex
_RingBuffer_GetReadAvailable
_RingBuffer_GetReadRegions
_RingBuffer_GetWriteAvailable
_RingBuffer_Init
_RingBuffer_Write
gnumake: *** [bin/patest_buffer] Error 1
*** Error code 2

Stop.
bmake: stopped in /usr/pkgsrc/audio/portaudio
[...]


>How-To-Repeat:
Attempt to build audio/portaudio on MacOS X 10.3.9 (later versions?)


>Fix:
"ringbuffer.h" is found in:

audio/portaudio/work/portaudio_v18_1/pablio/ringbuffer.h

But the distribution Makefile only includes "pa_common" in
the list of local include directories.

Adding "-Ipablio" to the "CFLAGS" line in the distribution
makefile allows the compilation to proceed.

Not sure how to proceed for the second problem.  The _AudioConverter*
symbols are found in:

work/portaudio_v18_1//pa_common/pa_convert.c
work/portaudio_v18_1//pa_common/pa_host.h
work/portaudio_v18_1//pa_mac_core/pa_mac_core.c
work/portaudio_v18_1//pa_mac_core/.libs/pa_mac_core.o
work/portaudio_v18_1//pa_mac_core/pa_mac_core.o
work/portaudio_v18_1//lib/.libs/libportaudio.0.0.18.dylib
work/portaudio_v18_1//lib/.libs/libportaudio.a


The _RingBuffer_* symbols are found in:

work/portaudio_v18_1//pablio/pablio.c
work/portaudio_v18_1//pablio/pablio.h
work/portaudio_v18_1//pablio/ringbuffer.c
work/portaudio_v18_1//pablio/ringbuffer.h
work/portaudio_v18_1//pablio/test_rw.c
work/portaudio_v18_1//pa_mac_core/pa_mac_core.c
work/portaudio_v18_1//pa_mac_core/.libs/pa_mac_core.o
work/portaudio_v18_1//pa_mac_core/pa_mac_core.o
work/portaudio_v18_1//lib/.libs/libportaudio.0.0.18.dylib
work/portaudio_v18_1//lib/.libs/libportaudio.a


So it looks like another libtool issue to me...