New macOS releases have historically led to unpleasant surprises, so I decided to run the beta on an older machine. I installed both the beta of macOS and Xcode, and made the latter default using sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
.
Note that Apple switched the default shell to zsh: https://support.apple.com/kb/HT208050
Beta 3
TL&DR: binaries still work, but building QT from source doesn’t and depends seems broken
The existing binary on my system kept working fine. I was also able to download and install v0.18 from bitcoincore.org.
Compling master (536590f358dc3d3e5821eba7f1009452ea93b205) from source source fails, see (log).
Using Homebrew with boost
1.70.0 and qt 5.13.0
.
The tests produce a bunch of warnings:
0test/util_threadnames_tests.cpp:64:5: note: in instantiation of function template specialization 'boost::test_tools::tt_detail::check_frwd<boost::test_tools::tt_detail::equal_impl_frwd, unsigned long, int>' requested here
1 BOOST_CHECK_EQUAL(names.size(), 100);
2 ^
3/usr/local/include/boost/test/tools/old/interface.hpp:154:45: note: expanded from macro 'BOOST_CHECK_EQUAL'
4#define BOOST_CHECK_EQUAL( L, R ) BOOST_TEST_TOOL_IMPL( 0, \
5 ^
6/usr/local/include/boost/test/tools/old/interface.hpp:67:47: note: expanded from macro 'BOOST_TEST_TOOL_IMPL'
7 BOOST_PP_IF( frwd_type, report_assertion, check_frwd ) ( \
These warnings also occur in the Solaris problem in #15708.
QT produces warnings:
0 CXX qt/libbitcoinqt_a-bitcoinunits.o
1qt/bitcoinamountfield.cpp:124:24: warning: 'width' is deprecated: Use QFontMetrics::horizontalAdvance [-Wdeprecated-declarations]
2 int w = fm.width(BitcoinUnits::format(BitcoinUnits::BTC, BitcoinUnits::maxMoney(), false, BitcoinUnits::separatorAlways));
3 ^
4/usr/local/Cellar/qt/5.13.0/lib/QtGui.framework/Headers/qfontmetrics.h:107:5: note: 'width' has been explicitly marked deprecated here
5 QT_DEPRECATED_X("Use QFontMetrics::horizontalAdvance")
6 ^
7/usr/local/Cellar/qt/5.13.0/lib/QtCore.framework/Headers/qglobal.h:294:33: note: expanded from macro 'QT_DEPRECATED_X'
8# define QT_DEPRECATED_X(text) Q_DECL_DEPRECATED_X(text)
9 ^
10/usr/local/Cellar/qt/5.13.0/lib/QtCore.framework/Headers/qcompilerdetection.h:649:55: note: expanded from macro 'Q_DECL_DEPRECATED_X'
11# define Q_DECL_DEPRECATED_X(text) __attribute__ ((__deprecated__(text)))
12 ^
And finally QT throws an error:
0 CXX qt/libbitcoinqt_a-networkstyle.o
1qt/guiutil.cpp:365:14: error: no matching function for call to 'objc_msgSend'
2 id app = objc_msgSend((id) objc_getClass("NSApplication"), sel_registerName("sharedApplication"));
3 ^~~~~~~~~~~~
4/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/objc/message.h:63:1: note: candidate function not viable: requires 0 arguments, but 2 were provided
5objc_msgSend(void /* id self, SEL op, ... */ )
6^
7qt/guiutil.cpp:366:5: error: no matching function for call to 'objc_msgSend'
8 objc_msgSend(app, sel_registerName("activateIgnoringOtherApps:"), YES);
9 ^~~~~~~~~~~~
10/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/objc/message.h:63:1: note: candidate function not viable: requires 0 arguments, but 3 were provided
11objc_msgSend(void /* id self, SEL op, ... */ )
12^
132 errors generated.
14make[2]: *** [qt/libbitcoinqt_a-guiutil.o] Error 1
I can ./configure --without-gui
and run the test suite.
I reinstalled all of homebrew, but still get the above warnings and errors.
Using depends instead, I’m unable to build protobuf (see log). When I strip out protobuf, Boost fails in the same way as #13601 (log). However in this case xcode-select --install
doesn’t make the issue go away, and the other workaround /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
no longer exists. See also this dicussion.