NuBits 2.1.1 Release

$qmake USE_UPNP=-
The program ‘qmake’ can be found in the following packages:

  • qt3-dev-tools
  • qt4-qmake
    Try: sudo apt-get install

Unfortunately I can’t install new things on my ubuntu server. I will have to find another machine.

Yeah it looks like that dependency didn’t get installed maybe? If you look qt4-qmake is in the dependency list above.

Suggestion:

While without knowing how much resources the core team is putting on the development and test of a new stable version of NuBits, the extent of delay of the release seems to imply that they are far from not enough.

As a Nubits service provider, we strongly suggest to take any necessary measures to speed up the release of V2.1.1, including directly grand funds to this task.

2 Likes

I would support a grant to fund further dev of Nu.

I agree that the pace of 2.1.1 release right now isn’t ideal. I’m not sure that throwing more money at the problem will yield immediate results. @woodstockmerkle is still making his way through the changes. 2.1.0 introduced a huge number of changes and it’s a difficult time to jump in and learn the code base. The trouble is finding people with the right skill set that have the time to dedicate to the project. You can see how difficult it was to find developers for B&C, and it has been similar for Nu.

We can create grants to fund development, but if we can’t find developers that will dedicate their time to the code it’s a bigger problem than funding.

2 Likes

I am confident i can help find dedicated developers for Nu as I could for Bce.

2 Likes

Sorry that it took so long. I wanted to wait for my new little gadget.
I finally started compiling nud 2.1.1 based on this instructions:

I didn’t try to compile the QT client, though, but the daemon.
I disabled UPNP and used libdb 4.8.
The rest was unchanged.
Result:

g++ -c -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/user/downloads/nu/nubit/src -I/home/user/downloads/nu/nubit/src/obj -I/usr/local/BerkeleyDB.4.8/include -DUSE_IPV6=1 -I/home/user/downloads/nu/nubit/src/leveldb/include -I/home/user/downloads/nu/nubit/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -MMD -MF obj/datafeed.d -o obj/datafeed.o datafeed.cpp
g++ -c -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/user/downloads/nu/nubit/src -I/home/user/downloads/nu/nubit/src/obj -I/usr/local/BerkeleyDB.4.8/include -DUSE_IPV6=1 -I/home/user/downloads/nu/nubit/src/leveldb/include -I/home/user/downloads/nu/nubit/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -MMD -MF obj/blockmap.d -o obj/blockmap.o blockmap.cpp
blockmap.cpp: In member function ‘void BlockMap::cleanup()’:
blockmap.cpp:216:228: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 5 has type ‘std::set<uint256>::size_type {aka long unsigned int}’ [-Wformat=]
 tKnown has %"PRI64d", mapPrev has %"PRI64d"\n", nUnloaded, nLoadedNow, nLoadedSinceLastCleanup, setKnown.size(), mapPrev.size());
                                                                                                                                ^
blockmap.cpp:216:228: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 6 has type ‘std::map<uint256, uint256>::size_type {aka long unsigned int}’ [-Wformat=]
g++ -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/user/downloads/nu/nubit/src -I/home/user/downloads/nu/nubit/src/obj -I/usr/local/BerkeleyDB.4.8/include -DUSE_IPV6=1 -I/home/user/downloads/nu/nubit/src/leveldb/include -I/home/user/downloads/nu/nubit/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -o nud 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 -Wl,-z,relro -Wl,-z,now  -L/usr/local/BerkeleyDB.4.8/lib -Wl,-Bdynamic -l boost_system -l boost_filesystem -l boost_program_options -l boost_thread -l db_cxx -l curl -l ssl -l crypto -l rt -Wl,-Bdynamic -l z -l dl -l pthread /home/user/downloads/nu/nubit/src/leveldb/libleveldb.a /home/user/downloads/nu/nubit/src/leveldb/libmemenv.a
obj/main.o: In function `LoadBlockIndex()':
/home/user/downloads/nu/nubit/src/main.cpp:3505: undefined reference to `CChain::SetTip(CBlockIndex*)'
obj/main.o: In function `UnloadBlockIndex()':
/home/user/downloads/nu/nubit/src/main.cpp:3600: undefined reference to `CChain::SetTip(CBlockIndex*)'
obj/main.o: In function `SetBestChain(CValidationState&, CBlockIndex*)':
/home/user/downloads/nu/nubit/src/main.cpp:2272: undefined reference to `CChain::SetTip(CBlockIndex*)'
obj/main.o: In function `__static_initialization_and_destruction_0(int, int) [clone .constprop.3006]':
/home/user/downloads/nu/nubit/src/main.cpp:47: undefined reference to `CChain::CChain()'
collect2: error: ld returned 1 exit status
makefile.unix:197: recipe for target 'nud' failed
make: *** [nud] Error 1

Any idea where to start debugging this?

Compiling the nud follows a different workflow. You must run the commands from within the src directory and the commands differ.

cd nubit/src

git checkout 2.1.1-RC

git merge origin/download_optimizations_r2

make -f makefile.unix USE_UPNP=-

Of course. I ran make -f makefile.unix from the src directory (I adjusted USE_UPNP=- in makefile.unix). It compiled for 25 minutes and then it failed.
Are there any logs I can investigate?
Maybe there’s a dependency missing that I’m not aware of…

I start with installing libboost-all-dev, because so far I have only libboost-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev.

I’ll post the results. Don’t waste time on this until I beg for help.

It’s probably safer to just use the flag on the command line instead of changing the make file, but that doesn’t seem to be the issue.

It looks like you have some code missing. Did you make sure to checkout 2.1.1-RC? Are you on that branch? You can check with git status. Maybe it did not pull the remote branch down. You can try git fetch 2.1.1-RC, and then try to check it out. Then do the download_optimizations_r2 merge.

Affirmative:

~/downloads/nu/nubit/src$ git status
On branch 2.1.1-RC
Your branch is ahead of 'origin/2.1.1-RC' by 7 commits.
  (use "git push" to publish your local commits)
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   makefile.unix

I installed libboost-all-dev before starting the next attempt.
It failed again with the same error message :frowning:

I’m pretty sure I ran into this issue and it had to do with being on the wrong branch. Could you try:

git reset --hard origin/2.1.1-RC

and run the make command again? Just to see if it’s an issue with the branch being merged.

I try.
I left

git merge origin/download_optimizations_r2

out this time.

edit:
compilation went through!
From debug.log:

Nu version v2.1.1-RC1-beta (2016-02-07 13:24:05 +0100)

Will try

git merge origin/download_optimizations_r2

and compile again.

edit2:
after merging origin/download_optimizations_r2 the compilation failed again:

obj/main.o: In function `LoadBlockIndex()':
/home/user/downloads/nu/nubit/src/main.cpp:3505: undefined reference to `CChain::SetTip(CBlockIndex*)'
obj/main.o: In function `UnloadBlockIndex()':
/home/user/downloads/nu/nubit/src/main.cpp:3600: undefined reference to `CChain::SetTip(CBlockIndex*)'
obj/main.o: In function `SetBestChain(CValidationState&, CBlockIndex*)':
/home/user/downloads/nu/nubit/src/main.cpp:2272: undefined reference to `CChain::SetTip(CBlockIndex*)'
obj/main.o: In function `__static_initialization_and_destruction_0(int, int) [clone .constprop.3006]':
/home/user/downloads/nu/nubit/src/main.cpp:47: undefined reference to `CChain::CChain()'
collect2: error: ld returned 1 exit status
makefile.unix:197: recipe for target 'nud' failed
make: *** [nud] Error 1

I would recommend hiring professional recruiters here

Okay so clearly there’s something with the branch merge that’s messing things up. I’m trying the instructions I gave you to see if I provided incorrect steps

Thank you for following up!
I hope you can verify it.
There was not much room for (human) error pasting the commands; the error might be related to creating the commands :wink:

Just in case that plays a role: I didn’t try on a RaspberryPi, but on x86 architecture (was playing with my new Beebox).

There is new code in a new file “chain.cpp” that was not included in the makefiles, and therefore linking is failing because that code was never compiled. sigmike pointed out to me it is not sufficient to update just the nu.pro, but also the makefiles.

I updated that branch about 12 hours ago, with additional code / fixes, and also the updates to the makefiles.

Would it be possible to try to merge and build it again?

Sure!
I’ll start the compiling soon.

git reset --hard origin/2.1.1-RC
git merge origin/download_optimizations_r2
make -f makefile.unix USE_UPNP=-

?

result:

obj/main.o: In function `LoadBlockIndex()':
/home/user/downloads/nu/nubit/src/main.cpp:3505: undefined reference to `CChain::SetTip(CBlockIndex*)'
obj/main.o: In function `UnloadBlockIndex()':
/home/user/downloads/nu/nubit/src/main.cpp:3600: undefined reference to `CChain::SetTip(CBlockIndex*)'
obj/main.o: In function `SetBestChain(CValidationState&, CBlockIndex*)':
/home/user/downloads/nu/nubit/src/main.cpp:2272: undefined reference to `CChain::SetTip(CBlockIndex*)'
obj/main.o: In function `__static_initialization_and_destruction_0(int, int) [clone .constprop.3006]':
/home/user/downloads/nu/nubit/src/main.cpp:47: undefined reference to `CChain::CChain()'
collect2: error: ld returned 1 exit status
makefile.unix:197: recipe for target 'nud' failed
make: *** [nud] Error 1

can you do a

git fetch origin

first?

Also

git fetch origin/download_optimizations_r2

just to be sure.

Then try the code you posted again. I won’t be able to try and recompile it again myself until tomorrow. So if you want to hold off until then I can make sure that everything is in working order.

The last attempt failed:

blockmap.cpp: In member function ‘void BlockMap::assert_loaded(const CBlockIndex*) const’:
blockmap.cpp:226:20: error: could not convert ‘pindex->CBlockIndex::hashBlock’ from ‘const uint256’ to ‘bool’
     assert(pindex->hashBlock);
                    ^
makefile.unix:191: recipe for target 'obj/blockmap.o' failed
make: *** [obj/blockmap.o] Error 1

I’m starting a new run after having applied

git fetch origin
git fetch origin download_optimizations_r2
git reset --hard origin/2.1.1-RC
git merge origin/download_optimizations_r2

now