fractious fractious - 4 months ago 19
Swift Question

ibtool fails to compile storyboard in Xcode 7.1 Beta

Having updated from Xcode 7.0 Beta 3 to 7.1 Beta (all intermediate releases including the 7.0 GM had a crash-on-launch bug for my project, which has only been fixed in 7.1 Beta) I can't build my project due to the following error:

CompileStoryboard MyApp/Resources/Storyboards/Main.storyboard
cd /Users/me/Developer/my-app
export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode-beta.app/Contents/Developer/usr/bin/..
/Applications/Xcode-beta.app/Contents/Developer/usr/bin/ibtool --errors --warnings --notices --module MyApp --output-partial-info-plist /Users/me/Library/Developer/Xcode/DerivedData/MyApp-bwakexzthboxucdaodqtbbbwgsaz/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Main-SBPartialInfo.plist --auto-activate-custom-fonts --target-device iphone --minimum-deployment-target 8.0 --output-format human-readable-text --compilation-directory /Users/me/Developer/my-app/MyApp/Resources/Storyboards/Main.storyboard


/ com.apple.ibtool.errors */
: error: Not enough arguments provided; where is the input document to operate on?


Xcode is configured to use the Xcode 7.1 (7B60) command line tools:

$ xcode-select -p
/Applications/Xcode-beta.app/Contents/Developer


And
ibtool
appears to be the correct version:

$ ibtool --version
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-/
<plist version="1.0">
<dict>
<key>com.apple.ibtool.version</key>
<dict>
<key>bundle-version</key>
<string>9046</string>
<key>short-bundle-version</key>
<string>7.1</string>
</dict>
</dict>
</plist>


EDIT: Comparing the output from a successful build in Xcode 7.0 Beta 3 (formatted for clarity):

CompileStoryboard MyApp/Resources/Storyboards/Main.storyboard
cd /Users/me/Developer/my-app
export PATH="/Applications/Xcode 7.0 Beta/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode 7.0 Beta/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
export XCODE_DEVELOPER_USR_PATH="/Applications/Xcode 7.0 Beta/Xcode-beta.app/Contents/Developer/usr/bin/.."
/Applications/Xcode\ 7.0\ Beta/Xcode-beta.app/Contents/Developer/usr/bin/ibtool
--errors
--warnings
--notices
--module MyApp
--output-partial-info-plist /Users/me/Library/Developer/Xcode/DerivedData/MyApp-bwakexzthboxucdaodqtbbbwgsaz/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Main-SBPartialInfo.plist
--auto-activate-custom-fonts
--target-device iphone
--minimum-deployment-target 8.0
--output-format human-readable-text
--compilation-directory /Users/me/Library/Developer/Xcode/DerivedData/MyApp-bwakexzthboxucdaodqtbbbwgsaz/Build/Products/Debug-iphonesimulator/MyApp.app
/Users/me/Developer/my-app/MyApp/Resources/Storyboards/Main.storyboard

2015-09-17 15:44:06.451 Interface Builder Cocoa Touch Tool[1216:88742] Error creating notification handler for simulator graphics quality override: 1000000


with the unsuccessful one from Xcode 7.1 Beta:

CompileStoryboard MyApp/Resources/Storyboards/Main.storyboard
cd /Users/me/Developer/my-app
export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode-beta.app/Contents/Developer/usr/bin/..
/Applications/Xcode-beta.app/Contents/Developer/usr/bin/ibtool
--errors
--warnings
--notices
--module MyApp
--output-partial-info-plist /Users/me/Library/Developer/Xcode/DerivedData/MyApp-bwakexzthboxucdaodqtbbbwgsaz/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Main-SBPartialInfo.plist
--auto-activate-custom-fonts
--target-device iphone
--minimum-deployment-target 8.0
--output-format human-readable-text
--compilation-directory
/Users/me/Developer/my-app/MyApp/Resources/Storyboards/Main.storyboard

/* com.apple.ibtool.errors */
: error: Not enough arguments provided; where is the input document to operate on?


reveals that I seem to be missing a value for the
--compilation-directory
argument and so the path to the storyboard is being used instead of as the target file for compilation.

Is it possible to inspect/modify this compilation step or is this likely a bug in Xcode?

Answer

So thanks to an Apple support staff member, the solution is to move the Main.storyboard file from the Compile Sources build phase to the Copy Bundle Resources phase.