Opened 11 years ago

Closed 11 years ago

#39195 closed defect (fixed)

py27-pyaudio @0.2.7 doesn't see portaudio.h during build

Reported by: posita (Matt Bogosian) Owned by: Jakker (Jaap Akkerhuis)
Priority: Normal Milestone:
Component: ports Version: 2.1.3
Keywords: snowleopard Cc:
Port: py-pyaudio

Description

Log file attached. Failure at:

:info:build /usr/bin/clang -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch x86_64 -DMACOSX=1 -I/Users/matt/Library/Frameworks/Python.fr\
amework/Versions/2.7/include/python2.7 -c src/_portaudiomodule.c -o build/temp.macosx-10.6-x86_64-2.7/src/_portaudiomodule.o -fno-strict-aliasi\
ng
:info:build src/_portaudiomodule.c:29:10: fatal error: 'portaudio.h' file not found
:info:build #include "portaudio.h"
:info:build          ^
:info:build 1 error generated.
:info:build error: command '/usr/bin/clang' failed with exit status 1
:info:build Command failed:  cd "/__PATH__/var/macports/build/___PATH___var_macports_sources_rsync.macports.org_release_tarballs_ports_python_p\
y-pyaudio/py27-pyaudio/work/pyaudio-0.2.7" && /Users/matt/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 setup.py --no-user-cfg\
 build

But portaudio is installed:

% ls __PATH__/include/portaudio.h
__PATH__/include/portaudio.h
% port provides __PATH__/include/portaudio.h
__PATH__/include/portaudio.h is provided by: portaudio

Attachments (2)

py27-pyaudio_main.log (24.0 KB) - added by posita (Matt Bogosian) 11 years ago.
build log (after #39175 was fixed)
py-pyaudio.diff (1.0 KB) - added by larryv (Lawrence Velázquez) 11 years ago.
explicitly include MacPorts include directory, for older Clang

Download all attachments as: .zip

Change History (25)

comment:1 Changed 11 years ago by mf2k (Frank Schima)

Cc: jaap@… removed
Owner: changed from macports-tickets@… to jaap@…
Port: py-pyaudio added

In the future, please fill in the Port field.

comment:2 Changed 11 years ago by posita (Matt Bogosian)

OOPS! I meant to do that. My apologies!

comment:3 Changed 11 years ago by larryv (Lawrence Velázquez)

What version of /usr/bin/clang do you have? It might be too old to pick up CPATH, which means that the build would have to explicitly add an -I argument to search MacPorts’ include directory.

comment:4 Changed 11 years ago by posita (Matt Bogosian)

I have Snow Leopard (10.6.8) with Xcode 4.2 (the highest available version for that platform).

% /usr/bin/clang --version
Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin10.8.0

comment:5 Changed 11 years ago by Jakker (Jaap Akkerhuis)

I cannot reproduce this on my slightly newer Mac (10.8.3) with

/usr/bin/clang --version
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.3.0
Thread model: posix

I've just found older machine on which I will try to reproduce the problem and I will get back when I have result.

comment:6 Changed 11 years ago by Jakker (Jaap Akkerhuis)

Xcode 4.2 for Snow Leopard doesn't seem to be freely available anymore, the latest I could find was Xcode 3.6.2 which has

/usr/bin/clang --version
Apple clang version 1.7 (tags/Apple/clang-77) (based on LLVM 2.9svn)
Target: x86_64-apple-darwin10
Thread model: posix

and it seems to work fine.

However, I don't think that the problem has anything to do with the version of Xcode. It is related to your earlier ticket #39175. If you look closely to the error log, you'll notice that the 'cd' into the work directory doesn't work. So I suggest to update the port and try again.

Last edited 11 years ago by Jakker (Jaap Akkerhuis) (previous) (diff)

comment:7 Changed 11 years ago by posita (Matt Bogosian)

Even with the fix for #39175, clang is still broken with 10.6.8 and Xcode 4.2 (see log attached). Xcode 4.2 for Snow Leopard is harder to find than most other versions (see this explanation as to why this anomaly exists). This may not provide much motivation to fix this issue, but (again) Xcode 4.2 is the highest and most recent version of Xcode that is installable in Snow Leopard.

FYI, here is a work-around that gets the job done:

% port install py27-pyaudio configure.compiler=llvm-gcc-4.2

Changed 11 years ago by posita (Matt Bogosian)

Attachment: py27-pyaudio_main.log added

build log (after #39175 was fixed)

comment:8 Changed 11 years ago by Jakker (Jaap Akkerhuis)

Good, so I consider this issue closed.

comment:9 Changed 11 years ago by posita (Matt Bogosian)

Is there a way to create a conditional build dependency based on the environment? I.E., to use the llvm/gcc ports instead of Xcode for environments where Xcode's are known to be broken? Or is that beyond the scope of any particular port?

Had I not had the llvw/gcc ports installed, it appears Xcode 4.2 would still require a "-I PATH/include"....

comment:10 in reply to:  9 Changed 11 years ago by larryv (Lawrence Velázquez)

Replying to mtb19@…:

Is there a way to create a conditional build dependency based on the environment? I.E., to use the llvm/gcc ports instead of Xcode for environments where Xcode's are known to be broken? Or is that beyond the scope of any particular port?

There’s a blacklisting mechanism by which ports can prevent certain compilers from being used, but we greatly prefer that ports be fixed to work with Clang, since LLVM is the future of compiling on OS X. Additionally, ports that want to use MacPorts-provided compilers have to declare those dependencies explicitly; the functionality to automatically depend on compiler ports hasn’t made it out of Subversion trunk yet.

comment:11 Changed 11 years ago by larryv (Lawrence Velázquez)

:debug:build Executing command line:  cd "/__PATH__/var/macports/build/___PATH___var_macports_sources_rsync.macports.org_release_tarballs_ports_python_py-pyaudio/py27-pyaudio/work/PyAudio-0.2.7" && /Users/matt/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 setup.py --no-user-cfg build
:info:build /usr/bin/clang -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch x86_64 -DMACOSX=1 -I/Users/matt/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_portaudiomodule.c -o build/temp.macosx-10.6-x86_64-2.7/src/_portaudiomodule.o -fno-strict-aliasing
:info:build src/_portaudiomodule.c:29:10: fatal error: 'portaudio.h' file not found

Why is the installation process using ~matt/Library/Frameworks/Python.framework/Versions/2.7? Are you using ~matt as your MacPorts prefix?

comment:12 Changed 11 years ago by posita (Matt Bogosian)

It's a non-root local user install which uses "${HOME}/Applications/MacPorts" and "${HOME}/Library" for Mac-specific prefixes.

It sounds like given the rarity of Xcode 4.2 on Snow Leopard, and the state of compiler selection in MacPorts, that this should probably be closed as WONTFIX or NOTOURBUG or equivalent, especially with the work-around described above. At least unfortunate users like myself will have a relatively painless way to get around our own tools.... ;o)

comment:13 in reply to:  6 ; Changed 11 years ago by larryv (Lawrence Velázquez)

Replying to jaap@…:

Xcode 4.2 for Snow Leopard doesn't seem to be freely available anymore, the latest I could find was Xcode 3.6.2 which has

/usr/bin/clang --version
Apple clang version 1.7 (tags/Apple/clang-77) (based on LLVM 2.9svn)
Target: x86_64-apple-darwin10
Thread model: posix

and it seems to work fine.

Is that the compiler being used for the build? MacPorts’ default compiler for Xcode 3.6 is gcc-4.2. Can you check the first line of debug output for the configure phase? It should say something like this:

:debug:configure Using compiler 'Mac OS X Clang'

comment:14 Changed 11 years ago by posita (Matt Bogosian)

% /usr/bin/clang --version
Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin10.8.0
Thread model: posix

Here's the pertinent output from "port -d build py27-pyaudio":

...
DEBUG: Using compiler 'Mac OS X clang'
...

Here's the pertinent output from "port -d build py27-pyaudio configure.compiler=llvm-gcc-4.2":

...
DEBUG: Using compiler 'Mac OS X llvm-gcc 4.2'
...

comment:15 in reply to:  14 Changed 11 years ago by larryv (Lawrence Velázquez)

I was asking jaap. The output from your build failure already made it clear which compiler you’re using.

comment:16 Changed 11 years ago by posita (Matt Bogosian)

[Slaps forehead.]

comment:17 in reply to:  12 Changed 11 years ago by Jakker (Jaap Akkerhuis)

Replying to mtb19@…:

It sounds like given the rarity of Xcode 4.2 on Snow Leopard, and the state of compiler selection in MacPorts, that this should probably be closed as WONTFIX or NOTOURBUG or equivalent, especially with the work-around described above. At least unfortunate users like myself will have a relatively painless way to get around our own tools.... ;o)

Yes, this seems to be too much out of the standard setup.

comment:18 in reply to:  13 Changed 11 years ago by Jakker (Jaap Akkerhuis)

Replying to larryv@…:

Replying to jaap@…:

Xcode 4.2 for Snow Leopard doesn't seem to be freely available anymore, the latest I could find was Xcode 3.6.2 which has

/usr/bin/clang --version
Apple clang version 1.7 (tags/Apple/clang-77) (based on LLVM 2.9svn)
Target: x86_64-apple-darwin10
Thread model: posix

and it seems to work fine.

Is that the compiler being used for the build? MacPorts’ default compiler for Xcode 3.6 is gcc-4.2. Can you check the first line of debug output for the configure phase? It should say something like this:

:debug:configure Using compiler 'Mac OS X Clang'

No, this is not the compile ysed at the build. It is indeed gcc-4.2, see below

:notice:configure --->  Configuring py27-pyaudio
:debug:configure Using compiler 'Mac OS X gcc 4.2'
:debug:configure Executing org.macports.configure (py27-pyaudio)

Changed 11 years ago by larryv (Lawrence Velázquez)

Attachment: py-pyaudio.diff added

explicitly include MacPorts include directory, for older Clang

comment:19 in reply to:  9 Changed 11 years ago by larryv (Lawrence Velázquez)

Replying to mtb19@…:

Had I not had the llvw/gcc ports installed, it appears Xcode 4.2 would still require a -I __PATH__/include....

Matt, could you apply this patch and try installing again, without changing the compiler?

% curl 'https://trac.macports.org/raw-attachment/ticket/39195/py-pyaudio.diff' | patch -p0 -d `port dir py-pyaudio`
Last edited 11 years ago by larryv (Lawrence Velázquez) (previous) (diff)

comment:20 Changed 11 years ago by posita (Matt Bogosian)

Larry, that did the trick. With the patch, it builds and installs without complaint.

comment:21 in reply to:  20 ; Changed 11 years ago by larryv (Lawrence Velázquez)

Replying to mtb19@…:

Larry, that did the trick. With the patch, it builds and installs without complaint.

Cool. jaap, do you mind if I commit this fix?

comment:22 in reply to:  21 ; Changed 11 years ago by Jakker (Jaap Akkerhuis)

Replying to larryv@…:

Replying to mtb19@…:

Larry, that did the trick. With the patch, it builds and installs without complaint.

Cool. jaap, do you mind if I commit this fix?

I tested it with under Snow Leopard (Xcode 3.6.2) and Lion (Xcode 4.2). It works under both so go ahead.

Last edited 11 years ago by Jakker (Jaap Akkerhuis) (previous) (diff)

comment:23 in reply to:  22 Changed 11 years ago by larryv (Lawrence Velázquez)

Keywords: snowleopard added
Resolution: fixed
Status: newclosed

Committed in r106435. And that’s all she wrote.

Note: See TracTickets for help on using tickets.