Uploaded image for project: 'Qt Installer Framework'
  1. Qt Installer Framework
  2. QTIFW-105

Mac Qt binary patch operation does not work in all occasions

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 1.4.0
    • 1.2
    • General
    • None
    • Mac carbon/cocoa

    Description

      MacReplaceInstallNamesOperation::relocateBinary()

      see variable "m_indicator"

      as far as I understood the path parsing logic relies on the fact that the output from "otool -L <some_qt_binary_file>"
      is something like:

      [code]
      /Users/xxxxxx/some/path/here/QtHelp.framework/Versions/4/QtHelp (compatibility version 4.8.0, current version 4.8.0)
      /Users/xxxxxx/some/path/here/QtSql.framework/Versions/4/QtSql (compatibility version 4.8.0, current version 4.8.0)
      /Users/xxxxxx/some/path/here/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.0)
      /Users/xxxxxx/some/path/here/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.0)
      /Users/xxxxxx/some/path/here/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.8.0, current version 4.8.0)
      /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
      /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
      [/code]

      The "m_indicator" gets value from the path "/Users/xxxxxx/some/path/here/" which is then used to further chop off the old/invalid path
      and to substitute the new correct path.

      This does not work if the Mac Qt build is configured with "-no-framework" switch as then the output from "otool -L" is like below:

      [code]
      QtHelp.framework/Versions/4/QtHelp (compatibility version 4.8.0, current version 4.8.0)
      QtSql.framework/Versions/4/QtSql (compatibility version 4.8.0, current version 4.8.0)
      QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.0)
      QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.0)
      QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.8.0, current version 4.8.0)
      /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
      /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
      [/code]

      -> now the "m_indicator" gets no value at all and the logic fails, thus no binaries get patched.

      Attachments

        For Gerrit Dashboard: QTIFW-105
        # Subject Branch Project Status CR V

        Activity

          People

            tjenssen Tim Jenssen
            iknd Iikka Eklund
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes