Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-32896

OS X Frameworks can not be code signed correctly, existing instructions are incorrect

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P1: Critical
    • Resolution: Done
    • Affects Version/s: 4.8.5, 5.2.0
    • Fix Version/s: None
    • Component/s: Build System
    • Environment:

      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

          For Gerrit Dashboard: QTBUG-32896
          # Subject Branch Project Status CR V

            Activity

              People

              • Assignee:
                sorvig Morten Sørvig
                Reporter:
                rossb Ross Bencina
              • Votes:
                34 Vote for this issue
                Watchers:
                45 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: