Hi, I had this happening with homebrew's Qt as-well. Perhaps it is because homebrew sets the owner of the Qt files to root (but not 100% sure). Anyway although it is great that homebrew ships Qt, I would not suggest deploying applications with their Qt binaries. It may result in a package that won't run on lower versions of OSX than your development machine has, because of a high "macosx-version-min" (happened to me).
Using a binary Qt package or building Qt yourself with a low macosx-version-min is safer, and won't require sudo for macdeployqt. Br, Alessandro ________________________________________ From: [email protected] [[email protected]] on behalf of Sensei [[email protected]] Sent: Monday, April 07, 2014 14:43 To: [email protected] Subject: [Interest] Deploying on Mac permissions and automation Dear all, I am experimenting with MacOS X (Qt 4.8.5), and I am finding it quite unusual. The application is built by Xcode, and Qt comes from homebrew. The first question: does macdeployqt need special permissions? If I run it as a standard user, I get errors, if I sudo it, everything is fine: sensei:Debug% macdeployqt MyApp.app ERROR: "error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip: file: /Users/sensei/Documents/Projects/MyApp/MyApp/DerivedData/MyApp/Build/Products/Debug/MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore is not writable (Permission denied) " ERROR: "" ERROR: "error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't open input file: MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore for writing (Permission denied) error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't lseek to offset: 0 in file: MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore for writing (Bad file descriptor) error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't write new headers in file: MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore (Bad file descriptor) error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't close written on input file: MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore (Bad file descriptor) " ERROR: "" ERROR: "error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip: file: /Users/sensei/Documents/Projects/MyApp/MyApp/DerivedData/MyApp/Build/Products/Debug/MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui is not writable (Permission denied) " ERROR: "" ERROR: "error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't open input file: MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui for writing (Permission denied) error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't lseek to offset: 0 in file: MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui for writing (Bad file descriptor) error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't write new headers in file: MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui (Bad file descriptor) error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't close written on input file: MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui (Bad file descriptor) " ERROR: "" ERROR: "error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't open input file: MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui for writing (Permission denied) error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't lseek to offset: 0 in file: MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui for writing (Bad file descriptor) error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't write new headers in file: MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui (Bad file descriptor) error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: can't close written on input file: MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui (Bad file descriptor) " ERROR: "" However, with sudo it works: sensei:Debug% sudo macdeployqt MyApp.app -verbose=3 Log: Using otool: Log: inspecting "MyApp.app/Contents/MacOS/MyApp" Log: Adding framework: Log: Framework name "QtCore.framework" Framework directory "/usr/local/lib/" Framework path "/usr/local/lib/QtCore.framework" Binary directory "Versions/4" Binary name "QtCore" Binary path "/Versions/4/QtCore" Version "4" Install name "/usr/local/lib/QtCore.framework/Versions/4/QtCore" Deployed install name "@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore" Source file Path "/usr/local/lib/QtCore.framework/Versions/4/QtCore" Destination Directory (relative to bundle) "Contents/Frameworks/QtCore.framework/Versions/4" Log: Adding framework: Log: Framework name "QtGui.framework" Framework directory "/usr/local/lib/" Framework path "/usr/local/lib/QtGui.framework" Binary directory "Versions/4" Binary name "QtGui" Binary path "/Versions/4/QtGui" Version "4" Install name "/usr/local/lib/QtGui.framework/Versions/4/QtGui" Deployed install name "@executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui" Source file Path "/usr/local/lib/QtGui.framework/Versions/4/QtGui" Destination Directory (relative to bundle) "Contents/Frameworks/QtGui.framework/Versions/4" Log: Log: Deploying Qt frameworks found inside: ("MyApp.app/Contents/MacOS/MyApp") Log: Using install_name_tool: Log: in "MyApp.app/Contents/MacOS/MyApp" Log: change reference "/usr/local/lib/QtCore.framework/Versions/4/QtCore" Log: to "@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore" Log: copied: "/usr/local/lib/QtCore.framework/Versions/4/QtCore" Log: to "MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore" Log: Using strip: Log: stripped "MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore" Log: Using install_name_tool: Log: change identification in "MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore" Log: to "@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore" Log: Using otool: Log: inspecting "MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore" Log: Using install_name_tool: Log: in "MyApp.app/Contents/MacOS/MyApp" Log: change reference "/usr/local/lib/QtGui.framework/Versions/4/QtGui" Log: to "@executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui" Log: copied: "/usr/local/lib/QtGui.framework/Versions/4/QtGui" Log: to "MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui" Log: copied: "/usr/local/lib/QtGui.framework/Resources/qt_menu.nib/classes.nib" Log: to "MyApp.app/Contents/Frameworks/QtGui.framework/Resources/qt_menu.nib/classes.nib" Log: copied: "/usr/local/lib/QtGui.framework/Resources/qt_menu.nib/info.nib" Log: to "MyApp.app/Contents/Frameworks/QtGui.framework/Resources/qt_menu.nib/info.nib" Log: copied: "/usr/local/lib/QtGui.framework/Resources/qt_menu.nib/keyedobjects.nib" Log: to "MyApp.app/Contents/Frameworks/QtGui.framework/Resources/qt_menu.nib/keyedobjects.nib" Log: Using strip: Log: stripped "MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui" Log: Using install_name_tool: Log: change identification in "MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui" Log: to "@executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui" Log: Using otool: Log: inspecting "MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui" Log: Adding framework: Log: Framework name "QtCore.framework" Framework directory "/usr/local/Cellar/qt/4.8.5/lib/" Framework path "/usr/local/Cellar/qt/4.8.5/lib/QtCore.framework" Binary directory "Versions/4" Binary name "QtCore" Binary path "/Versions/4/QtCore" Version "4" Install name "/usr/local/Cellar/qt/4.8.5/lib/QtCore.framework/Versions/4/QtCore" Deployed install name "@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore" Source file Path "/usr/local/Cellar/qt/4.8.5/lib/QtCore.framework/Versions/4/QtCore" Destination Directory (relative to bundle) "Contents/Frameworks/QtCore.framework/Versions/4" Log: Using install_name_tool: Log: in "MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui" Log: change reference "/usr/local/Cellar/qt/4.8.5/lib/QtCore.framework/Versions/4/QtCore" Log: to "@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore" Log: Log: Deploying plugins from "/usr/local/plugins" Log: Created configuration file: "MyApp.app/Contents/Resources/qt.conf" Log: This file sets the plugin search path to "MyApp.app/Contents/PlugIns" sensei:Debug% Second question, related to the above: why isn't install_name_tool working? Starting the application on a vanilla computer I get the ominous error "Library not loaded: /usr/local/Cellar...", which is referenced from QtGui inside my app bundle. In the above log, I see that QtCore is tentatively installed with a relative path: Log: Deploying Qt frameworks found inside: ("MyApp.app/Contents/MacOS/MyApp") Log: Using install_name_tool: Log: in "MyApp.app/Contents/MacOS/MyApp" Log: change reference "/usr/local/lib/QtCore.framework/Versions/4/QtCore" Log: to "@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore" Log: copied: "/usr/local/lib/QtCore.framework/Versions/4/QtCore" Log: to "MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore" So, actually I'd expected not to have the error. Am I doing something wrong? Am I misreading the log? Thanks! _______________________________________________ Interest mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/interest _______________________________________________ Interest mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/interest
