We are currently migrating Bugzilla to GitHub issues.
Any changes made to the bug tracker now will be lost, so please do not post new bugs or make changes to them.
When we're done, all bug URLs will redirect to their equivalent location on the new bug tracker.

Bug 1275

Summary: SDL 1.3 apps get rejected from Mac app store (fix included!)
Product: SDL Reporter: Vern Jensen <vern>
Component: buildAssignee: Sam Lantinga <slouken>
Status: RESOLVED FIXED QA Contact: Sam Lantinga <slouken>
Severity: normal    
Priority: P2 CC: computers57
Version: HG 2.0   
Hardware: x86   
OS: Mac OS X 10.6   
Attachments: Changes the Xcode variable FRAMEWORK_VERSION from 1.3 to B

Description Vern Jensen 2011-08-14 22:47:19 UTC
Apps submitted to the Mac App Store that use SDL 1.3 get rejected with the following error message:

Package "[packagename]": Bundle at "MM.app/Contents/Frameworks/SDL.framework" in Payload not declared in PackageInfo

This is due to the "1.3" version number in the SDL.framework. It needs to not have a period in the name. It could be named "A" or "13" but not "1.3". To change, open the XCode project for SDL. Double-click Targets: Framework . Go to "Packaging" category in Build settings. Change "Framework Version" from 1.3 to "A" or something like that.


Email from an Apple engineer about this:

Hello Vern,

It turns out that the issue which you've encountered is a known issue. The problem has to do with the fact that the SDL.Framework has a pathname which includes a version with the "." (period) character as part of the name - Note the (1.3) in the path names below. You'll observe that the error message has no problem with the SDL_image and SDL_mixer frameworks, only with the SDL.framework
./MM.app/Contents/Frameworks/SDL.framework/Versions/1.3	40755	0/0
./MM.app/Contents/Frameworks/SDL.framework/Versions/1.3/CodeResources	120755	0/0	28	2941952436	_CodeSignature/CodeResources
./MM.app/Contents/Frameworks/SDL.framework/Versions/1.3/Headers	40755	0/0
./MM.app/Contents/Frameworks/SDL.framework/Versions/1.3/Headers/SDL.h	100644	0/0	5115	779091924
./MM.app/Contents/Frameworks/SDL.framework/Versions/1.3/Headers/SDL_assert.h	100644	0/0	8807	284162785
./MM.app/Contents/Frameworks/SDL.framework/Versions/1.3/Headers/SDL_atomic.h	100644	0/0	9385	1995417551
...

There is a fix, but the fix is only available in the Lion release of Xcode. With the release of Xcode for Lion, there are no more releases of Xcode for Snow Leopard. There are 2 solutions - 
1. build and submit the application using Xcode 4.1 from Lion or
2. remove the period from the version number (or remove the version number) from the path of the SDL.framework.

It's great to have a workaround and a choice. I apologize for the bug.
Comment 1 Vern Jensen 2011-08-15 10:41:05 UTC
Note: the SDL_Image framework must also be rebuilt to use the same version number, otherwise it won't load. Not sure what other frameworks also reference the "1.3" version in the SDL framework directly and need modification as well.
Comment 2 C.W. Betts 2011-11-30 15:36:10 UTC
Since SDL 1.2 uses "A" as the framework version (Actually the default for a new framework), I vote we use "B" for 1.3.

This can be done by changing the Framework version (FRAMEWORK_VERSION) from 1.3 to B.
Comment 3 C.W. Betts 2011-11-30 15:44:20 UTC
Created attachment 736 [details]
Changes the Xcode variable FRAMEWORK_VERSION from 1.3 to B
Comment 4 Sam Lantinga 2012-01-06 22:04:14 UTC
I switched it to version A, thanks!
Comment 5 C.W. Betts 2012-01-06 22:58:41 UTC
I would NOT use A. SDL 1.2 uses A, and if I understand correctly, SDL 1.3 and SDL 1.2 are not binary compatible. Having a different link path for 1.2 and 1.3 will solve any runtime linking errors that might occur.
Comment 6 Sam Lantinga 2012-01-07 00:22:09 UTC
Good point.  Until we switch SDL 1.3 to SDL2, we shouldn't use the same link path.

Thanks!
Comment 7 Sam Lantinga 2012-01-07 00:23:15 UTC
http://hg.libsdl.org/SDL/rev/062ce1e65f6e