Can I use homebrew's qt5 with capybara-webkit?

Jared Beck picture Jared Beck · Jun 12, 2013 · Viewed 9.7k times · Source

I want to use qt5's QtWebKit with capybara-webkit.

brew uninstall qt
Uninstalling /usr/local/Cellar/qt/4.8.4...
brew install qt5
This formula is keg-only: so it was not symlinked into /usr/local.
🍺  /usr/local/Cellar/qt5/5.0.2: 3103 files, 140M, built in 60.9 minutes

If I force brew to create the symlinks for qt5 I can build the native extension for capybara-webkit ..

brew link --force qt5
Linking /usr/local/Cellar/qt5/5.0.2... 122 symlinks created
gem install capybara-webkit -v '1.0.0'
Successfully installed capybara-webkit-1.0.0

.. but webkit_server crashes hard ..

bundle exec rake test:integration
Errno::EADDRNOTAVAIL: Can't assign requested address - connect(2)
dyld: Library not loaded: /private/tmp/qt5-KytU/qt-everywhere-opensource-src-5.0.2/qtwebkit/lib/QtWebKit.framework/Versions/5/QtWebKit
  Referenced from: /usr/local/opt/qt5/lib/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets
  Reason: image not found

See full osx crash report.

I tried installing capybara-webkit with LDFLAGS and CPPFLAGS but webkit_server still crashes hard.

env LDFLAGS=-L/usr/local/opt/qt5/lib \
  CPPFLAGS=-I/usr/local/opt/qt5/include \
  gem install capybara-webkit -v '1.0.0'

Answer

IAmNaN picture IAmNaN · Feb 13, 2015

NOTE: IAmNaN here... this answer worked find for El Cap and Yosemite but it is no longer relevant as of MacOS Sierra. Instead follow the instructions from Thoughtbot. To summarize...

  1. Download and install a new Qt from here.
  2. Edit ~/Qt5.5.1/5.5/clang_64/mkspecs/features/mac/default_pre.prf.
  3. Around line 15 find and replace -find xcrun 2 with -find xcodebuild 2.
  4. Save and run PATH=~/Qt5.5.1/5.5/clang_64/bin:$PATH gem install capybara-webkit

Now back to our regularly scheduled answer....

I got this to work on OSX Yosemite. The reason for building against Qt5 was to get some fixes not in Qt4 that prevented capybara-webkit from using font and stylesheet assets in some circumstances.

Comment out the capybara and capybara-webkit gems from your gemfile. Then:

bundle
gem uninstall capybara-webkit
gem uninstall capybara # if it complains about dependencies 'gem uninstall' them first
brew remove qt
brew remove qt5 # if you've been playing around

From a clean environment (restart your terminal):

brew tap homebrew/versions
brew install qt55
brew linkapps qt55
brew link --force qt55

Uncomment capybara and capybara-webkit in the gemfile and then:

bundle install

Note: You may safely ignore the "brew unlink" warnings issued by brew doctor.