thoughtbot / capybara-webkit

A Capybara driver for headless WebKit to test JavaScript web apps
https://thoughtbot.com/open-source
MIT License
1.97k stars 426 forks source link

Error compiling on Ubuntu 14.04 and 15.04 #809

Closed EvanHahn closed 9 years ago

EvanHahn commented 9 years ago

In short, I have a completely fresh Ubuntu 14.04 Vagrant box. I cannot install capybara-webkit due to compiling issues.


I created a fresh Ubuntu 14.04 Vagrant box. Here's my Vagrantfile:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
end

Here are all the commands I ran:

# Upgrade everything
sudo apt-get update
sudo apt-get upgrade -y

# Install G++ and QT5
sudo apt-get install g++ qt5-default libqt5webkit5-dev -y

# Install and start RVM
command curl -sSL https://rvm.io/mpapis.asc | gpg --import -
\curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm

# Install Ruby 2.2
rvm install 2.2

# Check versions and stuff
which ruby       # => /home/vagrant/.rvm/rubies/ruby-2.2.1/bin/ruby
ruby --version   # => ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
g++ --version    # => g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
qmake --version  # => QMake version 3.0 / Using Qt version 5.2.1 in /usr/lib/x86_64-linux-gnu

Then, when I run this:

gem install capybara-webkit -v '0.14.2'

I get this nasty output:

Fetching: mini_portile-0.6.2.gem (100%)
Successfully installed mini_portile-0.6.2
Fetching: nokogiri-1.6.6.2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.6.2
Fetching: xpath-2.0.0.gem (100%)
Successfully installed xpath-2.0.0
Fetching: rack-1.6.4.gem (100%)
Successfully installed rack-1.6.4
Fetching: rack-test-0.6.3.gem (100%)
Successfully installed rack-test-0.6.3
Fetching: mime-types-2.6.1.gem (100%)
Successfully installed mime-types-2.6.1
Fetching: capybara-2.4.4.gem (100%)
Successfully installed capybara-2.4.4
Fetching: capybara-webkit-0.14.2.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing capybara-webkit:
        ERROR: Failed to build gem native extension.

    /home/vagrant/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20150703-21096-1s2wa4b.rb extconf.rb
cd src/ && ( test -e Makefile.webkit_server || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2/src/webkit_server.pro -spec linux-g++ -o Makefile.webk
it_server ) && make -f Makefile.webkit_server
make[1]: Entering directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2/src'
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I. -I/usr/include/qt5 -I/usr/inclu
de/qt5/QtWebKit -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -o EnableLogging.o EnableLogging.cpp
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I. -I/usr/include/qt5 -I/usr/inclu
de/qt5/QtWebKit -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -o Authenticate.o Authenticate.cpp
In file included from Authenticate.cpp:2:0:
WebPage.h:9:24: error: invalid use of incomplete type ‘class QWebPage’
 class WebPage : public QWebPage {
                        ^
In file included from /usr/include/qt5/QtWebKit/QtWebKit:5:0,
                 from WebPage.h:3,
                 from Authenticate.cpp:2:
/usr/include/qt5/QtWebKit/qwebelement.h:157:18: error: forward declaration of ‘class QWebPage’
     friend class QWebPage;
                  ^
In file included from Authenticate.cpp:2:0:
WebPage.h:25:29: error: ‘Extension’ has not been declared
     virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
                             ^
WebPage.h:25:56: error: ‘ExtensionOption’ does not name a type
     virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
                                                        ^
WebPage.h:25:80: error: ISO C++ forbids declaration of ‘option’ with no type [-fpermissive]
     virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
                                                                                ^
WebPage.h:25:83: error: ‘ExtensionReturn’ has not been declared
     virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
                                                                                   ^
WebPage.h:32:15: error: expected ‘;’ at end of member declaration
     QWebPage *createWindow(WebWindowType type);
               ^
WebPage.h:32:42: error: expected ‘)’ before ‘type’
     QWebPage *createWindow(WebWindowType type);
                                          ^
WebPage.h:63:36: error: ‘Extension’ has not been declared
     virtual bool supportsExtension(Extension extension) const;
                                    ^
make[1]: *** [Authenticate.o] Error 1
make[1]: Leaving directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2/src'
make: *** [sub-src-webkit_server-pro-make_first-ordered] Error 2
Command 'make' failed

make "DESTDIR=" clean
cd src/ && ( test -e Makefile.webkit_server || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2/src/webkit_server.pro -spec linux-g++ -o Makefile.webk
it_server ) && make -f Makefile.webkit_server clean
make[1]: Entering directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2/src'
rm -f qrc_webkit_server.cpp
rm -f moc_EnableLogging.cpp moc_Authenticate.cpp moc_SetConfirmAction.cpp moc_SetPromptAction.cpp moc_SetPromptText.cpp moc_ClearPromptText.cpp moc_JavascriptAlertMessages.cpp moc_JavascriptConfirmMessage
s.cpp moc_JavascriptPromptMessages.cpp moc_IgnoreSslErrors.cpp moc_ResizeWindow.cpp moc_CurrentUrl.cpp moc_ConsoleMessages.cpp moc_WebPage.cpp moc_Server.cpp moc_Connection.cpp moc_Command.cpp moc_SocketC
ommand.cpp moc_Visit.cpp moc_Find.cpp moc_Reset.cpp moc_Node.cpp moc_JavascriptInvocation.cpp moc_Evaluate.cpp moc_Execute.cpp moc_FrameFocus.cpp moc_Response.cpp moc_NetworkAccessManager.cpp moc_NetworkC
ookieJar.cpp moc_Header.cpp moc_Render.cpp moc_Body.cpp moc_Status.cpp moc_Headers.cpp moc_UnsupportedContentHandler.cpp moc_SetCookie.cpp moc_ClearCookies.cpp moc_GetCookies.cpp moc_CommandParser.cpp moc
_CommandFactory.cpp moc_SetProxy.cpp moc_NullCommand.cpp moc_PageLoadingCommand.cpp moc_SetSkipImageLoading.cpp moc_WebPageManager.cpp moc_WindowFocus.cpp moc_GetWindowHandles.cpp moc_GetWindowHandle.cpp
moc_GetTimeout.cpp moc_SetTimeout.cpp moc_TimeoutCommand.cpp moc_SetUrlBlacklist.cpp moc_NoOpReply.cpp moc_JsonSerializer.cpp
rm -f EnableLogging.o Authenticate.o SetConfirmAction.o SetPromptAction.o SetPromptText.o ClearPromptText.o JavascriptAlertMessages.o JavascriptConfirmMessages.o JavascriptPromptMessages.o IgnoreSslErrors
.o ResizeWindow.o CurrentUrl.o ConsoleMessages.o main.o WebPage.o Server.o Connection.o Command.o SocketCommand.o Visit.o Find.o Reset.o Node.o JavascriptInvocation.o Evaluate.o Execute.o FrameFocus.o Res
ponse.o NetworkAccessManager.o NetworkCookieJar.o Header.o Render.o body.o Status.o Headers.o UnsupportedContentHandler.o SetCookie.o ClearCookies.o GetCookies.o CommandParser.o CommandFactory.o SetProxy.
o NullCommand.o PageLoadingCommand.o SetTimeout.o GetTimeout.o SetSkipImageLoading.o WebPageManager.o WindowFocus.o GetWindowHandles.o GetWindowHandle.o TimeoutCommand.o SetUrlBlacklist.o NoOpReply.o Json
Serializer.o qrc_webkit_server.o moc_EnableLogging.o moc_Authenticate.o moc_SetConfirmAction.o moc_SetPromptAction.o moc_SetPromptText.o moc_ClearPromptText.o moc_JavascriptAlertMessages.o moc_JavascriptC
onfirmMessages.o moc_JavascriptPromptMessages.o moc_IgnoreSslErrors.o moc_ResizeWindow.o moc_CurrentUrl.o moc_ConsoleMessages.o moc_WebPage.o moc_Server.o moc_Connection.o moc_Command.o moc_SocketCommand.
o moc_Visit.o moc_Find.o moc_Reset.o moc_Node.o moc_JavascriptInvocation.o moc_Evaluate.o moc_Execute.o moc_FrameFocus.o moc_Response.o moc_NetworkAccessManager.o moc_NetworkCookieJar.o moc_Header.o moc_R
ender.o moc_Body.o moc_Status.o moc_Headers.o moc_UnsupportedContentHandler.o moc_SetCookie.o moc_ClearCookies.o moc_GetCookies.o moc_CommandParser.o moc_CommandFactory.o moc_SetProxy.o moc_NullCommand.o
moc_PageLoadingCommand.o moc_SetSkipImageLoading.o moc_WebPageManager.o moc_WindowFocus.o moc_GetWindowHandles.o moc_GetWindowHandle.o moc_GetTimeout.o moc_SetTimeout.o moc_TimeoutCommand.o moc_SetUrlBlac
klist.o moc_NoOpReply.o moc_JsonSerializer.o
rm -f *~ core *.core
make[1]: Leaving directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2/src'

make "DESTDIR="
cd src/ && ( test -e Makefile.webkit_server || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2/src/webkit_server.pro -spec linux-g++ -o Makefile.webk
it_server ) && make -f Makefile.webkit_server
make[1]: Entering directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2/src'
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I. -I/usr/include/qt5 -I/usr/inclu
de/qt5/QtWebKit -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -o EnableLogging.o EnableLogging.cpp
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I. -I/usr/include/qt5 -I/usr/inclu
de/qt5/QtWebKit -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -o Authenticate.o Authenticate.cpp
In file included from Authenticate.cpp:2:0:
WebPage.h:9:24: error: invalid use of incomplete type ‘class QWebPage’
 class WebPage : public QWebPage {
                        ^
In file included from /usr/include/qt5/QtWebKit/QtWebKit:5:0,
                 from WebPage.h:3,
                 from Authenticate.cpp:2:
/usr/include/qt5/QtWebKit/qwebelement.h:157:18: error: forward declaration of ‘class QWebPage’
     friend class QWebPage;
                  ^
In file included from Authenticate.cpp:2:0:
WebPage.h:25:29: error: ‘Extension’ has not been declared
     virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
                             ^
WebPage.h:25:56: error: ‘ExtensionOption’ does not name a type
     virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
                                                        ^
WebPage.h:25:80: error: ISO C++ forbids declaration of ‘option’ with no type [-fpermissive]
     virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
                                                                                ^
WebPage.h:25:83: error: ‘ExtensionReturn’ has not been declared
     virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
                                                                                   ^
WebPage.h:32:15: error: expected ‘;’ at end of member declaration
     QWebPage *createWindow(WebWindowType type);
               ^
WebPage.h:32:42: error: expected ‘)’ before ‘type’
     QWebPage *createWindow(WebWindowType type);
                                          ^
WebPage.h:63:36: error: ‘Extension’ has not been declared
     virtual bool supportsExtension(Extension extension) const;
                                    ^
make[1]: *** [Authenticate.o] Error 1
make[1]: Leaving directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2/src'
make: *** [sub-src-webkit_server-pro-make_first-ordered] Error 2

make failed, exit code 2

Gem files will remain installed in /home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-0.14.2 for inspection.
Results logged to /home/vagrant/.rvm/gems/ruby-2.2.1/extensions/x86_64-linux/2.2.0/capybara-webkit-0.14.2/gem_make.out

I think I'm following the instructions exactly...am I missing something? It looks like there's something wrong with QT WebKit, or maybe something involving g++?

mhoran commented 9 years ago

Hey @EvanHahn. You're running a very old version of capybara-webkit. Qt 5 support was introduced in 1.0.0, and I'd recommend you run the latest version, 1.6.0.

EvanHahn commented 9 years ago

Nuked my Vagrant box and made a completely new machine. Ran the same commands as above:

# Upgrade everything
sudo apt-get update
sudo apt-get upgrade -y

# Install G++, Git, and QT5
sudo apt-get install g++ qt5-default libqt5webkit5-dev -y

# Install and start RVM
command curl -sSL https://rvm.io/mpapis.asc | gpg --import -
\curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm

# Install Ruby 2.2
rvm install 2.2

# Check versions and stuff
which ruby       # => /home/vagrant/.rvm/rubies/ruby-2.2.1/bin/ruby
ruby --version   # => ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
g++ --version    # => g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
qmake --version  # => QMake version 3.0 / Using Qt version 5.2.1 in /usr/lib/x86_64-linux-gnu

And then tried to install the latest version of the gem:

gem install capybara-webkit

And got this output:

Fetching: mini_portile-0.6.2.gem (100%)
Successfully installed mini_portile-0.6.2
Fetching: nokogiri-1.6.6.2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.6.2
Fetching: xpath-2.0.0.gem (100%)
Successfully installed xpath-2.0.0
Fetching: rack-1.6.4.gem (100%)
Successfully installed rack-1.6.4
Fetching: rack-test-0.6.3.gem (100%)
Successfully installed rack-test-0.6.3
Fetching: mime-types-2.6.1.gem (100%)
Successfully installed mime-types-2.6.1
Fetching: capybara-2.4.4.gem (100%)
Successfully installed capybara-2.4.4
Fetching: capybara-webkit-1.6.0.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing capybara-webkit:
        ERROR: Failed to build gem native extension.

    /home/vagrant/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20150705-21621-1oj9c6g.rb extconf.rb
cd src/ && ( test -e Makefile.webkit_server || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0/src/webkit_server.pro -o Makefile.webkit_server ) && ma
ke -f Makefile.webkit_server
make[1]: Entering directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0/src'
g++ -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_QUICK_LIB -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_LOCATION_LIB -DQT_WEBKIT_LIB -DQT_QML_LIB -DQT_WIDGETS_LIB -DQ
T_POSITIONING_LIB -DQT_SENSORS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I/usr/include/qt5 -I/usr/include/qt5/QtWebKitWidgets -I/usr/include
/qt5/QtQuick -I/usr/include/qt5/QtOpenGL -I/usr/include/qt5/QtPrintSupport -I/usr/include/qt5/QtLocation -I/usr/include/qt5/QtWebKit -I/usr/include/qt5/QtQml -I/usr/include/qt5/QtWidgets -I/usr/include/qt
5/QtPositioning -I/usr/include/qt5/QtSensors -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -Ibuild -x c++-header -c stable.h -o build/webkit_server.gch/c++
g++ -c -include build/webkit_server -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_QUICK_LIB -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_LOCATION_LIB -DQT_WEBKIT_LIB -
DQT_QML_LIB -DQT_WIDGETS_LIB -DQT_POSITIONING_LIB -DQT_SENSORS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I/usr/include/qt5 -I/usr/include/qt
5/QtWebKitWidgets -I/usr/include/qt5/QtQuick -I/usr/include/qt5/QtOpenGL -I/usr/include/qt5/QtPrintSupport -I/usr/include/qt5/QtLocation -I/usr/include/qt5/QtWebKit -I/usr/include/qt5/QtQml -I/usr/include
/qt5/QtWidgets -I/usr/include/qt5/QtPositioning -I/usr/include/qt5/QtSensors -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -Ibuild -o build/BlockUrl.o BlockUrl.cpp

g++: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
make[1]: *** [build/BlockUrl.o] Error 4
make[1]: Leaving directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0/src'
make: *** [sub-src-webkit_server-pro-make_first-ordered] Error 2
Command 'make' failed

make "DESTDIR=" clean
cd src/ && ( test -e Makefile.webkit_server || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0/src/webkit_server.pro -o Makefile.webkit_server ) && ma
ke -f Makefile.webkit_server clean
make[1]: Entering directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0/src'

rm -f qrc_webkit_server.cpp
rm -f build/moc_BlockUrl.cpp build/moc_AllowUrl.cpp build/moc_SetUnknownUrlMode.cpp build/moc_FindModal.cpp build/moc_AcceptAlert.cpp build/moc_GoForward.cpp build/moc_GoBack.cpp build/moc_WindowMaximize$cpp build/moc_WindowSize.cpp build/moc_WindowCommand.cpp build/moc_WindowOpen.cpp build/moc_WindowClose.cpp build/moc_Version.cpp build/moc_EnableLogging.cpp build/moc_Authenticate.cpp build/moc_SetConfi$mAction.cpp build/moc_SetPromptAction.cpp build/moc_SetPromptText.cpp build/moc_ClearPromptText.cpp build/moc_JavascriptAlertMessages.cpp build/moc_JavascriptConfirmMessages.cpp build/moc_JavascriptPromp$Messages.cpp build/moc_IgnoreSslErrors.cpp build/moc_WindowResize.cpp build/moc_CurrentUrl.cpp build/moc_ConsoleMessages.cpp build/moc_WebPage.cpp build/moc_Server.cpp build/moc_Connection.cpp build/moc_Command.cpp build/moc_SocketCommand.cpp build/moc_Visit.cpp build/moc_Reset.cpp build/moc_Node.cpp build/moc_JavascriptInvocation.cpp build/moc_Evaluate.cpp build/moc_Execute.cpp build/moc_FrameFocus.cpp b
uild/moc_Response.cpp build/moc_NetworkAccessManager.cpp build/moc_NetworkCookieJar.cpp build/moc_Header.cpp build/moc_Render.cpp build/moc_Body.cpp build/moc_Status.cpp build/moc_Headers.cpp build/moc_Un
supportedContentHandler.cpp build/moc_SetCookie.cpp build/moc_ClearCookies.cpp build/moc_GetCookies.cpp build/moc_CommandParser.cpp build/moc_CommandFactory.cpp build/moc_SetProxy.cpp build/moc_NullComman
d.cpp build/moc_PageLoadingCommand.cpp build/moc_SetSkipImageLoading.cpp build/moc_WebPageManager.cpp build/moc_WindowFocus.cpp build/moc_GetWindowHandles.cpp build/moc_GetWindowHandle.cpp build/moc_GetTi
meout.cpp build/moc_SetTimeout.cpp build/moc_TimeoutCommand.cpp build/moc_SetUrlBlacklist.cpp build/moc_NoOpReply.cpp build/moc_JsonSerializer.cpp build/moc_ErrorMessage.cpp build/moc_Title.cpp build/moc_
FindCss.cpp build/moc_JavascriptCommand.cpp build/moc_FindXpath.cpp build/moc_NetworkReplyProxy.cpp build/moc_StdinNotifier.cpp build/moc_RequestHandler.cpp
rm -f build/BlockUrl.o build/AllowUrl.o build/SetUnknownUrlMode.o build/FindModal.o build/AcceptAlert.o build/GoForward.o build/GoBack.o build/WindowMaximize.o build/WindowSize.o build/WindowCommand.o bui
ld/WindowOpen.o build/WindowClose.o build/Version.o build/EnableLogging.o build/Authenticate.o build/SetConfirmAction.o build/SetPromptAction.o build/SetPromptText.o build/ClearPromptText.o build/Javascri
ptAlertMessages.o build/JavascriptConfirmMessages.o build/JavascriptPromptMessages.o build/IgnoreSslErrors.o build/WindowResize.o build/CurrentUrl.o build/ConsoleMessages.o build/main.o build/WebPage.o bu
ild/Server.o build/Connection.o build/Command.o build/SocketCommand.o build/Visit.o build/Reset.o build/Node.o build/JavascriptInvocation.o build/Evaluate.o build/Execute.o build/FrameFocus.o build/Respon
se.o build/NetworkAccessManager.o build/NetworkCookieJar.o build/Header.o build/Render.o build/body.o build/Status.o build/Headers.o build/UnsupportedContentHandler.o build/SetCookie.o build/ClearCookies.
o build/GetCookies.o build/CommandParser.o build/CommandFactory.o build/SetProxy.o build/NullCommand.o build/PageLoadingCommand.o build/SetTimeout.o build/GetTimeout.o build/SetSkipImageLoading.o build/We
bPageManager.o build/WindowFocus.o build/GetWindowHandles.o build/GetWindowHandle.o build/TimeoutCommand.o build/SetUrlBlacklist.o build/NoOpReply.o build/JsonSerializer.o build/InvocationResult.o build/E
rrorMessage.o build/Title.o build/FindCss.o build/JavascriptCommand.o build/FindXpath.o build/NetworkReplyProxy.o build/IgnoreDebugOutput.o build/StdinNotifier.o build/RequestHandler.o build/BlacklistedRe
questHandler.o build/MissingContentHeaderRequestHandler.o build/CustomHeadersRequestHandler.o build/NetworkRequestFactory.o build/UnknownUrlHandler.o build/qrc_webkit_server.o build/moc_BlockUrl.o build/m
oc_AllowUrl.o build/moc_SetUnknownUrlMode.o build/moc_FindModal.o build/moc_AcceptAlert.o build/moc_GoForward.o build/moc_GoBack.o build/moc_WindowMaximize.o build/moc_WindowSize.o build/moc_WindowCommand
.o build/moc_WindowOpen.o build/moc_WindowClose.o build/moc_Version.o build/moc_EnableLogging.o build/moc_Authenticate.o build/moc_SetConfirmAction.o build/moc_SetPromptAction.o build/moc_SetPromptText.o
build/moc_ClearPromptText.o build/moc_JavascriptAlertMessages.o build/moc_JavascriptConfirmMessages.o build/moc_JavascriptPromptMessages.o build/moc_IgnoreSslErrors.o build/moc_WindowResize.o build/moc_Cu
rrentUrl.o build/moc_ConsoleMessages.o build/moc_WebPage.o build/moc_Server.o build/moc_Connection.o build/moc_Command.o build/moc_SocketCommand.o build/moc_Visit.o build/moc_Reset.o build/moc_Node.o buil
d/moc_JavascriptInvocation.o build/moc_Evaluate.o build/moc_Execute.o build/moc_FrameFocus.o build/moc_Response.o build/moc_NetworkAccessManager.o build/moc_NetworkCookieJar.o build/moc_Header.o build/moc
_Render.o build/moc_Body.o build/moc_Status.o build/moc_Headers.o build/moc_UnsupportedContentHandler.o build/moc_SetCookie.o build/moc_ClearCookies.o build/moc_GetCookies.o build/moc_CommandParser.o buil
d/moc_CommandFactory.o build/moc_SetProxy.o build/moc_NullCommand.o build/moc_PageLoadingCommand.o build/moc_SetSkipImageLoading.o build/moc_WebPageManager.o build/moc_WindowFocus.o build/moc_GetWindowHan
dles.o build/moc_GetWindowHandle.o build/moc_GetTimeout.o build/moc_SetTimeout.o build/moc_TimeoutCommand.o build/moc_SetUrlBlacklist.o build/moc_NoOpReply.o build/moc_JsonSerializer.o build/moc_ErrorMess
age.o build/moc_Title.o build/moc_FindCss.o build/moc_JavascriptCommand.o build/moc_FindXpath.o build/moc_NetworkReplyProxy.o build/moc_StdinNotifier.o build/moc_RequestHandler.o
rm -f build/webkit_server.gch/c build/webkit_server.gch/c++
rm -f *~ core *.core
make[1]: Leaving directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0/src'

make "DESTDIR="
cd src/ && ( test -e Makefile.webkit_server || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0/src/webkit_server.pro -o Makefile.webkit_server ) && ma
ke -f Makefile.webkit_server
make[1]: Entering directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0/src'
g++ -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_QUICK_LIB -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_LOCATION_LIB -DQT_WEBKIT_LIB -DQT_QML_LIB -DQT_WIDGETS_LIB -DQ
T_POSITIONING_LIB -DQT_SENSORS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I/usr/include/qt5 -I/usr/include/qt5/QtWebKitWidgets -I/usr/include
/qt5/QtQuick -I/usr/include/qt5/QtOpenGL -I/usr/include/qt5/QtPrintSupport -I/usr/include/qt5/QtLocation -I/usr/include/qt5/QtWebKit -I/usr/include/qt5/QtQml -I/usr/include/qt5/QtWidgets -I/usr/include/qt
5/QtPositioning -I/usr/include/qt5/QtSensors -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -Ibuild -x c++-header -c stable.h -o build/webkit_server.gch/c++
g++ -c -include build/webkit_server -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_QUICK_LIB -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_LOCATION_LIB -DQT_WEBKIT_LIB -
DQT_QML_LIB -DQT_WIDGETS_LIB -DQT_POSITIONING_LIB -DQT_SENSORS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I/usr/include/qt5 -I/usr/include/qt
5/QtWebKitWidgets -I/usr/include/qt5/QtQuick -I/usr/include/qt5/QtOpenGL -I/usr/include/qt5/QtPrintSupport -I/usr/include/qt5/QtLocation -I/usr/include/qt5/QtWebKit -I/usr/include/qt5/QtQml -I/usr/include
/qt5/QtWidgets -I/usr/include/qt5/QtPositioning -I/usr/include/qt5/QtSensors -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -Ibuild -o build/BlockUrl.o BlockUrl.cpp

g++: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
make[1]: *** [build/BlockUrl.o] Error 4
make[1]: Leaving directory `/home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0/src'
make: *** [sub-src-webkit_server-pro-make_first-ordered] Error 2

make failed, exit code 2

Gem files will remain installed in /home/vagrant/.rvm/gems/ruby-2.2.1/gems/capybara-webkit-1.6.0 for inspection.
Results logged to /home/vagrant/.rvm/gems/ruby-2.2.1/extensions/x86_64-linux/2.2.0/capybara-webkit-1.6.0/gem_make.out

Seems like something is wrong with G++?

mhoran commented 9 years ago

Yikes. It does look like you've now got an issue with your compiler. Note that you've hit a different issue here, so that's good. I don't see why this wouldn't run on Trusty. I run locally on Debian jessie, which should be similar. However, my g++ version is 4.9.2. Perhaps there's a bug in 4.8.

EvanHahn commented 9 years ago

@mhoran Do you know of a way to upgrade g++ on Ubuntu? I admit I'm afraid of compiling it from source (but I can if I must).

mhoran commented 9 years ago

It doesn't look like there's an update for gcc on Trusty. However, you may want to try utopic, which includes gcc 4.9.

EvanHahn commented 9 years ago

@mhoran Upgraded to Vivid (15.04) and have the same error as before (made a gist of the error, too).

Here are my version numbers:

lsb_release -ds  # => Ubuntu 15.04

which ruby       # => /home/vagrant/.rvm/rubies/ruby-2.2.1/bin/ruby
ruby --version   # => ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]

g++ --version    # => g++ (Ubuntu 4.9.2-10ubuntu13) 4.9.2
gcc --version    # => gcc (Ubuntu 4.9.2-10ubuntu13) 4.9.2

qmake --version  # => QMake version 3.0 / Using Qt version 5.4.1 in /usr/lib/x86_64-linux-gnu

# On my host machine...
vagrant --version  # => Vagrant 1.6.5 

Looks like we're on the same version of G++...any thoughts?

Patru commented 9 years ago

I had similar problems when I tried to compile with QT5, the only way I got it to work (on trusty or precise) was to use libqt4-dev. This was with gcc 4.8 though. That's no big issue for me since I only want to run it headless anyways and it is ok for a local vagrant box, even if a little old fashioned.

Note that you have to run your tests with a virtual server, e.g. xvfb-run once you get it to compile.

mhoran commented 9 years ago

Hey @EvanHahn. I'm at a loss as to what may be happening. I'd recommend opening a bug report upstream in Ubuntu to see if they're aware of any issues and have any recommendations. I've had good luck raising problems via Launchpad in the past.

EvanHahn commented 9 years ago

Okay. Sounds like this issues should be closed and moved to Launchpad?

mhoran commented 9 years ago

Yes; I think that would be the best course of action.

EvanHahn commented 9 years ago

Sounds good.

xvonabur commented 8 years ago

Recently I've faced this issue too on Ubuntu 14. I solved it by installing build-essential package from default repo.

laithshadeed commented 8 years ago

I realized the problem is because of qt5. Removing all qt5 libs and install qt4 will solve the problem (at least for me)

jferris commented 8 years ago

I realized the problem is because of qt5. Removing all qt5 libs and install qt4 will solve the problem (at least for me)

Support for Qt4 is deprecated, as Qt4 is several years behind in its WebKit implementation. I highly recommend getting it to work with Qt5, as we'll be removing Qt4 support whenever we release 2.0.

EvanHahn commented 8 years ago

That sounds like my problem. I'll upgrade.