El Capitan issue


#1

Hi Guys,

 

We have some report of El capitan users that our plugin are not validated by Logic X with the following message.

WARNING: 140: This application, or a library it uses, is using the deprecated Carbon Component Manager for hosting Audio Units. Support for this will be removed in a future release. Also, this makes the host incompatible with version 3 audio units. Please transition to the API's in AudioComponent.h.

I suppose Logic ensure a "treat warning as error"

We do not use Juce plugin framework though.

Still I am wondering if some people using the Juce plugin framework have the same issue under El Capitan.

 

Thanks,


#2

64-bit plugins should be fine, as they don't use Carbon, but any kind of plugin built with backwards-compatibility would unavoidably hit this, because Carbon's essential for older 32-bit builds.


#3

I think Logic X only check for 64bits version and our equivalent of JUCE_SUPPORT_CARBON is set to 0 even in 32Bits.

 

Hence my question as I don't understand what is happening.


#4

Hmm. That is a bit bizarre!


#5

Have you guys been able to test your plugin under Logic X and El Capitan  ?


#6

Are JUCE-AUs compatible? This is a high priority problem!


#7

We'll test this ourselves tomorrow. It seems to be causing chaos amongst all plugin companies, even NI have issued a critical alert about it. Typical Apple...


#8

An answer which may give some hint on the Coreaudio mailing list

http://lists.apple.com/archives/coreaudio-api/2015/Sep/msg00027.html


#9

Still, I'm not using Juce plugin framework, so it maybe already work in Juce own code.


#10

I just installed El Capitan to figure this out.

Unfortunately I am getting the same warning for my plugins if I run them through auval 64bit: 

WARNING: 140: This application, or a library it uses, is using the deprecated Carbon Component Manager for hosting Audio Units. Support for this will be removed in a future release. Also, this makes the host incompatible with version 3 audio units. Please transition to the API's in AudioComponent.h.

However I am not getting the warning for the JuceDemoPlugin and also not for a freshly created plugin project in Juce. 

But my plugins are just using JUCE and no other libraries. So I've been trying to figure out how the configuration is different from JuceDemoPlugin and so far, no joy :(. I guess more Juce developers will see this issue and it would be awesome if someone could figure out what part of the configuration makes the difference. I already tried different Deployment Targets, not building for AAX, disabling plugin hosting in the project without success.

 


#11

In your own plugin, are you building with a SDK compatibility version that's very old, e.g. 10.5 or 10.6? If so, that might be where your Carbon dependency is coming from, and it'd be worth trying to rebuild it for 10.7 or later.


#12

FWIW, my non working plugin is built using 10.6 SDK with xcode 3.2

so this is maybe an SDK issue.


#13

I was using 10.6.8 compatibilty target before and that was the first thing I changed. Now I think I really have all the same settings as the JuceDemoPlugin, but that one still validates and mine does not.

I'll now try to merge my sources with a fresh audio plugin project to figure out when it breaks.

The fact that the JuceDemoPlugin does validate is quite amazing. It even validates with deployment target 10.6, but I have a feeling XCode 7 ignores that setting anyway when it comes from Introjucer. There's a discussion on the CoreAudioList about this and people have recommended various changes to fix this issue, but to my knowledge this suggestions are all proved wrong by the fact the JuceDemoPlugin validates successfully.


#14

Is your plugin failing for the same reason given earlier in this thread, i.e. Carbon being deprecated?

Because Apple have also introduced more aggressive sandboxing, which means that if your plugin tries to read/write to the global filesystem, it can be failed for that reason too.


#15

Nah it's the same warning about Carbon Component Manager. Let's see if more Juce developers run into the problem today. I'll now go on with the merge of my code and the Juce default plugin code and will post my findings once that's done.. That'll probably take some hours.


#16

I managed to get a new project to fail validation in the meantime. It happened when I enabled to "Accepts Midi Input" and then there was a state where toggling that option would lead to fail/success.

however the JuceDemoPlugin already had that enabled and still passes validation.

I now was able to build one of my plugins to pass validation by creating a new XCode exporter in Introjucer. I have no idea why that worked. I'm starting to think this is just a very odd random bug in the new OS and additional Problems caused by XCode 7.


#17

To wrap up my day.. I got things to work on 10.11. It all turned out to be a bit too much fuss around nothing. Turns out.. the warning does in fact not make Logic fail validation, it was something else that happened to otristan as discussed on the CoreAudioList. Today I saw many plugins produce the warning #140 but as it should be, they still work in Logic X.

I also managed to get rid of the warning for myself which hopefully means my stuff is future proof. What I did to get there was to create a new XCode exporter in Introjucer. I guess something did change in the post build script or my projects somehow just got messed up. After creating the new exporter there's no more warning and I finally have a plugin that works on 10.11 as well as 10.6.8.


#18

I just checked all my plugins ( i use XCode 7.0, compatibilty Version 10.6! and latest SDK build on Yosemity ) on El Capitan now. They work and validate fine in Logic Pro X 64bit

So this is definitly NOT a problem with an old compatiblity version! But i recommend always to use latest XCode and SDK (Actually i can't see no reason why one should use an older SDK instead of the current?!) 

 

 

 


#19

Juce plug-ins used to have "Other Rez Flags" that referenced Carbon. Could that be the reason?

e.g. 
                OTHER_REZFLAGS = "-d i386_$i386 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Extras/CoreAudio/AudioUnits/AUPublic/AUBase\"";

Pete