Opened 7 years ago
Last modified 21 months ago
#50057 new defect
pulseaudio @6.0_9 error: expected specifier-qualifier-list before 'AudioDeviceIOProcID'
Reported by: | 4625khz.mail@… | Owned by: | Ionic (Mihai Moldovan) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.3.4 |
Keywords: | powerpc | Cc: | 4625khz.mail@…, evanmiller (Evan Miller) |
Port: | pulseaudio |
Description
Hello! pulseaudio port fails to build on Tiger, PowerPC platform, using apple-gcc42 compiler, with following error:
modules/macosx/module-coreaudio-device.c:82: error: expected specifier-qualifier-list before 'AudioDeviceIOProcID'
Then, there are a lot of 'struct userdata' has no member named ... errors.
Switching to gcc40 had no effect on this error.
port -v install pulseaudio log attached.
Attachments (2)
Change History (23)
Changed 7 years ago by 4625khz.mail@…
comment:1 Changed 7 years ago by mf2k (Frank Schima)
Keywords: | pulseaudio removed |
---|---|
Owner: | changed from macports-tickets@… to ionic@… |
comment:3 Changed 5 years ago by kencu (Ken)
pulseaudio builds on Tiger and Leopard PPC, with rather minor some minor adjustments.
$ port -v installed pulseaudio The following ports are currently installed: pulseaudio @10.0_4+x11 (active) platform='darwin 8' archs='ppc' date='2017-10-16T18:25:42-0700'
$ port -v installed pulseaudio The following ports are currently installed: pulseaudio @10.0_4+x11 (active) platform='darwin 9' archs='ppc' date='2017-10-16T18:27:09-0700'
The build needs to be forced to gcc6, like this:
platform darwin powerpc { compiler.whitelist macports-gcc-6 universal_variant no }
But then there are some further issues. There is something that doesn't work with dbus
support.
$ pulseaudio W: [(null)] caps.c: Normally all extra capabilities would be dropped now, but that's impossible because PulseAudio was built without capabilities support. Dynamic session lookup supported but failed: Unable to find launchd socket when setuid E: [(null)] core-util.c: Failed to connect to system bus: Not enough memory Dynamic session lookup supported but failed: Unable to find launchd socket when setuid
I don't know what this error is about, or how to fix it, but it's trivial to add --disable-dbus
during the build.
On Tiger, there are some further issues, and I don't know how easy they might be to fix. The coreaudio API is 10.5+ only, so that needs to be sorted out. You can build pulseaudio by disabling coreaudio -- but then you need to figure out how to get some audio output. Apparently you can build it against the 10.5 SDK but spec the 10.4 deployment target - perhaps that would work.
comment:4 Changed 5 years ago by kencu (Ken)
Mihai wanted a clean fail build log from pulseaudio on Leopard PPC, so I'll upload that next.
Changed 5 years ago by kencu (Ken)
Attachment: | pulseaudio-fail-ppc.log.zip added |
---|
build fails on Leopard PPC
comment:5 Changed 5 years ago by Ionic (Mihai Moldovan)
So, definitely a different issue than the original one posted here.
For Leopard, can you please try to run port -Nsvt destroot pulseaudio +x11 macports.compiler=macports-clang-3.7
? Does this complete?
comment:7 Changed 5 years ago by kencu (Ken)
Replying to Ionic:
So, definitely a different issue than the original one posted here.
The original issue still stands -- with an older compiler, you still get the errors in the original ticket. That is fixed fairly easily by forcing the build with a recent gcc on PPC.
comment:8 Changed 5 years ago by Ionic (Mihai Moldovan)
Replying to kencu:
clang-3.7 does not exist for Leopard PPC
Huh, not at all? https://trac.macports.org/wiki/LibcxxOnOlderSystems#Leopardppc suggests that it's available - but needs to be bootstrapped with at least clang-3.6
, so we probably are not able to leverage this in pulseaudio
.
What about macports.compiler=macports-gcc-7
? Asking since libgcc
currently is at version 7 anyway, so it might make sense to use this version.
comment:9 Changed 5 years ago by kencu (Ken)
gcc6 is the go-to for PPC at present.
I have ported clang-3.8 to PPC, backporting Marcus' macports-libstdc++ mods into it. But it's not quite ready for general consumption.
Besides, gcc6 builds pulseaudio perfectly well, so it's not a compiler deficiency we're fixing here.
comment:10 Changed 5 years ago by Ionic (Mihai Moldovan)
No, but if GCC 7 works, I'd rather use this, because it's the "latest and greatest" and our libgcc port already is at that version, so it would make sense to also use GCC 7 for consistency.
Another thing I'm not sure if it's correct is using platform darwin ppc
, since I think the arch refers to the native machine architecture, but older OS X versions can also build ppc
binaries by default in universal mode if the architecture is not ppc
(and in that case, I suppose, also fail.) Also, since PA actually builds and installs libraries, I do not want to disable the universal variant. I guess we'll need something more sophisticated here, like checking all arches:
platform darwin { if {[variant_isset universal]} { foreach arch ${configure.universal_archs} { if {"${arch}" eq "ppc"} { compiler.whitelist ... } } } }
comment:11 follow-up: 12 Changed 5 years ago by kencu (Ken)
gcc6 or gcc7 on ppc can't cross compile, so we disabled universal builds in the cxx11 1.1 PortGroup.
gcc7 has 4 x as many failures on PPC in testing, so we've all agreed to stick with gcc6 for now.
comment:12 Changed 5 years ago by Ionic (Mihai Moldovan)
Replying to kencu:
gcc6 or gcc7 on ppc can't cross compile, so we disabled universal builds in the cxx11 1.1 PortGroup.
Ah, right, FSF GCC can't do that easily. That's why I normally prefer clang, but if it's not working correctly on ppc
, there's nothing we can do.
In this case, it's even more important to disable the universal variant whenever ppc
might be used.
gcc7 has 4 x as many failures on PPC in testing, so we've all agreed to stick with gcc6 for now.
Okay, that's a good argument.
What's the situation on 10.4 i386
? Does it build successfully even without modifications in the non-universal case? Does it fail in the universal case?
comment:13 Changed 5 years ago by kencu (Ken)
I have a 10.4 Intel machine set up -- I'll give it a try and see what happens!
comment:15 Changed 5 years ago by kencu (Ken)
10.4 Intel remains in pretty rough shape when it comes to newer toolchains. I had to do some moderate surgery on the build scripts to build gcc6 - it won't build out of the box with the current Portfile for anyone. And clang-3.4 won't build either, much less any clang newer than that. So there won't be any universal builds for software needing C11 or c++11 coming out of 10.4 Intel. So I don't see that as a platform worth pursuing too much further unless I get enthusiastic about fixing the compilers there.
comment:16 Changed 21 months ago by evanmiller (Evan Miller)
Cc: | evanmiller added |
---|
comment:17 Changed 21 months ago by evanmiller (Evan Miller)
Here is a small attempt to get pulseaudio working on Tiger using the older CoreAudio API: https://github.com/evanmiller/macports-ports/commit/090411566b4aa5382df9f91edae2c1d954836cf0
Haven't tested (since I just need it as a dependency), but compiles OK. Feedback welcome.
comment:18 Changed 21 months ago by kencu (Ken)
I just pegged this last-working version in TigerPorts and I have been using it for years now:
<https://github.com/kencu/TigerPorts/blob/master/audio/pulseaudio/Portfile>
someone could roll that back into macports as a peg if they like.
comment:19 Changed 21 months ago by kencu (Ken)
Looked at your mods -- they look reasonable indeed. If they generate sound, looks good!
comment:20 Changed 21 months ago by evanmiller (Evan Miller)
Yes, I was able to play a sample file using pulseaudio --start
and pacmd
. There were some oddities starting the daemon for the first time but I was able to get sound out of it.
In the future, please Cc the port maintainers (
port info --maintainers pulseaudio
), if any.