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 |
14756,1 | Fix proposal for Mac Qt binary patching | master | installer-framework/installer-framework | Status: ABANDONED | -1 | 0 |