thoughtbot / capybara-webkit

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

Failing to install on mac OS 10.13.6 #1071

Closed cgat closed 5 years ago

cgat commented 5 years ago

mac High Sierra OS 10.13.16 XCode 10.0 capybara-webkit 1.8.0 and 1.15.0 (tried both) shell: fish Qt: 5.5 Ruby: 2.5.1

Verify version of qt:

$which qmake
/usr/local/opt/qt@5.5/bin/qmake

Attempting to install the gem:

$gem install capybara-webkit -v '1.8.0'
Building native extensions. This could take a while...
ERROR:  Error installing capybara-webkit:
    ERROR: Failed to build gem native extension.

    current directory: /Users/cgat/.rvm/gems/ruby-2.5.1/gems/capybara-webkit-1.8.0
/Users/cgat/.rvm/rubies/ruby-2.5.1/bin/ruby -r ./siteconf20180917-4960-1nt4p8p.rb extconf.rb
Info: creating stash file /Users/cgat/.rvm/gems/ruby-2.5.1/gems/capybara-webkit-1.8.0/.qmake.stash
cd src/ && ( test -e Makefile.webkit_server || /usr/local/opt/qt@5.5/bin/qmake /Users/cgat/.rvm/gems/ruby-2.5.1/gems/capybara-webkit-1.8.0/src/webkit_server.pro 'LIBS += -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl@1.1/lib' -o Makefile.webkit_server ) && /Applications/Xcode.app/Contents/Developer/usr/bin/make -f Makefile.webkit_server
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -pipe -O2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -mmacosx-version-min=10.7 -Wall -W -fPIC -DQT_NO_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_WIDGETS_LIB -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWebKitWidgets.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWidgets.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWebKit.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtGui.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtNetwork.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtCore.framework/Headers -Ibuild -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/AGL.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/mkspecs/macx-clang -F/usr/local/Cellar/qt@5.5/5.5.1_1/lib -x c++-header -c stable.h -o build/webkit_server/c++.pch
warning: include path for stdlibc++ headers not found; pass '-std=libc++' on the command line to use the libc++ standard library instead [-Wstdlibcxx-not-found]
In file included from stable.h:1:
In file included from /usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWidgets.framework/Headers/QApplication:1:
In file included from /usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWidgets.framework/Headers/qapplication.h:37:
In file included from /usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtCore.framework/Headers/qcoreapplication.h:37:
/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtCore.framework/Headers/qglobal.h:39:12: fatal error: 'cstddef' file not found
#  include <cstddef>
           ^~~~~~~~~
1 warning and 1 error generated.
make[1]: *** [build/webkit_server/c++.pch] Error 1
make: *** [sub-src-webkit_server-pro-make_first-ordered] Error 2
Command 'make' failed

current directory: /Users/cgat/.rvm/gems/ruby-2.5.1/gems/capybara-webkit-1.8.0
make "DESTDIR=" clean
cd src/ && ( test -e Makefile.webkit_server || /usr/local/opt/qt@5.5/bin/qmake /Users/cgat/.rvm/gems/ruby-2.5.1/gems/capybara-webkit-1.8.0/src/webkit_server.pro 'LIBS += -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl@1.1/lib' -o Makefile.webkit_server ) && /Applications/Xcode.app/Contents/Developer/usr/bin/make -f Makefile.webkit_server clean
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_SetConfirmAction.cpp build/moc_SetPromptAction.cpp build/moc_SetPromptText.cpp build/moc_ClearPromptText.cpp build/moc_JavascriptAlertMessages.cpp build/moc_JavascriptConfirmMessages.cpp build/moc_JavascriptPromptMessages.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 build/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_UnsupportedContentHandler.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_NullCommand.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_GetTimeout.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 build/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/JavascriptAlertMessages.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 build/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/Response.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/WebPageManager.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/ErrorMessage.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/BlacklistedRequestHandler.o build/MissingContentHeaderRequestHandler.o build/CustomHeadersRequestHandler.o build/NetworkRequestFactory.o build/UnknownUrlHandler.o build/qrc_webkit_server.o build/moc_BlockUrl.o build/moc_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_CurrentUrl.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 build/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 build/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_GetWindowHandles.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_ErrorMessage.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/c.pch build/webkit_server/c++.pch build/webkit_server/objective-c.pch build/webkit_server/objective-c++.pch
rm -f *~ core *.core

current directory: /Users/cgat/.rvm/gems/ruby-2.5.1/gems/capybara-webkit-1.8.0
make "DESTDIR="
cd src/ && ( test -e Makefile.webkit_server || /usr/local/opt/qt@5.5/bin/qmake /Users/cgat/.rvm/gems/ruby-2.5.1/gems/capybara-webkit-1.8.0/src/webkit_server.pro 'LIBS += -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl@1.1/lib' -o Makefile.webkit_server ) && /Applications/Xcode.app/Contents/Developer/usr/bin/make -f Makefile.webkit_server
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -pipe -O2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -mmacosx-version-min=10.7 -Wall -W -fPIC -DQT_NO_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_WIDGETS_LIB -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWebKitWidgets.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWidgets.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWebKit.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtGui.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtNetwork.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtCore.framework/Headers -Ibuild -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/AGL.framework/Headers -I/usr/local/Cellar/qt@5.5/5.5.1_1/mkspecs/macx-clang -F/usr/local/Cellar/qt@5.5/5.5.1_1/lib -x c++-header -c stable.h -o build/webkit_server/c++.pch
warning: include path for stdlibc++ headers not found; pass '-std=libc++' on the command line to use the libc++ standard library instead [-Wstdlibcxx-not-found]
In file included from stable.h:1:
In file included from /usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWidgets.framework/Headers/QApplication:1:
In file included from /usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtWidgets.framework/Headers/qapplication.h:37:
In file included from /usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtCore.framework/Headers/qcoreapplication.h:37:
/usr/local/Cellar/qt@5.5/5.5.1_1/lib/QtCore.framework/Headers/qglobal.h:39:12: fatal error: 'cstddef' file not found
#  include <cstddef>
           ^~~~~~~~~
1 warning and 1 error generated.
make[1]: *** [build/webkit_server/c++.pch] Error 1
make: *** [sub-src-webkit_server-pro-make_first-ordered] Error 2

make failed, exit code 2

Gem files will remain installed in /Users/cgat/.rvm/gems/ruby-2.5.1/gems/capybara-webkit-1.8.0 for inspection.
Results logged to /Users/cgat/.rvm/gems/ruby-2.5.1/extensions/x86_64-darwin-17/2.5.0/capybara-webkit-1.8.0/gem_make.out

This seems to suggest the standard c++ header files aren't being loaded. I'm wondering if some change in xcode no longer loads these by default?

Let me know if you need anymore info.

gsaslis commented 5 years ago

same issue here

alas, i have also just updated xcode and i'm pretty sure that is what broke this. :(

gsaslis commented 5 years ago

just to confirm:

downgrading to XCode 9.4 solves the issue.

cgat commented 5 years ago

Thanks for the solution. Downgrading now.

ferdinandrosario commented 5 years ago

@gsaslis Thank you XCode 9.4 works...

emilyst commented 5 years ago

FYI, this Gem can be built on 10.13 with Xcode 10 if changed to target a minimum of 10.9 instead of 10.7 (via -mmacosx-version-min=10.9).

Unfortunately, the Gem seems to ignore the CXXFLAGS and LFLAGS passed in to the build as a workaround. In other words, I can't do this: gem install capybara-webkit -v '1.15.0' -- --with-cppflags=-mmacosx-version-min=10.9 --with-cflags=-mmacosx-version-min=10.9 --with-ldflags=-mmacosx-version-min=10.9. I am not sure why. It does successfully build if I manually edit the Makefile after a failed build. I don't know if this targeting happens automatically somewhere in Ruby or what.

emilyst commented 5 years ago

I don't know how well this fix might be received, but I put in a pull request that fixes the Gem here locally: https://github.com/thoughtbot/capybara-webkit/pull/1073.

maslenkov commented 5 years ago

@emilyst thank you for a fix! @gsaslis 1.15.1 contains fix and available since Sept 28.