Homebrew-core: Qt 5.6.1-1: macdeployqt doesn't fixup bundle dependencies in plugins

Created on 22 Jul 2016  ·  26Comments  ·  Source: Homebrew/homebrew-core

Please follow the general troubleshooting steps first:

  • [x] Ran brew update and retried your prior step?
  • [x] Ran brew doctor, fixed as many issues as possible and retried your prior step?

    Bug reports:

macdeployqt does not work as expected in homebrew qt 5.6.1-1,
though it did work in homebrew qt 5.6.0.

macdeployqt copies plugins (e.g. platforms/libqcocoa.dylib) but fails to fixup any plugin bundle dependencies with install_name_tool -change .... I verified the failure with otool -L ... (see below). However macdeployqt still fixes the main executable and bundled frameworks as expected.
EDIT: Also fails to fixup bundle dependencies in frameworks. Only the Id get fixed.

Does not work:

  • homebrew macdeployqt (5.6.1-1) [app compiled with homebrew qt 5.6.1-1]

    Does work:

  • homebrew macdeployqt (5.6.0) [app compiled with homebrew qt 5.6.0]

  • homebrew macdeployqt (5.6.0) [app compiled with homebrew qt 5.6.1-1]
  • official qt.io macdeployqt (5.6.1-1) [app compiled with official qt.io 5.6.1-1]

The problem must be with homebrew qt 5.6.1-1 since official qt.io macdeployqt 5.6.1-1 works fine.

Notice the difference in verbose output of homebrew macdeployqt:

5.6.1-1:
Log: change reference "/usr/local/opt/qt5/lib/QtGui.framework/Versions/5/QtGui"

5.6.0:
Log: change reference "/usr/local/Cellar/qt5/5.6.1-1/lib/QtGui.framework/Versions/5/QtGui"

homebrew macdeployqt 5.6.1-1 (error):

Log:
Log: Deploying Qt frameworks found inside: ("src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib")
Log: Using install_name_tool:
Log:  in "src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib"
Log:  change reference "/usr/local/opt/qt5/lib/QtGui.framework/Versions/5/QtGui"
Log:  to "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui"
Log: Using install_name_tool:
Log:  in "src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib"
Log:  change reference "/usr/local/opt/qt5/lib/QtCore.framework/Versions/5/QtCore"
Log:  to "@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore"
Log: Using install_name_tool:
Log:  in "src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib"
Log:  change reference "/usr/local/opt/qt5/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log:  to "@executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log:  copied: "/usr/local/Cellar/qt5/5.6.1-1/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log:  to "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log: copy: "/usr/local/Cellar/qt5/5.6.1-1/lib/QtPrintSupport.framework/Resources" "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/Resources"
Log:  copied: "/usr/local/Cellar/qt5/5.6.1-1/lib/QtPrintSupport.framework/Resources/Info.plist"
Log:  to "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/Resources/Info.plist"
Log:  symlink "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport"
Log:  points to "Versions/Current/QtPrintSupport"
Log:  symlink "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Resources"
Log:  points to "Versions/Current/Resources"
Log:  symlink "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/Current"
Log:  points to "5"
Log: Using strip:
Log:  stripped "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log: Using install_name_tool:
Log:  change identification in "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log:  to "@executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log: Using otool:
Log:  inspecting "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log: Using otool:
Log:  inspecting "/usr/local/Cellar/qt5/5.6.1-1/lib/QtWidgets.framework/Versions/5/QtWidgets"
Log: Adding framework:
Log: Framework name "QtWidgets.framework" 
 Framework directory "/usr/local/Cellar/qt5/5.6.1-1/lib/" 
 Framework path "/usr/local/Cellar/qt5/5.6.1-1/lib/QtWidgets.framework" 
 Binary directory "Versions/5" 
 Binary name "QtWidgets" 
 Binary path "/Versions/5/QtWidgets" 
 Version "5" 
 Install name "/usr/local/opt/qt5/lib/QtWidgets.framework/Versions/5/QtWidgets" 
 Deployed install name "@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets" 
 Source file Path "/usr/local/Cellar/qt5/5.6.1-1/lib/QtWidgets.framework/Versions/5/QtWidgets" 
 Framework Destination Directory (relative to bundle) "Contents/Frameworks/QtWidgets.framework" 
 Binary Destination Directory (relative to bundle) "Contents/Frameworks/QtWidgets.framework/Versions/5" 
$ otool -L build/src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib 
build/src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib:
    /usr/local/opt/qt5/plugins/platforms/libqcocoa.dylib (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0)
    /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 157.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /usr/lib/libcups.2.dylib (compatibility version 2.0.0, current version 2.11.0)
    /usr/local/Cellar/qt5/5.6.1-1/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.6.0, current version 5.6.1)
    /usr/local/Cellar/qt5/5.6.1-1/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.6.0, current version 5.6.1)
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1404.46.0)
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
    /usr/local/Cellar/qt5/5.6.1-1/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport (compatibility version 5.6.0, current version 5.6.1)
    /usr/local/Cellar/qt5/5.6.1-1/lib/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.6.0, current version 5.6.1)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1258.1.0)
    /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 728.9.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1258.0.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

homebrew macdeployqt 5.6.0 (expected):

Log:
Log: Deploying Qt frameworks found inside: ("src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib")
Log: Using install_name_tool:
Log:  in "src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib"
Log:  change reference "/usr/local/Cellar/qt5/5.6.1-1/lib/QtGui.framework/Versions/5/QtGui"
Log:  to "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui"
Log: Using install_name_tool:
Log:  in "src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib"
Log:  change reference "/usr/local/Cellar/qt5/5.6.1-1/lib/QtCore.framework/Versions/5/QtCore"
Log:  to "@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore"
Log: Using install_name_tool:
Log:  in "src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib"
Log:  change reference "/usr/local/Cellar/qt5/5.6.1-1/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log:  to "@executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log:  copied: "/usr/local/Cellar/qt5/5.6.1-1/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log:  to "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log: copy: "/usr/local/Cellar/qt5/5.6.1-1/lib/QtPrintSupport.framework/Resources" "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/Resources"
Log:  copied: "/usr/local/Cellar/qt5/5.6.1-1/lib/QtPrintSupport.framework/Resources/Info.plist"
Log:  to "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/Resources/Info.plist"
Log:  symlink "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport"
Log:  points to "Versions/Current/QtPrintSupport"
Log:  symlink "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Resources"
Log:  points to "Versions/Current/Resources"
Log:  symlink "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/Current"
Log:  points to "5"
Log: Using strip:
Log:  stripped "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log: Using install_name_tool:
Log:  change identification in "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log:  to "@executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log: Using otool:
Log:  inspecting "src/KeePassX.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport"
Log: Adding framework:
Log: Framework name "QtWidgets.framework" 
 Framework directory "/usr/local/Cellar/qt5/5.6.1-1/lib/" 
 Framework path "/usr/local/Cellar/qt5/5.6.1-1/lib/QtWidgets.framework" 
 Binary directory "Versions/5" 
 Binary name "QtWidgets" 
 Binary path "/Versions/5/QtWidgets" 
 Version "5" 
 Install name "/usr/local/Cellar/qt5/5.6.1-1/lib/QtWidgets.framework/Versions/5/QtWidgets" 
 Deployed install name "@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets" 
 Source file Path "/usr/local/Cellar/qt5/5.6.1-1/lib/QtWidgets.framework/Versions/5/QtWidgets" 
 Framework Destination Directory (relative to bundle) "Contents/Frameworks/QtWidgets.framework" 
 Binary Destination Directory (relative to bundle) "Contents/Frameworks/QtWidgets.framework/Versions/5" 
$ otool -L build/src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib 
build/src/KeePassX.app/Contents/PlugIns/platforms/libqcocoa.dylib:
    /usr/local/opt/qt5/plugins/platforms/libqcocoa.dylib (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0)
    /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 157.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /usr/lib/libcups.2.dylib (compatibility version 2.0.0, current version 2.11.0)
    @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.6.0, current version 5.6.1)
    @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.6.0, current version 5.6.1)
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1404.46.0)
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
    @executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport (compatibility version 5.6.0, current version 5.6.1)
    @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.6.0, current version 5.6.1)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1258.1.0)
    /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 728.9.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1258.0.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
upstream issue

Most helpful comment

Thanks, seems to be an upstream issue then.
Lets see if qt 5.7.0 handles it already, otherwise it's worthwhile to report the issue.

I developed a simple patch for macdeployqt which fixes the problem for me.

--- shared.cpp.orig 2016-07-27 21:06:31.000000000 +0200
+++ shared.cpp  2016-07-27 21:28:03.000000000 +0200
@@ -807,6 +807,10 @@
             deployedInstallName = framework.deployedInstallName;
         }
         changeInstallName(framework.installName, deployedInstallName, binary);
+        QString canonicalInstallName = QFileInfo(framework.installName).canonicalFilePath();
+        if (canonicalInstallName != framework.installName) {
+            changeInstallName(canonicalInstallName, deployedInstallName, binary);
+        }
     }
 }

All 26 comments

Can you reproduce this with a binary Qt from outside Homebrew? If so, this is not our issue.

My apologies, reread the issue and saw that seems it is ours 👍

I figured out what's causing the problem.

macdeployqt uses the framework identification name to replace absolute dependency paths when creating the bundle. The identification name in all frameworks installed by homebrew begins with _"/usr/local/opt/qt5/lib"_. Official qt.io uses the real path (canonical path) and not a symlink.
Homebrew Qt 5.6.0 also uses _"/usr/local/opt/qt5/lib"_. I don't know why it breaks in 5.6.1-1...

I think the identification name should be set to the canonical path when building the qt5 frameworks.

Workaround (QtCore.framework only):

install_name_tool -id /usr/local/Cellar/qt5/5.6.1-1/lib/QtCore.framework/Versions/5/QtCore /usr/local/Cellar/qt5/5.6.1-1/lib/QtCore.framework/Versions/5/QtCore

Before:

$ otool -L QtCore
QtCore:
    /usr/local/opt/qt5/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.6.0, current version 5.6.1)
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1258.0.0)
    /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 728.9.0)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1404.46.0)
    /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1258.1.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

After:

$ otool -L QtCore
QtCore:
    /usr/local/Cellar/qt5/5.6.1-1/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.6.0, current version 5.6.1)
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1258.0.0)
    /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 728.9.0)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1404.46.0)
    /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1258.1.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

I think the identification name should be set to the canonical path when building the qt5 frameworks.

That would possibly solve your issue, but it would create new ones for us. The way we set the dylib ID is deliberate. If we used the canonical path, all other formulae that link to Qt 5 frameworks would need to be rebuilt, even though there's no good reason for that as the newer frameworks will be binary compatible with the older ones a formula was built with. That's the main reason we use the version-agnostic opt path that involves a symlink and that we update after every upgrade of the qt5 formula to point to the latest installed version.

Since macdeployqt from Qt 5.6.0 still worked, but macdeployqt from Qt 5.6.1-1 no longer does, this sounds a lot like an upstream bug to me and a regression from previous versions. (At least I can't imagine this is a deliberate change.) I wonder if this is still an issue in Qt 5.7.0 (that is unfortunately held back by other problems, see #2087). If it is, I'd consider checking with upstream whether this is a known issue and if not, consider reporting it. If there's a patch with a fix we can use, I'd be fine with incorporating it into the qt5 formula in the mean time.

Now that's probably not what you want to hear, but macdeployqt doesn't have the highest priority for us. The main purpose of the qt5 formula is to serve other Homebrew formulae that depend on it. None of them rely on macdeployqt (as far as I'm aware) and building relocatable binaries is not a top priority for Homebrew, as we expect Homebrew to be installed in a fixed location and not moved around afterwards. If you want to develop with Qt and build your own relocatable binaries that are completely independent of your Homebrew installation, you might be better off with the upstream binary Qt distribution, where being relocatable is a top goal.

@UniqMartin I suspect this upstream commit to break it https://github.com/qt/qttools/commit/75b595a6867652cc2b3ff8b2749f91236b6cb58c

macdeployqt makes it very easy to ship apps bundled with qt5, otherwise customers would need to install qt5 themselves. So it doesn't matter if Homebrew installs qt5 in a fixed location or not.
Hopefully this will be fixed soon, using install_name_tool -change ... to fix up all framework and plugin dependencies is kind of annoying.

By the way why does Homebrew compile qt5 with -no-rpath?

macdeployqt makes it very easy to ship apps bundled with qt5, otherwise customers would need to install qt5 themselves

It's worth noting: Homebrew does not support using our binaries for shipping your own apps and we strongly recommend building Qt (and all your dependencies) from source yourself if you're relying on them behaving in a certain way.

By the way why does Homebrew compile qt5 with -no-rpath?

To quote from a related upstream change in https://codereview.qt-project.org/#/c/138349:

Make -no-rpath build more useful on Apple platforms

[ChangeLog][Platform Specific Changes][OS X] Configure with -no-rpath
will now yield Qt dynamic libraries and frameworks with an absolute
install name (based in -libdir).

OS X package managers like Homebrew install Qt in a fixed location. This
change simplifies deployment for such package managers and is consistent
with the default expectation on Apple platforms for libraries with a
fixed location to also have absolute install names.

While a relocatable installation (the default) also works in this
scenario, it requires all software that depends on Qt to be aware of
this and to embed a suitable RPATH into application binaries (which is
not automatic for non-qmake builds). This might not be true for some
select fallback search locations, but as package managers on OS X tend
not to use those, embedding an RPATH becomes practically mandatory. In a
default Homebrew installation, Qt is configured such that the frameworks
end up in /usr/local/Cellar/qt5/<version>/lib and that will be later
symlinked to /usr/local/opt/qt5/lib, both of which are not searched by
the dynamic linker by default.

TL;DR: Because a build using RPATHs would force every client application to add an appropriate RPATH into their binaries and most build systems aren't prepared to do that.

Thanks, seems to be an upstream issue then.
Lets see if qt 5.7.0 handles it already, otherwise it's worthwhile to report the issue.

I developed a simple patch for macdeployqt which fixes the problem for me.

--- shared.cpp.orig 2016-07-27 21:06:31.000000000 +0200
+++ shared.cpp  2016-07-27 21:28:03.000000000 +0200
@@ -807,6 +807,10 @@
             deployedInstallName = framework.deployedInstallName;
         }
         changeInstallName(framework.installName, deployedInstallName, binary);
+        QString canonicalInstallName = QFileInfo(framework.installName).canonicalFilePath();
+        if (canonicalInstallName != framework.installName) {
+            changeInstallName(canonicalInstallName, deployedInstallName, binary);
+        }
     }
 }

Closing this out as an upstream issue.

@MikeMcQuaid: And which upstream issue would you be referring to…?

The one that someone should consider reporting.

@MikeMcQuaid: Ah, OK. Thanks for clarifying that. I wasn't sure whether you were referring to an unlinked issue that had already been reported upstream or, as it turned out, an issue that has yet to be filed upstream.

@RandomDSdevel Happy to clarify 👍

Someone please help me to report this problem to the upstream. https://codereview.qt-project.org
Because English is not my first language, I can't explanation technical details to the Qt developers about this problem.

@yezezey If you post what you're planning on submitting upstream here I and others can help make suggestions to your message. We're not going to do the submission for you, though. I wouldn't worry about your English; English isn't the first language for the majority of the Qt developers either.

I'd strongly suggest submitting the patch to code review rather than a bug report. The prior is much more likely to see a response.

@MikeMcQuaid @UniqMartin My patch for macdeployqt was merged into qt dev branch.
Please consider to integrate the fix in current formula. Thanks.

https://github.com/qt/qttools/commit/8f9b747f030bb41556831a23ec2a8e7e76fb7dc0

It would be great if the patch mentioned above is included. Any chances it is added?.

@rockihack @muammar Someone needs to submit a new pull request to do so.

@MikeMcQuaid thanks for your reply. Unfortunately, I don't have enough disk space to do it (I tried building the Formula with the patch). So I have to be patient. In any case, I will try to find another MacBook and try it again.

@muammar If the patch is applied that should be sufficient without needing the build to complete.

@MikeMcQuaid There is already a pending pull request. Why do we need to submit a new one?

https://github.com/Homebrew/homebrew-core/pull/8007
https://github.com/Homebrew/formula-patches/pull/99

@MikeMcQuaid but proving that it solves the issue is also important, right?.

@rockihack it has been there since Dec 23, 2016! and it has not been applied yet?. :(

@rockihack Because there's conflicts and comments that need addressed in https://github.com/Homebrew/homebrew-core/pull/8007 and it may be faster for you to do that yourselves.

@muammar Normally but not at this point because I trust the upstream patch behaves as expected.

Was this page helpful?
0 / 5 - 0 ratings