尝试编译hived v1.25.0

最近一两个月以来,HIVE已经释出了5个发布候选版(Release Candidate),勤劳的见证人们也在测试网(testnet)上进行了各种测试,昨天期待已久的v1.25.0终于发布啦,赶紧测试一下尝尝鲜。

image.png

按着以往的套路在Ubuntu 18.04上尝试编译,结果遇到了一些小问题,这里记录一下。

一些选项退出历史舞台

移除LOW_MEMORY_NODE以及CLEAR_VOTES

首先一个变化就是LOW_MEMORY_NODE以及CLEAR_VOTES这两个选项被移除了,实际上很多非关键数据都已经移到Hivemind中实现了,相当于这两个选项默认打开(ON)一样。

如果设置为OFF,那么就会报错,停止编译(这个我没去测试);如果你把上述两个选项设置为ON,那么会出现类似如下的提示:

image.png

实际上,这两个选项已经完全没有用了,之所以仍然保留ON的设置,是为了兼容之前一些老旧的脚本。如果你有类似脚本或者命令行用到这个,可以放心地把这两项拿掉了。

移除STORE_COMMENT_CONTENT

移除这个选项的理由和上边的一样,也就是说,本地节点不再缓存文章内容数据了。如果这个选项被设置成ON,将会报错被停止编译。

移除MIRA

MIRA曾经在节省服务器资源开销上立下一些功劳,但是实际上我是一直没有使用的,而且随着Hivemind的应用,MIRA也该退出历史舞台了。

如果编译时使用ENABLE_MIRA=ON,将会报错并停止编译。

基于以上三点,我原本编译脚本中的如下选项可以全部移除了:

-DLOW_MEMORY_NODE=ON -DCLEAR_VOTES=ON -DENABLE_MIRA=OFF

Readline_LIBRARIES找不到

设置好选项后,编译时出现如下错误:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
Readline_LIBRARIES (ADVANCED)

libreadline-dev原本在我的记忆中不是必须的,为此我特意重新下载了v1.24.8进行编译,发现没有libreadline-dev也可以正常编译。

不过懒得去研究为啥v1.24.8不需要而v1.25.0需要,既然需要咱就安装呗:

sudo apt install libreadline-dev

然后再编译一切正常。

我看 @gtg提了一个issue optional packages optional are not, figure out what's REALLY needed to build,并且提交了一些修改:

image.png

别的我没去核实我机器上装没装,但是 Curses肯定是没有的,并且也没影响编译:

-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)

编译

除了编译参数的变化,以及ReadLine由可选项变成必须安装的以外,其它编译过程到没出啥波折。另外据说Hive v1.25.0支持Ubuntu 20.04 LTS,并且在boost 1.71 和boost 1.65下测试过,不过我的环境都是Ubuntu 18.04 LTS,懒得做进一步测试了。

执行hived --version出现如下提示:

"version" : { "hive_blockchain_hard_fork" : "1.25.0", "hive_git_revision" : "b597ef7247f139a71d8ee41087fe430382a8b36a" }

直接运行也会正常运行并且从头开始同步区块,不过我本地有现成的区块数据,只需replay就行了,就无需从头同步啦。

cli_wallet编译也没出啥问题,也能执行,不过我觉得命令行钱包也应该加一个--version选项,否则总搞不清楚版本。

编译总结

总之,编译还是没啥变化的,回头再去测试replay以及其它方面的内容,当然,最主要的要看看都做了那些共识方面的修改,这才是硬分叉(HardFork)的重中之重呢。

相关链接

H2
H3
H4
3 columns
2 columns
1 column
4 Comments