B&C Exchange Windows and OS X fix

Some people reported crashes of the B&C Exchange client on Windows and OS X. @Sabreiib sent me some OS X backtraces that revealed a potential cause of the problem for which I’ve written a fix here: https://bitbucket.org/JordanLeePeershares/bcexchange/pull-requests/57/debug-win-osx-crash/diff

I built a release candidate for windows here: https://bitbucket.org/JordanLeePeershares/bcexchange/downloads/bcexchange-5.0.3-RC1-win-gitian.zip

OS X users can build the source from the v5.0.3-RC1 tag.

Note that this version will update the block index database during the first run. It will take some time and the new database is not compatible with previous version, so you may want to backup your datadir to be able to downgrade if this version doesn’t work for you.

And always backup your wallets before you upgrade.

If this version indeed fixes the problem I’ll release a final 5.0.3.

Sha256 checksums:

1df5f18cdf59d38a02957f9d6b2d76d45e94050f0618f3a64664080767b4107c  bcexchange-5.0.3-RC1-win-gitian.zip
5b647bcb427372e569394678b22f3c76acb50cf823b53f5aa6b83fcb8e9caa82  32/BCExchange-5.0.3-win-setup.exe
535301d8899881065f85bca1e954a5454122addde7f40b12808d0d920b625b7a  32/bcexchange.exe
99971ad11a28e8aa5aaf6467395aefdf97502c2aca56ef4008da11a7571dc19c  32/bcexchanged.exe
9a03041814895edf381248b2f009b25d169ca73d504f12a9bc60764ec27a9987  64/BCExchange-5.0.3-win-setup.exe
d23cd74fbf11487ed0b1eef3c2efe6bb052d1b2b442c46c783956bd538c64f7d  64/bcexchange.exe
0d087230f9d7b1d54b4dadb1664a7afcda2834b18b2b9d7bf0ae966c0cb31c42  64/bcexchanged.exe
7 Likes

Thank you! @sigmike!
I appreciate your professional skills and attitude.

it runs smooth here now (so far) :thumbsup:

Thanks @sigmike. I will contact you soon to arrange payment.

When I run

make -f makefile.osx-mavericks RELEASE=true 64BIT=true

it says:

/bin/sh …/share/genbuild.sh obj/build.h
llvm-g++ -mmacosx-version-min=10.9 -O3 -arch x86_64 -w -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wformat-security -DMAC_OSX -DMSG_NOSIGNAL=0 -DBOOST_SPIRIT_THREADSAFE -DUSE_UPNP=1 -DHAVE_BUILD_INFO -I"/Users/glen/bcexchange/src" -I"/Users/glen/bcexchange/src/obj" -I"/usr/local/opt/berkeley-db4/include" -I"/usr/local/opt/boost/include" -I/usr/local/opt/openssl/include -o ppcoind -L"/lib" -L"/usr/local/opt/berkeley-db4/lib" -L"/usr/local/opt/boost/lib" -L/usr/local/opt/openssl/lib obj/version.o obj/checkpoints.o obj/netbase.o obj/addrman.o obj/crypter.o obj/key.o obj/db.o obj/init.o obj/irc.o obj/keystore.o obj/main.o obj/net.o obj/protocol.o obj/bitcoinrpc.o obj/rpcdump.o obj/script.o obj/util.o obj/wallet.o obj/walletdb.o obj/noui.o obj/kernel.o obj/coinmetadata.o -dead_strip -ldb_cxx-4.8 -lboost_system-mt -lboost_filesystem-mt -lboost_program_options-mt -lboost_thread-mt -lssl -lcrypto -lz -lminiupnpc
Undefined symbols for architecture x86_64:
“CVote::ToScript(int) const”, referenced from:
CWallet::CreateCoinStake(CKeyStore const&, unsigned int, long long, CTransaction&, CBlockIndex*) in wallet.o
"CParkRateVote::ToParkRateResultScript() const", referenced from:
CWallet::CreateCoinStake(CKeyStore const&, unsigned int, long long, CTransaction&, CBlockIndex*) in wallet.o
"CUserVote::GenerateBlockVote(int) const", referenced from:
CWallet::CreateCoinStake(CKeyStore const&, unsigned int, long long, CTransaction&, CBlockIndex*) in wallet.o
"boost::program_options::detail::common_config_file_iterator::common_config_file_iterator(std::__1::set<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > const&, bool)", referenced from:
boost::program_options::detail::basic_config_file_iterator::basic_config_file_iterator(std::__1::basic_istream<char, std::__1::char_traits >&, std::__1::set<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > const&, bool) in util.o
"CUnsignedLiquidityInfo::GetTier() const", referenced from:
getliquidityinfo(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"CVote::IsValid(int) const", referenced from:
setvote(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
CWallet::SetVote(CUserVote const&) in wallet.o
"MustUpgradeProtocol(CBlockIndex const*, int)", referenced from:
GetSwitchProtocolTime(CBlockIndex*, int) in bitcoinrpc.o
"GetAddressBalances(unsigned int, std::__1::map<CBitcoinAddress const, long long, std::__1::less, std::__1::allocator<std::__1::pair<CBitcoinAddress const, long long> > >&)", referenced from:
distribute(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"GenerateDistribution(std::__1::map<CBitcoinAddress const, long long, std::__1::less, std::__1::allocator<std::__1::pair<CBitcoinAddress const, long long> > > const&, double)", referenced from:
distribute(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"CalculateVotedAssets(CBlockIndex*)", referenced from:
CBlock::AddToBlockIndex(unsigned int, unsigned int) in main.o
CWallet::CreateCoinStake(CKeyStore const&, unsigned int, long long, CTransaction&, CBlockIndex*) in wallet.o
"CLiquidityInfo::ProcessLiquidityInfo()", referenced from:
ProcessMessage(CNode*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, CDataStream&) in main.o
liquidityinfo(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"_cs_mapLiquidityInfo", referenced from:
ProcessMessage(CNode*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, CDataStream&) in main.o
getliquidityinfo(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
getliquiditydetails(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"StartUpdateFromDataFeed()", referenced from:
StartNode(void*) in net.o
"_mapLiquidityInfo", referenced from:
ProcessMessage(CNode*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, CDataStream&) in main.o
getliquidityinfo(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::_1::allocator > > > > > const&, bool) in bitcoinrpc.o
getliquiditydetails(std::1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::1::basic_string<char, std::1::char_traits, std::1::allocator > > >, std::1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::1::basic_string<char, std::1::char_traits, std::1::allocator > > > > > const&, bool) in bitcoinrpc.o
"GetProtocolForNextBlock(CBlockIndex const*)", referenced from:
CBlock::AddToBlockIndex(unsigned int, unsigned int) in main.o
CBlock::AcceptBlock() in main.o
CreateNewBlock(CReserveKey&, CWallet*, bool) in main.o
CWallet::CreateCoinStake(CKeyStore const&, unsigned int, long long, CTransaction&, CBlockIndex*) in wallet.o
"CalculateSignerRewardVoteResult(CBlockIndex*)", referenced from:
CBlock::AddToBlockIndex(unsigned int, unsigned int) in main.o
"CalculateSignerReward(CBlockIndex const*, boost::variant<CNoDestination, CKeyID, CScriptID, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
, boost::detail::variant::void
>&, long long&)", referenced from:
CTransaction::ConnectInputs(CTxDB&, std::__1::map<uint256, std::__1::pair<CTxIndex, CTransaction>, std::__1::less, std::__1::allocator<std::__1::pair<uint256 const, std::__1::pair<CTxIndex, CTransaction> > > >, std::__1::map<uint256, CTxIndex, std::__1::less, std::__1::allocator<std::__1::pair<uint256 const, CTxIndex> > >&, CDiskTxPos const&, CBlockIndex const*, bool, bool, bool) in main.o
CWallet::CreateCoinStake(CKeyStore const&, unsigned int, long long, CTransaction&, CBlockIndex*) in wallet.o
"ExtractParkRateResults(CBlock const&, std::__1::vector<CParkRateVote, std::__1::allocator >&)", referenced from:
CBlock::AddToBlockIndex(unsigned int, unsigned int) in main.o
"SendDistribution(DividendDistributor const&)", referenced from:
distribute(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"IsParkRateResult(CScript const&)", referenced from:
CTransaction::CheckTransaction() const in main.o
"RemoveExpiredLiquidityInfo(int)", referenced from:
CBlock::SetBestChain(CTxDB&, CBlockIndex*) in main.o
"ParseVote(std::__1::vector<json_spirit::Pair_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Pair_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&)", referenced from:
setvote(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"IsVote(CScript const&)", referenced from:
CTransaction::CheckTransaction() const in main.o
"ExtractVotes(CBlock const&, CBlockIndex const*, unsigned int, std::__1::vector<CVote, std::__1::allocator >&)", referenced from:
CBlock::CheckCustodianGrants(CBlockIndex const*) const in main.o
CreateNewBlock(CReserveKey&, CWallet*, bool) in main.o
"_strDataFeedError", referenced from:
GetWarnings(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in main.o
setdatafeed(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"GenerateCurrencyCoinBases(std::__1::vector<CVote, std::__1::allocator >, std::__1::map<CBitcoinAddress, CBlockIndex*, std::__1::less, std::__1::allocator<std::__1::pair<CBitcoinAddress const, CBlockIndex*> > > const&, std::__1::vector<CTransaction, std::__1::allocator >&)", referenced from:
CBlock::CheckCustodianGrants(CBlockIndex const*) const in main.o
CreateNewBlock(CReserveKey&, CWallet*, bool) in main.o
"boost::program_options::to_internal(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
boost::program_options::detail::basic_config_file_iterator::getline(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >&) in util.o
"GetPremium(long long, long long, unsigned char, std::__1::vector<CParkRateVote, std::__1::allocator > const&)", referenced from:
CTransaction::CheckParkWithResult(std::__1::vector<CParkRateVote, std::__1::allocator > const&) const in main.o
CTransaction::ConnectInputs(CTxDB&, std::__1::map<uint256, std::__1::pair<CTxIndex, CTransaction>, std::__1::less, std::__1::allocator<std::__1::pair<uint256 const, std::__1::pair<CTxIndex, CTransaction> > > >, std::__1::map<uint256, CTxIndex, std::__1::less, std::__1::allocator<std::__1::pair<uint256 const, CTxIndex> > >&, CDiskTxPos const&, CBlockIndex const*, bool, bool, bool) in main.o
CBlockIndex::GetPremium(long long, long long, unsigned char, int) const in main.o
"ExtractVote(CBlock const&, CVote&, int)", referenced from:
CBlock::AddToBlockIndex(unsigned int, unsigned int) in main.o
CBlock::AcceptBlock() in main.o
CreateNewBlock(CReserveKey&, CWallet*, bool) in main.o
"UpdateFromDataFeed()", referenced from:
setdatafeed(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"CVote::IsValidInBlock(int) const", referenced from:
CBlock::AddToBlockIndex(unsigned int, unsigned int) in main.o
CWallet::CreateCoinStake(CKeyStore const&, unsigned int, long long, CTransaction&, CBlockIndex*) in wallet.o
"_curl_global_cleanup", referenced from:
Shutdown(void*) in init.o
"GetMinimumDividendPayout()", referenced from:
distribute(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"CalculateReputationResult(CBlockIndex const*, std::__1::map<CBitcoinAddress, long long, std::__1::less, std::__1::allocator<std::__1::pair<CBitcoinAddress const, long long> > >&)", referenced from:
getreputations(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"CalculateVotedFees(CBlockIndex*)", referenced from:
CBlock::AddToBlockIndex(unsigned int, unsigned int) in main.o
CWallet::CreateCoinStake(CKeyStore const&, unsigned int, long long, CTransaction&, CBlockIndex*) in wallet.o
"CalculateSignerRewardVoteCounts(CBlockIndex const*, std::__1::map<short, int, std::__1::less, std::__1::allocator<std::__1::pair<short const, int> > >&, std::__1::map<int, int, std::__1::less, std::__1::allocator<std::__1::pair<int const, int> > >&)", referenced from:
getsignerrewardvotes(std::__1::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >, std::__1::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > > const&, bool) in bitcoinrpc.o
"CalculateParkRateResults(CVote const&, CBlockIndex const*, int, std::__1::vector<CParkRateVote, std::__1::allocator >&)", referenced from:
CBlock::AddToBlockIndex(unsigned int, unsigned int) in main.o
CreateNewBlock(CReserveKey&, CWallet*, bool) in main.o
CWallet::CreateCoinStake(CKeyStore const&, unsigned int, long long, CTransaction&, CBlockIndex*) in wallet.o
"_curl_global_init", referenced from:
AppInit2(int, char**) in init.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [ppcoind] Error 1

@backpacker

1 Like

Works good :slight_smile:
I’m back :stuck_out_tongue: with B&C haha

I released version 5.0.3 (same as RC1 except for the version number):
https://bitbucket.org/JordanLeePeershares/bcexchange/downloads/bcexchange-5.0.3-linux-gitian.zip
https://bitbucket.org/JordanLeePeershares/bcexchange/downloads/bcexchange-5.0.3-win-gitian.zip

sha256sums:

66df288cf2b830e4e9afaec62aed6eecbf5cea5331e8acca77fb9865e346c606  bcexchange-5.0.3-linux-gitian.zip
a72a1f106cd7cc3991f7cc28edeaa8c24abf2503a8c7d40066e42f4de0ac6041  bcexchange-5.0.3-win-gitian.zip
c0df75b39de860cd6d2eec819550914e2951ee14a71b8cb57aa68497925a9d28  bin/32/bcexchange
a016c4a6b764dd27a43ec2b80d1459d36666d9cbda1b84e8efe65d958ac0c195  bin/32/bcexchanged
77cdc6d34b4c5ad8d4c3b9c7e969c447c0e124c57e4b0736a0a42170ef7b9ec4  bin/64/bcexchange
1609121ed421223f0871fe8a13c16af27497658200277e0ee4a4b0a2f82e8ff9  bin/64/bcexchanged
8bf18555feb7f8fdf636121e26e1a7275fcc964d1086c5f9a3859ad42758947d  32/BCExchange-5.0.3-win-setup.exe
456552da3f724655f2555e70c661d011a7dbf968dca84425c8b5c2279c7f2c15  32/bcexchange.exe
0f1d972c0b4bb65381c9d7900a45115151f2f60c10496324c37fffe6c491d761  32/bcexchanged.exe
dc018f9af65aa117790b4c4841c760fca82f78b4180daa4496190b10051450e1  64/BCExchange-5.0.3-win-setup.exe
b488219e3054259bfb314f87ca8239a4eade0cdf2be3893f1ae8704467da1843  64/bcexchange.exe
509e75d1b7940dee3834d8f7c97fba17f541d6a6ec4dc2e5ea31e4dfd4425a61  64/bcexchanged.exe
5 Likes

Stable?

will try to upgradr this week.

looks good for now :slight_smile:

This is a good update, usually before this version, it cost me quite a long time to launch the application finishing the sync, but now it’s swift.

Did you figure out how to build for macOS?

Not yet, I think the main problem is berkeley DB on Mac, it seems apple use their own crypto library, and brew canno use DB 4.8 as default. I’ll spend time to investigate it.

1 Like

@sigmike, how about change block time to 10 minutes and 10X reward? To reduce the blockchain size. And in future we can start “off chain”/“high performance” transaction.

It seems to have been solved in other coins. Found a post on GitHub with links that may be helpful.

I got past some errors using makefile.osx (pre-Mavericks) with some modifications, but think I got stuck on a variation of “symbols for architecture x86_64” at another place. makefile.osx-mavericks refers to ppcoin and may be outdated in other ways. I used Pkgsrc for dependencies (boost db4 openssl miniupnpc), though had to add /miniupnpc from https://github.com/miniupnp/miniupnp in nubit/src. Then discovered USE_UPNP=- which fails for another reason somewhere.

For what some error messages may be worth, I saved these. I don’t remember what specifically I did to get there, and they’re not of the first attempts. Notice CXX=clang++.

make -f makefile.osx RELEASE=true 64BIT=true CXX=clang++ USE_UPNP=-
/bin/sh …/share/genbuild.sh obj/build.h
clang++ -mmacosx-version-min=10.6 -O3 -arch x86_64 -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -DMAC_OSX -DMSG_NOSIGNAL=0 -DBOOST_SPIRIT_THREADSAFE -DUSE_IPV6=1 -I/Users/Esko/Projects/Nu/Source/nubit/src/leveldb/include -I/Users/Esko/Projects/Nu/Source/nubit/src/leveldb/helpers -DHAVE_BUILD_INFO -I"/Users/Esko/Projects/Nu/Source/nubit/src" -I"/Users/Esko/Projects/Nu/Source/nubit/src"/obj -I"/opt/pkg/include" -I"/opt/pkg/include/db4" -o nud -L"/opt/pkg/lib" obj/scanbalance.o leveldb/libleveldb.a obj/alert.o obj/version.o obj/checkpoints.o obj/netbase.o obj/addrman.o obj/crypter.o obj/key.o obj/db.o obj/init.o obj/keystore.o obj/main.o obj/net.o obj/protocol.o obj/bitcoinrpc.o obj/rpcdump.o obj/rpcnet.o obj/rpcmining.o obj/rpcwallet.o obj/rpcblockchain.o obj/rpcrawtransaction.o obj/rpcdividend.o obj/rpcliquidity.o obj/rpcpark.o obj/rpcvote.o obj/rpctest.o obj/script.o obj/sync.o obj/util.o obj/wallet.o obj/walletdb.o obj/kernel.o obj/checkpointsync.o obj/hash.o obj/bloom.o obj/noui.o obj/leveldb.o obj/txdb.o obj/distribution.o obj/vote.o obj/liquidityinfo.o obj/datafeed.o obj/blockmap.o -dead_strip -ldb4_cxx-4.8 -lboost_system -lboost_filesystem -lboost_program_options -lboost_thread -lboost_chrono -lssl -lcrypto -lz -l curl /Users/Esko/Projects/Nu/Source/nubit/src/leveldb/libleveldb.a /Users/Esko/Projects/Nu/Source/nubit/src/leveldb/libmemenv.a
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9
Undefined symbols for architecture x86_64:
“boost::program_options::to_internal(std::string const&)”, referenced from:
boost::program_options::detail::basic_config_file_iterator::getline(std::string&) in util.o
"boost::program_options::detail::common_config_file_iterator::common_config_file_iterator(std::set<std::string, std::lessstd::string, std::allocatorstd::string > const&, bool)", referenced from:
boost::program_options::detail::basic_config_file_iterator::basic_config_file_iterator(std::istream&, std::set<std::string, std::lessstd::string, std::allocatorstd::string > const&, bool) in util.o
"Db::verify(char const*, char const*, std::ostream*, unsigned int)", referenced from:
CDBEnv::Verify(std::string, bool (*)(CDBEnv&, std::string)) in db.o
CDBEnv::Salvage(std::string, bool, std::vector<std::pair<std::vector<unsigned char, std::allocator >, std::vector<unsigned char, std::allocator > >, std::allocator<std::pair<std::vector<unsigned char, std::allocator >, std::vector<unsigned char, std::allocator > > > >&) in db.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [nud] Error 1

make -f makefile.osx-mavericks RELEASE=true 64BIT=true CXX=clang++ USE_UPNP=-
/bin/sh …/share/genbuild.sh obj/build.h
clang++ -mmacosx-version-min=10.9 -O3 -arch x86_64 -w -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wformat-security -DMAC_OSX -DMSG_NOSIGNAL=0 -DBOOST_SPIRIT_THREADSAFE -DUSE_UPNP=- -I/Users/Esko/Projects/Nu/Source/nubit/src/leveldb/include -I/Users/Esko/Projects/Nu/Source/nubit/src/leveldb/helpers -DHAVE_BUILD_INFO -I"/Users/Esko/Projects/Nu/Source/nubit/src" -I"/Users/Esko/Projects/Nu/Source/nubit/src/obj" -I"/opt/pkg/include" -I"/opt/pkg/include/db4" -o ppcoind -L"/lib" obj/scanbalance.o leveldb/libleveldb.a obj/alert.o obj/version.o obj/checkpoints.o obj/netbase.o obj/addrman.o obj/crypter.o obj/key.o obj/db.o obj/init.o obj/keystore.o obj/main.o obj/net.o obj/protocol.o obj/bitcoinrpc.o obj/rpcdump.o obj/rpcnet.o obj/rpcmining.o obj/rpcwallet.o obj/rpcblockchain.o obj/rpcrawtransaction.o obj/rpcdividend.o obj/rpcliquidity.o obj/rpcpark.o obj/rpcvote.o obj/rpctest.o obj/script.o obj/sync.o obj/util.o obj/wallet.o obj/walletdb.o obj/kernel.o obj/checkpointsync.o obj/hash.o obj/bloom.o obj/noui.o obj/leveldb.o obj/txdb.o obj/distribution.o obj/vote.o obj/liquidityinfo.o obj/datafeed.o obj/blockmap.o -dead_strip -ldb4_cxx-4.8 -lboost_system -lboost_filesystem -lboost_program_options -lboost_thread -lboost_chrono -lssl -lcrypto -lz -l curl -lminiupnpc /Users/Esko/Projects/Nu/Source/nubit/src/leveldb/libleveldb.a /Users/Esko/Projects/Nu/Source/nubit/src/leveldb/libmemenv.a
ld: library not found for -ldb4_cxx-4.8
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [ppcoind] Error 1

Has anyone built Nu on Mavericks or later? I’m on Sierra. @backpacker, how do you build it?

It seems openssl and berkeley-db4 have same issue on MacOS(Sierra).

Pouring openssl-1.0.2k.sierra.bottle.tar.gz
==> Using the sandbox
==> Caveats
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
/usr/local/etc/openssl/certs

and run
/usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

If you need to have this software first in your PATH run:
echo ‘export PATH="/usr/local/opt/openssl/bin:$PATH"’ >> ~/.bash_profile

For compilers to find this software you may need to set:
LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
For pkg-config to find this software you may need to set:
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig

==> Summary
:beer: /usr/local/Cellar/openssl/1.0.2k: 1,696 files, 12M

alos Qt5 same problem

Updating Homebrew…
==> Downloading https://homebrew.bintray.com/bottles/qt5-5.8.0_1.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring qt5-5.8.0_1.sierra.bottle.tar.gz
==> Caveats
We agreed to the Qt opensource license for you.
If this is unacceptable you should uninstall.

This formula is keg-only, which means it was not symlinked into /usr/local.

Qt 5 has CMake issues when linked

If you need to have this software first in your PATH run:
echo ‘export PATH="/usr/local/opt/qt5/bin:$PATH"’ >> ~/.bash_profile

For compilers to find this software you may need to set:
LDFLAGS: -L/usr/local/opt/qt5/lib
CPPFLAGS: -I/usr/local/opt/qt5/include
For pkg-config to find this software you may need to set:
PKG_CONFIG_PATH: /usr/local/opt/qt5/lib/pkgconfig

Although the “issues” above, I sucessfully compiled the bitcoind! As per https://github.com/bitcoin/bitcoin/blob/master/doc/build-osx.md

That would indeed reduce the (future) blockchain size, and also the memory usage. Changing that should not be very difficult.

Do you agree to make such change? Or do you need a motion to pass?