Opened 8 years ago

Last modified 3 years 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)

log.txt (1.2 MB) - added by 4625khz.mail@… 8 years ago.
pulseaudio-fail-ppc.log.zip (45.3 KB) - added by kencu (Ken) 6 years ago.
build fails on Leopard PPC

Download all attachments as: .zip

Change History (23)

Changed 8 years ago by 4625khz.mail@…

Attachment: log.txt added

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

Keywords: pulseaudio removed
Owner: changed from macports-tickets@… to ionic@…

In the future, please Cc the port maintainers (port info --maintainers pulseaudio), if any.

comment:2 Changed 8 years ago by 4625khz.mail@…

Cc: 4625khz.mail@… added

Cc Me!

comment:3 Changed 6 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 6 years ago by kencu (Ken)

Mihai wanted a clean fail build log from pulseaudio on Leopard PPC, so I'll upload that next.

Changed 6 years ago by kencu (Ken)

Attachment: pulseaudio-fail-ppc.log.zip added

build fails on Leopard PPC

comment:5 Changed 6 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:6 Changed 6 years ago by kencu (Ken)

clang-3.7 does not exist for Leopard PPC

Last edited 6 years ago by kencu (Ken) (previous) (diff)

comment:7 Changed 6 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.

Last edited 6 years ago by kencu (Ken) (previous) (diff)

comment:8 in reply to:  6 Changed 6 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 6 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 6 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 Changed 6 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 in reply to:  11 Changed 6 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 6 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:14 Changed 6 years ago by Ionic (Mihai Moldovan)

Ping?

comment:15 Changed 6 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 3 years ago by evanmiller (Evan Miller)

Cc: evanmiller added

comment:17 Changed 3 years 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 3 years 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 3 years ago by kencu (Ken)

Looked at your mods -- they look reasonable indeed. If they generate sound, looks good!

comment:20 Changed 3 years 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.

comment:21 Changed 3 years ago by evanmiller (Evan Miller)

In 91ecf110df83be71d6605760c069b644597105d4/macports-ports (master):

pulseaudio: Tiger compatibility

Use older CoreAudio API when compiling on Tiger.

See #50057

Note: See TracTickets for help on using tickets.