I tried to download and build the source code for Sequel Pro today and ran into a hitch. After following the instructions for grabbing the source code and trying to compile it, X-Code refused to succesfully build the app, instead opting for this error:
If you click the icon on the far right to expand the problem, at the bottom is the relevant error message:
Failure Reason: Could not determine the location of the plug-in with the identifier net.wafflesoftware.ShortcutRecorder.IB.Leopard
Thankfully this is more specific than the previous ‘Unable to resolve plug-in dependency for “BundleEditor.xib”‘ error. To fix it we need to download, build and install an Interface Builder plugin called shortcutrecorder. Get the source code with this command:
svn checkout http://shortcutrecorder.googlecode.com/svn/trunk/ shortcutrecorder-read-only
Once you have the code, open its project file in X-Code, and before you click ‘Build’, make sure you set the active target to “ShortcutRecorder.ibplugin – standalone” as per the screenshot below:
Then build the project. Once successful, navigate to the shortcutrecorder’s project directory in Finder, open the build/Debug folder, and double-click ShortcutRecorder.ibplugin. It will open silently in Interface Builder.
Now go back into X-Code, close the shortcutrecorder project, and Clean All Targets in the Sequel Pro project. Once done, click ‘Build and Run’ and you should see a fresh copy of Sequel Pro running in your dock.
Interestingly, the Sequel Pro source tree includes the ShortcutRecorder .ibplugin, in Frameworks/ShortcutRecorder.framework/Versions/A/Resources/ShortcutRecorder.ibplugin (it gets stripped on build). The reason it’s in that particular location is that Xcode/Interface Builder are usually smart enough to pick up .ibplugins in those locations – we include the BWToolkit .ibplugin for the same reason, for example.
Unfortunately, as you’ve found, this seems to glitch out occasionally – sometimes a relaunch lets it pick it up automatically, sometimes opening up BundleEditor.xib will let it pick it up, and the good news is that once it’s found it, it won’t need to look for it again.
I’ll update the (outdated) README file to reflect this info, but building plugins yourself will of course also work 🙂