Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
None
-
4.8.5, 5.2.0
-
Xcode 4.6.1, OS X 10.7.5
Description
1. OS X Frameworks can not be code signed correctly:
Apple's framework code signing instructions explicitly state that it is necessary to sign the versioned bundle directory, as follows:
$admin> # This is the wrong way:
$admin> codesign -s my-signing-identity ../FooBarBaz.framework
$admin> # This is the right way:
$admin> codesign -s my-signing-identity ../FooBarBaz.framework/Versions/A
Under "Signing Frameworks" here:
http://developer.apple.com/library/mac/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-SUBSECTION9
Notice that "the right way" involves signing the versioned directory. That this is the correct way is discussed further here:
http://stackoverflow.com/questions/7697508/how-do-you-codesign-framework-bundles-for-the-mac-app-store
Right now, the bug is that if you try to sign a versioned Qt framework directory (e.g. QtCore.framework/Versions/4) then you will receive the error "bundle format unrecognized, invalid, or unsuitable". This is because the /4 directory does not contain the Resources/Info.plist as described in QTBUG-32895
It is also necessary for the Info.plist to have the correct CFBundleExecutable field. At the moment it doesn't (see QTBUG-32894).
2. The existing instructions for code signing a Qt framework bundle are incorrect:
The instructions given at the link below do not agree with Apple's instructions above. They suggest to sign the binary. But Apple says that the versioned bundle must be signed.
http://blog.qt.digia.com/blog/2012/04/03/how-to-publish-qt-applications-in-the-mac-app-store-2/
The current workaround is to restructure the frameworks to have the correct format (with Resources inside 4/ as discussed in QTBUG-32895) and to manually edit the plist to have the correct CFBundleExecutable.
Attachments
Issue Links
- depends on
-
QTBUG-32894 Incorrect (_debug) CFBundleExecutable in all OS X framework Info.plist files
- Closed
-
QTBUG-32895 Mac OSX Frameworks Have Info.plist in Wrong Location: /Contents should be /Versions/4/Resources
- Closed
- relates to
-
QTBUG-38511 macdeployqt tool doesn't copy Info.plist to frameworks.
- Closed
- replaces
-
QTBUG-38511 macdeployqt tool doesn't copy Info.plist to frameworks.
- Closed
For Gerrit Dashboard: QTBUG-32896 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
82319,3 | Fix Info.plist location for frameworks | stable | qt/qtbase | Status: ABANDONED | -1 | 0 |
95442,6 | Fix framework bundle deployment | 5.3 | qt/qttools | Status: MERGED | +2 | 0 |
95456,6 | Add CFBundleVersion to the Info.plist files. | 5.3 | qt/qtbase | Status: MERGED | +2 | 0 |
95576,2 | Fix framework bundle deployment | 4.8 | qt/qt | Status: ABANDONED | -1 | 0 |
95736,4 | Work around legacy framework structures. | 5.3 | qt/qttools | Status: MERGED | +2 | 0 |
95741,2 | Work around legacy framework structures. | 4.8 | qt/qt | Status: ABANDONED | +2 | 0 |
97667,3 | Add CFBundleIdentifier to the bundle Info.plist's | 5.4 | qt/qtbase | Status: ABANDONED | -1 | 0 |
99381,2 | Add CFBundleIdentifier to the bundle Info.plist's | 5.4.0 | qt/qtbase | Status: MERGED | +2 | 0 |
99765,4 | Set CFBundleIdentifier prefix for Qt frameworks | 5.4.0 | qt/qtbase | Status: MERGED | +2 | 0 |
149692,2 | Add a missing CFBundleIdentifier to library template. | dev | qt/qtbase | Status: MERGED | +2 | 0 |