believe it or not my app still supports PPC
i've been building FAT apps using xcode 3.2.6 which miraculously still works for me on 10.9
trouble now is code signing
we're required to have all components signed as well as the app itself
see more info here:
http://furbo.org/2013/10/17/code-signing-and-mavericks/now, this works fine if you're not building fat, as apparently the current growl framework is signed
however the previous one, for PPC, version 1.2.3 is NOT signed?
"okay fine i'll just sign it myself" i said smugly
but the current method of having "fat growl" fails. the method i'm using is this:
see that? 2 versions of growl, one loaded dynamically at runtime depending on if it's PPC, using this trixy bit of code:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
ScNSAutoReleasePool sc;
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *path = [[mainBundle privateFrameworksPath] stringByAppendingPathComponent:@"Growl"];
bool ppcB = false;
#ifdef __ppc__
ppcB = true;
#endif
if (NSAppKitVersionNumber >= 1038 && !ppcB) {
path = [path stringByAppendingPathComponent:@"1.3"];
} else {
path = [path stringByAppendingPathComponent:@"1.2.3"];
}
path = [path stringByAppendingPathComponent:@"Growl.framework"];
LogCFStr("path", path);
NSBundle *growlFramework = [NSBundle bundleWithPath:path];
if ([growlFramework load]){
NSDictionary *infoDictionary = [growlFramework infoDictionary];
LogCFStr("Using Growl.framework");
LogCFStr("CFBundleShortVersionString", [infoDictionary objectForKey:@"CFBundleShortVersionString"]);
LogCFStr("kCFBundleVersionKey", [infoDictionary objectForKey:(NSString *)kCFBundleVersionKey]);
Class growlBridge = NSClassFromString(@"GrowlApplicationBridge");
if ([growlBridge respondsToSelector:@selector(setGrowlDelegate:)]) {
LogCFStr("Growl FULL JOY!");
[growlBridge performSelector:@selector(setGrowlDelegate:) withObject:self];
} else {
LogCFStr("Growl does not respond to selector");
}
} else {
LogCFStr("Growl did not load");
}
}and i am able to codesign that framework
trouble happens when i go to sign my app:
export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"
codesign -f -s "Developer ID Application: David M. Cotter" "build/kJams Pro.app"
build/kJams Pro.app: replacing existing signature
build/kJams Pro.app: bundle format unrecognized, invalid, or unsuitable
In subcomponent: /Users/davec/Developer/depot/kJams/Development/build/kJams Pro.app/Contents/Frameworks/Growl/1.2.3it seems to choke on the fact that there are folders in the frameworks folder?
so even tho "Frameworks/Growl/1.2.3/Growl.framework" is signed, it fails on "Frameworks/Growl/1.2.3/"
so, do you have a solution to this?